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 tr
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ QUỐC PHÒNG
HỌC VIỆN KỸ THUẬT QUÂN SỰ
NGUYỄN THẾ BÙI
NGHIÊN CỨU, XÂY DỰNG CÁC PHẦN TỬ CƠ SỞ TRONG
MÃ HÓA KHỐI TRÊN FPGA Chuyên ngành: Khoa học Máy tính
LUẬN VĂN THẠC SĨ KỸ THUẬT
Hà Nội - Năm 2014
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ QUỐC PHÒNG
HỌC VIỆN KỸ THUẬT QUÂN SỰ
NGUYỄN THẾ BÙI
NGHIÊN CỨU, XÂY DỰNG CÁC PHẦN TỬ CƠ SỞ TRONG
MÃ HÓA KHỐI TRÊN FPGA Chuyên ngành: Khoa học Máy tính
Mã số: 60 48 01 01
LUẬN VĂN THẠC SĨ KỸ THUẬT
Hà Nội - Năm 2014
Trang 3CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI
HỌC VIỆN KỸ THUẬT QUÂN SỰ
Cán bộ hướng dẫn chính: Tiến sĩ Bùi Thế Truyền
Cán bộ chấm phản biện 1:
Cán bộ chấm phản biện 2:
Luận văn thạc sĩ được bảo vệ tại:
HỘI ĐỒNG CHẤM LUẬN VĂN THẠC SĨ
HỌC VIỆN KỸ THUẬT QUÂN SỰNgày . tháng năm 2014
Trang 4Tôi xin cam đoan:
Những kết quả nghiên cứu được trình bày trong luận văn là hoàn toàntrung thực, của tôi, không vi phạm bất cứ điều gì trong luật sở hữu trí tuệ vàpháp luật Việt Nam Nếu sai, tôi hoàn toàn chịu trách nhiệm trước pháp luật
TÁC GIẢ LUẬN VĂN
Nguyễn Thế Bùi
Trang 5MỤC LỤC
Trang
Trang phụ bìa
Mục lục
Tóm tắt luận văn
Danh mục các kí hiệu, chữ viết tắt
Danh mục các bảng
Danh mục các hình vẽ
MỞ ĐẦU 1
Chương 1 TỔNG QUAN VỀ MÃ HOÁ 1.1 Giới thiệu tổng quan 3
1.2 Một số hệ mã và phương pháp mã hoá 6
1.2.1 Một số phương pháp mã hoá quy ước 7
1.2.2 Chuẩn mã hóa dữ liệu DES 15
1.2.3 Chuẩn mã hóa nâng cao AES 19
1.3 Mã hoá khối và các phần tử cơ sở 22
1.3.1 Mạng chuyển vị - thay thế cố định 22
1.3.2 Mạng chuyển vị - thay thế điều khiển được 27
1.4 Tình hình nghiên cứu trong và ngoài nước 27
1.4.1 Trên thế giới 27
1.4.2 Trong nước 28
Chương 2 KHÁI QUÁT VỀ FPGA 2.1 Giới thiệu chung về FPGA 29
2.2 Ngôn ngữ mô tả phần cứng Verilog và VHDL 32
2.2.1 Ngôn ngữ mô tả phần cứng VHDL 32
2.2.2 Các cấu trúc cơ bản của ngôn ngữ VHDL 34
2.3 Xilinx và công cụ lập trình 37
2.3.1 Xilinx ISE 37
2.3.2 Xilinx EDK 40
Trang 62.3.3 Xilinx Platform Studio SDK 41
Chương 3 XÂY DỰNG MÔ HÌNH TOÁN HỌC 3.1 Phần tử chuyển vị điều khiển được 43
3.2 Phần tử thay thế điều khiển được 46
3.3 Ứng dụng xây dựng phần tử thay thế - chuyển vị điều khiển được 49
3.3.1 Cấu trúc thuật toán 49
3.3.2 Xây dựng các hoán vị 54
3.4 Thời gian biểu sử dụng khóa 55
Chương 4 XÂY DỰNG CÁC PHẦN TỬ TRONG THUẬT TOÁN CRYPT(D) 64 VÀ THỬ NGHIỆM 4.1 Các phần tử cơ sở 56
4.1.1 Phần tử cơ sở F2/1 56
4.1.2 Phần tử hoán vị I0 , I1 , I2 57
4.2 Các phần tử kế thừa 57
4.2.1 Khối toán tử F16/16 57
4.2.2 Khối toán tử F32/112 58
4.2.3 Vòng mã hóa cơ sở 58
4.3 Thực hiện mô phỏng và cài đặt trên thiết bị 59
4.3.1 Xây dựng phần tử sinh khóa con 59
4.3.2 Xây dựng thuật toán CRYPT(D)-64 59
4.3.3 Thực hiện cài đặt trên thiết bị 60
4.4 Đánh giá các kết quả nhận được 61
4.4.1 Đánh giá độ an toàn của thuật toán 61
4.4.2 Đánh giá tốc độ và tài nguyên sử dụng của thuật toán 65
4.4.3 Đánh giá tính đúng đắn của thuật toán 66
KẾT LUẬN VÀ KHUYẾN NGHỊ 1 Kết luận 68
2 Khuyến nghị 68
TÀI LIỆU THAM KHẢO 69
Trang 7TÓM TẮT LUẬN VĂN
+ Họ và tên học viên: Nguyễn Thế Bùi
+ Cán bộ hướng dẫn: Tiến sĩ Bùi Thế Truyền
+ Tên đề tài: Nghiên cứu, xây dựng các phần tử cơ sở trong mã hóa
khối trên FPGA.
+ Tóm tắt: Nghiên cứu ngôn ngữ mô tả phần cứng Verilog, VHDL vàcông cụ lập trình Xilinx Ứng dụng xây dựng các phần tử cơ sở điều khiểnđược trong thuật toán mã hoá khối, áp dụng trên thuật toán mã hoá khốiCRYPT(D)64, nhằm phục vụ cho việc cài đặt thuật toán mã hoá khối trênthiết bị phần cứng
- Chương 1: Giới thiệu sơ lược về lý thuyết mã hóa, mã hoá khối và cácphần tử cơ sở
- Chương 2: Lý thuyết FPGA, ngôn ngữ mô tả phần cứng Verilog,VHDL và công cụ lập trình
- Chương 3, 4: Xây dựng các phần tử cơ sở điều khiển được cho thuậttoán mã hoá khối CRYPT(D)64, ứng dụng xây dựng trên công cụ lập trìnhXilinx ISE và cài đặt trên phần cứng
Trang 8DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
ASIC Application Specific
Integrated Circuit
Mạch tích hợp ứng dụng chuyên biệt
CE Controlled Element Phần tử điều khiển được
CPLD Complex Programmable Logic
DES Data Encryption Standard Chuản mã dữ liệu
FPGA Field-Programmable Gate
Array
Ma trận cổng lập trình được theohang
OTP One - Time Programmable Lập trình một lần
PLD Programmable Logic Device Thiết bị logic lập trình đượcPROM Programmable Read - Only -
SRAM Static Random-Access
Circuits
Mạch tích hợp tốc độ rất cao
AES Advanced Encryption
Standard
Chuẩn mã hóa nâng cao
Trang 9DANH MỤC CÁC BẢNG
Trang
Bảng 1.1 - Đặc tả của hộp thay thế 4×4 S 0 , , S 7 25 Bảng 1.2 - Đặc tả của hộp thay thế 4×4 S 0 -1 , , S 7 -1 26 Bảng 3.1.a - Khối chuyển vị thuận S 0 ,…,S 7 51 Bảng 3.1.b - Khối chuyển vị ngược 1
7
1
0 , , S
S 51 Bảng 3.2a: Sơ đồ sử dụng khóa 128 bit 55 Bảng 3.2b: Sơ đồ sử dụng khóa 256 bit 55 Bảng 4.1 - Bảng so sánh kết quả thử nghiệm thuật toán CRYPT(D)-64 66
Trang 10DANH MỤC CÁC HÌNH VẼ
Trang
Hình 1.1 - Sơ đồ phân loại hệ mật 15
Hình 1.2 - Cấu trúc thuật toán Feistel dùng trong DES 16
Hình 1.3.a - Hàm Feistel b - Quá trình tạo khóa con trong DES 17
Hình 1.5 Dạng ma trận của trạng thái và khóa (Nb = 4, Nk = 4) 20
Hình 1.6 Một vòng mã hóa của phương pháp Rijndael (với Nb = 4) 21
Hình 1.7 - Một ví dụ cụ thể về SPN 23
Hình 2.1 - Cấu trúc của FPGA 30
Hình 2.2 - Cấu trúc SRAM FPGA(SRAM Logic Cell) 31
Hình 2.3 - Cấu trúc của OTP FPGA(OTP Logic Cell) 31
Hình 2.4 - Giao diện chính của Xilinx ISE 38
Hình 2.5 - Quá trình thiết kế FPGA của Xilinx ISE 40
Hình 2.6 - Giao diện chính của SDK 42
Hình 3.1.a - Sơ đồ khối của phần tử P2/1 3.1.b - Sơ đồ khối tương đương 43
Hình 3.2 - Sơ đồ logic của phần tử P2/1 44
Hình 3.3 - Sơ đồ cấu trúc phần tử P 2/1 .44
Hình 3.4 - Sơ đồ khối của bộ chọn kênh 44
Hình 3.5 - Sơ đồ logic của bộ chọn kênh 45
Hình 3.6 - Sơ đồ cấu trúc bộ phân kênh 45
Hình 3.7 - Sơ đồ logic của bộ phân kênh 46
Hình 3.8 - Sơ đồ cấu trúc phần tử F 2/1 46
Hình 3.9 - Sơ đồ khối mạch giải mã 2:4 47
Trang 11Hình 3.10 - Sơ đồ logic của mạch giải mã 2:4 47
Hình 3.11 - Sơ đồ khối của mạch mã hóa 4:2 48
Hình 3.12 - Sơ đồ logic của mạch mã hóa 2:4 48
Hình 3.13 - Sơ đồ cấu trúc CRYPT(D)-64 50
Hình 3.14 - Một vòng mã hóa cơ sở Crypt 50
Hình 3.15 - Khối toán tử F 32/112 52
Hình 3.16 - Khối toán tử 1 32/112 F 53
Hình 3.17 - Khối toán tử F 16/16 53
Hình 3.18 - Mô tả hoán vị cố định (hoán vị xoắn) 54
Hình 4.1 Mô phỏng F 2/1 1
Hình 4.2 Mô phỏng I 0 57
Hình 4.3 Mô phỏng F 16/16 1
Hình 4.4 Mô phỏng F 32/112 58
Hình 4.5 Mô phỏng vòng mã hóa cở sở 58
Hình 4.6 Mô phỏng sinh khóa con 59
Hình 4.7 Mô phỏng thuật toán CRYPT(D)-64 60
Hình 4.8 Mạch thử nghiệm 60
Hình 4.9 Kết quả đánh giá với K cố định và 10000 giá trị X 64
Hình 4.10 Kết quả đánh giá với 100 K và 100 giá trị X 65
Trang 12MỞ ĐẦU
Mặc dù công nghệ FPGA(Field Programmable Gate Array) đã xuất
hiện từ năm 1985, xong đối với nước ta thì nó vẫn còn đang ở giai đoạn bắtđầu nghiên cứu, ứng dụng Do vậy tìm hiểu, làm chủ về công nghệ FPGA làviệc làm hoàn toàn cần thiết Nó không chỉ có ý nghĩa đối với các lĩnh vựcĐiện tử - Viễn thông, công nghệ thông tin , mà nó có ý nghĩa đặc biệt quantrọng trong lĩnh vực an ninh quốc phòng Việc đưa ra công nghệ mới tronglĩnh vực chế tạo mạch điện tử để đáp ứng những yêu cầu trên là hoàn toàn cấp
thiết và mang tính thực tế cao Công nghệ FPGA và CPLD(Complex
Programmable Logic Device) đã được các hãng lớn tập trung nghiên cứu và
chế tạo, điển hình là Xilinx và Altera Để làm chủ công nghệ mới và tổ chứcthiết kế sản xuất, công nghệ FPGA của Xilinx cho phép tự thiết kế những vimạch riêng, những bộ xử lý số riêng dành cho ứng dụng của chúng ta
Một trong những vấn đề mà công nghệ FPGA xử lý tốt đó là bài toán
bảo mật luồng dữ liệu tốc độ cao trong truyền tin Trong kỹ thuật mật mã, hệ
mã khối được đánh giá là hệ mật có nhiều ưu điểm, phù hợp cho các hoạtđộng bảo mật tốc độ cao Tuy nhiên, từ trước đến nay ở nước ta, các thuậttoán mã khối mới chỉ được thực hiện bằng phần mềm trên máy tính PC và chỉ
áp dụng được cho các hệ truyền tin có tốc độ không cao
Nhằm góp phần giải quyết vấn đề trên, tôi đã chọn đề tài tốt nghiệp:
"
Nghiên cứu, xây dựng các phần tử cơ sở trong mã hóa khối trên FPGA"
Trong nội dung báo cáo này, việc xây dựng các phần tử cơ sở được áp dụngcho thuật toán mã hoá khối, CRYPT(D)64 Thuật toán CRYPT(D)64 đượcthiết kế dựa trên các tiêu chuẩn sau: Mã khối, độ dài của khối dữ liệu được mãhóa là 64 bít, độ dài của khóa bí mật: 128, 256 bít Giải pháp để xây dựng
thuật toán mật mã ở đây sẽ dựa trên các toán tử biến đổi điều khiển được - là
Trang 13một trong các giải pháp mới để xây dựng các loại mã thỏa mãn tốt hơn cácyêu cầu thực tiễn Với giải pháp này, thuật toán sẽ được xây dựng trên cơ sở
kết hợp mạng chuyển vị - thay thế điều khiển được với mạng chuyển vị - thay
thế cố định, các mạng chuyển vị - thay thế điều khiển được sẽ được xây dựng
dựa trên các toán tử điều khiển được có kích thước tối thiểu để phù hợp cho
việc cài đặt trên các VLSI như ASIC/FPGA
Trong quá trình nghiên cứu, thực hiện đồ án em xin chân thành cám
ơn thầy giáo hướng dẫn TS Bùi Thế Truyền, cùng các thầy cô trong KhoaCông nghệ Thông tin - Học viện Kỹ thuật Quân sự, đã hướng dẫn, tạo điềukiện giúp em hoàn thành đề tài tốt nghiệp
Trang 14Chương 1 TỔNG QUAN VỀ MÃ HOÁ
1.1 Giới thiệu tổng quan
Mật mã(Cryptography) là ngành khoa học là ngành nghiên cứu các kỹ
thuật toán học nhằm cung cấp các dịch vụ bảo vệ thông tin Đây là ngànhkhoa học quan trọng, 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 thế giới, từ các lĩnh vực an ninh,quân sự, 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
Đối tượng cơ bản của mật mã là tạo ra một khả năng liên lạc trên mộtkênh không mật cho hai người sử dụng Alice và Bob sao cho đối phươngOscar không thể hiểu được thông tin truyền đi Kênh liên lạc này có thể làmột đường dây điện thoại hoặc là mạng máy tính hoặc mạng internet Thôngtin Alice muốn gửi cho Bob gọi là bản rõ có thể là một văn bản, hình ảnh,chương trình, Alice sẽ mã hóa bản rõ bằng một khóa và phương pháp đãđược thống nhất trước khi gửi bản mã đi trên kênh Oscar có thể thu được bản
mã trên kênh truyền nhưng không thể xác định được nội dung bản mã đó
nhưng Bob(người đã biết khóa mã) có thể giải mã và thu được bản rõ.
Cùng với sự phát triển của khoa học máy tính và Internet, các nghiêncứ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ở ranhiề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ớinhữ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 gốc nội dung thông tin(kỹ
Trang 15thuậ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 cộng), 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 Các ứng dụng của mật mã học
và khoa học bảo vệ thông tin rất đa dạng và phong phú; tùy vào tính đặc thùcủa mỗi hệ thống bảo vệ thông tin mà ứng dụng sẽ có các tính năng với đặctrưng riêng Trong đó, chúng ta có thể kể ra một số tính năng chính của hệthống bảo vệ thông tin:
1 Tính bảo mật thông tin: hệ thống đảm bảo thông tin được giữ bí mật.
Thông tin có thể bị phát hiện, ví dụ như trong quá trình truyền nhận, nhưngngười tấn công không thể hiểu được nội dung thông tin bị đánh cắp này
2 Tính toàn vẹn thông tin: hệ thống bảo đảm tính toàn vẹn thông tin
trong liên lạc hoặc giúp phát hiện rằng thông tin đã bị sửa đổi
3 Xác thực các đối tác trong liên lạc và xác thực nội dung thông tin
trong liên lạc
4 Chống lại sự thoái thác trách nhiệm: hệ thống đảm bảo một đối tác
bất kỳ trong hệ thống không thể từ chối trách nhiệm về hành động mà mình
đã thực hiện
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ý anninh 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ố
Các phương pháp mã hóa và giải mã tương ứng có từ rất lâu trong lịch
sử Người Hy Lạp cổ đã biết sử dụng phương pháp Skytale để mã hóa và giải
mã Phương pháp mã hóa Vigenere đã có từ bốn thế kỷ nay Rất lâu trước khi
Trang 16có sự trợ giúp của máy tính chúng ta cũng đã biết sử dụng công cụ máy móc
để hỗ trợ cho việc mã hóa và giải mã(chẳng hạn như sử dụng phương pháp
Turing Grill do Carcado phát minh) Công việc mã hóa và giải mã đối với các
phương pháp cổ điển là tương đối dễ dàng khi có khóa Nhưng trên vai trò
người ăn trộm thông tin(thám mã) không có khóa, đó là một công việc rất
khó Nó đòi hỏi người thám mã phải có kiến thức về xác suất, có các số liệuthống kê và đặc biệt phải có kinh nghiệm trong công việc Tuy vậy ngày nayvới sự hỗ trợ của máy tính công việc thám mã trở nên nhẹ nhàng hơn đối vớicác hệ mật cổ điển Tuy nhiên các phương pháp cổ điển vẫn được nghiên
cứu(mã hoá, giải mã, và thám mã) bởi lịch sử lâu đời của các phương pháp
này một số người vẫn sử dụng chúng Nhưng có thể nói hiện nay các phươngpháp cổ điển rất ít người sử dụng, mà người ta đã đưa ra nhiều phương pháp
mã hóa mới ví dụ như hệ mã công khai, mã hóa DES,
Ta mô tả hình thức hoá nội dung bằng cách dùng khái niệm toán họcnhư sau:
Một hệ mật là một bộ năm (P, C, K, E, D) thỏa mãn các điều kiện sau:
1 Tập nguồn P là tập hữu hạn tất cả các bản tin nguồn cần mã hóa có thể có.
2 Tập đích C là tập hữu hạn tất cả các bản tin có thể có sau khi mã hóa.
3 Tập khóa K là tập hữu hạn các khóa có thể được sử dụng.
4 E và D lần lượt là tập luật mã hoá và tập luật giải mã.
Với mỗi k K, tồn tại luật mã hoá ek E và luật giải mã dk D
tương ứng Luật mã hoá ek: P → C và luật giải mã dk: C → P là hai ánh xạ thoả mãn: dk(ek(x))=x với mọi bản rõ xP.
Trang 171.2 Một số hệ mã và phương pháp mã hoá
● Hệ thống mã hóa quy ước - mã hóa đối xứng.
Trong hệ thống mã hóa quy ước, quá trình mã hóa và giải mã một
thông điệp sử dụng cùng một mã khóa gọi là khóa bí mật(secret key) hay khóa đối xứng (symmetric key) Do đó, vấn đề bảo mật thông tin đã mã hóa hoàn
toàn phụ thuộc vào việc giữ bí mật nội dung của mã khóa đã được sử dụng.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 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ệ Quốc gia 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 Vincent Rijmen và Joan
Daeman đã được chính thức chọn trở thành chuẩn mã hóa nâng cao(Advanced
Encryption Standard – AES) từ 02 tháng 10 năm 2000.
● Hệ thống mã hóa khóa công cộng - mã hóa bất đối xứng.
Nếu như vấn đề khó khăn đặt ra đối với các phương pháp mã hóa quyước chính là bài toán trao đổi mã khóa thì ngược lại, các phương pháp mã hóakhóa công cộng giúp cho việc trao đổi mã khóa trở nên dễ dàng hơn Nội
dung của khóa công cộng(public key) không cần phải giữ bí mật như đối với
khóa bí mật trong các phương pháp mã hóa quy ước Sử dụng khóa côngcộng, chúng ta có thể thiết lập một quy trình an toàn để truy đổi khóa bí mậtđược sử dụng trong hệ thống mã hóa quy ước Trong những năm gần đây, cácphương pháp mã hóa khóa công khai, đặc biệt là phương pháp RSA, được sửdụng ngày càng nhiều trong các ứng dụng mã hóa trên thế giới và có thể xemnhư đây là phương pháp chuẩn được sử dụng phổ biến nhất trên Internet, ứng
Trang 18dụng trong việc bảo mật thông tin liên lạc cũng như trong lĩnh vực thươngmại điện tử.
● Kết hợp mã hóa quy ước và mã hóa khóa công cộng.
Các phương pháp mã hóa quy ước có ưu điểm xử lý rất nhanh và khảnăng bảo mật cao so với các phương pháp mã hóa khóa công cộng nhưng lạigặp phải vấn đề khó khăn trong việc trao đổi mã khóa Ngược lại, các phươngpháp mã hóa khóa công cộng tuy xử lý thông tin chậm hơn nhưng lại chophép người sử dụng trao đổi mã khóa dễ dàng hơn Do đó, trong các ứng dụngthực tế, chúng ta cần phối hợp được ưu điểm của mỗi phương pháp mã hóa đểxây dựng hệ thống mã hóa và bảo mật thông tin hiệu quả và an toàn
1.2.1 Một số phương pháp mã hoá quy ước
1.2.1.1 Phương pháp mã hóa dịch chuyển - Shift cipher.
Phương pháp mã hóa dịch chuyển là một trong những phương pháp lâuđời nhất được sử dụng để mã hóa Thông điệp được mã hóa bằng cách dịchchuyển xoay vòng từng ký tự đi k vị trí trong bảng chữ cái
Thuật toán:
Cho P = C = K = Z n
Với mỗi khóa k K , định nghĩa:
ek(x) = (x + k) mod n và dk(y) = (y - k) mod n với x, y Zn
E = {e, k K} và D = {d, k K}
Trong trường hợp đặc biệt k = 3, phương pháp mã hóa bằng dịchchuyển được gọi là phương pháp mã hóa Caesar
Mã hóa dịch chuyển là một phương pháp mã hóa đơn giản, thao tác xử
lý mã hóa và giải mã được thực hiện nhanh chóng Tuy nhiên, trên thực tế,phương pháp này có thể dễ dàng bị phá vỡ bằng cách thử mọi khả năng khóa
k K Điều này hoàn toàn có thể thực hiện được do không gian khóa K chỉ
có n phần tử để chọn lựa
Trang 19Ta sẽ sử dụng mã dịch vòng(với modulo 26) để mã hoá một văn bản
tiếng Anh thông thường bằng cách thiết lập sự tương ứng giữa các kí tự vàcác thặng dư theo modulo 26 như sau: A ↔ 0, B ↔ 1, , Z ↔ 25
13 14 15 16 17 18 19 20 21 22 23 24 25
Sau đây là một ví dụ nhỏ để minh hoạ
Giả sử khoá cho mã dịch vòng là K = 11 và bản rõ là:
Để giải mã bản mã này, trước tiên, ta sẽ biến đổi bản mã thành dãy các
số nguyên rồi trừ đi giá trị cho 11(rút gọn theo modulo 26) và cuối cùng biến
đổi lại dãy này thành các ký tự
1.2.1.2 Phương pháp mã hóa thay thế - Substitution Cipher
Trang 20Phương pháp mã hóa thay thế là một trong những phương pháp mã hóanổi tiếng và đã được sử dụng từ hàng trăm năm nay Phương pháp này thựchiện việc mã hóa thông điệp bằng cách hoán vị các phần tử trong bảng chữ cáihay tổng quát hơn là hoán vị các phần tử trong tập nguồn P.
Thuật toán:
Cho P = C = Z n
K là tập hợp tất cả các hoán vị của n phần tử 0, 1, , n −1 Như vậy,mỗi khóa π K là một hoán vị của n phần tử 0, 1, , n −1
Với mỗi khóa π K , định nghĩa:
eπ(x) = π(x) và dπ(y) = π -1( y) với x, y Zn
E = {eπ , π K} và D = { Dπ , π K}
Đây là một phương pháp đơn giản, thao tác mã hóa và giải mã đượcthực hiện nhanh chóng Phương pháp này khắc phục điểm hạn chế củaphương pháp mã hóa bằng dịch chuyển là có không gian khóa K nhỏ nên dễdàng bị giải mã bằng cách thử nghiệm lần lượt n giá trị khóa k K Trong
phương pháp mã hóa thay thế có không gian khóa K rất lớn với n! phần tửnên không thể bị giải mã bằng cách “vét cạn” mọi trường hợp khóa k Tuynhiên, trên thực tế thông điệp được mã hóa bằng phương pháp này vẫn có thể
bị giải mã nếu như có thể thiết lập được bảng tần số xuất hiện của các ký tựtrong thông điệp hay nắm được một số từ, ngữ trong thông điệp nguồn banđầu
1.2.1.3 Phương pháp Affine.
Nếu như phương pháp mã hóa bằng dịch chuyển là một trường hợp đặcbiệt của phương pháp mã hóa bằng thay thế, trong đó chỉ sử dụng n giá trịkhóa k trong số n! phần tử, thì phương pháp Affine lại là một trường hợp đặcbiệt khác của mã hóa thay thế
Thuật toán:
Trang 21Cho P = C = Z n và giả sử P ={(a, b) Z n × Z n : UCLN(a, n) = 1}
Với mỗi khoá k = (a, b) K, định nghĩa:
e k (x) = (ax + b) mod n và d k (x)= (a -1 (y - b)) mod n với x, y Z n
E = {e k , k K} và D = {D k , k K}
Các hàm này được gọi là các hàm Affine(khi a = 1, ta có mã dịch
vòng) Để có thể giải mã chính xác thông tin đã được mã hóa bằng hàm ek
Ta biết rằng phương trình này có một nghiệm duy nhất đối với mỗi y
khi và chỉ khi UCLN(a, n) = 1 (ở đây hàm UCLN là ước chung lớn nhất của
các biến của nó) Trước tiên ta giả sử rằng, UCLN(a, n) = d > 1 Khi đó, đồng
dư thức ax ≡ 0(mod n) sẽ có ít nhất hai nghiệm phân biệt trong Zn là x = 0 và
x = n/d Trong trường hợp này, e(x) = ax + b (mod n) không phải một hàmđơn ánh và bởi vậy nó không thể là hàm mã hóa hợp lệ
Ví dụ: n = 26, do UCLN(4,26) = 2 nên 4x + 7 không là hàm mã hóahợp lệ: x và x+13 sẽ mã hóa thành cùng một giá trị đối với bất kỳ x Z26
Ta giả thiết UCLN(a, n) = 1 Giả sử với x1 và x2 nào đó thỏa mãn:
ax1 ≡ ax2 (mod n)
Khi đó a(x1 – x2) ≡ 0(mod n) bởi vậy n|a(x1 - x2)
Bây giờ ta sẽ sử dụng tính chất của phép chia sau : Nếu UCLN(a,b) = 1
và a|bc thì ac Vì n|a(x1 - x2) và UCLN(a, n) = 1 nên ta có n|(x1 - x2) tức làx1 ≡ x2(mod n)
Tới đây ta chứng tỏ rằng, nếu UCLN(a, n) = 1 thì một đồng dư thức
dạng ax ≡ y(mod n) chỉ có(nhiều nhất) một nghiệm trong Zn Do đó, nếu ta
Trang 22cho x thay đổi trên Zn thì ax mod n sẽ nhận được n giá trị khác nhau theomodulo n và đồng dư thức ax ≡ y(mod n) chỉ có nghiệm y duy nhất.
1.2.1.4 Phương pháp mã hoá Vigenere.
Trong phương pháp mã hóa bằng thay thế cũng như các trường hợp đặcbiệt của phương pháp này, ứng với một khóa k được chọn, mỗi phần tử x Pđược ánh xạ vào duy nhất một phần tử y C Vì lý do đó, các hệ mật cònđược gọi là hệ thay thế đơn biểu Bây giờ ta sẽ trình bày một hệ mật khôngphải là bộ chữ đơn, đó là hệ mã Vigenere nổi tiếng
Sử dụng phép tương ứng A ↔ 0, B ↔ 1, , , , Z ↔ 25, ta có thể gắn chomỗi khóa k với một chuỗi kí tự có độ dài m được gọi là từ khóa Mật mãVigenere sẽ mã hóa đồng thời m kí tự: Mỗi phần tử của bản rõ tương đươngvới m ký tự Có thể xem như phương pháp mã hóa Vigenere bao gồm m phép
mã hóa bằng dịch chuyển được áp dụng luân phiên nhau theo chu kỳ
Trang 23Ta thấy rằng các từ khóa có thể với số độ dài m trong mật mã Vigenere
là nm, bởi vậy thậm chí các giá trị m khá nhỏ, phương pháp tìm kiếm vét cạncũng yêu cầu thời gian khá lớn Ví dụ, nếu m = 5 thì không gian khóa cũng cókích thước lớn hơn 1,1x107 Lượng khóa này đã đủ lớn để ngăn ngừa việc tìmkhóa bằng tay
Trong hệ mật Vigenere có từ khóa dộ dài m, mỗi ký tự được ánh xạ vào
trong m ký tự có thể có(giả sử rằng từ khóa chứa m ký tự phân biệt) Một hệ
mật như vậy được gọi là hệ mật thay thế đa biểu sẽ khó khăn hơn so với việcthám mã hệ đơn biểu
Với một khóa k K ta có: ek(x) = xk và dk(y) = yk-1
Tất cả các phép toán đều thực hiện trong Zn
Trang 24Ý tưởng ở đây là lấy m tổ hợp tuyến tính của m ký tự trong một phần tử của bản rõ để tạo ra m ký tự ở một phần tử của bản mã Nói chung, có thể lấy một ma trận k kích thước mxm làm khóa.
Nếu một phần tử ở hàng i và cột j của k là k ij thì có thể viết: k = (k ij ) Với x = (x 1 , x 2 , , x m ) P và k K, ta tính y = e K (x) = (y 1 , y 2 , , y m ) như sau :
, m 1
, m
m , 2 2
, 2 1
, 2
m , 1 2
, 1 1
, 1
m 1
m 1
k
k k
k k
k
k k
) x , , x ( ) y , ,
1.2.1.6 Phương pháp mã hoá hoán vị
Tất cả các hệ mật nói trên đều ít nhiều xoay quanh phép thay thế: các
ký tự của bản rõ được thay thế bằng các ký tự khác trong bản mã Ý tưởngcủa mã hoán vị là giữ các ký tự của bản rõ không thay đổi nhưng sẽ thay đổi
vị trí của chúng bằng cách sắp xếp lại các ký tự này Mã hoán vị(còn được gọi
là mã chuyển vị) đã được dùng từ hàng trăm năm nay Không giống như mã
thay thế, ở đây không có các phép toán đại số nào cần thực hiện khi mã hóa
và giải mã nên thích hợp hơn cả là dùng các ký tự mà không dùng các thặng
dư theo modulo n
Cho m là một số nguyên xác định nào đó P = C = (Zn)m và cho K gồmtất cả các hoán vị của {1, 2, , m} Đối một khóa (tức là một hoán vị) taxác định
e(x1, , xm ) = (x(1), , x(m)) d(x1, , xm ) = (y -1 (1), , y -1 (m))
Trang 25Trong đó 1
là hoán vị ngược của .Thực tế mã hoán vị là trường hợp đặc biệt của mật mã Hill Khi chophép hoán vị của tập {1, …, m}, ta có thể xác định một ma trận hoán vị m
x m thích hợp k = {kij} theo công thức:
kịj =
0 1
(ma trận hoán vị là ma trận trong đó mỗi hàng và mỗi cột chỉ có một số
"1", còn tất cả các giá trị khác đều là số "0" Ta có thể thu được một ma trậnhoán vị từ ma trận đơn vị bằng cách hoán vị các hàng hoặc cột)
Phép mã Hill dùng ma trận k trên thực tế tương đương với phép mãhoán vị dùng hoán vị Hơn nữa k 1 k 1
tức là ma trận nghịch đảo của k
là ma trận hoán vị xác định theo hoán vị 1
Như vậy, phép giải mã Hilltương đương với pháp giải mã hoán vị
1.2.1.7 Mật mã dòng
Trong các hệ mật nghiên cứu ở trên, các phần tử liên tiếp của bản rõđều được mã hóa bằng cùng một khóa K Các hệ mật thuộc dạng này thườngđược gọi là các mã khối Một quan điểm sử dụng khác là mật mã dòng Ýtưởng ở đây là tạo ra một dòng khóa z = z1z2… và dùng nó để mã hóa một xâubản rõ x = x1x2… theo quy tắc y = y1y2…= ex1(x1)ex2(x2)…
Mật mã dòng là bộ (P, C, K, L, F, E, D) thỏa mãn các điều kiện sau:
1 P là một tập hữu hạn các bản rõ có thể
2 C là một tập hữu hạn các bản mã có thể
3 K là tập hữu hạn các khóa có thể(không gian khóa).
4 L là tập hữu hạn các bộ chữ của dòng khóa
5 F = (f1f2…) là bộ tạo dòng khóa Với i 1, fi : KPi-1 → L
6 Với mỗi z L có một quy tắc mã ez E và một quy tắc giải mãtương ứng dz D, ez: P → C và dz : C → P là các hàm thỏa mãndz(ez(x)) = x với mọi bản rõ x P
nếu j = (i)với các trường hợp cònlại
Trang 26Ta có thể coi mã khối là một trường hợp đặc biệt của mã dòng trong đódùng khóa không đổi: Zi = K với mọi i 1.
Hình 1.1 - Sơ đồ phân loại hệ mật
1.2.2 Chuẩn mã hóa dữ liệu DES.
Khoảng những năm 1970, tiến sĩ Horst Feistel đã đặt nền móng đầutiên cho chuẩn mã hóa dữ liệu DES với phương pháp mã hóa Feistel Cipher
Vào năm 1976 Cơ quan Bảo mật Quốc gia Hoa Kỳ(NSA) đã công nhận DES
dựa trên phương pháp Feistel là chuẩn mã hóa dữ liệu Kích thước khóa củaDES ban đầu là 128 bit nhưng tại bản công bố FIPS kích thước khóa được rútxuống còn 56 bit
Trong phương pháp DES, kích thước khối là 64 bit DES thực hiện mãhóa dữ liệu qua 16 vòng lặp mã hóa, mỗi vòng sử dụng một khóa chu kỳ 48 bitđược tạo ra từ khóa ban đầu có độ dài 56 bit DES sử dụng 8 bảng hằng số S-box
để thao tác
Hệ mật mã
Mã không dùng khóa
Mã dùng một khóa
Mã dùng hai khóa
xứng
Mã bất đối xứng
Chữ ký điện tử
Trang 27Cấu trúc của thuật toán(mạng Feistel) đảm bảo rằng quá trình mã hóa
và giải mã diễn ra tương tự Điểm khác nhau chỉ ở chỗ các khóa con được sửdụng theo trình tự ngược nhau Điều này giúp cho việc thực hiện thuật toántrở nên đơn giản, đặc biệt là khi thực hiện bằng phần cứng
Bản rõ – 64 bit IP F F
F
F FP Bản mã – 64 bit
16 vòng
Hình 1.2 - Cấu trúc thuật toán Feistel dùng trong DES
Ký hiệu sau: thể hiện phép toán XOR Hàm F làm biến đổi một nửacủa khối đang xử lý với một khóa con Đầu ra sau hàm F được kết hợp vớinửa còn lại của khối và hai phần được tráo đổi để xử lý trong chu trình kếtiếp Sau chu trình cuối cùng thì 2 nửa không bị tráo đổi - đây là đặc điểm củacấu trúc Feistel khiến cho quá trình mã hóa và giải mã trở nên giống nhau
Trang 28Subkey 15 (48 bits) Subkey 16 (48 bits)
Hình 1.3.a - Hàm Feistel b - Quá trình tạo khóa con trong DES
Hàm F, như được miêu tả ở hình 1.2.a, hoạt động trên khối 32 bit vàbao gồm bốn giai đoạn:
1 Mở rộng: 32 bit đầu vào được mở rộng thành 48 bit sử dụng thuật toán hoán vị mở rộng(expansion permutation) với việc nhân đôi một số bit.
Giai đoạn này được ký hiệu là E trong sơ đồ
2 Trộn khóa: 48 bit thu được sau quá trình mở rộng được XOR với
khóa con Mười sáu khóa con 48 bit được tạo ra từ khóa chính 56 bit theo một
chu trình tạo khóa con(key schedule) miêu tả ở phần sau.
3 Thay thế: 48 bit sau khi trộn được chia làm 8 khối con 6 bit và được
xử lý qua hộp thay thế S-box Đầu ra của mỗi khối 6 bit là một khối 4 bit theomột chuyển đổi phi tuyến được thực hiện bẳng một bảng tra Khối S-box đảmbảo phần quan trọng cho độ an toàn của DES Nếu không có S-box thì quátrình sẽ là tuyến tính và việc thám mã sẽ rất đơn giản
4 Hoán vị: Cuối cùng, 32 bit thu được sau S-box sẽ được sắp xếp lại theo một thứ tự cho trước(còn gọi là P-box).
Trang 29Quá trình luân phiên sử dụng S-box và sự hoán vị các bít cũng như quátrình mở rộng đã thực hiện được tính chất gọi là sự xáo trộn và khuyếch tán
(confusion and diffusion).
● Quá trình tạo khóa con
Hình 1.2b mô tả thuật toán tạo khóa con cho các chu trình Đầu tiên, từ
64 bit ban đầu của khóa, 56 bit được chọn(Permuted Choice 1, hay PC-1);
8 bit còn lại bị loại bỏ 56 bit thu được được chia làm hai phần bằng nhau,mỗi phần được xử lý độc lập Sau mỗi chu trình, mỗi phần được dịch đi 1
hoặc 2 bit(tùy thuộc từng chu trình) Các khóa con 48 bit được tạo thành bởi thuật toán lựa chọn 2(Permuted Choice 2, hay PC-2) gồm 24 bit từ mỗi phần Quá trình dịch bit(được ký hiệu là "<<<" trong sơ đồ) khiến cho các khóa con
sử dụng các bit khác nhau của khóa chính; mỗi bit được sử dụng trung bìnhkhoảng 14 lần trong tổng số 16 khóa con
Quá trình tạo khóa con khi thực hiện giải mã cũng diễn ra tương tựnhưng các khóa con được tạo theo thứ tự ngược lại Ngoài ra sau mỗi chutrình, khóa sẽ được dịch phải thay vì dịch trái như khi mã hóa
Triple-DES chính là DES với hai chìa khoá 56 bit Cho một bản tin cần
mã hoá, chìa khoá đầu tiên được dùng để mã hoá DES bản tin đó, kết quả thuđược lại được cho qua quá trình giải mã DES nhưng với chìa khoá là chìa
Trang 30khoá thứ hai, bản tin sau qua đã được biến đổi bằng thuật toán DES hai lầnnhư vậy lại được mã hoá DES với một lần nữa với chìa khoá đầu tiên để rađược bản tin mã hoá cuối cùng Quá trình mã hoá DES ba bước này được gọi
là Triple-DES
Kể từ khi DES ra đời, nhiều thuật toán mã hoá bảo mật khác cũng đượcphát triển tương tự DES hoặc dựa trên DES, trong đó có thuật toánCrypt(D)64 Trong phần tiếp theo và cũng là phần chính của đồ án em sẽ tậptrung vào trình bày cơ sở lý thuyết, phương pháp xây dựng các phần tử cơ sởcủa thuật toán mã hóa Crypt(D)64
1.2.3 Chuẩn mã hóa nâng cao AES
Do phát triển của công nghệ và ngành thám mã, để tìm kiếm mộtphương pháp mã hóa mới với độ an toàn cao hơn DES, Viện Tiêu chuẩn
và Công nghệ Hoa Kỳ đã mở một cuộc thi nhằm tìm kiếm thuật toánmới thay thế cho thuật toán DES (được gọi là AES – AdvancedEncryption Standard) Sau khi thực hiện hai lần tuyển chọn, thuật toánRIJNDAEL do Vincent Rijmen và Joan Daeman xây dựng đã được NISTchính thức chọn trở thành chuẩn mã hóa nâng cao (AES) từ ngày 02tháng 10 năm 2000
Mặc dù 2 tên AES và Rijndael vẫn thường được gọi thay thế chonhau 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 việc với khối dữ liệu 128 bit và khóa có độ dài 128, 192hoặc 256 bit trong khi Rijndael gốc 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 bit nằm trong khoảng từ 128 tới 256 bit
Dưới đây tóm tắt nội dung chính của thuật toán mã hóa Rijndael.Thuật toán thực hiện nhiều bước biến đổi tuần tự, kết quả đầu racủ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)
Trang 31Mộ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 Khóa mật
(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 độ dài của khóa chia cho 32 Ma trận biểu diễn một
trạng thái hay khóa có thể được biểu diễn như mảng một chiều chứa cácphần tử có độ dài 4 byte, mỗi phần tử tương ứng với một cột của matrận
Số lượng vòng biến đổi, 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
Hình 1.5 Dạng ma trận của trạng thái và khóa (Nb = 4, Nk = 4)
Kiến trúc của thuật toán Rijndael
Là kiến trúc mạng chuyển vị- thay thế, sử dụng 16 S-box (bảng thay thếkích thước 8 × 8) Trong toàn bộ quy trình mã hóa, thuật toán sử dụng chungbảng thay thế S-box cố định Phép biến đổi tuyến tính bao gồm 2 bước: hoán
vị byte và áp dụng song song bốn khối biến đổi tuyến tính (32 bít) có khảnăng khuếch tán cao
Trang 32Hình 1.6 Một vòng mã hóa của phương pháp Rijndael (với Nb = 4)
Phát sinh khóa của mỗi chu kỳ
Các khóa của mỗi vòng (RoundKey) được phát sinh từ khóa chính Quytrình phát sinh khóa cho mỗi vòng gồm 2 giai đoạn:
Mở rộng khóa chính thành bảng khóa mở rộng.
Bảng khóa mở rộng là mảng 1 chiều chứa các từ (có độ dài 4 byte),
được ký hiệu là w[Nb*(Nr + 1)] Hàm phát sinh bảng khóa mở rộng phụ thuộc vào giá trị Nk, tức là phụ thuộc vào độ dài của khóa chính.
Xác định khóa vòng
Khóa của vòng thứ i được xác định bao gồm các từ (4 byte) có chỉ số từ
Nb * i đến Nb * (i +1) −1 của bảng khóa mở rộng Như vậy, khóa của vòng
thứ i bao gồm các phần tử w[Nb* i] , w[Nb* i +1] ,…, w[Nb*(i +1) −1]
Quá trình mã hóa bao gồm các bước:
1) Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các
vòng mã hóa
2) Thực hiện Nr – 1 vòng mã hóa, mỗi vòng bao gồm bốn bước biến đổi liên tiếp nhau: SubBytes, ShiftRows, MixColumns, và AddRoundKey.
3) Thực hiện vòng mã hóa cuối cùng: trong vòng này thao tác
MixColumns được bỏ qua.
Quá trình giải mã được thực hiện qua các giai đoạn sau:
Trang 331) Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các
vòng giải mã
2) Thực hiện Nr −1 vòng giải mã: mỗi vòng bao gồm bốn bước biến
đổi liên tiếp nhau: InvShiftRows, InvSubBytes, AddRoundKey,
InvMixColumns.
3) Thực hiện vòng giải mã cuối cùng Trong chu kỳ này, thao tác
InvMixColumns được bỏ qua.
Chi tiết về các phép toán (thao tác) và các bảng thay thế của thuật toán
có thể tìm trong
1.3 Mã hoá khối và các phần tử cơ sở
Thuật toán CRYPT(D)64 được thiết kế cho việc mã hóa các khối dữliệu có độ dài 64 bit, sử dụng khóa mật 128 bit và 256 bit, thuật toán được xây
dựng dựa trên cơ sở kết hợp mạng chuyển vị - thay thế điều khiển được CSPN
(Controlled Substitution- Permutation Network) với mạng chuyển vị - thay thế
cố định SPN(Substitution-Permutation Network) Để thuật toán có tốc độ thực
hiện cao và tích hợp hiệu quả trên VLSI như ASIC/FPGA, việc xây dựng
CSPN sẽ được thực hiện trên phần tử điều khiển được CE(Controlled
Element) có kích thước tối thiểu F2/1.
Dưới đây ta sẽ tìm hiểu những vấn đề sau:
- Thế nào là mạng chuyển vị - thay thế điều khiển được CSPN?
- Và thế nào là mạng chuyển vị cố định SPN?
1.3.1 Mạng chuyển vị - thay thế cố định
Trong kỹ thuật mã hóa mạng chuyển vị cố định SPN là một dãy liên kết
toán học sử dụng trong các thuật toán mã hóa khối giống như AES(Rijndeal).
Các mạng sẽ đưa ra một khối của các bản gốc và khóa là yếu tố đầu vào, và
áp dụng liên tục các “vòng” hoặc “lớp” của hộp thay thế(hộp S) và hộp hoán vị(hộp P) để tạo ra các bản mã khối Hộp S và hộp P biến đổi các khối con
Trang 34của các bit đầu vào thành các bit đầu ra Đó là các hoạt động của các lệnhchuyển đổi được thực hiện từ phần cứng giống như các phép XOR hay cácphép xoay giữa các bit Khóa được đưa vào ở mỗi vòng, thường nhận trongmỗi vòng khóa của lớp Trong một vài thiết kế thì các S-box phụ thuộc vàocác khóa.
S1 S2 S3 S4P
S1 S2 S3 S4P
Bản mã
Hình 1.7 - Một ví dụ cụ thể về SPNMỗi hộp thay thế S là một khối nhỏ gồm một số bit nhất định các đầuvào của hộp S là đầu ra của hộp S khác Số bit của đầu ra có thể bằng số bitcủa đầu vào, nhưng cũng có thể số bit đầu vào và đầu ra của hộp S là khác
Trang 35nhau ví dụ trong mã hóa DES các hộp S có 6 bit đầu vào nhưng chỉ có 4 bitđầu ra Một hộp S được thiết kế tốt thì khi thay đổi một bit đầu vào có thể làmthay đổi một nửa số lượng bit đầu ra và bit ở đầu ra phụ thuộc các bit đầu vào.
Một hộp P là một hoán vị của tất cả các bit, nó nhận tất cả các bit đầu racủa các hộp S sau đó hoán vị chúng và chuyển thành các bit đầu vào của cáchộp S ở vòng tiếp theo Một hộp P tốt phải có thuộc tính các bit đầu ra của hộp
S có khả năng được phân bố ở một số bit đầu vào của các hộp S vòng tiếp theo
Tại mỗi vòng thì khóa vòng (nhận được từ khóa với một số hoạt động
đơn giản ví dụ như dùng hộp S và hộp P) được kết hợp với một số phép toán
đặc trưng như XOR
Một hộp S hay một hộp P đơn thuần không có hiệu quả mã hóa: một hộp
S có thể thông qua như một sự thay thế các khối trong khi hộp P có thể coi như
là một sự hoán vị của các khối Tuy nhiên để thiết kế một mạng hoán vị thaythế tốt, các vòng lặp các S-box và các P-box phải thỏa mãn sự xáo trộn vàkhuyếch tán
Lý do của sự khuyếch tán: nếu như thay đổi một số bit của bản rõ sau đóđưa vào một hộp S sẽ làm thay đổi một vài bit đầu ra, sau khi thay đổi đượcphân phối bởi hộp P giữa một vài hộp S, kể từ đấy tất cả các đầu ra của hộp Slại được thay đổi một vài bit , thực hiện liên tiếp các vòng mỗi bit sẽ thayđổi, sau khi kết thúc các vòng thực hiện thì bản rõ được thay đổi hoàn toàn
Lý do của việc xáo trộn cũng giống với việc khuyếch tán, việc thay đổibit của các khóa vòng, mỗi thay đổi sẽ lan truyền qua tất cả các bit mã dẫn đến
sự thay đổi bản mã rất phức tạp Ngược lại nếu thay đổi một bit trong bản mã
sẽ thay đổi khóa hoàn toàn
Hộp S là một hệ thống phi tuyến của hệ mật và là một yếu tố quan trọngquyết định độ mật của hệ Cho đến nay vẫn chưa có các tiêu chuẩn chung đầy
Trang 36đủ để thiết kế hộp S Trong thuật toán CRYPT(D)64 được nghiên cứu việc sửdụng các hộp S theo một cấu trúc có sẵn.
Cấu trúc của các hộp S thông dụng được sử dụng trong các ứng dụngtrong dòng mã hóa CRYPT(D)64 thông thường bao gồm các hộp S0, , S7được cụ thể trong Bảng 1.1 và các hộp nghịch đảo gồm 1
7
1
0 , , S
S được cụthể trong Bảng 1.2 Tám hộp 4×4 của dòng mã CRYPT(D)64 được chọn nhưcác hộp S0, , S7 Trong ứng dụng của các loại mã hóa CRYPT(D)64 thìchúng ta sẽ sử dụng cả hai loại hộp S thuận và nghịch
Trang 37Bảng 1.2 - Đặc tả của hộp thay thế 4×4 S0-1, , S7-1Input
Trang 38hóa ta có thể có nhiều hoán vị I khác nhau Mục đích sử dụng các hoán vị Inày để ngăn cản cặp đầu ra của hộp S4x4 trực tiếp tới đầu vào của các phần tử
điều khiển được CE (controlled element) của hộp Pn/m, hoặc từ cặp đầu ra của
các phần tử điều khiển được CE của các hộp Pn/m trực tiếp tới đầu vào của hộp
S, hoặc trực tiếp từ cặp đầu ra của các phần tử CE hộp Pn/m vào các phần tử
CE thẳng hàng của hộp P’n/m Chúng ta sẽ xét cụ thể trong phần xây dựngthuật toán CRYPT(D)64
Các thuộc tính của hộp S và các nguyên tắc thiết kế của tám hộp Sđược đưa vào lớp “Classified information” ở Mỹ NSA đã tiết lộ 3 thuộc tínhcủa các hộp S, những thuộc tính này bảo đảm tính xáo trộn và khuyếch táncủa thuật toán của thuật toán
1 Các bit vào luôn phụ thuộc không tuyến tính vào các bit ra
2 Sửa đổi ở một bit vào làm thay đổi ít nhất là hai bit ra
3 Khi một bit vào được giữ cố định và 5 bit còn lại cho thay đổi thì cáchộp S thể hiện một tính chất được gọi là phân bố đồng nhất: so sánh số lượngbit số 0 và 1 ở các đầu ra luôn ở mức cân bằng
1.3.2 Mạng chuyển vị - thay thế điều khiển được
Mạng chuyển vị - thay thế điều khiển được có thể mô tả là các hộp
hoán vị điều khiển được PC(Controlled permutation) Pn/m Với n là số bit đầu
vào, n là bit đầu ra, m là số bit điều khiển Hộp Pn/m được xây dựng nhờ sửdụng các phần tử điều khiển được cơ sở P2/1 hoặc P2/2 Trong phạm vi nghiêncứu của luận văn sẽ đi sâu nghiên cứu, xây dựng phần tử điều khiển được cơ
sở P2/1, hay có thể gọi P2/1 là các hộp bộ phận cấu thành của hộp điều khiển Pn/
m Chúng ta có thể giải thích sơ lược về mỗi phần tử điều khiển được cơ sở P2/1
là phần tử nhận hai bit làm đầu vào, cho đầu ra là hai bit và sử dụng một bitlàm điều khiển giá trị của các bit đầu ra
Trang 391.4 Tình hình nghiên cứu trong và ngoài nước
1.4.1 Trên thế giới
Bước sang nửa cuối thế kỷ 20, với những tiến bộ liên tục của kỹ thuậttính toán và truyền thông, toán học và kỹ thuật tính toán trở thành cơ sở vàcông cụ cho việc nghiên cứu và phát triển các hệ mật mã Sự ra đời của DESnăm 1977 và hệ mật mã khóa công khai nổi tiếng RSA tại Mỹ 1978 đánh dấuthời kỳ phát triển mới của mật mã DES sau khoảng 20 năm sử dụng đã đượcViện Tiêu chuẩn và Công nghệ Hoa kỳ thay thế bằng AES sau cuộc thi tuyểnthuật toán mật mã tốt nhất mà thu hút một lượng đông đảo các nhà phát triểnmật mã tham gia Sự phát triển mạnh của công nghệ thông tin và truyền thôngđưa đến những dịch vụ thông tin mới như bầu cử điện tử, tiền điện tử… làđộng lực lớn thu hút ngày càng nhiều các nghiên cứu phát triển các hệ mậtkhác nhau
Tại các nước tiên tiến việc xây dựng các thuật toán mật mã dành riêngcho các lĩnh vực đặc thù đã được thực hiện và không ngừng cập nhật
Với sự phát triển nhanh chóng của công nghệ điện tử, việc thực hiệnmật mã khối trên một số công nghệ phần cứng đã chứng minh được tính ưuviệt của nó trong các ứng dụng thực tế (tốc độ, bảo mật, giá thành, …)
2) Sử dụng thuật toán AES làm chuẩn mã hóa dữ liệu cho các ứngdụng dân sự
Trang 40Chương 2 KHÁI QUÁT VỀ FPGA 2.1 Giới thiệu chung về FPGA
Mảng cổng cho phép lập trình được - Field Programmable Gate Arrays
(FPGAs):
+ Là một vi mạch chứa các logic cells Các logic cells thực hiện cácmạch logic và được kết nối với nhau bởi ma trận kết nối và chuyển mạch lậptrình được
+ Là tập hợp các phần tử rời rạc được kết nối theo một cách chungNăm 1985, công ty Xilinx đã đưa ra một ý tưởng mới: Đó là sự kết hợpgiữa những điều khiển người dùng, thời gian đưa sản phẩm PLD
(Programmable Logic Device) ra thị trường cùng với mật độ tích hợp, giá của
các ma trận cổng Điều này đã cho ra đời thiết bị FPGA và cho đến nay Xilinxvẫn là nhà phân phối số 1 trên toàn thế giới về họ thiết bị này Một FPGA có
cấu trúc của các Logic Cell hoặc các Module và các đường nối(xem hình 2.1),
các đường nối này nằm dưới sự điều khiển của người thiết kế Có nghĩa làchúng ta có thể thiết kế, lập trình và thay đổi mạch của mình bất cứ khi nào.Với họ FPGA ngày nay khả năng tích hợp của nó đã vượt qua giới hạn 10
triệu cổng(Họ Xilinx VirtexTM- II và VirtexTM- 4 FPGA hiện đang giữ kỷ
lục) Với sự giới thiệu của họ sản phẩm Spartan FPGA hiện nay, Xilinx có thể
cạnh tranh về ma trận cổng ở mọi khía cạnh như giá cả, số lượng cổng, sốlượng vào ra cũng như hiệu quả về giá thành Giả sử lấy Spartan - IIE FPGAvới số lượng 300.000 cổng làm chuẩn của giá thành, nó có thể cho phép thaythế các sản phẩm ứng dụng theo chuẩn chuyên dụng