1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu thiết kế ứng dụng khóa điện tử đảm bảo an toàn thông tin trong các giao dịch

96 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 96
Dung lượng 2,03 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Với mong muốn áp dụng các phương pháp mã hóa vào việc bảo mật dữ liệu và trao đổi thư điện tử, đồng thời từng bước tìm hiểu, làm chủ công nghệ khóa cứng, tác giả chọn đề tài: “Nghiên cứu

Trang 1

LỜI CẢM ƠN

Luận văn được thực hiện tại trường Đại học Công nghệ Thông tin và Truyền Thông – Đại học Thái Nguyên dưới sự hướng dẫn của TS Trần Xuân Kiên

Trước hết tôi xin bày tỏ lòng biết ơn sâu sắc tới thầy Trần Xuân Kiên, người đã có những định hướng, những kiến thức quý báu, những lời động viên và chỉ bảo giúp tôi vượt qua những khó khăn để tôi hoàn thành tốt luận văn của mình

Tôi xin được bày tỏ lòng cảm ơn và sự kính trọng của mình đến các Thầy, Cô Trường Đại học Công nghệ Thông tin và Truyền Thông - Đại học Thái Nguyên, đặc biệt là các Thầy, Cô đã giảng dạy và giúp đỡ tôi trong suốt quá trình học tập tại trường

Tôi cũng đặc biệt cảm ơn tới các sĩ quan phòng Thí nghiệm trọng điểm

An toàn thông tin – Viện KH-CN Quân sự Bộ Quốc phòng Các anh, chị học viên lớp Cao học CK09D Các đồng nghiệp tại Trường Đại học Lương Thế Vinh - Nam Định Đã luôn động viên, giúp đỡ tôi trong quá trình học tập và công tác, để tôi hoàn thành nhiệm vụ được giao

Nhân dịp này, tôi cũng xin gửi lời cảm ơn đến gia đình, người thân, đã tạo điều kiện giúp đỡ, động viên, trợ giúp tôi về tinh thần trong suốt quá trình học tập

Thái Nguyên, tháng 9 năm 2012

NGHIÊN CỨU THIẾT KẾ, ỨNG DỤNG KHÓA ĐIỆN TỬ

ĐẢM BẢO AN TOÀN THÔNG TIN TRONG CÁC GIAO DỊCH

ĐIỆN TỬ

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Trang 2

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn “Nghiên cứu thiết kế, ứng dụng khóa điện tử

đảm bảo an toàn thông tin trong các giao dịch điện tử” này là công trình

nghiên cứu của riêng tôi Các số liệu sử dụng trong luận văn là trung thực Các kết quả nghiên cứu được trình bày trong luận văn chưa từng được công

bố tại bất kỳ công trình nghiên cứu nào khác

Trần Minh Khương

Trang 3

MỤC LỤC

LỜI CẢM ƠN i

LỜI CAM ĐOAN ii

MỤC LỤC iii

DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT v

DANH MỤC CÁC BẢNG vi

DANH MỤC CÁC HÌNH VẼ vii

MỞ ĐẦU 1

Chương 1: ĐẶT VẤN ĐỀ 5

1.1 Tổng quan về mật mã 5

1.1.1 Mật mã học 5

1.1.2 Hệ mật mã (cryptosystem) 6

1.1.3 Mô hình truyền tin cơ bản của mật mã học và nguyên lý Kerckhoffs 7

1.1.4 Một số ứng dụng của mật mã học 9

1.2 Một số nguy cơ mất an toàn bảo mật thông tin 10

1.2.1 Mất mã khóa 10

1.2.2 Thất lạc các vật mang tin 11

1.2.3 Truy cập trái phép các phần mềm quan trọng 12

1.2.4 Mất an toàn khi gửi/nhận thư điện tử 13

1.3 Đề xuất giải pháp bảo đảm an toàn bảo mật dữ liệu 13

1.3.1 Dùng khóa cứng để lưu giữ mã khóa 13

1.3.2 Dùng khóa cứng để khóa máy tính, dùng USB có bảo vệ khi truy cập 15

1.3.3 Dùng khóa cứng để bảo vệ phần mềm có bản quyền và phần mềm quan trọng 15

Chương 2:

NGHIÊN CỨU LỰA CHỌN CÁC THUẬT TOÁN MÃ HÓA 17

2.1 Hệ mật mã khóa bí mật Chuẩn mã AES 17

2.1.1 Hệ mật mã khóa bí mật (quy trình mã hóa đối xứng) 17

Trang 4

2.1.2 Chuẩn mã AES (Advanced Encryption Standard) 18

2.2 Hệ mật mã khóa công khai Hệ mã RSA 45

2.2.1 Hệ mật mã khóa công khai (quy trình mã hóa bất đối xứng) 45

2.2.2 Hệ mã RSA 49

Chương 3

NGHIÊN CỨU XÂY DỰNG VÀ THỰC HIỆN THỬ NGHIỆM

KHÓA CỨNG KẾT HỢP VỚI PHẦN MỀM MÃ/GIẢI MÃ 56

3.1 Nghiên cứu thiết kế khóa cứng 56

3.1.1 Thiết kế của khóa cứng 56

3.1.2 Lựa chọn chíp giao tiếp với máy tính thông qua cổng giao tiếp USB 59

3.1.3 Lựa chọn chíp vi xử lý tốc độ cao thực hiện thuật toán mã/giải mã, lưu trữ mã khóa 60

3.1.4 Phần mềm soạn thảo chương trình điều khiển vi xử lý 62

3.1.5 Modul mã hoá/giải mã sử dụng thuật toán AES viết trên vi xử lý 63 3.2 Nghiên cứu xây dựng và thử nghiệm Modul phần mềm kết hợp với khóa cứng thực hiện mã hóa/giải mã dữ liệu trên máy tính dùng thuật toán AES 76

3.2.1 Nghiên cứu xây dựng modul 76

3.2.2 Kết quả thử nghiệm 81

3.3 Nghiên cứu xây dựng và thử nghiệm Modul phần mềm kết hợp với khóa cứng để mã hóa/giải mã dữ liệu khi trao đổi qua email dùng thuật toán RSA 82

3.3.1 Nghiên cứu xây dựng modul 82

3.3.2 Kết quả thử nghiệm 84

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 87

TÀI LIỆU THAM KHẢO 88

Trang 5

DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT

DES Data Encryption Standart

DSA Digital Signature Algorithm

EEPROM Electrically Erasable Programmable Read-Only Memory IDEA International Data Encryption Algorithm

IP Internet Protocol

IDEA International Data Encryption Algorithm

MIPS Mega Instruction Per Second

NIST National Institute of Standards and Technology

PIC Programmable Intelligent Computer

PIN Personal Indentification Number

PKI Public Key Infrastructure

RISC Reduced Instructions Set Computer

RSA Rivest – Shamir – Adleman

SHA Secure Hash Algorithm

USB Univeral Serial Bus

Trang 6

DANH MỤC CÁC BẢNG

Bảng 2.1 Bảng các khái niệm và ký hiệu dùng trong thuật toán AES 22

Bảng 2.2 Bảng biểu diễn các xâu 4 bit trong hệ Hexa 23

Bảng 2.3 Giá trị di số shift(r,Nb) 30

Bảng 2.4 Bảng mã khóa mở rộng và cách xác định mã khóa của các chu kỳ 36 Bảng 2.5 Tốc độ của thuật toán Brent –Pollard 54

Bảng 2.6 Thời gian dự đoán của việc phân tích ra thừa số nguyên tố của các số nguyên 55

Bảng 3.1 So sánh hai thuật toán mã hóa T-DES và AES 63

