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 1LỜ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 2LỜ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 3MỤ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 42.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 5DANH 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 6DANH 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 7DANH 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 8MỞ ĐẦ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 9quyề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 10Nghiê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 11bả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 12Chươ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 13gố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 14Tí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 15Mô 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 16Trong 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 18Vớ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 19Cá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 201.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 22xâ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 23liê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 24Chươ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 25Nhượ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 26việ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 27Ciphertext 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 28InvSubBytes 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 29SubWord 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 30Trạ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 31Số 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 32ShiftRows: 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 33Cipher ( byte in[4 * Nb],
Trang 34Hình 2.3 Sơ đồ thuật toán
Trang 35a 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 8㊉x (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 36Bả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 37Trong 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 38Phé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 39Vớ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 40d 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