1
Mục Lục
1 2
1.1 Mã hóa khi là gì 2
1.2 Thit k 2
2 Các loi mã hóa khi 5
2.1 Lucifer / DES 5
2.2 IDEA 9
2.3 RC5 10
2.4 AES 11
2.5 Blowfish (cipher) 11
3 13
3.1 13
3.2 u kin và tính toán 14
4 ng dng mã hóa khi 15
5 16
6 19
2
1 M
1.1 Mã hóa khi là gì
Trong mật mã học, mã hóa khi là những thuật toán mã hóa đối xứng hoạt động
trên những khối thông tin có độ dài xác định (block) thông qua 1 số phép chuyển đổi
xác định.
Quá trình mã hóa khối bao gồm hai thuật toán ghép nối, một cho mã hóa, E, và một
cho giải mã, D. Cả hai thuật toán chấp nhận hai tham số đầu vào: một khối đầu vào
kích thước n bit và một khóa kích thước k bit, và cả hai đều sinh ra một khối đầu ra n-
bit. Các thuật toán giải mã D được định nghĩa là hàm nghịch đảo của mã hóa, tức là D
= E
Có đầu vào là khóa K, đoạn mã C trả về đầu ra là đoạn văn bản M sao cho
Ví dụ, một khối mật mã thuật toán mã hóa có thể lấy một khối 128-bit của văn bản
làm đầu vào, và đầu ra là một khối mã với 128-bit. Việc chuyển đổi chính xác được
kiểm soát bằng cách sử dụng đầu vào thứ hai - khóa bí mật. Giải mã tương tự: trong ví
dụ này , các thuật toán giải mã lấy một khối 128-bit của đoạn mã cùng với khóa bí
mật, và đầu ra là các khối ban đầu 128-bit của văn bản gốc.
Đối với mỗi khóa K, E
K
là một hoán vị (ánh xạ song ánh) trong tập hợp các khối đầu
vào. Mỗi khóa chọn một hoán vị từ một tập có thể của (2
n
).
1.2 Thit k
1.2.1 Lp mã khi (Iterated block ciphers)
Hầu hết các thuật toán mã hóa khối được phân loại vào nhóm mã hóa khối lặp
có nghĩa là quá trình chuyển đổi khối kích thước cố định của văn bản thành các khối
của bản mã có kích thước giống hệt nhau, thông qua ứng dụng lặp của một chuyển đổi
có thể nghịch đảo gọi là hàm round, với mỗi lần lặp được gọi là một vòng (round).
Thông thường, các hàm vòng R có đầu vào thứ hai là các khóa tròn khác nhau Ki,
được bắt nguồn từ chính bản gốc:
M
i
= R
Ki
(M
i-1
)
Trong đó M
thế-hoán vị (SPN) nhận một khối văn bản và khóa làm đầu vào, và áp dụng nhiều
vòng xoay dịch chuyển bao gồm một đoạn thay thế tiếp theo là một đoạn hoán vị để
sinh ra từng khối mã đầu ra. Khâu thay thế phi tuyến tính hỗn hợp các bit khóa với các
bit của văn bản, tạo ra nhập nhằng Shannon. Khâu hoán vị tuyến tính sau đó mất đi dư
thừa, tạo ra sự khuếch tán.
Một hộp thay thế ( S -box) thay thế một khối nhỏ của các bit đầu vào với một khối các
bit đầu ra. Sự thay thế này phải là một-một , để đảm bảo tính nghịch đảo ( do giải mã).
Một S-box an toàn sẽ có các thuộc tính mà thay đổi một bit đầu vào sẽ thay đổi
khoảng một nửa số bit đầu ra trung bình, đặc điểm này được gọi là hiệu ứng tuyết lở -
tức nó có các tính chất mỗi bit đầu ra sẽ phụ thuộc vào tất cả các bit đầu vào.
Hộp hoán vị (P -box) sẽ hoán vị tất cả các bit: nó nhận kết quả đầu ra của tất cả các S -
box trong một vòng, hoán vị các bit, và đưa chúng vào S -box của vòng tiếp theo. Một
chiếc hộp-P tốt có các tính chất mà các bit đầu ra của bất kỳ S-box được phân phối
cho nhiều đầu vào S-box càng tốt.
Tại mỗi vòng, khóa vòng ( thu được từ khóa sau một số phép toán đơn giản, chẳng
hạn, sử dụng S - hộp và P- hộp ) được kết hợp bằng cách sử dụng một số phép toán
nhóm , điển hình là XOR.
Giải mã được thực hiện bằng cách đơn giản đảo ngược quá trình này ( bằng cách sử
dụng ngược của S- hộp và P- hộp và áp dụng các khóa vòng theo thứ tự ngược lại) .
1.2.3 Mã hóa Feistel
Trong thuật toán mã hóa Feistel, khối văn bản được mã hóa được chia thành
hai phần có kích thước bằng nhau. Hàm vòng được áp dụng cho một nửa, sử dụng một
khóa con, và sau đó đầu ra được thực hiện XOR với nửa kia. Hai nửa sau đó được đổi
chỗ.
Cho F là hàm vòng và cho K
0
K
i
)
Kết quả đoạn mã là (R
n+1
, L
n+1
).
Giải mã đoạn mã (R
n+1
, L
n+1
) sẽ thực hiện được bằng cách tính toán i=n,n-1,…,0
R
i
= L
i+1
L
i
= R
i+1
F(R
i
,
K
i
)
, R
0
)
5 Với mỗi vòng i = 0,1,…, n, tính toán
L
i+1
= б(L
i
) + T
i
và R
i+1
= R
i
+ T
i
Trong đó б là một orthomorphism (có nghĩa là, cả hai б và x→ б (x)-x là hoán vị) và
T
i
= F (б (б(L
i
) – R
i
, K
i
).
Kết quả, bản mã là (R
i+1
– R
i+1
, K
i
)
Kết quả, (L
0
, R
0
) chính là văn bản gốc.
2: Sơ đồ Lai-Massey
2 Các loi mã hóa khi
2.1 Lucifer / DES
Nói chung, Lucifer được coi là thuật toán mã hóa khối dân sự đầu tiên, được
phát triển tại IBM vào những năm 1970 dựa trên nghiên cứu thực hiện bởi Horst
Feistel.
6
DES là thuật toán mã hóa khối nguyên mẫu – nhận một chuỗi văn bản dài 64 bit và
biến đổi nó thông qua một loạt các thao tác phức tạp thành một chuỗi bit mã có cùng
chiều dài. DES cũng sử dụng một khóa điều chỉnh sự chuyển đổi, do đó có thể giải mã
được cho là chỉ có thể được thực hiện bởi những người có đúng khóa được sử dụng để
mã hóa. Về mặt hình thức, khóa có chiều dài 64 bit. Tuy nhiên, chỉ có 56 bit trong số
này được thực sự sử dụng bởi thuật toán. Tám bit được sử dụng chỉ để kiểm tra tính
chẵn lẻ, sau đó được bỏ đi. Do đó độ dài khoá hiệu quả là 56 bit.
bao gồm bốn bước nhỏ:
1. Mở rộng- Các nửa khối 32-bit được mở rộng thành 48 bit bằng cách sử dụng
hoán vị mở rộng, ký hiệu là E trong sơ đồ, bằng cách sao chép một nửa trong số các
bit. Kết quả bao gồm tám chuỗi 6-bit (8 * 6 = 48 bit) miếng, từng chuỗi chứa một bản
sao của 4 bit đầu vào tương ứng, cộng với một bản sao của bit ngay liền kề từ mỗi
chuỗi đầu vào cho cả hai phía.
2. Trộn khóa - kết quả được kết hợp với một khóa con bằng cách sử dụng một phép
toán XOR. 16 khóa con 48-bit - một khóa cho mỗi vòng – được điều chế từ khóa
chính bằng cách sử dụng key schedule (được mô tả dưới đây).
3. Thay thế - sau khi trộn khóa, khối được chia thành tám mảnh 6-bit trước khi được
điều chế bởi hộp-S, hoặc hộp thay thế. Mỗi hộp trong số tám S-hộp thay thế sáu bit
đầu vào của nó với bốn bit đầu ra theo một chuyển đổi phi tuyến tính, cung cấp dưới
dạng một bảng tra cứu. S-hộp cung cấp cốt lõi của sự an toàn của DES - mà không có
họ, các thuật toán mã hóa sẽ là tuyến tính, và tầm thường dễ vỡ.
4. Hoán vị - cuối cùng, 32 kết quả đầu ra từ các hộp-S được sắp xếp lại theo một hoán
vị xác định, hộp P. Kỹ thu
ật này được thiết kế để, sau khi hoán vị, các bit đầu ra của từng S-box được đưa vào 4
hộp S khác nhau trong vòng tiếp theo.
Các biến đổi luân phiên thay thế từ hộp S, và hoán vị của các bit từ hộp P và hàm mở
– phép cộng, phép nhân, và phép hoặc loại trừ (XOR) - đó là đại số "không tương
thích" trong một nghĩa nào đó. Cụ thể hơn, các phép toán này xử lý với từng chuỗi 16-
10
bit:
Hoặc loại trừ (ký hiệu dấu cộng khoanh tròn màu xanh nước biển ⊕).
Modulo cộng 2
16
(ký hiệu bằng dấu cộng đóng ô vuông màu xanh lá cây ⊞).
Modulo nhân 2
16
+1, trong đó các từ 0 (0x0000) được xem như là 2
16
(ký hiệu
bằng dấu chấm khoanh tròn).
Sau khi kết thúc tám vòng, chuyển sang "nửa vòng" cuối cùng, kết quả chuyển đổi
minh họa như dưới đây:
Cu trúc
Cấu trúc tổng thể của IDEA sau lược đồ Lai-Massey. XOR được sử dụng cho cả phép
trừ trừ, phép cộng. IDEA sử dụng một hàm nửa vòng có khóa phụ thuộc. Làm việc với
các từ 16 bit (có nghĩa là bốn đầu vào thay vì hai cho kích thước khối 64 bit), IDEA
sử dụng lược đồ Lai-Massey hai lần song song, với hai hàm vòng song song được đan
xen với nhau. Để đảm bảo đủ khuếch tán, hai trong số các khối con được tráo đổi sau
mỗi vòng.
2.4 AES
AES dựa trên một nguyên tắc thiết kế được gọi là một mạng lưới thay thế - hoán
vị , và nhanh chóng trong cả phần mềm và phần cứng. [8] Không giống như thuật toán
tiền nhiệm của nó là DES , AES không sử dụng mạng Feistel . AES là một biến thể
của Rijndael trong đó có một kích thước khối cố định 128 bit, và kích thước khóa 128
, 192 , hoặc 256 bit. Ngược lại, các đặc điểm kỹ thuật Rijndael được quy định với kích
thước khối và khóa có thể là bất kỳ bội số của 32 bit , với kích thước tối thiểu là 128
và tối đa là 256 bit .
AES hoạt động trên một ma trận cột chính 4 × 4 byte , được gọi là state, mặc dù một
số phiên bản của Rijndael có kích thước khối lớn hơn và có các cột bổ sung trong
state. Hầu hết các tính toán AES được thực hiện trong một trường hữu hạn đặc biệt.
Kích thước khóa được sử dụng cho thuật toán mã hóa AES xác định số lần lặp lại của
vòng chuyển đổi đầu vào văn bản thành kết quả cuối cùng, được gọi là bản mã. Số chu
kỳ lặp lại như sau:
10 chu kỳ lặp đi lặp lại đối với các khóa 128-bit.
12 chu kỳ lặp đi lặp lại đối với các khóa 192 -bit.
14 chu kỳ lặp đi lặp lại đối với các khóa 256-bit .
Mỗi vòng bao gồm một số bước xử lý , từng có bốn khâu tương tự nhưng khác nhau,
trong đó có một khâu phụ thuộc vào khóa mã hóa riêng của nó. Một tập các vòng đảo
ngược được áp dụng để chuyển đổi mã trở lại vào văn bản ban đầu bằng cách sử dụng
chính khóa mã hóa.
2.5 Blowfish (cipher)
Blowfish có kích thước khối 64-bit và chiều dài khóa thay đổi từ 32 bit lên đến
Hàm tạo khóa của Blowfish bắt đầu bằng cách khởi tạo mảng P và các hộp S với giá
trị thu được từ các chữ số thập lục phân của số pi , mà không chứa mô hình rõ
ràng.Tiếp theo, khóa bí mật , được tạo thành theo từng byte , ghép chu kỳ khóa nếu
cần thiết, XOR với tất cả các đầu vào P theo thứ tự. Khối 64-bit 0 được mã hóa với
bằng thuật toán riêng. Các bản mã kết quả thay thế P1 và P2. Các bản mã tương tự
được mã hóa một lần nữa với các khóa con mới, và các đoạn mã mới sẽ thay thế P3 và
P4. Thao tác này tiếp tục, thay thế toàn bộ mảng P và tất cả các mục S -box. Tóm lại,
các thuật toán mã hóa Blowfish sẽ chạy 521 lần để tạo ra tất cả các khóa con – khoảng
4KB dữ liệu được xử lý.
Vì mảng P có chiều dài 576 bit, và các byte của khóa được XOR với tất cả 576 bit này
trong lúc khởi tạo, nhiều phiên bản hỗ trợ kích thước khóa lên đến 576 bit. Trong khi
điều này là chắc chắn có thể, giới hạn 448 bit là ở đây để đảm bảo rằng tất cả các bit
của mỗi khóa con đều phụ thuộc vào tất cả các bit của khóa chính, vì bốn giá trị cuối
cùng của mảng P không ảnh hưởng đến tất cả các bit của bản mã. Điểm này phải được
đưa ra xem xét cho triển khai với một số vòng khác nhau, bởi mặc dù nó làm tăng
cường an ninh chống lại tấn công toàn diện, nó làm suy yếu mức độ an ninh được đảm
bảo bởi các thuật toán. Và cho khởi tạo chậm của thuật toán mã hóa với mỗi thay đổi
của khóa, nó được tăng cường thêm mức độ bảo mật tự nhiên chống lại các cuộc tấn
công brute-force, mà không thực sự biện minh cho kích thước khóa dài hơn 448 bit.
3
Như đã nói trước đây, thuật toán mã hóa có thể được sử dụng để bảo vệ văn bản
không bị tiết lộ. Mục đích của kẻ tấn công là "phá vỡ" thuật toán mã hóa nhằm phục
hồi các văn bản từ bản mã được bảo vệ. Thuật toán mã hóa hoàn toàn bị phá vỡ nếu kẻ
giải mã có thể xác định khóa bí mật đã được sử dụng để có thể đọc tất cả các thông
điệp dễ dàng như các người sử dụng hợp pháp. Thuật toán mã hóa bị phá vỡ một phần
nếu kẻ tấn công có khả năng phục hồi văn bản từ bản mã đã được bảo vệ, nhưng
không thể xác định được khóa bí mật.
An ninh luôn luôn liên quan đến các nguy cơ tiềm ẩn. Như đã nêu trên, chúng tôi đã
giả định rằng kẻ tấn công có quyền truy cập vào tất cả mọi thứ được truyền tải qua các
được bảo vệ chống lại kẻ thù phá hoại với tài nguyên tính toán không giới hạn. An
toàn vô điều kiện, còn được gọi là lý thuyết an toàn, thực hiện đảm bảo không thể phá
vỡ thuật toán mã hóa. Một thuật toán mã hóa an toàn chống lại kẻ thù với sức mạnh
tính toán hạn chế xác định được gọi là an toàn tính toán. An ninh tính toán, cũng được
gọi là an ninh thực tế, nhằm đảm bảo gây khó khăn trong việc phá vỡ thuật toán mã
hóa. Tất cả hệ thống mã hóa an toàn vô điều kiện được biết đến hiện nay là không thực
tế vì một vài lý do sẽ được thảo luận dưới đây. Hơn nữa, không có mã hóa thực tế nào
được chứng minh là an toàn tính toán.
u kin
Mặc dù trong hầu hết các ứng dụng, an toàn vô điều kiện là không cần thiết và không
thể đạt được thuật toán mã hóa thực tế, các nghiên cứu về an ninh vô điều kiện không
thể hiện được tầm nhìn sâu sắc và hỗ trợ trong việc thiết kế và sử dụng các thuật toán
mã hóa thực tế. Ví dụ, động lực cơ bản cho một mã hóa dòng là mật mã hoàn hảo
được cung cấp bởi hệ thống "one-time pad ".
(Shannon 1949) Một thuật toán mã hóa hỗ trợ bảo mật hoàn hảo nếu
bản mã và khối văn bản là độc lập thống kê.
Các thành tựu bảo mật hoàn hảo đạt được bởi Shannon trong bài báo năm 1949 của
ông.
Ý tưởng sử dụng hệ thống khóa "một lần" lần đầu tiên được Vernam đề xuất vào năm
1926 Hệ thống mã hóa Vernam thường được gọi là hệ thống "pad một lần". Mặc dù
người ta tin trong một thời gian dài rằng pad 1 lần là "không thể phá vỡ”, nhưng thực
tế là nó cung cấp bảo mật hoàn hảo lần đầu tiên được chứng minh bởi Shannon.
15
Ví dụ 1 (Mã hóa nhóm khóa 1 lần) xem xét các mã khối thể hiện trong Hình 2.2 trong
đó là một phép toán nhóm được xác định trên bộ . Mã hóa này có bảo mật
hoàn hảo nếu khóa được chọn một cách ngẫu nhiên thống nhất và độc lập cho mỗi
khối văn bản.
Hình 3.1: Mã hóa nhóm khóa một lần: Khóa Z, được lựa chọn thống nhất ngẫu nhiên
16
5
Ví dụ thuật toán mã hóa khối DES
Hình 5.1: Thuật toán mã hóa khối DES Hình 5.2: Bảng mô tả DES phép hoán vị ban đầu IP của DES và nghịch đảo của nó
IP
-1
Hình 5.3: Hàm f của DES.
17 Hình 5.4: Bảng mô tả các hàm mở rộng E và hoán vị cuối cùng P của hàm f - DES.
18 Hình 5.5: Các hộp S của DES Hình 5.6: Hàm tạo khóa của DES.
19