Bảng 3.2 Số chu kỳ của AES 65

Bảng 3.3 Ma trận khóa 65

Bảng 3.4 Ma trận dữ liệu 65

Bảng 3.5 Dịch vòng mã hóa 66

Bảng 3.6 Giá trị trước và sau khi thực hiện Row Shift 71

Bảng 3.7 Thời gian thực hiện và lưu lượng của thuật toán mã hóa AES trên thiết bị dsPIC 75

Bảng 3.8 Bộ nhớ sử dụng cho các thuật toán mã hóa 75

Bảng 3.8 Kết quả thử nghiệm Modul phần mềm kết hợp với khóa cứng mã hóa/giải mã dữ liệu trên máy tính dùng thuật toán AES 82

Bảng 3.9 Bảng kết quả thử nghiệm Modul phần mềm kết hợp với khóa cứng để mã hóa/giải mã dữ liệu khi trao đổi qua email dùng thuật toán RSA 85

Trang 7

DANH MỤC CÁC HÌNH VẼ

Hình 1.1 Mô hình truyền tin cơ bản của mật mã học 8

Hình 2.1 Mô hình hệ mật mã khóa bí mật 17

Hình 2.2 Các trạng thái của AES 24

Hình 2.3 Sơ đồ thuật toán 27

Hình 2.4 Thao tác SubBytes tác động trên từng byte của trạng thái 28

Hình 2.5 Bảng thế S-Table của thuật toán AES 29

Hình 2.6 Thao tác ShiftRows tác động trên từng dòng của trạng thái 30

Hình 2.7 Thao tác MixColumns tác động lên mỗi cột của trạng thái 32

Hình 2.8 Thao tác AddRoundKey tác động lên mỗi cột của trạng thái 33

Hình 2.9 Thao tác InvShiftRows tác động lên từng dòng của trạng thái hiện hành 38

Hình 2.10 Bảng thế cho phép biến đổi InvSubBytes 40

Hình 2.11 Mô hình hệ thống mã hóa với khóa công khai 47

Hình 3.1 Hình ảnh khóa cứng và các môdul trên khóa cứng 57

Hình 3.2: Sơ đồ nguyên lý mạch điện trên khoá cứng 58

Hình 3.3 Dữ liệu trên bộ nhớ lưu trữ trên khóa cứng A và B 58

Hình 3.4 Hiển thị giao tiếp USB nhận được khi cắm khóa cứng vào máy tính 59

Hình 3.5 Sơ đồ cấu trúc dòng vi xử lý 16 bit 61

Hình 3.6 Giao diện soạn thảo chương trình cho vi xử lý 63

Hình 3.7 Sơ đồ khối của thuật toán mã hóa AES 64

Hình 3.8 Sơ đồ khối của quá trình giải mã 69

Hình 3.9 Quy trình thực hiện mã file sử dụng mã khoá lấy từ khoá cứng 76

Hình 3.10 Quy trình thực hiện giải mã file sử dụng mã khoá lấy từ khoá cứng 77

Hình 3.11 Giao diện phần mềm mã/giải mã file dữ liệu và quản lý mã khóa 77 Hình 3.12 Thông báo của phần mềm khi không cắm khóa cứng 78

Hình 3.13 Giao diện phần mềm khi nhập mật khẩu đúng 78

Hình 3.14 Giao diện phần mềm khi thực hiện mã hóa dữ liệu 79

Hình 3.15 Giao diện phần mềm khi thực hiện giải mã dữ liệu 80

Hình 3.16 Danh sách các file đã mã hóa 80

Hình 3.17 Giao diện phần mềm thực hiện lựa chọn file để mã hóa và gửi thư điện tử 83

Hình 3.18 Giao diện phần mềm khi thực hiện mã hóa file tại máy đầu A 83

Hình 3.19 Giao diện phần mềm thực hiện giải mã tại máy đầu B 84

Trang 8

MỞ ĐẦU

Ngày nay, với sự phát triển nhanh chóng của công nghệ và các mạng giao dịch toàn cầu, việc lưu trữ dữ liệu và trao đổi thông tin ngày càng đơn giản và thuận tiện hơn nhưng bên cạnh đó cũng nảy sinh những yêu cầu cao hơn về bảo mật thông tin trong các hệ thống và ứng dụng điện tử Mật mã là phương pháp an toàn và hiệu quả nhất để đảm bảo an toàn, bí mật thông tin Các kết quả của khoa học mật mã ngày càng được triển khai trong nhiều lĩnh vực khác nhau của đời sống – xã hội, trong đó phải kể đến rất nhiều những ứng dụng đa dạng trong lĩnh vực dân sự, thương mại Các ứng dụng mã hóa thông tin cá nhân, trao đổi thông tin kinh doanh, thực hiện các giao dịch điện

tử qua mạng đã ngày càng trở nên gần gũi và quen thuộc với mọi người

Các thiết bị mang tin đa dạng về chủng loại và ngày càng được sử dụng phổ biến (USB, thẻ nhớ, ổ cứng di động, máy tính xách tay ) rất thuận tiện trong sử dụng, nhưng cũng dễ mất an toàn như bị thất lạc, bị sao chép trộm Các phần mềm gián điệp, mã độc hại có thể lấy cắp dữ liệu đã trở nên ngày càng phổ biến, đặc biệt là trong an ninh quốc phòng như phần mềm đọc bàn phím (Keylogger) dễ dàng trợ giúp cho việc lấy cắp mật khẩu, mã khóa Một vấn đề khác là việc mất an toàn khi gửi/nhận thư điện tử (email), khi sao chép, in ấn hoặc khi kết nối mạng cũng thường xuyên xảy ra Một trong những vấn đề chính hay gặp trong thực tế của các hệ thống mã hóa hiện nay là vấn đề an toàn trong việc sinh khóa, bảo quản và sử dụng mã khóa

Khóa điện tử (khóa cứng) là một sản phẩm sử dụng chuẩn kết nối tuần

tự đa dụng USB (Univeral Serial Bus), có nghĩa là giao tiếp với máy tính thông qua cổng USB Không như các USB lưu trữ dữ liệu thông thường, các sản phẩm này được chế tạo bởi nhiều kiểu kiến trúc phần cứng khác nhau, có thể là chip EEPROM, hay Smartchip,… có chức năng chính là bảo vệ bản

Trang 9

quyền phần mềm, bảo vệ sourcecode, license của sản phẩm phần mềm và mã hóa dữ liệu Khóa cứng đã được nghiên cứu, sản xuất và đưa vào sử dụng rộng khắp trong lĩnh vực công nghệ thông tin nói chung và an toàn thông tin nói riêng

ở trong cũng như ngoài nước Các ngành như công nghệ phần mềm, ngân hàng,

an ninh bảo mật… cũng nghiên cứu và sử dụng các thiết bị khóa cứng và Token trong việc bảo mật, chống sao chép, chữ ký số

e-Hiện nay, một số công ty thử nghiệm giải pháp dùng khoá cứng trong bảo vệ dữ liệu và bảo vệ bản quyền phần mềm, một số loại như Hasp, Rockey, Unikey, USB-токен, SecureDongle, Tuy nhiên, đây đều là các sản phẩm nhập khẩu, vì vậy khả năng phát triển những ứng dụng có sử dụng khóa cứng phải phụ thuộc vào nhà cung cấp nước ngoài và các thiết bị này không đảm bảo có bị lỗi cổng hậu (backdoor) hay không Gần đây khoá cứng bảo vệ phần mềm cũng đã bị bẻ khoá nhờ công nghệ giả lập khoá cứng

