Tải bản đầy đủ (.doc) (95 trang)

NGHIÊN cứu, xây DỰNG các PHẦN tử cơ sở TRONG mã hóa KHỐI TRÊN FPGA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.01 MB, 95 trang )

BỘ 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


BỘ 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


CÔ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


Tô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àn
trung 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


MỤ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..........................................................................................................3
TỔNG QUAN VỀ MÃ HOÁ..........................................................................3
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..............................................28
1.4.1. Trên thế giới..........................................................................................28
1.4.2. Trong nước............................................................................................28
Chương 2........................................................................................................29
KHÁI QUÁT VỀ FPGA...............................................................................29
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



2.3.3. Xilinx Platform Studio SDK.................................................................41
Chương 3........................................................................................................43
XÂY DỰNG MÔ HÌNH TOÁN HỌC.........................................................43
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........................................................................................................56
XÂY DỰNG CÁC PHẦN TỬ TRONG THUẬT TOÁN CRYPT(D) 64
VÀ THỬ NGHIỆM.......................................................................................56
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Ị...............................................................68

1. Kết luận.......................................................................................................68
2. Khuyến nghị................................................................................................68
TÀI LIỆU THAM KHẢO............................................................................69


PHỤ LỤC.......................................................................................................69


TÓM TẮT LUẬN VĂN
+ Họ và tên học viên: Nguyễn Thế Bùi
+ Lớp:

Khoa học Máy tính

Khoá: 24

+ 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ối
CRYPT(D)64, nhằm phục vụ cho việc cài đặt thuật toán mã hoá khối trên
thiế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ác
phầ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ật
toán mã hoá khối CRYPT(D)64, ứng dụng xây dựng trên công cụ lập trình

Xilinx ISE và cài đặt trên phần cứng.


DANH 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 Thiết bị lôgíc lập trình phức hợp
Devices

CSPN

Controlled Substitution Permutation Network

Mạng chuyển vị - thay thế điều
khiển được


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 theo
hang

HDL

Hardware Description
Language

Ngôn ngữ mô tả phần cứng

IEEE

Institute of Electrical and
Electronic Engineers

Hiệp hội các Kỹ sư Điện và
Điện tử

LUT


Look Up Table

Bảng dò tìm

OTP

One - Time Programmable

Lập trình một lần

PLD

Programmable Logic Device

Thiết bị logic lập trình được

PROM

Programmable Read - Only Memory

Bộ nhớ chỉ đọc lập trình được

SPN

Substitution - Permutation
Network

Mạng chuyển vị - thay thế cố
định


SRAM

Static Random-Access
Memory

Bộ nhớ tĩnh truy xuất ngẫu nhiên
-còn gọi là RAM tĩnh

VHDL

VHSIC Hardware Description
Language

Ngôn ngữ mô tả phần cứng của
mạch tích hợp tốc độ rất cao

VHSIC

Very High Speed Integrated
Circuits

Mạch tích hợp tốc độ rất cao

VLSI

Very Large Scale Integrated

Tích hợp mật độ lớn


AES

Advanced Encryption
Standard

Chuẩn mã hóa nâng cao


DANH MỤC CÁC BẢNG
Trang

Bảng 1.1 - Đặc tả của hộp thay thế 4×4 S0 , . . , S7.....................................25
Bảng 1.2 - Đặc tả của hộp thay thế 4×4 S0-1, . . , S7-1...............................26
Bảng 3.1.a - Khối chuyển vị thuận S0,…,S7...............................................51
Bảng 3.1.b - Khối chuyển vị ngược..............................................................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


DANH 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ử P2/1 tổng hợp từ bộ chọn kênh và phân
kênh................................................................................................................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ử F2/1.......................................................46