Với mong muốn áp dụng các phương pháp mã hóa vào việc bảo mật dữ liệu và trao đổi thư điện tử, đồng thời từng bước tìm hiểu, làm chủ công nghệ

khóa cứng, tác giả chọn đề tài: “Nghiên cứu thiết kế, ứng dụng khóa điện tử đảm bảo an toàn thông tin trong các giao dịch điện tử” nhằm nghiên cứu, đề

xuất giải pháp ứng dụng khóa cứng với các chức năng: là thiết bị lưu trữ mã khóa, đảm bảo nhỏ gọn, kết nối với máy tính thông qua cổng USB, kết hợp được với phần mềm mã hóa, có ID riêng cho từng thiết bị, có bộ nhớ đủ lớn

để lưu trữ mã khóa, lưu trữ dữ liệu, thuận tiện trong sử dụng; xây dựng phần mềm kết hợp với khóa cứng để thực hiện việc quản lý mã khóa và mã hóa dữ liệu

Mục tiêu của luận văn

Nghiên cứu sản phẩm khoá cứng ứng dụng trong việc mã hóa dữ liệu trên máy tính và khi trao đổi thư điện tử (email)

Trang 10

Nghiên cứu xây dựng phần mềm kết hợp với khóa cứng thực hiện mã hóa/giải mã dữ liệu trên máy tính

Nghiên cứu thiết kế modul mã hóa và giao tiếp với máy tính thực hiện

mã hóa luồng dữ liệu khi thực hiện giao tiếp giữa khóa cứng và máy tính

Từng bước làm chủ thiết bị an toàn bảo mật có tích hợp bên trong các

thuật toán mã và giải mã

Cơ sở khoa học và tính thực tiễn của luận văn

Xuất phát từ vai trò của mật mã trong các giải pháp an toàn thông tin - nghiên cứu và ứng dụng mật mã để bảo vệ thông tin Cụ thể là nghiên cứu phương pháp mã hoá AES (Advanced Encryption Standard – chuẩn mã hóa nâng cao) được Viện Tiêu chuẩn và Công nghệ Hoa Kỳ (NIST) chính thức công bố ngày 02/10/2000 và phương pháp mã hóa khóa công khai RSA; các

mô hình thực hiện mã khối trên nền công nghệ nhúng, trong luận văn ứng dụng thực hiện trên chíp vi xử lý 16 bit tốc độ cao

Nghiên cứu sản phẩm khóa cứng ứng dựng các phương pháp mã hóa hiện đại nhằm: bảo vệ dữ liệu trên máy tính và khi trao đổi tin; làm chủ công nghệ các sản phẩm an toàn bảo mật thông tin mang nhãn hiệu Việt

Kết quả nghiên cứu của đề tài góp phần làm rõ các phương pháp mã hóa mới có tính bảo mật cao, đưa ra một giải pháp cho việc bảo vệ dữ liệu trên máy tính và khi trao đổi thông tin

Nội dung của luận văn được chia thành các chương sau:

Chương 1: Đặt vấn đề

Trong chương này, nghiên cứu tổng quan về mật mã học, vai trò của mật mã trong bảo đảm an toàn bảo mật dữ liệu, một số nguy cơ mất an toàn

Trang 11

bảo mật dữ liệu ngay cả khi dữ liệu đã được mã hóa, đề xuất giải pháp đảm bảo an toàn bảo mật dữ liệu trước các nguy cơ trên

Chương 2: Nghiên cứu lựa chọn các thuật toán mã hóa

Trong chương này, nghiên cứu khái quát về hai loại hệ mật mã là hệ mật mã khóa bí mật và hệ mật mã khóa công khai, lựa chọn nghiên cứu hai phương pháp mã hóa hiện đại là AES và RSA, có độ an toàn cao để ứng dụng trong xây dựng chương trình mã/giải mã dữ liệu

Chương 3: Nghiên cứu xây dựng và thực hiện thử nghiệm khóa cứng với các phần mềm mã hóa/giải mã

Trong chương này, nghiên cứu thiết kế khóa cứng; xây dựng và thử nghiệm phần mềm kết hợp với khóa cứng để mã/giải mã dữ liệu bao gồm hai modul là Modul phần mềm kết hợp với khóa cứng thực hiện mã hóa dữ liệu trên máy tính dùng thuật toán AES, Modul phần mềm kết hợp với khóa cứng

để mã hóa dữ liệu khi trao đổi qua email dùng thuật toán RSA

Trang 12

Chương 1: ĐẶT VẤN ĐỀ 1.1 Tổng quan về mật mã

1.1.1 Mật mã học

Mật mã học là ngành khoa học ứng dụng toán học vào việc biến đổi thông tin thành một dạng khác với mục đích che dấu nội dung, ý nghĩa thông tin cần mã hóa [10] Đây là một ngành khoa học có lịch sử lâu đời dựa trên nền tảng các thuật toán toán học, số học, xác suất và các môn khoa học khác

Mật mã học bao gồm hai lĩnh vực: mã hóa (cryptography) và thám mã (cryptanalysis-codebreaking) trong đó:

Mã hóa: nghiên cứu các thuật toán và phương thức để đảm bảo tính bí mật và xác thực của thông tin Các sản phẩm của lĩnh vực này là các hệ mật

mã, các hàm băm, các chữ ký điện tử, các cơ chế phân phối, quản lý khóa và các giao thức mật mã

Thám mã: nghiên cứu các phương pháp phá mã hoặc tạo mã giả Sản phẩm của lĩnh vực này là các phương pháp thám mã, các phương pháp giả mạo chữ ký, các phương pháp tấn công các hàm băm và các giao thức mật mã

Mật mã học là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được

sử dụng ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên toàn thế giới, từ các lĩnh vực an ninh, quốc phòng,… cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng… Cùng với sự phát triển của khoa học máy tính và Internet, các nghiên cứu và ứng dụng của khoa học mật mã ngày càng trở nên đa dạng hơn, mở ra nhiều hướng nghiên cứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù với những đặc trưng riêng Ứng dụng của khoa học mật

mã không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết: chứng thực nguồn

Trang 13

gốc nội dung thông tin (kỹ thuật chữ ký điện tử), chứng nhận tính xác thực về người sở hữu mã khóa (chứng nhận khóa công khai), các quy trình giúp trao đổi thông tin và thực hiện giao dịch điện tử an toàn trên mạng Những kết quả nghiên cứu về mật mã cũng đã được đưa vào trong các hệ thống phức tạp hơn, kết hợp với những kỹ thuật khác để đáp ứng yêu cầu đa dạng của các hệ thống ứng dụng khác nhau trong thực tế, ví dụ như hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý an ninh của các đơn vị với hướng tiếp cận sinh trắc học, hệ thống cung cấp dịch vụ multimedia trên mạng với yêu cầu cung cấp dịch vụ và bảo vệ bản quyền sở hữu trí tuệ đối với thông tin số

1.1.2 Hệ mật mã (cryptosystem)

a) Khái niệm

Hệ mật mã là một bộ năm (P, C, K, E, D) thỏa mãn các điều kiện sau:

1 P là không gian bản rõ: là tập hữu hạn các bản rõ có thể có

2 C là không gian bản mã: là tập hữu hạn các bản mã có thể có

3 K là không gian khoá: là tập hữu hạn các khoá có thể có

4 E và D lần lượt là tập luật mã hóa và giải mã Với mỗi khóa k∈K, tồn tại luật mã hóa ek∈ E và luật giải mã dk∈ D tương ứng Luật mã hóa ek: P→ C và luật giải mã dk: C → P là hai ánh xạ thỏa mãn: dk (ek (x)) = x,

∀x∈P [4]

Thường thì không gian các bản rõ và không gian các bản mã là các văn

bản được tạo thành từ một bộ chữ cái A nào đó Đó có thể là bộ chữ cái tiếng

Anh, bộ mã ASCII, bộ mã Unicode hoặc đơn giản nhất là bộ hai bit 0 và 1

Trang 14

Tính chất 4 là tính chất chính và quan trọng nhất của một hệ mật mã Tính chất này bảo đảm một mẩu tin x ∈ P được mã hóa bằng luật mã hóa

ek∈E có thể được giải mã chính xác bằng luật dk∈D

b) Phân loại hệ mật mã

• Theo phép toán sử dụng để chuyển đổi bản rõ thành bản mã:

– Thay thế (substitution): mỗi phần tử trong bản rõ được ánh xạ (map) sang một phần tử khác

– Hoán vị (transposition): các phần tử của bản rõ được sắp xếp lại

• Theo số lượng khoá được dùng:

– Nếu cả bên gửi và bên nhận sử dụng cùng một khoá, thì hệ thống được gọi là mã hoá đối xứng (symmetric), mã hoá khoá bí mật (secret-key),

mã hoá một khoá (single-key)

– Nếu bên gửi và bên nhận sử dụng hai khoá khác nhau, thì hệ thống được gọi là mã hoá bất đối xứng (asymmetric), mã hoá khoá công khai (public-key), mã hoá hai khoá (two-key)

• Theo cách thức xử lý bản rõ (bản mã):

– Mật mã khối (block cipher): xử lý mỗi lần một khối các phần tử đầu vào tạo ra một khối đầu ra tương ứng với mỗi khối đầu vào

– Mật mã dòng (stream cipher): xử lý liên tiếp các phần tử đầu vào tạo

ra mỗi lần một phần tử đầu ra

1.1.3 Mô hình truyền tin cơ bản của mật mã học và nguyên lý Kerckhoffs

Mô hình truyền tin thông thường: trong mô hình truyền tin thông thường thông tin truyền (vận chuyển) từ người gửi đến người nhận được thực hiện nhờ một kênh vật lý (chẳng hạn như việc gửi thư) được coi là an toàn

Trang 15

Mô hình cơ bản của truyền tin bảo mật: khác với truyền tin thông thường, có các yếu tố mới được thêm vào như khái niệm kẻ địch (E-Enemy), các khoá mã hoá và giải mã K để bảo đảm tính bảo mật của thông tin cần truyền đi

Hình 1.1 Mô hình truyền tin cơ bản của mật mã học Trong mô hình này người gửi S (Sender) muốn gửi một thông điệp X (Message – là một bản rõ) tới người nhận R (Receiver) qua một kênh truyền không an toàn (Insecured Channel), kẻ địch E (Enemy) có thể nghe trộm, hay sửa đổi thông tin X Vì vậy, S sử dụng phép biến đổi , tức mã hóa (E-Encryption) lên thông tin X ở dạng đọc được (Plaintext) để tạo ra một đoạn văn bản được mã hoá Y (C-Ciphertext) không thể hiểu được theo một quy luật thông thường, sử dụng một thông tin bí mật gọi là khóa K1 (Key), khoá

K1 chính là thông số điều khiển cho phép biến đổi từ bản rõ X sang bản mã Y (chỉ các bên tham gia truyền tin S và R mới có thể biết khóa này) Giải mã (D-Decryption) là quá trình ngược lại cho phép người nhận thu được thông tin X ban đầu từ đoạn mã hóa Y sử dụng khóa giải mã K2 (chú ý là khóa giải mã và khóa mã hóa có thể giống hoặc khác nhau tùy thuộc vào hệ mật mã sử dụng) Các phép biến đổi được sử dụng trong mô hình truyền tin trên thuộc về một

hệ mật mã (Cryptosystem) nào đó

Trang 16

Trong các thuật toán mã hóa, khóa được dùng điều khiển các quá trình

mã hóa và giải mã Phần lớn các thuật toán hiện đại dựa trên các thuật toán được công bố công khai, thậm chí là thực hiện bằng các phần mềm mã nguồn

mở Vì vậy, "Độ an toàn của hệ thống mật mã không phụ thuộc vào việc giữ

bí mật thuật toán mã hóa, nó phụ thuộc vào việc giữ bí mật chìa khóa mã."

Quan điểm này xuất phát từ các công trình nghiên cứu của Auguste Kerckhoffs (vào những năm 1880), Claude Shannon (vào những năm 1940) [1] và được biết đến dưới tên gọi nguyên lý Kerckhoffs hay châm ngôn của Shannon Nghĩa là, toàn bộ cơ chế mã/giải mã (trừ khóa) là không bí mật đối với kẻ địch Rõ ràng nếu đối phương không biết được hệ mật mã đang sử dụng thuật toán mã hóa gì thì việc thám mã sẽ rất khó khăn nhưng chúng ta không thể tin vào độ an toàn của hệ mật mã chỉ dựa vào một giả thiết không chắc chắn là đối phương không biết thuật toán đang sử dụng Vì vậy, khi trình bày một hệ mật bất kỳ, chúng ta đều giả thiết hệ mật đó được trình bày dưới nguyên lý Kerckhoffs

1.1.4 Một số ứng dụng của mật mã học

Ngày nay, khó có thể tìm thấy các ứng dụng trên máy tính lại không sử dụng tới các thuật toán và các giao thức mật mã học Từ các ứng dụng cho các máy tính cá nhân cho tới các chương trình hệ thống như các hệ điều hành hoặc các ứng dụng mạng hoặc các hệ cơ sở dữ liệu đều có sử dụng các thuật toán mã hóa mật khẩu người dùng bằng một hệ mã hoặc một hàm băm nào

đó Đặc biệt, với sự phát triển mạnh mẽ của thương mại điện tử, các mô hình chứ ký điện tử ngày càng đóng vai trò tích cực cho một môi trường an toàn cho người dùng Tuy vậy, chúng ta vẫn có thể chia các lĩnh vực ứng dụng của mật mã học thành các lĩnh vực nhỏ như sau :

Trang 17

- Bảo mật (Confidentiality): che dấu nội dung của các thông điệp được trao đổi trong một phiên truyền thông hoặc giao dịch hoặc các thông điệp trên một hệ thống máy tính (các file, dữ liệu trong một cơ sở dữ liệu…)

- Xác thực hóa (Authentication): đảm bảo nguồn gốc của một thông điệp, người dùng

- Toàn vẹn (Integrity): đảm bảo chỉ có các tổ chức đã được xác thực mới có thể thay đổi các tài sản của hệ thống cũng như các thông tin trên đường truyền

- Dịch vụ không thể chối từ (Non-Repudiation): Các bên đã được xác thực không thể phủ nhận việc tham gia vào một giao dịch hợp lệ

- Ngoài ra, còn có các dịch vụ quan trọng khác như chữ ký điện tử, dịch

vụ chức thực danh tính (Identification) cho phép thay thế hình thức xác thực hóa người dùng dựa trên các mật khẩu bằng các kỹ thuật mạnh hơn hoặc dịch

vụ thương mại điện tử cho phép tiến hành các giao dịch an toàn trên các kênh truyền thông không an toàn như Internet

1.2 Một số nguy cơ mất an toàn bảo mật thông tin

Để bảo đảm an toàn bảo mật cho dữ liệu thì chỉ sử dụng giải pháp mã hóa thôi chưa đủ vì dữ liệu đã mã hóa vẫn có các nguy cơ mất an toàn bảo mật, chúng ta có thể kể đến một số nguy cơ sau:

1.2.1 Mất mã khóa