Hình 3.9 - Sơ đồ khối mạch giải mã 2:4......................................................47
Hì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ử...............................................................................53
Hình 3.16 - Khối toán tử...............................................................................53
Hình 3.17 - Khối toán tử F16/16...................................................................54
Hình 3.18 - Mô tả hoán vị cố định (hoán vị xoắn)......................................54
Hình 4.1 Mô phỏng F2/1...............................................................................56
Hình 4.2 Mô phỏng I0...................................................................................57
Hình 4.3 Mô phỏng F16/16...........................................................................57

Hình 4.4 Mô phỏng F32/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


MỞ ĐẦ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 quan
trọng trong lĩnh vực an ninh quốc phòng. Việc đưa ra công nghệ mới trong
lĩ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ức
thiết kế sản xuất, công nghệ FPGA của Xilinx cho phép tự thiết kế những vi
mạ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ật
toá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ụng
cho thuật toán mã hoá khối, CRYPT(D)64. Thuật toán CRYPT(D)64 được
thiế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à


mộ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ác
yê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 Khoa
Công nghệ Thông tin - Học viện Kỹ thuật Quân sự, đã hướng dẫn, tạo điều
kiện giúp em hoàn thành đề tài tốt nghiệp.


Chươ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ành
khoa 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ột
kênh không mật cho hai người sử dụng Alice và Bob sao cho đối phương
Oscar 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ông
tin 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ê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 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 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 đặc
trư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ưng
ngườ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ý 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ố . .
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


có 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ệu
thống kê và đặc biệt phải có kinh nghiệm trong công việc. Tuy vậy ngày nay
vớ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ới
cá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ương
phá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ọc

như 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õ x ∈ P.


1.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óa
khó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ông
cộ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ác
phươ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ể xem
như đây là phương pháp chuẩn được sử dụng phổ biến nhất trên Internet, ứng


dụng trong việc bảo mật thông tin liên lạc cũng như trong lĩnh vực thương
mạ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ại
gặp phải vấn đề khó khăn trong việc trao đổi mã khóa. Ngược lại, các phương
pháp mã hóa khóa công cộng tuy xử lý thông tin chậm hơn nhưng lại cho
phép người sử dụng trao đổi mã khóa dễ dàng hơn. Do đó, trong các ứng dụng
thự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ịch
chuyể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 = Zn
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ịch
chuyể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.


Ta 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.
A

B

C

D

E

F

G

H

I


J

K

L

M

0

1

2

3

4

5

6

7

8

9

10


11

12

N

O

P

Q

R

S

T

U

V

W

X

Y

Z


13 14 15 16 17 18 19 20
Sau đây là một ví dụ nhỏ để minh hoạ

21

22

23

24

25

Giả sử khoá cho mã dịch vòng là K = 11 và bản rõ là:
wewillmeetatmidnight
Trước tiên biến đổi bản rõ thành dãy các số nguyên nhờ dùng phép
tương ứng trên. Ta có:
22

4

22

8

11

11


12

4

4

19

0

19

12

8

3

13

8

6

7

19

Sau đó cộng 11 vào mỗi giá trị rồi rút gọn tổng theo modulo 26
7


15

7

19

22

22

23

15

15

4

11

4

23

19

14

24


19

17

18

4

Cuối cùng biến đổi dãy số nguyên này thành các kí tự thu được bản mã
sau:
hphtwwxppelextoytrse
Để 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


Phương pháp mã hóa thay thế là một trong những phương pháp mã hóa
nổi tiếng và đã được sử dụng từ hàng trăm năm nay. Phương pháp này thực
hiệ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ái
hay 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 = Zn
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ã được
thực hiện nhanh chóng. Phương pháp này khắc phục điểm hạn chế của
phươ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. Tuy
nhiê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 đặc
biệ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 đặc
biệt khác của mã hóa thay thế.
Thuật toán:


Cho P = C = Zn và giả sử P ={(a, b) ∈ Zn × Zn: UCLN(a, n) = 1}
Với mỗi khoá k = (a, b) ∈ K, định nghĩa:
ek(x) = (ax + b) mod n và dk(x)= (a-1(y - b)) mod n với x, y ∈ Zn
E = {ek , k ∈ K} và D = {Dk , 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 ∈
E thì ek phải là một đơn ánh.
Như vậy, với mỗi giá trị y ∈ Zn, phương trình ax + b ≡ y(mod n) phải
có nghiệm duy nhất x ∈ Zn.
Phương trình ax + b ≡ y(mod n) tương đương với ax ≡ (y - b)(mod n).
Vậy ta chỉ cần khảo sát phương trình ax ≡ (y - b)(mod n).
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 Z n 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óa
hợ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|(x 1 - 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


cho x thay đổi trên Zn thì ax mod n sẽ nhận được n giá trị khác nhau theo
modulo 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 đặc
biệ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ông
phả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 cho
mỗ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 đương
vớ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ỳ.

Thuật toán:
Cho m là một số nguyên dương cố định. Định nghĩa P = C = K = (Zn)m.
Với khóa k = (k1, k2, . . , km) ta có:
ek(x1,x2,…xm)=(x1+k1,x2+k2,…,xm+km)
dk(y1,y2,…,ym)=(y1-k1,y2-k2,…,ym-km)
Trong đó tất cả các phép toán thực hiện trong Zn.
Ví dụ: Giả sử n = 26, m = 6 và từ khóa là CIPHER. Từ khóa này tương
ứng với dãy số k = (2, 8, 15, 4, 17). Giả sử bản rõ của xâu là:
thiscryptosystemisnotsecure
Ta biến đổi các phần tử của bản rõ thành thặng dư theo modulo 26, viết
chúng thành các nhóm 6 rồi cộng với từ khóa theo modulo 26 như sau:

19
2

7
8

8
15

18
7

2
4

17
17


24
2

15
8

19
15


21

15

23

25

6

8

0

23

8

14
7

21

18
4
22

24
17
15

18
2
20

19
8
1

4
15
19

12
7
19

8
4
12


18
17
9

13
14
19
18
4
2
20
2
8
15
7
4
17
2
15
22
8
25
8
19
22
Bởi vậy, dãy ký tự tương ứng của xâu bản mã sẽ là:

17
8
25


4
15
19

vpxzgiaxivwpubttmjpwizitwzt
Để giải mã ta có thể dùng cùng từ khóa nhưng thay cho cộng, ta trừ
theo modulo 26.
Ta 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ạn
cũ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ìm
khó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ệc
thám mã hệ đơn biểu.
1.2.1.5. Mật mã Hill
Trong phần này sẽ mô tả một hệ mật thay thế đa biểu khác được gọi là
mật mã Hill. Mật mã này do Lester S.Hill đưa ra năm 1929:
Cho m là một số nguyên dương cố định, định nghĩa P = C = (Z n)m và
cho k = {ma trận khả nghịch cấp mxm trên Zn}.
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.


Ý 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à kij thì có thể viết: k = (kij).

Với x = (x1, x2, . . , xm) ∈ P và k∈ K, ta tính y = eK(x) = (y1, y2, . ., ym)
như sau :
k1,1

k 2,1
( y1 ,.., y m ) = ( x1 ,.., x m ) 
..

k m ,1

k1, 2

..

k 2, 2

..

..
..
k m , 2 ..

k1,m 

k 2 ,m 
.. 

k m ,m 

Nói một cách khác y = xk

Chúng ta nói rằng bản mã nhận được từ bản rõ nhờ phép biến đổi tuyến
tính. Ta sẽ xét xem phải thực hiện giải mã như thế nào, tức là làm thế nào để
tính x từ y. Chúng ta sẽ phải dùng ma trận nghịch đảo k -1 để giải mã. Bản mã
được giải bằng công thức yk-1.
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ưởng
củ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 = (Z n)m và cho K gồm
tấ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ị) ta
xác định.


×