Trong mật mã học, mã khóa là một đoạn thông tin điều khiển hoạt động của thuật toán mã hóa (quá trình mã hóa/giải mã) Nói một cách khác, khóa là thông tin để cá biệt hóa quá trình mã hóa cũng như giải mã Khóa cũng được

sử dụng trong các thuật toán khác trong mật mã học như thuật toán tạo chữ ký

số hay hàm băm mật mã

Trang 18

Với một thuật toán được thiết kế tốt, mã hóa cùng một văn bản với các khóa khác nhau sẽ cho ra các bảng mã hoàn toàn khác nhau Tương tự, khi ta giải mã với khóa sai thì kết quả sẽ cho ra một bản rõ hoàn toàn ngẫu nhiên Trong trường hợp khóa bị thất lạc thì ta không thể phục hồi lại bản rõ ban đầu với điều kiện là thuật toán đảm bảo chất lượng và độ dài khóa đủ lớn

Bất kỳ người nào có được khóa (bằng bất kỳ cách gì, trong nhiều trường hợp do sơ suất của người giữ khóa) thì sẽ dễ dàng giải mã được dữ liệu

đã mã hóa, khi đó vấn đề đặt ra là phải lưu trữ và bảo quản mã khóa như thế nào để đảm bảo bí mật, an toàn Việc giữ bí mật các khóa là vấn đề khó khăn nhất trong các hệ thống thực tế

Khi thiết kế hệ thống an ninh, cần phải giả định rằng kẻ tấn công nắm được các thông tin chi tiết về thuật toán Điều này được biết đến với tên là nguyên lý Kerckhoff Lịch sử mật mã học đã khẳng định nguyên lý này: hầu như không thể giữ bí mật về thiết kế các thuật toán được sử dụng rộng rãi Trái lại, việc giữ bí mật về khóa dễ hơn rất nhiều vì khóa thường chỉ là một đoạn thông tin ngắn và ta dễ dàng thay đổi chúng khi có dấu hiệu bị lộ Vì thế,

an ninh của một hệ thống mật mã hóa thường dựa trên việc giữ bí mật các khóa mã

Trong thực tế, quản lý khoá là vấn đề khó nhất của an toàn hệ mã hoá

Để thiết kế an toàn thuật toán mã hoá và giao thức là một việc làm không phải

dễ dàng nhưng để tạo và lưu trữ khoá bí mật là điều còn khó hơn Kẻ thám mã thường tấn công cả hai hệ mã hoá khóa bí mật và công khai thông qua hệ quản lý khoá

1.2.2 Thất lạc các vật mang tin

Trang 19

Các thiết bị mang tin (USB, thẻ nhớ, ổ cứng di động, máy tính xách tay ) đa dạng về chủng loại và ngày càng được sử dụng phổ biến rất thuận tiện trong sử dụng, nhưng cũng dễ mất an toàn như bị thất lạc, bị sao chép trộm nếu không có biện pháp bảo vệ dữ liệu trên những thiết bị mang tin di động, chúng ta có thể gặp phải những rắc rối nghiêm trọng

USB là thiết bị lưu trữ dữ liệu rất phổ biến hiện nay, ưu điểm lớn nhất khi sử dụng USB và các thiết bị nhớ di động là người sử dụng có thể mang dữ liệu theo bên mình đi bất cứ đâu Nhưng đây cũng là nhược điểm lớn nhất của các thiết bị này: nó rất dễ bỏ quên hoặc đánh mất, thậm chí bị đánh cắp nếu người dùng không để ý Nếu USB chứa nhiều dữ liệu quan trọng hay riêng tư

rơi vào tay người khác thì sẽ dẫn đến những hậu quả không đáng có

Máy tính xách tay tiện dụng nhưng cũng rất dễ bị đánh cắp, máy tính bị đánh cắp là “cơn ác mộng” mà bất kỳ ai cũng có thể phải đối mặt vào bất cứ lúc nào Khi máy tính bị đánh cắp, chủ nhân không chỉ mất đi tài sản của mình, mà quan trọng hơn hết, những dữ liệu chứa trên đó có thể là “vô giá”

mà không thể nào tìm lại được và có thể đó là những dữ liệu mà khi bị lộ ra ngoài nó sẽ gây ra những hậu quả khôn lường

1.2.3 Truy cập trái phép các phần mềm quan trọng

Các phần mềm quan trọng đòi hỏi tính bảo mật cao như các phần mềm

sử dụng trong an ninh, quốc phòng khi được cài đặt trên máy tính đặc biệt là các máy tính dùng chung có thể bị truy cập và sử dụng trái phép bởi những người không có thẩm quyền, dẫn đến việc lộ những thông tin, dữ liệu bí mật nhất là bí mật quân sự, bí mật quốc gia Điều này đòi hỏi phải có giải pháp bảo vệ các phần mềm này ngoài giải pháp sử dụng username và password của

Trang 20

1.2.4 Mất an toàn khi gửi/nhận thư điện tử

Một vấn đề khác là việc mất an toàn khi gửi/nhận thư điện tử cũng thường xuyên xảy ra Khi gửi thư điện tử trên đường truyền mạng, người gửi

có thể sử dụng biện pháp mã hóa để bảo đảm bí mật của nội dung bức thư nhưng như trên đã trình bày, mã khóa của thuật toán mã hóa có thể bị mất vì một nguyên nhân nào đó và người có được mã khóa có thể dễ dàng giải mã được bức thư

1.3 Đề xuất giải pháp bảo đảm an toàn bảo mật dữ liệu

Mã hóa dữ liệu là một trong những việc rất quan trọng để bảo vệ thiết

bị di động Với một thiết bị đã được quản lý, người sử dụng có thể phân phối

dữ liệu hoặc tuân thủ chính sách mã hoá dữ liệu nhất định Theo các chuyên gia tư vấn: các thư mục dữ liệu, hộp thư điện tử, dữ liệu người dùng, danh bạ, các chứng thực là những thứ nên được mã hóa Hầu hết các mức mã hóa sẽ giúp gửi các email an toàn hơn so với việc gửi một email không được mã hóa bởi lẽ chúng ta đều không thể kiểm soát được mọi thứ xảy ra trong quá trình gửi Việc mã hóa các thiết bị lưu trữ có thể tháo rời được, chẳng hạn như các thẻ nhớ SD, USB, ổ cứng di động cũng cần được người sử dụng cân nhắc để

mã hoá

Nhưng chỉ mã hóa thôi chưa đủ vì khi mã khóa bị đánh cắp, bị thất lạc thì các dữ liệu đã mã hóa sẽ không còn là bí mật nữa Chính vì vậy, luận văn đề xuất giải pháp sử dụng khóa cứng:

1.3.1 Dùng khóa cứng để lưu giữ mã khóa

Trang 21

Đối với các phần mềm mã hóa và giải mã thông thường, khi tiến hành

mã hóa hoặc giải mã dữ liệu, mã khóa có thể được đánh trực tiếp từ bàn phím bởi người sử dụng, loại mã khóa này người sử dụng phải nhớ trong đầu hoặc ghi vào giấy để lưu trữ; mã khóa cũng có thể được lấy từ một file khóa được bảo vệ bằng mật khẩu, loại mã khóa này là dạng file khóa được lưu trữ trên máy tính hoặc các vật mang tin Các mã khóa hoặc mật khẩu file khóa có thể dễ dàng bị đánh cắp bởi các phần mềm gián điệp (như Keylogger ) hoặc mã khóa có thể bị quên khi nhớ trong đầu, bị xem trộm, lấy cắp khi ghi ra giấy Giải pháp dùng khóa cứng để lưu giữ mã khóa sẽ giải quyết được vấn đề nêu trên

Sử dụng khóa cứng để lưu giữ mã khóa là khi muốn mã hóa hay giải

mã dữ liệu đã được mã hóa cần phải sử dụng khóa cứng (USB chuyên dụng), sau khi cắm khóa cứng vào máy, khai báo đúng username và password của người sử dụng, phần mềm mã hóa sẽ lấy mã khóa đã được lưu trữ trên USB

để thực hiện các yêu cầu của người sử dụng Như vậy, chỉ những người có khóa cứng và tài khoản người dùng hợp lệ mới có thể mã hóa hay giải mã dữ liệu với mã khóa đã lưu trữ trên khóa cứng

Trong quá trình truyền thông giữa khóa cứng và máy tính dữ liệu cũng được mã hóa và chèn thêm các chuỗi dữ liệu ngẫu nhiên để đảm bảo an toàn tránh đọc trộm mã khóa bởi các phần mềm đọc, giám sát truyền thông qua cổng USB, như phần mềm Minimoon,

Khóa cứng là một thiết bị gọn nhẹ dựa trên giao tiếp USB tốc độ cao,

có khả năng lưu trữ và bảo mật khóa bí mật của người dùng, dung lượng lưu trữ username và password lên đến 4MB Đặc biệt, có dung lượng lưu trữ dữ liệu lên đến 16GB Khóa cứng được sản xuất theo hướng tự phát triển Hardware, Firmware và nạp vào IC trắng, đảm bảo loại trừ việc cài đặt và

Trang 22

xâm nhập dữ liệu trái phép (khả năng back door), chất liệu làm vỏ và quy trình sản xuất đặc biệt giúp khóa cứng có khả năng chống rung xóc và chịu nước Trên bo mạch có tích hợp chíp vi xử lý hiện đại 16 bít, có thể thực hiện các thuật toán cho chức năng bảo mật, có thể thực hiện mã DES, AES,

1.3.2 Dùng khóa cứng để khóa máy tính, dùng USB có bảo vệ khi truy cập Khi máy tính bị mất, máy tính đã được bảo vệ bởi mật khẩu đăng nhập của Windows! Điều đó đã đủ chưa? Thực tế, mật khẩu đăng nhập của Windows rất dễ dàng bị phá Thêm nữa là bất kỳ ai có thể sử dụng máy tính

đó đủ lâu để khởi động hệ thống từ một đĩa CD đều có thể sao chép toàn bộ

dữ liệu trên máy mà không cần đến bất kỳ một mật khẩu nào Trong trường hợp họ có thể mang máy tính đi một khoảng thời gian nhất định, chủ nhân còn

có thể gặp nhiều rắc rối hơn nữa Không chỉ mỗi mật khẩu đăng nhập của Windows có thể bị phá mà cũng không thể tin cậy các mật khẩu của trình soạn thảo Microsoft Word hay Adobe Acrobat

Vì vậy, để bảo đảm bí mật dữ liệu nên sử dụng các USB có chế độ bảo

vệ, tức là khi đăng nhập vào USB người sử dụng phải khai báo username và password; nên sử dụng khóa cứng để bảo vệ máy tính và dữ liệu lưu trên máy tính Khi các thiết bị này vì một nguyên nhân nào đó bị rơi vào tay kẻ khác thì

sẽ rất khó khăn để đọc được nội dung của dữ liệu trên đó

1.3.3 Dùng khóa cứng để bảo vệ phần mềm có bản quyền và phần mềm quan trọng

Để bảo vệ các phần mềm có bản quyền nói chung hay các phần mềm quan trọng nói riêng, ngay từ khi thiết kế phần mềm, người thiết kế sẽ xây dựng modul xác định sự hiện diện của khoá cứng Khi đưa mỗi phần mềm cho mỗi khách hàng sử dụng sẽ có kèm theo khoá cứng Khi khách hàng kích hoạt phần mềm, môdul kiểm tra sự hiện diện của khoá cứng sẽ được kích hoạt và

Trang 23

liên tục hoạt động Nếu môdul phát hiện không có khoá cứng phần mềm sẽ không được kích hoạt hoặc ngay lập tức phần mềm sẽ ngưng hoạt động

Với giải pháp này sẽ thực hiện được mục tiêu sau:

Bảo vệ chống lại việc sao chép bất hợp pháp các phần mềm, bởi vì nếu có phần mềm mà không có khoá cứng, phần mềm cũng không hoạt động được

Bảo vệ được các phần mềm quan trọng dùng trong an ninh, quốc phòng vì sẽ ngăn chặn sự xâm phạm của người không có khoá cứng tới các phần mềm

Trang 24

Chương 2: NGHIÊN CỨU LỰA CHỌN CÁC THUẬT TOÁN MÃ HÓA

2.1 Hệ mật mã khóa bí mật Chuẩn mã AES

2.1.1 Hệ mật mã khóa bí mật (quy trình mã hóa đối xứng)

Hệ mật mã khóa bí mật là hệ thống mã hóa trong đó quy trình mã hóa và

giải mã đều sử dụng chung một khoá - khóa bí mật, hoặc khóa này có thể dễ

dàng suy ra được từ khóa kia [4] Quy trình mã hóa và giải mã là đối xứng

nhau nghĩa là chỉ dùng một khóa chung cho quá trình mã hóa hay giải mã và

quá trình giải mã chỉ đơn giản là làm ngược lại quá trình mã hóa ban đầu

Trong hệ mật mã khóa bí mật, trước khi mã hóa dữ liệu để gửi đến

người nhận thì hai bên gửi và nhận phải thống nhất khóa chung K và thống

nhất cả thuật toán dùng để mã hóa và giải mã A sẽ sử dụng mã khóa K để mã

hóa thông điệp x thành thông điệp y và gửi y cho B; B sẽ sử dụng mã khóa K

để giải mã thông điệp y này Vấn đề an toàn bảo mật thông tin được mã hóa

phụ thuộc vào việc giữ bí mật mã khóa K Nếu C biết được mã khóa K thì C có

thể giải mã thông điệp đã được mã hóa mà A gửi cho B

Hình 2.1 Mô hình hệ mật mã khóa bí mật

Trang 25

Nhược điểm chính của phương pháp này là cần phải trao đổi khóa mã giữa người gửi và người nhận nên khó đảm bảo quá trình trao đổi khóa là an toàn nhưng ưu điểm là tốc độ mã hóa và giải mã rất nhanh

Các phương pháp mã hóa khóa bí mật có thể kể đến là: phương pháp

mã hóa dịch chuyển, phương pháp mã hóa thay thế, phương pháp mã hóa Affine, phương pháp Vigenere, phương pháp Hill, phương pháp mã hóa hoán

vị, phương pháp mã hóa bằng phép nhân, phương pháp DES (Data Encryption Standard), phương pháp chuẩn mã hóa nâng cao AES (Advanced Encryption Standard),

2.1.2 Chuẩn mã AES (Advanced Encryption Standard)

Với tốc độ và khả năng xử lý ngày càng được nâng cao của các bộ vi

xử lý hiện nay, phương pháp mã hóa dữ liệu chuẩn (Data Encryption Standard – DES) trở nên không an toàn trong bảo mật thông tin Do đó, Viện Tiêu chuẩn và Công nghệ Hoa Kỳ (National Institute of Standards and Technology – NIST) đã quyết định chọn một chuẩn mã hóa mới với độ an toàn cao nhằm phục vụ nhu cầu bảo mật thông tin liên lạc của Chính phủ Hoa Kỳ cũng như trong các ứng dụng dân sự Thuật toán Rijndael do hai nhà mật mã học người

Bỉ Vincent Rijmen và Joan Daeman đưa ra đã được chính thức chọn trở thành chuẩn mã hóa nâng cao AES (Advanced Encryption Standard) từ ngày 02 tháng 10 năm 2000 [3]

Phương pháp mã hóa Rijndael là phương pháp mã hóa theo khối (block cipher) có kích thước khối và mã khóa thay đổi linh hoạt với các giá trị 128,

192 hay 256 bit Phương pháp này thích hợp ứng dụng trên nhiều hệ thống khác nhau từ các thẻ thông minh cho đến các máy tính cá nhân

Mặc dù 2 tên AES và Rijndael vẫn thường được gọi thay thế cho nhau

nhưng trên thực tế thì 2 thuật toán không hoàn toàn giống nhau AES chỉ làm

Trang 26

việc với các khối dữ liệu (đầu vào và đầu ra) 128 bít và khóa có độ dài 128,

192 hoặc 256 bít trong khi Rijndael có thể làm việc với dữ liệu và khóa có độ dài bất kỳ là bội số của 32 bít nằm trong khoảng từ 128 tới 256 bít Các khóa con (round key) sử dụng trong các chu kỳ được tạo ra bởi thủ tục sinh khóa (Key Expansion) Hầu hết các phép toán trong thuật toán AES đều thực hiện trong một trường hữu hạn của các byte Mỗi khối dữ liệu 128 bit đầu vào được chia thành 16 byte, có thể xếp thành 4 cột, mỗi cột 4 phần tử hay là một

ma trận 4x4 của các byte, nó được gọi là ma trận trạng thái, hay vắn tắt là

trạng thái (tiếng Anh: State, trạng thái trong Rijndael có thể có thêm cột)

Trong quá trình thực hiện thuật toán các toán tử tác động để biến đổi ma trận trạng thái này

2.1.2.1 Các khái niệm, hàm và ký hiệu

Biến đổi Affine Phép biến đổi bao gồm một phép nhân với một ma trận

sau đó là một phép cộng với một vectơ

Bit Một số nhị phân nhận giá trị 0 hoặc 1

Block Một dãy các bit nhị phân tạo thành input, output, trạng

thái và các khóa sử dụng tại các vòng lặp (round key) của hệ mã Độ dài của dãy (khối) là số lượng các bit mà

nó chứa Các khối cũng có thể được xem là một dãy các byte

Cipher key Khóa của hệ mã, có thể được biểu diễn dưới dạng một

mảng 2 chiều gồm 4 hàng và Nkcột

Trang 27

Ciphertext Bản mã

Inverse Cipher Thuật toán giải mã

Key Expansion Thủ tục sinh khóa, thủ tục được sử dụng để sinh ra các

khóa sử dụng tại các vòng lặp của thuật toán mã hóa, giải mã từ khóa chính ban đầu

Round key Là các giá trị sinh ra từ khóa chính bằng cách sử dụng

thủ tục sinh khóa Các khóa này được sử dụng tại các vòng lặp của thuật toán

Trạng thái (State) Các giá trị mã hóa trung gian có thể biểu diễn dưới

dạng một mảng hai chiều gồm 4 hàng và Nb cột S-Table Một bảng thay thế phi tuyến được sử dụng trong thủ tục

sinh khóa và trong các biến đổi thay thế các byte để thực hiện các thay thế 1-1 đối với một giá trị 1 byte Word Một nhóm 32 bit có thể được xem như một đơn vị tính

toán độc lập hoặc là một mảng 4 byte AddRoundKey Phép biến đổi được sử dụng trong thuật toán mã hóa và

giải mã trong đó thực hiện phép toán XOR bit giữa một trạng thái trung gian (state) và một khóa của vòng lặp (Round key) Kích thước của một Round key bằng kích thước của trạng thái

InvMixColumns Phép biến dổi được sử dụng trong thuật toán giải mã, là

phép biến đổi ngược của MixColumns InvShiftRows Phép biến đổi trong thuật toán giải mã, là phép biến đổi

ngược của ShiftRows

Trang 28

InvSubBytes Phép biến đổi trong thuật toán giải mã, là phép biến đổi

ngược của SubBytes

MixColumns Phép biến đổi trong thuật toán mã hóa, nhận tất cả các

cột của một trạng thái và trộn với dữ liệu của nó (không phụ thuộc lẫn nhau) để nhận được một cột mới

Nb Số lượng các cột (là các word 32 bit) tạo thành trạng

thái (Nb = 4)

Nk Số lượng các word 32 bit tạo thành khóa mã hóa K (Nk

= 4, 6 hoặc 8)

Nr Số lượng các vòng lặp (chu kỳ) của thuật toán, là một

hàm của Nk và Nb (Nr = 10, 12 hoặc 14 tương ứng với các giá trị khác nhau của Nk)

Rcon[] Mảng word hằng số sử dụng trong các vòng lặp

RotWord Phép biến đổi sử dụng trong thủ tục sinh khóa và nhận một

word 4-byte và thực hiện một hoán vị vòng ShiftRows Phép biến đổi sử dụng trong quá trình mã hóa, xử lý

một trạng thái bằng cách dịch vòng ba hàng cuối của trạng thái với số lần dịch khác nhau

SubBytes Phép biến đổi sử dụng trong quá trình mã hóa, xử lý

một trạng thái bằng cách sử dụng một bảng phi tuyến các byte (S-Table) thao tác trên mỗi byte một cách độc lập

Trang 29

SubWord Phép biến đổi sử dụng trong thủ tục sinh khóa, nhận

một word input 4-byte và sử dụng một S-Table trên mỗi giá trị 4-byte này để thu được một word output 4-byte

Phép nhân hai đa thức (bậc nhỏ hơn 4) theo

modulo (x4 + 1)

Bảng 2.1 Bảng các khái niệm và ký hiệu dùng trong thuật toán AES

Đơn vị byte

Đơn vị cơ bản để xử lý trong AES, là một byte tức là một dãy 8 bit được xem như một đối tượng đơn Các giá trị input, output và khóa của hệ mật mã được xem là một mảng các byte

Tất cả các byte sử dụng trong thuật toán AES đều được biểu diễn dưới dạng một dãy các bit 0 hoặc 1 theo định dạng {b7, b6, b5, b4, b3, b2, b1, b0} Các byte này sau được hiểu là các phần tử trên trường hữu hạn bằng cách sử dụng biểu diễn thành dạng đa thức:

b7x7 + b6x6 + b5x5 + b4x4 + b3x3 +b2x2 + b1x1 +b0x0 =

Chẳng hạn giá trị {01100011} tương đương với phần tử trên trường hữu hạn: x6

+ x5 + x + 1

Để thuận tiện, các giá trị Byte được biểu diễn sử dụng các ký hiệu của

hệ Hexa, với 4 bit cho một ký tự và hai ký tự cho một byte như bảng sau:

Trang 30

Trạng thái (State)

Phương pháp mã hóa AES bao gồm nhiều bước biến đổi được thực hiện tuần tự, kết quả đầu ra của bước biến đổi trước là đầu vào của bước biến đổi tiếp theo Kết quả trung gian giữa các bước biến đổi được gọi là trạng thái (State)

Một trạng thái có thể được biểu diễn dưới dạng một ma trận gồm 4

dòng và Nb cột với Nb bằng với độ dài của khối chia cho 32 (trong AES, Nb

= 4) Mã khóa chính (Cipher Key) cũng được biểu diễn dưới dạng một ma

trận gồm 4 dòng và Nk cột với Nk bằng với độ dài của khóa chia cho 32

Trong một số tình huống, ma trận biểu diễn một trạng thái hay mã khóa có thể được biểu diễn như mảng một chiều chứa các phần tử có độ dài 4 byte, mỗi phần tử tương ứng với một cột của ma trận

Trang 31

Số lượng chu kỳ, ký hiệu là Nr, phụ thuộc vào giá trị của Nb và Nk theo công thức: Nr = max{Nb,Nk } + 6 (Nr = 10, 12 hoặc 14 phụ thuộc vào độ dài

mã khóa)

Tại thời điểm bắt đầu, input của thuật toán (mảng các byte in0, in1,…,

in15) được copy vào mảng trạng thái theo quy tắc được minh họa bằng hình vẽ:

Hình 2.2 Các trạng thái của AES trong đó, các giá trị của mảng s và mảng output được tính như sau: s[r,c] = in[r +4c] với mọi 0 ≤ r, c < 4

out[r + 4c] = s[r, c] với mọi 0 ≤ r, c < 4

Các cột của mạng trạng thái được biểu diễn thành các từ 32-bit w0, ,

w3 như sau:

w0 = s0,0 s1,0 s2,0 s3,0 w1 = s0,1 s1,1 s2,1 s3,1

w2 = s0,2 s1,2 s2,2 s3,2 w3 = s0,3 s1,3 s2,3 s3,3

2.1.2.2 Quy trình mã hóa

Quy trình mã hóa AES sử dụng bốn phép biến đổi chính:

AddRoundKey: cộng (㊉) mã khóa của chu kỳ vào trạng thái hiện hành Độ dài mã khóa của chu kỳ bằng với kích thước của trạng thái

SubBytes: thay thế phi tuyến mỗi byte trong trạng thái hiện hành thông qua bảng thay thế (S-Table)

Trang 32

ShiftRows: dịch chuyển xoay vòng từng dòng của trạng thái hiện hành với di số khác nhau

MixColumns: trộn thông tin của từng cột trong trạng thái hiện hành Mỗi cột được xử lý độc lập

Mỗi phép biến đổi thao tác trên trạng thái hiện hành S Kết quả S’ của mỗi phép biến đổi sẽ trở thành đầu vào của phép biến đổi kế tiếp trong quy trình mã hóa

Trước tiên, toàn bộ dữ liệu đầu vào được chép vào mảng trạng thái hiện hành Sau khi thực hiện thao tác cộng mã khóa đầu tiên, mảng trạng thái sẽ được trải qua Nr = 10, 12 hay 14 chu kỳ biến đổi (tùy thuộc vào độ dài của

mã khóa chính) Nr - 1 chu kỳ đầu tiên là các chu kỳ biến đổi bình thường và hoàn toàn tương tự nhau, riêng chu kỳ biến đổi cuối cùng có sự khác biệt so với Nr – 1 chu kỳ trước đó Cuối cùng, nội dung của mảng trạng thái sẽ được chép lại vào mảng chứa dữ liệu đầu ra Cụ thể quy trình mã hóa như sau:

Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu

Trang 33

Cipher ( byte in[4 * Nb],

Trang 34

Hình 2.3 Sơ đồ thuật toán

Trang 35

a Phép biến đổi SubByte

Thao tác biến đổi SubBytes là phép thay thế các byte và tác động một cách độc lập lên từng byte trong trạng thái hiện hành Bảng thay thế (S-Table) có tính khả nghịch và quá trình thay thế 1 byte x dựa vào S-Table bao gồm hai bước:

1 Xác định phần tử nghịch đảo x-1

GF(28) Quy ước {00}-1

= {00}

2 Áp dụng phép biến đổi affine (trên GF(2)) đối với x-1 (giả sử x-1 có

biểu diễn nhị phân là {x 0 x 1 x 2 x 3 x 4 x 5 x 6 x 7} ):

1 1 1 1 1 0 0 0

0 1 1 1 1 1 0 0

0 0 1 1 1 1 1 0

0 0 0 1 1 1 1 1

1 0 0 0 1 1 1 1

1 1 0 0 0 1 1 1

1 1 1 0 0 0 1 1

1 1 1 1 0 0 0 1

7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0

x x x x x x x x

y y y y y y y y

hay

y i = x i x (i+4) mod 8x (i+5) mod 8 x (i+6) mod 8 x (i+7) mod 8 c i

với c i là bit thứ i của {63}, 0 ≤ i ≤ 7

Trang 36

Bảng thay thế S-Table được sử dụng trong hàm SubBytes được biểu diễn dưới dạng Hexa như sau:

Hình 2.5 Bảng thế S-Table của thuật toán AES Trong đó, chẳng hạn nếu s1,1 ={53} có nghĩa là giá trị thay thế sẽ được xác định bằng giao của hàng có chỉ số 5 với cột có chỉ số 3 trong bảng trên, điều này tương ứng với việc s’1,1 ={e,d}

Phép biến đổi SubBytes được thể hiện dưới dạng mã giả:

SubBytes (byte state[4,Nb])

end

b Phép biến đổi ShiftRows

Trang 37

Trong thao tác biến đổi ShiftRows, mỗi dòng của trạng thái hiện hành đƣợc dịch chuyển xoay vòng đi một số vị trí

Byte Sr,c tại dòng r cột c sẽ dịch chuyển đến cột (c-shift(r, Nb)) mod Nb hay:

Trang 38

Phép biến đổi ShiftRows được thể hiện dưới dạng mã giả:

ShiftRows (byte state[4,Nb])

state[r,c] = t[c]

end for end for

end

c Phép biến đổi MixColumns

Trong thao tác biến đổi MixColumns, mỗi cột của trạng thái hiện hành

được biểu diễn dưới dạng đa thức s(x) có các hệ số trên GF(28) Thực hiện phép nhân:

c c c c

s s s s

s s s s

, 3

, 2

, 1

, 0

, 3

, 2

, 1

, 0

02 01 01 03

03 02 01 01

01 03

02 01

01 01 03 02

' ' ' '

Trang 39

Với mọi 0 ≤ c < Nb

Có thể minh họa việc thực hiện phép biến đổi này bằng hình vẽ sau:

Hình 2.7 Thao tác MixColumns tác động lên mỗi cột của trạng thái

Trong đoạn mã chương trình dưới đây, hàm FFmul(x, y) thực hiện phép

nhân (trên trường GF(28)) hai phần tử x và y với nhau

MixColumns (byte state[4,Nb])

end

Trang 40

d Thao tác AddRoundKey

Phương pháp AES bao gồm nhiều chu kỳ mã hóa liên tiếp nhau, mỗi chu kỳ có một mã khóa riêng (Round Key) có cùng kích thước với khối dữ liệu đang được xử lý và được phát sinh từ mã khóa chính (Cipher Key) cho trước ban đầu Mã khóa của chu kỳ cũng được biểu diễn bằng một ma trận gồm 4 dòng và Nb cột Mỗi cột của trạng thái hiện hành được XOR với cột tương ứng của mã khóa của chu kỳ đang xét:

[s’ 0,c , s’ 1,c , s’ 2,c , s’ 3,c ] = [s 0,c , s 1,c , s 2,c , s 3,c ] ㊉ [w round*Nb+c]

với 0 ≤ c < Nb

Thao tác biến đổi ngược của AddRoundKey cũng chính là thao tác AddRoundKey

Hình 2.8 Thao tác AddRoundKey tác động lên mỗi cột của trạng thái

Trong đoạn chương trình dưới đây, hàm xbyte(r, w) thực hiện việc lấy byte thứ r trong từ w

AddRoundKey(byte state[4,Nb], word rk[])

begin

for c = 0 to Nb – 1

Ngày đăng: 26/03/2021, 06:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm