116
Chương 7 MẬT MÃ KHÓA ĐỐI XỨNG 7.1 Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ nguyên của mật mã học hiện đại được bắt đầu với Claude Shannon, người được coi là cha đẻ của mật mã toán học. Năm 1949 ông đã công bố bài Lý thuyết về truyền thông trong các hệ thống bảo mật (Communication Theory of Secrecy Systems) trên tập san Bell System Technical Journal - Tập san kỹ thuật của hệ thống Bell - và một thời gian ngắn sau đó, trong cuốn Mathematical Theory of Communication - Lý thuyết toán học trong truyền thông - cùng với tác giả Warren Weaver. Những công trình này, cùng với những công trình nghiên cứu khác của ông về lý thuyết về tin học và truyền thông (information and communication theory), đã thiết lập một nền tảng lý thuyết cơ bản cho mật mã học và thám mã học. Với ảnh hưởng đó, mật mã học hầu như bị thâu tóm bởi các cơ quan truyền thông mật của chính phủ, chẳng hạn như NSA, và biến mất khỏi tầm hiểu biết của công chúng. Rất ít các công trình được tiếp tục công bố, cho đến thời kỳ giữa thập niên 1970, khi mọi sự được thay đổi. Claude Shannon xem xét mô hình 7.1, ở đây nguồn bản tin sinh ra bản rõ X, nguồn khóa tạo ra khóa K, khóa K được truyền qua kênh mật từ nơi truyền đến nơi nhận. Quá trình mã hóa biến đổi bản rõ X nhờ khóa thành bản mã Y: .

Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Embed Size (px)

Citation preview

Page 1: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Chương 7

MẬT MÃ KHÓA ĐỐI XỨNG

7.1 Lý thuyết cơ bản của Shannon

Nhiều người cho rằng kỷ nguyên của mật mã học hiện đại được bắt đầu với Claude

Shannon, người được coi là cha đẻ của mật mã toán học. Năm 1949 ông đã công bố bài

Lý thuyết về truyền thông trong các hệ thống bảo mật (Communication Theory of

Secrecy Systems) trên tập san Bell System Technical Journal - Tập san kỹ thuật của hệ

thống Bell - và một thời gian ngắn sau đó, trong cuốn Mathematical Theory of

Communication - Lý thuyết toán học trong truyền thông - cùng với tác giả Warren

Weaver. Những công trình này, cùng với những công trình nghiên cứu khác của ông về lý

thuyết về tin học và truyền thông (information and communication theory), đã thiết lập

một nền tảng lý thuyết cơ bản cho mật mã học và thám mã học. Với ảnh hưởng đó, mật

mã học hầu như bị thâu tóm bởi các cơ quan truyền thông mật của chính phủ, chẳng hạn

như NSA, và biến mất khỏi tầm hiểu biết của công chúng. Rất ít các công trình được tiếp

tục công bố, cho đến thời kỳ giữa thập niên 1970, khi mọi sự được thay đổi.

Claude Shannon xem xét mô hình 7.1, ở đây nguồn bản tin sinh ra bản rõ X, nguồn

khóa tạo ra khóa K, khóa K được truyền qua kênh mật từ nơi truyền đến nơi nhận.

Quá trình mã hóa biến đổi bản rõ X nhờ khóa thành bản mã Y: .

Quá trình giải mã, biến đổi bản mã nhận được Y thành bản rõ X cũng nhờ khóa K:

.

Tội phạm (hay thám mã) sẽ tìm cách nhận được bản rõ và khóa trên cơ sỡ bản mã.

Claude Shannon xem xét các câu hỏi lý thuyết và thực hành mật. Để nhận được lý

thuyết mật Shannon hình thành các câu hỏi sau:

1. Hệ thống ổn định ở mức độ nào, nếu như thám mã không giới hạn thời gian và

có tất cả các thiết bị cần thiết đối với việc phân tích bản mã?

2. Bản mã liệu có một nghiệm duy nhất hay không?

3. Với lượng thông tin bản mã bao nhiêu mà thám mã cần thu nhặt để nghiệm trở

nên duy nhất?

Page 2: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Để trả lời câu hỏi của Shannon chúng ta đưa vào định nghĩa “tuyệt mật” với sự hổ trợ

các điều kiện sau: Bản mã thu được không đêm đến cho thám mã bất kỳ thông tin nào.

Theo định lý Bayes

Hình 7.1. Mô hình truyền tin Shannon

Với P(X) là xác suất xuất hiện bản tin X; xác suất điều kiện, xuất hiện bản mã

Y với điều kiện bản tin X đã được chọn, có nghĩa là tổng xác suất của tất cả các khóa, mà

các khóa này chuyển bản tin X tương ứng với bản mã Y; P(Y)-xác suất nhận được bản

mã Y; là xác suất nhận được bản rõ X với điều kiện nhặt được bản mã Y. Để

“tuyệt mật” thì giá trị của và cần phải bằng nhau với tất cả giá trị của X và

Y.

Để chống lại phương pháp phân tích thống kê bản mã (đây là một cách thám mã)

Shannon đề ra hai phương pháp: khuyết tán và pha trộn.

Định nghĩa Entropy thông tin. Entropy thông tin mô tả mức độ hỗn loạn trong một

tín hiệu lấy từ một sự kiện ngẫu nhiên. Nói cách khác, entropy cũng chỉ ra có bao nhiêu

thông tin trong tín hiệu, với thông tin là các phần không hỗn loạn ngẫu nhiên của tín hiệu.

Lý thuyết về thông tin sẽ trình bày đầy đủ hơn về Entropy, ở đây chúng tôi chỉ đưa ra

cái cơ bản.

Claude E. Shannon đã xây dựng định nghĩa về entropy để thoả mãn các giả định sau:

1. Entropy phải tỷ lệ thuận liên tục với các xác suất xuất hiện của các phần tử

ngẫu nhiên trong tín hiệu. Thay đổi nhỏ trong xác suất phải dẫn đến thay đổi

nhỏ trong entropy.

2. Nếu các phần tử ngẫu nhiên đều có xác suất xuất hiện bằng nhau, việc tăng

số lượng phần tử ngẫu nhiên phải làm tăng entropy.

Nguồn khóa

Nguồn bản tin

Mã hóa Giải mã Nhận bản tin

Tội phạm

K

K’X’

XY

X

K

Page 3: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

3. Có thể tạo các chuỗi tín hiệu theo nhiều bước, và entropy tổng cộng phải

bằng tổng có trọng số của entropy của từng bước.

Shannon cũng chỉ ra rằng bất cứ định nghĩa nào của entropy, cho một tín hiệu có thể

nhận các giá trị rời rạc, thoả mãn các giả định của ông thì đều có dạng:

Với K là một hằng số, chỉ phụ thuộc vào đơn vị đo; n là tổng số các giá trị có thể nhận

của tín hiệu; i là giá trị rời rạc thứ i; p(i) là xác suất xuất hiện của giá trị i;

Nếu một sự kiện ngẫu nhiên rời rạc x, có thể nhận các giá trị là 1..n, thì entropy của

nó là:

,

với p(i) là xác suất xảy ra của giá trị i.

Entropy thông tin trong trường hợp phần tử tín hiệu ngẫu nhiên rời rạc còn được gọi

là entropy Shannon.

7.2 Định nghĩa mật mã đối xứng

Định nghĩa. Mật mã đối xứng là hệ mật mà quá trình mã hóa và quá trình giải mã

dùng chung một khóa mật, và việc bảo mật bản tin phụ thuộc vào quá trình lưu khóa mật.

Sơ đồ tổng quát của hệ mã đối xứng được miêu tả ở hình 7.2.

Hình 7.2. Sơ đồ mật mã đối xứng

Bản tin nguồn (X)

Quá trình mã hóa

Bản mã Y truyền qua

kênh

Quá trình giải mã

(X=)

Bản tin giải mã X

Khóa mật (K) khóakhóa

Tạo ra khóa mật

Page 4: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

ở đây bản tin nguồn X là thông tin cần mã để bảo mật, trước khi chuyển đến nơi nhận

nó phải được mã hóa bằng hàm mã hóa E, hàm mã hóa E là tổng hợp các phép biến đổi

với sự tham gia của khóa mật K; qua biến đổi của hàm E chúng ta thu được bản mã Y;

bản mã Y truyền qua kênh thông tin đến nơi người cần nhận, ở nơi nhận với sự giúp đở

của quá trình giải mã và khóa mật K, sẽ giải bản mã Y thành bản tin X ban đầu. Chú ý,

nếu như khóa K không đúng, hoặc bản mã Y bị biến đổi trong quá trình truyền thì quá

trình giải mã không thể thu được bản tin ban đầu X.

Như đã nói, mật mã đối xứng được chia ra làm hai phần, mật mã khối và mật mã

dòng. Chúng ta xem định nghĩa về chúng.

Định nghĩa mật mã khối. Mã khối là tổ hợp lệnh toán học (hoán vị, thay thế,…)

biến đổi dãy N bit thành một dãy N bit

với sự tham gia của khóa mật k từ không gian khóa K, có thể

viết dưới dạng

,

ở đây F là hàm mã hóa hay giải mã.

Định nghĩa mã dòng. Là một hệ mã đối xứng, trong đó từng ký tự của bản rõ được

biến đổi thành ký tự của bản mã phụ thuộc không chỉ vào khóa sử dụng mà còn vào vị trí

của nó trong bản rõ. Mã khối thì chia bản rõ ra các khối bằng nhau rồi thực hiện mã, nên

sẽ có một số khối giống nhau mã cùng một khóa, ở mã dòng thì không như vậy.

7.3 Các lệnh dùng để xây dựng thuật toán mật mã đối xứng

Hầu như tất cả các hệ mật đối xứng đảm bảo bảo mật thông tin thường được xây dựng

trên cơ sở các lệnh cơ sở sau:

7.3.1 Lệnh hoán đổi

Định nghĩa. Đây là phương pháp biến đổi mật mã đơn giản, là một phép hoán đổi các

vị trí của các kí tự trong bản rõ theo một quy luật nào đó. Chúng ta có thể biểu diễn

chúng bằng toán học như sau:

Hoán đổi của tập hữu hạn , với gồm n phần tử, là một đơn ánh từ tập vào tập ,

, lệnh hoán đổi có dạng sau:

,

ở đây hang đầu tiên là vị trí ký tự của bản rõ, hang thứ 2 là các vị trí mà ký tự ban đầu

cần hoán đổi tương ứng, khi ), tức là vị trí thứ đổi

Page 5: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

cho vị trí thứ , vị trí thứ đổi cho vị trí thứ tương tự như thế. Giá trị n gọi là chiều

dài hoán đổi.

Ví dụ:

.

Tập hợp tất cả các lệnh hoán đổi ký hiệu là , và rõ ràng rằng .

Có nhiều cách biểu diễn lệnh hoán vị. Ví dụ như từ ví dụ trên ta có các cách biểu diễn

sau:

.

Chúng ta thấy lệnh hoán đổi như một hàm, tham số của nó là số nguyên, hàm này có

thể ký hiệu ,với .

Tiêu chuẩn xây dựng nên lệnh hoán đổi: Chúng ta phải xây dựng lệnh hoán đổi sao

cho đạt được độ phát tán tốt, nhằm tăng hiệu ứng thác lũ.

7.3.2 Lệnh thay thế.

Định nghĩa.Trong mật mã, lệnh thay thế có thể hiểu là một qúa trình thay một số

phần tử này bằng một số phần tử khác, hay nói cách khác là thay thế một ký tự hay một

nhóm ký tự của bản tin bằng một ký tự hay một nhóm ký tự khác. Theo toán học thì

chúng ta có thể định nghĩa như sau:

Lệnh thay thế S là một ánh xạ s: , với là tập hữu hạn và với , tồn

tại duy nhất một phần tử .

Đối với lệnh hoán đổi có dạng:

,

Với . Các giá trị không bắt buộc là khác nhau.

Ví dụ lệnh thay thế 2 bit này thành 2 bít khác:

Tuy nhiên một số phép thay thế có thể biểu diễn ở dạng khác như đồ thị, dùng hàm

số…vv.

Tiêu chí để xây dựng nên lệnh thay thế: Khi sử dụng lệnh thay thế phải có được các

tính chất: Bậc đại số cao, có độ phi tuyến tính lớn, tạo ra tính tính pha trộn bít và phát tán

bít tốt.

7.3.3 Mạng hoán vị thay thế

Page 6: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Kết hợp lệnh hoán vị và lệnh thay thế, có thể xây dựng nên mạng hoán vị thay thế.

Đây là cấu trúc xen kẻ nhiều lớp mỗi lớp kết hợp phép thay thế và phép hoán vị. Với

mạng thay thế hoán vị, có thể tạo cho thuật toán có độ phân tán vào xáo trộn rất tố.

Chúng ta tìm ví dụ mạng hoán vị thay thế được miêu tả ở hình 7.3, đầu vào là 32 bít

qua mạng chuyển vị 4 lớp, mỗi lớp gồm 8 bảng thay thế 4 bít cho 4 bít, các bảng này có

thể khác nhau, sau phép thế là phép hoán vị.

Hình 7.3.Mạng hoán vị thay thế S_BOX 32/22

Để tạo ra mạng hoán vị, chúng ta cần tính toán đến hiệu quả thác lũ để chọn ra cách

xây dựng như ý.

7.3.4 Lệnh Gamma dành cho mã dòng

Nguyên lý cơ bản của mã dòng là tạo ra chuỗi khóa, cũng thường hay gọi là tạo ra

khóa dòng hay khóa dịch hay gamma được cho bằng chuỗi bít … Chuỗi bít

này sẽ cộng với chuỗi bít bản rõ để nhận được chuỗi bản mã:

Ở bên nhận bản mã sẽ cộng bản mã với cùng chuỗi khóa đó để khôi phục lại bản mã

ban đầu:

Sự vững chắc của hệ mã phụ thuộc hoàn toàn vào cấu trúc bên trong sinh ra chuỗi

khóa. Nếu việc sinh ra không tạo ra chuỗi với chu kỳ lớn thì hệ sẽ không vững chắc.

Có thể biểu diễn bằng sơ đồ sau quá trình mã và giải mã tương ứng ở hình 7.4 và 7.5.

Page 7: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.4. Quá trình mã hóa gamma

Hình 7.5. Quá trình giải mã gamma

Độ an toàn khi dùng lệnh gamma. Claude Shannon đã chứng minh rằng mã bằng

lệnh gamma là tuyệt đối an toàn.

Chứng minh của Shannon:

Giả sử X và Y là giá trị ngẫu nhiên rời rạc. X là giá trị ngẫu nhiên đối với bản rõ, Y là giá trị

ngẫu nhiên đối với gamma, khi đó luật phân bố X sẽ là

X 0 1

p 1-p

Luật phân bố Y là

Y 0 1

1/2 1/2

ở đây là xác suất gặp X, hoặc Y. Ở đây chúng thấy trong số gamma thì xác suất gặp 0

và 1 là như nhau. Z là giá trị ngẫu nhiên rời rạc cho bản mã. Từ hình chúng ta thấy rằng

Z=X+Y (mod 2). Chúng ta đi tính xác suất gặp 0 và 1 trong định luật phân bố Z:

Chúng ta dùng:

1) , nếu như A và B không giao nhau

2) , nếu như A và B độc lập

Chúng ta có:

P(Z=0) = P(X=0,Y=0)+P(X=1,Y=1) =

ip

ik

Bản rõ

gamma Bản mã ic

ic

ik

Bản mã

gamma Bản rõ ip

Page 8: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

= P(X=0)*P(Y=0)+P(X=1)*P(Y=1) =p*1/2+(1-p)*1/2 = 1/2 .

Nên

P(Z=1) = 1-P(Z=0) = ½.

Điều này chúng ta thấy luật phân bố Z là đối xứng, có nghĩa là chúng ta nhận được

gamma hoặc là nhiễu (tức là Z không bao gồm một thông tin nào từ X) nên mã tuyệt

đối an toàn.

Cách chọn gamma:

1) Đối với từng trường hợp dùng gamma khác nhau;

2) Để tạo ra gamma dùng phương pháp tạo số ngẫu nhiên;

3) Gamma phải dài tương ứng với bản mã;

4) Lựa chọn gamma một cách thông minh để thám mã khó mò.

Mã dòng rất hữu ích đối với mã dòng dữ liệu liên tục, ví dụ trong mạng truyền tải dữ

liệu.

7.4 Một số sơ đồ dùng để thiết kế hệ mật

7.4.1 Mạng Feistel và các kiểu biến dạng của nó

Một trong các phương pháp thông dụng tạo ra mã khối là dựa trên cấu trúc có tên là

Feistel được Horst Feisel tạo ra. Cấu trúc một vòng của mạng Feistel biểu diễn hình 7.6.

Hình 7.6. Sơ đồ 1 vòng Feistel

Trong sơ đồ này thì hàm F là hàm cơ bản để xây nên khối mạng Feistel, nó luôn được

chọn là hàm phi tuyến tính và trong tất cả các trường hợp nó không có hàm ngược. Hàm

F có hai thám số, một là nữa khối bên phải và tham số còn lại là khóa.

R

F(R,K)

L’=R R’=F(R,K)

K

R

Page 9: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Giả sử X là khối bản tin, biểu diễn dưới dạng hai khối con có độ dài như nhau

. Lúc này một vòng của mạng có thể biều diễn như sau, giả sử sau i vòng ta thu

được , thì vòng thứ i+1 sẽ là:

.

Mã khối xây dựng trên cơ sở mạng Feistel có r vòng như thế, số vòng này xác định độ

an toàn của hệ mã, và vòng cuối cùng không thực hiện hoán đổi giữa khối con bên phải

và khối con bên trái, tức là

,

Việc làm này không ảnh hưởng đến độ an toàn của thuật toán mã, mà nó sẽ làm cho

quá trình mã hóa và giải mã là hai quá trình thuận nghịch nhau, tức là sau khi mã chúng

ta thu được , để giải mã, chúng ta dung đúng thuật toán mã hóa, tham số của thuật toán

bây giờ là khối dữ liệu là và thực hiện r vòng với đảo thứ tự các khóa con ngược với

quá trình mã hóa, chúng ta thu được bản tin ban đầu.

Ưu và nhược điểm khi thực hiện mã khối trên cơ sở mạng Feistel.

Ưu điểm.

1. Quá trình mã hóa và giải mã trùng nhau, chỉ khác nhau ở thứ tự khóa con,

điều này sẽ tiết kiệm được nữa tài nguyên khi thực hiện thuật toán trên phần

cứng.

2. Hàm F có thể chọn với độ khó bất kỳ, vì không phải tìm hàm nghịch.

Nhược điểm.

1. Vì mỗi vòng mã chỉ thực hiện biến đổi nữa khối dữ liệu, nên cần số vong mã

hóa lớn để đảm bảo độ an toàn của hệ mật, điều này làm giảm đáng kể tốc độ

mã.

2. Ngoài ra xây dựng trên cơ sở mạng Feistel tồn tại lớp khóa tương đương, nên

làm không gian khóa giảm đi một nữa.

Ngoài ra chúng ta thấy nếu xây dựng một mã khối có kích cở lớn thì dùng mạng

Feistel với hai nhánh ở trên không thuận lợi, lúc này chúng ta dùng mạng Feistel 4 nhánh

với các kiểu của nó biểu diễn ở hình 7.7, 7.8 và 7.9.

Page 10: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.7. Cấu trúc mở rộng mạng Feistel loại 2

Hình 7.8. Cấu trúc mở rộng mạng Feistel loại 3

Hình 7.9. Cấu trúc mở rộng mạng Feistel loại 2

7.4.2 Sơ đồ cấu trúc cộng nhân

2X 3X 4X

F

K

2X 3X 4X

F

K

2X 3X 4X

F

K

Page 11: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Cấu trúc cộng nhân có thể xem như là một trong các kiểu hạt nhân cấu tạo nên các

hàm vòng, trong đó sử dụng các phép toán số học đơn giản và được nghiên cứu cẩn thận.

Cấu trúc này được đề xuất bởi J.L.Massey và X.Lai. Cấu trúc được cho như hình vẻ 7.10.

Hình 7.10. Sơ đồ cấu trúc cộng nhân

ở đây đây ta dùng hai phép toán số học là cộng và nhân theo modulo trong nhóm

tương ứng và là các véctơ đầu vào, là các khóa, là véc tơ đầu ra.

Ưu điểm của cấu trúc. Khi thiết kế mã khối theo cấu trúc cộng nhân, thì mã khối có

tính khuyếch tán tốt.

7.5 Các bước cơ bản để thiết kế một hệ mật

Khi thiết kế mật mã thì vấn đề đảm bảo độ vững chắc của thuật toán là một vấn đề

quan trọng nhất.Và đây cũng là vấn đề phức tạp nhất. Đánh giá độ vững chắc của thuật

toán là một trong các công đoạn lâu nhất và khó nhất. Vì chưa có một lý thuyết hoàn

chỉnh để đánh giá độ an toàn của mã khối nên phương pháp sáng tạo là một cách quan

trọng nhất để đánh giá. Thế nhưng có thể đưa ra một số yêu cầu chung để xây dựng nên

một thuật toán mật mã. Nếu như mật mã thỏa mãn nhưng yêu cầu đó thì nói rằng thuật

toán an toàn.

Cần chú ý rằng vấn đề đảm bảo độ an toàn cao chưa phải là một mục đích duy nhất,

bởi khi xây dựng thuật toán mật mã đảm cần bảo được tốc độ mã hóa và việc thực hiện

chúng trên phần cứng và phần mền có phức tạp hay không cũng là yêu cầu không kém

quan trọng. Phụ thuộc vào yêu cầu của ứng dụng mà chọn sơ đồ mật mã và các bước

đánh giá cho phù hợp tức là tầm quan trọng của ứng dụng quyết định cho chúng ta chọn

1K

1X 2X

2K

1Y 2Y

Page 12: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

thuật toán tương ứng với tham số mật mã (như công suất, độ phức tạp thực hiện,..vv).

Quá trình xây dựng thuật toán mã khối được tiến hành theo các bước sau:

1. Nghiên cứu lĩnh vực ứng dụng. Ở bước này thực hiện chọn lựa kiểu hệ mật

và hình thành các yêu cầu ứng với tham số cơ bản của hệ mật. Mã dòng cho

phép nhận được tốc độ mã hóa cao nhất và đảm bảo khả năng độc lập biến đổi

từng bit và byte, và cho phép giảm khả năng lỗi khi truyền bản mật mã qua

kênh. Thế nhưng đối với mã dòng tỏ ra khó khoăn khi truy cập bất kỳ đến dữ

liệu mã hóa. Khuyết điểm này có thể tránh nếu sử dụng phần tử khóa gamma

phụ thuộc vào khóa mật và số thứ tự của phần tử đó. Trong các mật mã thế này

có dấu hiệu của mật mã khối. Hiện nay các mật mã khối được sử dụng rộng rãi

nhất. Mã khối đảm bảo được tính an toàn cao ở chế độ độc lập mã hóa từng

khối, và cho phép truy cập bất kỳ đến dữ liệu mã hóa. Trong số các thiết bị bảo

mật thông tin từ truy cập trai phép sử dụng các thuật toán mật mã file với tốc

độ cao ở chế độ on-line với sự kết hợp các kiểu hệ mật, tức là mã dòng và mã

khối. Ở mã dòng thực hiện biến đổi độc lập từng byte, nhưng nó thực hiện mã

phụ thuộc vào thứ tự của byte trong từng file và vào các dấu hiệu đặc biệt của

file. Căn cứ vào lĩnh vực ứng dụng mà xác định các giá trị của các phương án

thực hiện (chương trình, máy), độ phức tạp khi thực hiện trên máy và tốc độ

mã.

2. Lựa chọn chiều dài khóa mật. Cần chú rằng, bất kỳ một hệ mật với một chiều

dài khóa hữu hạn luôn luôn tồn tại khả năng tìm kiếm khóa mật bằng phương

pháp véc cạn khóa. Hiện nay đối với trường hợp tổng quát thì chiều dài khóa

được cho là an toàn nếu không nhỏ hơn 128 bit, nhưng trong một số trường

hợp riêng có thể dùng khóa với chiều dài 64 bit, có khi 56 bit, nếu như thông

tin cần bảo vệ không quá quan trọng.

3. Lựa chọn cách miêu tả khóa. Chúng ta có những cách miêu ta tả khóa khác

nhau, phần này xem cụ thể ở phần các cách miêu tả khóa.

4. Lựa chọn các phần tử mật mã cơ sở và cách xử lý hệ mật. Để hoàn thành

bước này cần am hiểu các phương pháp cơ bản để xây dựng mật mã, kiểu khối

các hệ mật, hiểu được từng lệnh sử dụng trong hệ mật, và cũng cần đánh giá về

chi phí khi thực hiện trên phần cứng cũng như thời gian trể của nó.

Page 13: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

5. Đánh giá tài nguyên cần thiết để thực hiện thuật toán mật mã. Xem các

khả năng thực hiện trên phần cứng và phần mềm. Thực hiện các thí nghiệm

cũng như mô hình hóa chương trình cho hệ mật.

6. Đánh giá về cống suất của mật mã. Xác định tốc độ mã đối với các phương

án thực hiện khác nhau trên phần cứng và phần mềm. Nếu như trên bước 5 và

6 kết quả đánh giá nhận được không thỏa mãn giá trị mục đích của bước 1, thì

quay lại bước 4.

7. Xem độ an toàn của hệ mật đối với các kiểu tấn công mật mã khác nhau .

Xem xét các cách thám mã cơ bản, cũng như các khả năng tấn công khác với

việc sử dụng các ứng dụng đặc biệt. Dựa trên các cách tấn công đó, xác định

được độ khó tấn công và từ đó đánh giá được độ an toàn của hệ mật.

8. Biến đổi thuật toán. Cân nhắc kết qủa nhận được trên bước 7, có thể biến đổi

thuật toán, chọn lựa các phần tử tối ưu cho hệ mật nhằm nâng cao độ khó cho

cách tấn công hệ mật hiệu quả nhất. Nếu cần có thể lặp lại một số lần ở bước

này với các các thay đổi khác nhau nhằm đạt được mục đích.

9. Thực hiện phân tích chi tiết biến đổi hệ mật. Nếu như phân tích chi tiết vạch

ra sự tồn tại điểm yếu của hệ mật trong sơ đồ biến đổi thì lặp lại bước 8, nếu

cần có thể lặp lại cả bước 4.

10. Thực hiện kiểm tra thống kê và các thì nghiệm đặc biệt. Trên bước này

thực hiện chương trình thuật toán của hệ mật hoặc thực hiện chúng trên phần

cứng và tiến hành kiểm tra thống kê và các thí nghiệm đặc biệt, lập quy hoạch

kết quả phân tích để kiểm tra toàn diện và tương ứng với lý thuyết. Ngoài ra

việc kiểm tra hệ mật cũng chú ý đến các khả năng tấn công mới. Bước phân

tích hệ mật được tiếp tục thực hiện trong quá trình sử dụng hệ mật.

Các cách miêu tả khóa

1. Sử dụng tính trước. Ở đây chúng ta sử dụng một quá trình hay thuật toán để

biến đổi khóa mật thành khóa mở rộng. Việc sử dụng quá trình tính toán ban

đầu để mở rộng khóa cho phép đảm bảo được sự phụ thuộc phức tạp của

khóa vòng vào khóa mật. Cách làm này, nếu như có một thuật toán mở rộng

tốt thì sẽ tránh tấn công của thám mã nhằm đạt được khóa mật. Thế nhưng

phương pháp này có nhược điểm là sẽ làm giảm tốc độ mã trong ứng dụng ở

Page 14: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

chế độ khóa phiên. Ngoài ra khi thực hiện trên máy cần tốn thêm một lượng

tài nguyên để thực hiện sơ đồ mở rộng khóa.

2. Trực tiếp sử dụng khóa mật. Ở đây sử dụng một phần khóa mật (kích cở là

32 hoặc 64 bit) cho mỗi vòng mã. Tiêu biểu cho cách sử dụng này là thuật

toán chuẩn liên xô 28147-89, chúng ta sẽ xem chi tiết thuật toán này ở phần

sau. Nhược điểm của phương pháp này là khóa vòng phụ thuộc rõ ràng vào

khóa mật nên thám mã có thể lợi dụng ở đây mà tấn công. Ngoài ra thực hiện

trực tiếp khóa mật tồn tại phần lớn lớp khóa yếu, tức là các khóa mà dùng

cho quá trình mã hóa và quá trình giải mã trùng nhau. Mặc dầu khóa yếu rất

hiếm xuất hiện và khi xử lý hệ mật thì tìm cách để tránh xuất hiện nó. Ưu

điểm khi dùng trực tiếp khóa mật làm khóa vòng là đảm bảo được tốc độ mã

ở chế độ khóa phiên và cũng không cần thêm tài nguyên cho quá trình mở

rộng khóa khi thực hiện trên máy.

3. Hình thành khóa vòng trong quá trình mã khối dữ liệu. Ở phương pháp

này thì vòng đầu tiên của quá trình mã sử dụng một phần khóa mật, nhưng

khi hoàn thành mã vòng đầu tiên thì hình thành khóa con cho vòng thứ hai.

Và khi mã vòng hai xong rồi thì tính toán khóa con cho vòng thứ ba và cứ

tiếp tục như thế. Quá trình giải mã cũng có qúa trình hình thành tương tự. Và

rõ ràng chúng ta thấy quan hệ khóa con giữa hai qúa trình mã và giải mã là

vòng mã thứ i và giải mã thứ R-i+1 có khóa con như nhau, ở đây R là số

vòng mã hay giải mã. Phương pháp này thì cũng cần thêm một lượng tài

nguyên khi thực hiện trên phần cứng nhưng nó đảm bảo được tốc độ mã ở

chế độ khóa phiên.

4. Biến đổi khóa con phụ thuộc vào biến đổi dữ liệu. Ở phương pháp này thì

một phần khóa mật được sử dụng trực tiếp, nhưng trước khi nó tham gia biến

đổi trên khối dữ liệu con thì nó bị biến đổi bằng lệnh, lệnh này phụ thuộc giá

trị hiện tại của một trong các khối con. Lệnh này có thể thực hiện đồng thời

với biến đổi của khối dữ liệu con khác, cho nên nó không làm giảm tốc độ

mã hóa. Phương pháp này cũng tồn tại xuất hiện khóa yếu, nhưng vấn đề này

có thể khắc phục bằng cách xây dựng hệ mật có một vòng mã không là thuận

nghịch (involution). Phương pháp này còn dễ thực hiện trên phần cứng và

đảm bảo được tốc độ cao ở chế độ khóa phiên.

Page 15: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

7.6 Chuẩn mã khối DES và các biến dạng của nó

7.6.1 Tổng quan về DES.

DES (viết tắt của Data Encryption Standard, hay Tiêu chuẩn Mã hóa Dữ liệu) là một

phương pháp mật mã hóa được FIPS (Tiêu chuẩn Xử lý Thông tin Liên bang Hoa Kỳ)

chọn làm chuẩn chính thức vào năm 1976. Sau đó chuẩn này được sử dụng rộng rãi trên

phạm vi thế giới. DES mã hóa một xâu bit x dài 64 bằng một khóa có độ dài 56 bit. Và tất

nhiên bản mã cũng có độ dài 64 bit. Vì lý do DES có khóa mật quá ngắn, nên với kỹ

thuật hiện nay thì DES hoàn toàn bị phá. Nhưng để hiểu sâu về mã khối chúng ta không

thể không biết về DES.

Miêu tả thuật toán DES. Sơ đồ miêu tả DES được cho ở hình 7.11.

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

Ta giải thích sơ đồ thuật toán, có thể xem thuật thuật toán có 3 giai đoạn sau:

1. Khối bản rõ x có độ dài 64. Nó sẽ bị biến đổi bằng lệnh hoán vị IP:

,

Với hoán vị IP được cho bảng dưới.

58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4

62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8

57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3

61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7

IP

Bản rõ x

1k

2k

16k

1IPBản mã y

F

F

F

Page 16: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Ở đây ta hiểu là, bit thứ 58 sẽ đổi về vị trí 1, bit thứ 50 về vị trí 2, tương tự như

thế cho các bit còn lại. Khối chia thành hai khối con có độ dài bằng nhau

.

2. Khối sẽ bị biến đổi qua 16 vòng, mỗi vòng sẽ biến đổi đúng trong

miểu tả mạng Feistel, tức là , chú ý là mỗi vòng sẽ có

một khóa ,khóa này được tạo ra bởi hàm tính toán khóa con, chúng ta sẽ nói

ở phần sau. Hàm F được miêu tả bằng sơ đồ trên hình 7.12:

Hình 7.12 Sơ đồ miêu tả hàm F của DES

Diễn giải sơ đồ như sau: Hàm F có hai tham số đầu vào, là khối dữ liệu 32 bit và

khóa con 48 bit, khối dữ liệu 32 bit sẽ mở rộng bằng hàm mỡ rộng E, để thành

48 bit, hàm E biểu diễn bằng bảng chọn bít sau:

32 1 2 3 4 5

4 5 6 7 8 9

8 9 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 1

E

32 bít dữ liệu

48 bít

48 bít khóa con

S2 S3 S4 S5 S6S1 S7 S8

P

32 bít

Page 17: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Sau đó nó cộng loại trừ với khóa con 48 bit, như hình vẽ, ta sẽ thu được 48 bit,

48 bít này sẽ đi qua 8 bảng hoán đổi , mỗi bảng S có 64 phần tử,xếp

thành 4 hàng, mỗi hàng 16 phần tử, mỗi phần tử là 4 bít. Giả sử đầu vào mỗi

bảng hoán đổi là 6 bít , thì đầu ra sẽ là 4 bít, cách xác định 4 bit

đó như sau: 2 bit xác định thứ tự hàng của bảng S, 4 bít xác định

cột của bảng S, và phần tử cần xác định tương ứng có hàng thứ và cột thứ

. Kết quả của quá trình hoán đổi chúng ta thu được là 32 bít. 32 bít này

sẽ thực hiện tiếp một hoán vị P và 32 bít nhận được là đầu ra của hàm F, với P

được cho ở bảng sau:

16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10

2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25

6 bảng S được cho như sau:

S1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7

1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8

2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0

3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

S2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10

1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5

2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15

3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

S3 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8

1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1

2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7

3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

Page 18: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

S4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15

1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9

2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4

3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

S5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9

1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6

2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14

3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

S6 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11

1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8

2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6

3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

S7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1

1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6

2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2

3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

S8 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7

1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2

2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8

3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

Chú ý. Quá trình mã hóa thì thứ tự khóa con tham gia lần lượt cho 16 vòng là

, quá trình giải mã thì thực hiện theo thứ tự ngược lại.

Page 19: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

3. Qua 16 vòng, ta thu được 64 bit, và 64 bít này lại tiếp tục thực hiện hoán vị

ngược của hoán vị ta thu được 64 bít mã. tính ra như sau:

40 8 48 16 56 24 64 32

39 7 47 15 55 23 63 31

38 6 46 14 54 22 62 30

37 5 45 13 53 21 61 29

36 4 44 12 52 20 60 28

35 3 43 11 51 19 59 27

34 2 42 10 50 18 58 26

33 1 41 9 49 17 57 25

Quá trình sinh khóa con được miêu tả bằng sơ đồ hình 7.13.

Hình 7.13 Sơ đồ sinh khóa DES

PC1

Khóa 64 bít

<<< <<<

PC2

PC2

<<< <<<

PC2

<<<<<<

<<< <<<

PC2

Page 20: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Giải thích sơ đồ. Quá trình sinh khóa có thể chia ra hai giai đoạn sau:

1. Với 64 bit khóa ban đầu, ta loại các bit kiểm tra tính chẳn lẻ, còn lại 56 bit ta

thực hiện hoán vị cố định PC1, với PC1 được cho ở bảng dưới:

57 49 41 33 25 17 9 1 58 50 42 34 26 48

10 2 59 51 43 35 27 19 11 3 60 52 44 36

63 55 47 39 31 23 15 7 62 54 46 38 30 22

14 6 61 53 45 37 29 21 13 5 28 20 12 4

Với 56 bít nhận được phân chia ra hai khối con, mỗi khối 28 bít .

2. Với i chạy từ 1 đến 16 thực hiện các bước sau:

Hai khối con bít thực hiện dịch vòng trái bít, với mảng

, thu được 2 khối 28 bít tương ứng.

Trong 56 bít thu được, ta thực hiện hoán vị cố định PC2 có 48 phần tử để thu

được khóa con chiều dài là 48 bít, PC2 được cho ở bảng sau:

14 17 11 24 1 5 3 28 15 6 21 10

23 19 12 4 26 8 16 7 27 20 13 2

41 52 31 37 47 55 30 40 51 45 33 48

44 49 39 56 34 53 46 42 50 36 29 32

Chúng ta thấy PC2 vừa là hoán vị vừa là bảng chọn 48 bít từ 56 bít.

Biến dạng của DES.

Như nói ở phần trước, vì hạn chế của DES trước các phương pháp tấn công, nên họ

tìm cách làm tăng khả năng an toàn cho thuật toán. Chúng ta sẽ tìm hiểu hai cách biện

dạng hiệu quả trong số các biến dạng của DES.

3DES.

Sở dĩ nó có tên là 3DES bởi vì người ta dùng 3 lần liên tiếp DES với 3 khóa khác

nhau để mã hóa/giải mã. Chúng ta xem sơ đồ mã hóa 3DES trên hình 7.14, với E là quá

trình mã hóa của DES, tương ứng với quá trình giải mã là D.

D E

3KE

1KM

C

Page 21: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.14. Sơ đồ 3DES

Viết gọn như sau:

Tức là bản tin ban đầu M sẽ được mã hóa bởi khóa được , tiếp tục giải mã bởi

được , tiếp tục mã hóa bởi được bản mã là C. Quá trình giải mã thì ngược lại,

tức là bản mã C sẽ giải mã bởi khóa thu được , mã hóa bởi thu được ,

giải mã bởi ta thu được bản tin ban đầu M. Lúc này chiều dài khóa sẽ là 56.3=168 bít.

Chúng ta dễ dàng nhận thấy nếu thì 3DES trở thành DES.

Nhưng tốt về hướng an toàn thuật toán thì có vấn đề về tốc độ thì 3DES khá chậm so

với bản thân DES, chính xác là chậm đi 3 lần so với DES. Ngoài ra khi thực hiện trên

phần cứng cũng tốn khá nhiều tài nguyên.

DESX.

Năm 1984 Ron revert giới thiệu một DES mới có tên là DESX, khắc phục được

nhược điểm của DES. DESX được xác định như sau:

Khóa của DESX có chiều dài là 54+64+64=184 bít. Để mã khối dữ liệu M, đầu tiên

khối dữ liệu M sẽ cộng theo modulo 2 với khóa theo từng bít, kết quả thu được được

mã hóa bỡi DES với khóa và cuối cùng lại cộng từng bít theo modulo 2 với khóa .

DESX làm tăng khả năng bảo vệ DES chống tấn công véc cạn khóa và đảm bảo được

độ an toàn chống lại các khả năng tấn công khác. Ngoài ra thuật toán này thực hiện đơn

giản và khi thực hiện trên phần cứng cũng đạt hiểu quả cao.

7.7 Thuật toán chuẩn mã khối Liên Xô GOST 28147-89

Đây là thuật toán có cấu trúc khá giống DES nhưng dễ thực hiện hơn, tốc độ mã lớn

hơn DES, hiện đang được sử dụng rộng rãi ở Nga. Nó mã hóa khối dữ liệu 64 bít, với

khóa là 256 bít. Đặc biệt thuật toán này dùng khóa mật trực tiếp tham gia vào quá trình

mã hóa, mà không sử dụng quá trình mở rộng khóa. Sơ đồ thuật toán được miêu tả ở hình

7.15.

Page 22: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.15 Sơ đồ thuật toán chuẩn Liên Xô GOST 28147-89

Thuật toán thực hiện 32 vòng biến đổi. S ở đây hàm thay thế 32 bít này thành 32 bít

khác, nó bao gồm 8 bảng , mỗi bảng có 16 phần tử, mỗi phần tử 4 bít, 8 bảng

này được giữ bí mật để tạo thêm tham số mật cho hệ và nó được thay đổi theo chu kỳ thời

gian.

Các khóa con có chiều dài là 32 bít, nó được hình thành từ khóa mật. Khóa mật 256

bít chia ra 8 khóa con . Và cách sử dụng các khóa con tương ứng với qúa trình

mã hóa và giải mã được miêu ta trong bảng sau.

Vòng thứ i 1 2 3 4 5 6 7 8 9 10 11

Mã hóa Qi K1 K2 K3 K4 K5 K6 K7 K8 K1 K2 K3

Giải mã Qi K1 K2 K3 K4 K5 K6 K7 K8 K8 K7 K6

Vòng thứ i 12 13 14 15 16 17 18 19 20 21 22

Mã hóa Qi K4 K5 K6 K7 K8 K1 K2 K3 K4 K5 K6

Giải mã Qi K5 K4 K3 K2 K1 K8 K7 K6 K5 K4 K3

S <<<11

1Q

S <<<11

2Q

S <<<11

32Q

Bản rõ 64 bít

Bản mã 64 bít

Page 23: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Vòng thứ i 23 24 25 26 27 28 29 30 31 32

Mã hóa Qi K7 K8 K1 K2 K3 K4 K5 K6 K7 K8

Giải mã Qi K2 K1 K8 K7 K6 K5 K4 K3 K2 K1

Có thể miêu ta thuật toán theo các bước sau:

Khối dữ liệu ban đầu chia ra thành hai khối con (L,R) có chiều dài là 32 bít. Và 1

vòng của thuật toán thực hiện biến đổi theo các bước sau:

1. Khối L cộng với khóa con theo modulo .

2. 32 bít thu được ở bước 1, chia ra 8 phần mỗi phần 4 bít, 4 bít này qua phép

hoán đổi ta thu được 32 bít mới.

3. 32 bít ở bước 2 tiếp tục bị biến đổi với phép dịch vòng trái 11 bít.

4. Kết quả nhận được ở bước 3 tiếp tục cộng từng bít theo modulo 2 với nhánh

R và thực hiến hoán đổi theo mạng Feistel và thực hiện vòng biến đổi mới.

7.8 Thuật toán mã khối Blowfish

Thuật toán này tuy không thông dụng như DES nhưng đây là thuật toán có độ an toàn

cao và dễ thực hiện hơn DES, do Bruce Schneier đề xuất năm 1993. Thuật toán này cũng

có 16 vòng, và xây dựng trên cơ sỡ sơ đồ Feistel. Blowfish mã hóa khối dữ liệu 64 bít, và

dùng khóa có chiều dài từ 32 đến 448 bít, tùy ứng dụng mà chúng ta chọn chiều dài khóa

thích hợp. Chúng ta xem sơ đồ thuật toán Blowfish ở hình 7.16.

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

1k

F

16k

F

18k 17k

14 vòng tiếp theo

64 bít dữ liệu/mã

64 bít mã/dữ liệu

Page 24: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Miêu tả thuật toán: Từ khóa mật hình thành nên 18 khóa con chiều dài 32

bít và 4 ma trận kích thước 256, mỗi phần tử có độ lớn là 32 bít:

Q0(1), Q1

(1), …, Q255(1);

Q0(2), Q1

(2), …, Q255(2);

Q0(3), Q1

(3), …, Q255(3);

Q0(4), Q1

(4), …, Q255(4).

ở đây Q(i) được dùng đối với hàm F(X), với X có độ lớn 32 bít. Hàm F được miêu tả như

sau. X - 32 bít biểu diễn dưới dạng sau: X= x3 | x2 | x1 | x0. Sau đó diễn ra quá trình tính

F(X) như sau

F(X) = {[(Qx3(1) + Qx2

(2)) mod 232] Qx1(3)} + Qx0

(4) ( mod 232).

Hàm F miêu tả ở hình 7.17.

Hình 7.17. Sơ đồ miêu tả hàm F của Blowfish

Thuật toán Blowfish có thể trình bày dưới dạng sau:

Thuật toán mã hóa:

Đầu vào: 64 bít khối dữ liệu rõ T=L|R, tức là biểu diễn dưới dạng 2 khối con có chiều

dài 32 bít.

1) Thiết lập i = 1.

2) Biến đổi gía trị khối con L và tính giá trị V hiện tại:

L := L Ki;

V := F(L).

3) Biến đổi khối con R:

R := R V.

4) Nếu như i = 16, thì chuyển sang bước 7.

5) Tính i := i+1 và thực hiện hoán đổi giữa R và L:

1S 2S 3S 4S

32 bít

32 bít

32 bít

8 bít8 bít8 bít8 bít

Page 25: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

W := R; R := L; L := W.

6) Chuyển về bước 2.

7) Biến đỗi khối con R:

R := R K17.

8) Biến đổi khối con L:

L := L K18.

Đầu ra: 64-bít khối bản mã L | R.

Thuật toán giải mã:

Đầu vào: 64-bít khối bản mã C = L | R.

1) Biến đổi khối con R:

R := R K17.

2) Biến đổi khối con L:

L := L K18.

3) Thiết lập i = 16.

4) Tính giá trị hiện tại của V và biến đổi khối con R:

V := F(L);

R := R V.

5) Biến đổi khối con L:

L := L K17-i.

6) Nếu i=1, thì chuyển sang bước 9.

7) Hoán đổi giữa R và L:

W := R; R := L; L := W.

8) i := i-1 và chuyển về bước 4.

Đầu ra là khối bản rõ: L | R.

7.9 Hệ mật mã khối RC2

Tác giả của nó là Ron Rivest – một trong 3 tác giả của hệ mật nổi tiếng RSA. RC2 sử

dụng khối có độ dài 64 bits, khóa có độ dài từ 8 đến 1024 bits. Thuật toán trong RC2

được thiết kế để có thể dễ dàng (và hiệu quả) triển khai trong hệ thống với bộ vi xử lý 16

bits (độ dài thanh ghi bằng 16 bits). Tốc độ mã của RC2 lớn hơn rất nhiều so với DES,

còn về độ an toàn thì có thể lớn hơn hoặc nhỏ hơn phụ thuộc vào chiều dài khóa mật

Page 26: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

được chọn. Thực toán này thuộc sở hữu của công ty RSA Security Inc, nên muốn sử dụng

nó phải được đồng ý của công ty này. Chúng ta xem các thủ tục của thuật toán RC2.

Tạo khóa con

RC2 thực hiện một loạt thao tác với khóa chính để tạo 128 bytes khóa con. Khóa con

này được ghi trong mảng bytes: L[0], L[1], ..., L[127]. Một số phép biến đổi trong RC2

sẽ được mô tả đơn giản hơn nếu biểu diễn khóa con trên dưới dạng mảng các từ 2 bytes:

K[0], K[1], ..., K[63].

Giả sử khóa chính có độ dài T bytes (1 ≤ T ≤ 128). Trong RC2 có dự trù sẵn một thủ

tục cho phép làm giảm độ phức tạp của khóa đối với mã thám. Thủ tục này được sử dụng

trong trường hợp sản phẩm được dành để xuất khẩu. Ở đây chúng ta sẽ không xem xét

thủ tục này. Việc tạo khóa con được thực hiện bằng cách sao chép khóa chính (T bytes)

vào mảng L (128 bytes). Sau đó giá trị mảng L được thay đổi với sự trợ giúp của mảng

giả ngẫu nhiên P[0..255], mỗi phần tử P[i] có kích thước 1 bytes. Mảng P được sinh ra

bằng cách sử dụng các chữ số thập phân của số π. Phép biến đổi này có thể được mô tả

như sau:

Khi i chạy từ T đến 127 thực hiện:

L[i] = P[L[i-1] + L[i-T]]

L[128-T] = P[L[128-T]]

Khi i chạy từ 127-T về 0 thực hiện L[i]=P[L[i+1] L[i+T]]

Quá trình mã hóa.

Khối bản tin đầu vào 64 bít được biểu diễn dưới dạng 4 từ 16 bits: R[0], R[1], R[2],

R[3] và kết quả đầu ra được ghi vào chính các từ này. Thuật toán RC2 chứa 18 vòng, 16

vòng “xáo trộn” (mixing round) và và 2 vòng “nghiền nát” (mashing round), chúng ta đi

tìm hiểu hai vòng này dành cho quá trình mã hóa.

Mixing round.

Vòng Mixing round hình thành từ 4 thủ tục con MIX transformation, thủ tục MIX

transformation, thủ tục này miêu tả ở hình 7.18.

Page 27: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.18. Thủ tục MIX - transformation

Vòng mixing round có thể biểu diễn dưới dạng công thức sau:

R[0] = R[0] + K[j] + (R[3] ^ R[2]) + (NOT(R[3]) ^ R[1])

R[0] = R[0] <<< 1

j=j+1

R[1] = R[1] + K[j] + (R[0] ^ R[3]) + (NOT (R[0]) ^ R[2])

R[1] = R[1] <<< 2

j=j+1

R[2] = R[2] + K[j] + (R[2] ^ R[0]) + (NOT (R[1]) ^ R[3])

R[2] = R[2] <<< 3

j=j+2

R[3] = R[3] + K[j] + (R[2] ^ R[1]) + (NOT (R[2]) ^ R[0])

R[3] = R[3] <<< 5

j=j+3

Mashing round.

4 từ R[0], R[1], R[2], R[3] được biến đổi bằng cách cộng với khóa con, ở đây việc

chọn khóa con K[j] phụ thuộc vào giá trị biến đổi dữ liệu:

R[0] = R[0] + K[R[3] & 63];

R[1] = R[1] + K[R[0] & 63];

R[2] = R[2] + K[R[1] & 63];

R[3] = R[3] + K[R[2] & 63];

Quá trình mã hóa

Page 28: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Sau khi định nghĩa mixing round và mashing round, ta đã có thể mô tả quá trình mã

hóa của RC2. Nó bao gồm các bước sau đây (trong dấu ngoặc là giá trị của j sau khi thực

hiện các chu kỳ tương ứng):

1. giá trị cho j=0.

2. Thực hiện 5 mixing rounds (j=20).

3. Thực hiện 1 mashing round.

4. Thực hiện 6 mixing rounds (j=44).

5. Thực hiện 1 mashing round.

6. Thực hiện 5 mixing rounds (j=64).

Quá trình giải mã

Quá trình giải mã thực hiện giống như quá trình mã hóa, nhưng các phép toán trong

quá trình giải mã thì ngược với quá trình mã hóa. Tức là 2 vòng Mixing round và

Mashing round được viết lại như sau:

Mixing round.

Vòng mixing round có thể biểu diễn dưới dạng công thức sau:

R[3] = R[3] - K[j] - (R[2] ^ R[1]) - (NOT (R[2]) ^ R[0])

j=j-1

R[2] = R[2] >>>3

R[2] = R[2] - K[j] - (R[2] ^ R[0]) - (NOT (R[1]) ^ R[3])

j=j-1

R[1] = R[1] >>> 2

R[1] = R[1] - K[j] - (R[0] ^ R[3]) - (NOT (R[0]) ^ R[2])

j=j-1

R[0] = R[0] >>> 1

R[0] = R[0] - K[j] - (R[3] ^ R[2]) - (NOT(R[3]) ^ R[1])

j=j-1;

Mashing round.

4 từ R[0], R[1], R[2], R[3] trong quá trình giải mã thực hiện như sau:

R[3] = R[3] - K[R[2] & 63];

R[2] = R[2] - K[R[1] & 63];

R[1] = R[1] - K[R[0] & 63];

R[0] = R[0] - K[R[3] & 63];

Page 29: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Quá trình giải mã cũng tiến hành trong 18 vòng như sau.

1. Gán giá trị cho j=63.

2. Thực hiện 5 mixing rounds (j=43).

3. Thực hiện 1 mashing round.

4. Thực hiện 6 mixing rounds (j=19).

5. Thực hiện 1 mashing round.

6. Thực hiện 5 mixing rounds (j=0).

Chú ý: các phép toán trong 2 vòng Mixing round và Mashing round đều thực hiện

theo modulo .

7.10 Hệ mật mã khối RC5

Giống như RC2 đây cũng là sản phẩm của tác giả Ron Rivest đề xuất năm 1994.

Nhưng hệ này tỏ ra mềm dẻo hơn trong việc lựa chọn tham số cho hệ mật, cụ thể là kích

thước khối mã có thể là 32, 64 hoặc 128, khóa có độ dài từ 0 đến 2040 bít, số vòng từ 0

đến 255. Tham số ban đầu đề xuất là khối mã 64 bít, khóa 128 bít và số vòng là 12.

Tạo khóa con

Trong RC5 quy định một thủ tục phức tạp để tạo t khóa con từ khóa chính K, mỗi

khóa con có kích thước w bít. Mỗi chu kỳ sử dụng 2 khóa con. Ngoài ra còn có 2 khóa

con được sử dụng trong một phép biến đổi không thuộc bất kỳ chu kỳ nào. Như thế, số

lượng khóa con cần tạo là t=2r+2. Các khóa con được lưu trong mảng t phần tử: S[0],

S[1], ..., S[t-1], kích thước của mỗi phần tử phụ thuộc vào kích thước khối dữ liệu chọn.

Sơ đồ sinh khóa con được miêu tả ở hình 7.19.

Hình 7.19. Quá trình sinh khóa con của RC5

Page 30: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Bước 1. Với r là số vòng, w= kích thước khối / 2 . Hàm Odd[x] cho số lẻ gần x nhất.

Bước này thực hiện loạt các phép tính sau:

, với e = 2,718281828459,

, với ,

Cụ thể tính ra như sau, các giá trị của , ở dạng hexa:

w 16 32 64

B7E1 B7E15163 B7E151628AED2A6B

9E37 9E3779B9 9E3779B97F4A7C15

Thuật toán khởi tạo mảng S có thể biểu diễn như sau:

S[0] = Pw

Với i từ 1 đến t-1 thì thực hiện: S[i] = (S[i-1] + Qw) (mod )

Bước 2

Khóa chính được lưu trong mảng K[0..b-1] gồm b phần tử, mỗi phần tử có kích thước

1 byte. Biến đổi mảng K thành mảng L[0..c-1] gồm c phần tử, mỗi phần tử có kích thước

w bít, giá trị ban đầu của mỗi phần tử bằng 0. Nếu b chia hết w thì c = b/w; nếu b không

chia hết w thì c = b/w + 1. Phép biến đổi từ K sang L chỉ đơn giản là sao chép các byte

của mảng K sang mảng L theo đúng thứ tự trong K. Trong trường hợp b không chia hết w

thì có một số bits bên phải của L sẽ giữ nguyên bằng 0.

Bước 3.

Thực hiện một thủ tục “xáo trộn” để kết hợp giá trị mảng L với giá trị khởi tạo của

mảng S nhằm xác định giá trị cuối cùng cho mảng khóa con S. Để đạt được điều này cần

duyệt 3 lần mảng lớn nhất trong hai mảng L, S:

i = j = X = Y = 0

do 3×max(t,c) times

begin

S[i] = (S[i] + X + Y) <<< 3; X = S[i]; i = (i+1) mod t

L[j] = (L[j] + X + Y) <<< (X+Y); Y=L[j]; j = (j+1) mod c

end

Tác giả RC5 Ron Rivest khẳng định rằng thủ tục sinh khóa con mang tính chất của

hàm một chiều – rất khó có thể xác định khóa K khi biết mảng S.

Quá trình mã hóa

Page 31: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Thuật toán mã hóa được thể hiện trên hình 7.20.a. Mỗi thanh ghi A, B có độ dài bằng

w bít. Khối tin trước hết được đưa vào 2 thanh ghi này. Để phân biệt phần trái và phần

phải của đầu ra ở chu kỳ thứ i ta sử dụng ký hiệu LEi và REi.

Hình 7.20. Sơ đồ miêu tả quá trình mã hóa và giải mã RC5

Thuật toán

LE0 = (A + S[0]) (mod );

RE0 = (B + S[1])(mod );

For i=1 to r do

begin

LEi = (((LEi-1 REi-1) <<< REi-1) + S[2×i]) ]) (mod );

REi = (((REi-1 LEi) <<< LEi) + S[2×i + 1]) ]) (mod );

End

Quá trình giải mã

Từ thuật toán mã hóa có thể dễ dàng suy ra thuật toán giải mã. Sơ đồ thuật toán giải

mã được thể hiệnt trên hình 7.20.b). Đầu tiên, 2 từ của khối mã được gán cho 2 biến là

Page 32: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

LDr và RDr – kích thước mỗi biến là 1 từ (w bits). Phần trái và phần phải của của đầu vào

ở chu kỳ thứ i ký hiệu là LDi và RDi, i=1..r.

Thuật toán

For i=r downto r do

begin

RDi-1 = ((RDi – S[2×i + 1] >>> LDi) LDi) ]) (mod );

LDi-1 = ((LDi – S[2×i] >>> RDi-1) RDi-1) ]) (mod );

end

B=(RD0–S[1]) ]) (mod );

A = (LD0 – S[0]) ]) (mod );

Ưu điểm của RC5

RC5 có 2 ưu điểm nổi bật là:

1. Thực toán đơn giản

2. Phép quay là phép biến đổi phi tuyến tính duy nhất trong RC5. Ron Rivest khẳng

định rằng việc số bits trong các phép quay phụ thuộc vào giá trị của bản thân khối

dữ liệu được xử lý sẽ gây khó khăn rất lớn cho việc thám RC5 bằng phương pháp

thám tuyến tính, cũng như thám vi phân.

RC5 là hệ mật còn mới (được Ron Rivest xây dựng năm 1994). RSA Laboratories đã

bỏ ra nhiều thời gian để khảo sát hệ mật này khi làm việc với khối 64 bits. Chỉ sau 5 chu

kỳ RC5 đã cho kết quả thống kê “rất tốt”. Sau 8 chu kỳ mỗi bit của bản tin sẽ ảnh hưởng

ít đến nhất một phép quay. Để có thể thám RC5 với 5 chu kỳ bằng phương pháp thám vi

phân (Differential Cryptanalysis) thì cần phải lựa chọn và thử 224 khối tin; con số này sẽ

là 245 với 10 chu kỳ, 253 với 12 chu kỳ, 268 với 15 chu kỳ (trong khi đó, số bản tin tối đa là

264). Vì thế không thể dùng phương pháp thám vi phân để thám RC5 với 15 chu kỳ trở

lên.

Kết quả nghiên cứu khả năng tấn công RC5 bằng thám tuyến tính (Linear

Cryptanalysis) cho thấy RC5 tỏ ra an toàn khi số chu kỳ không nhỏ hơn 6. Rivest khuyến

cáo sử dụng RC5 với số chu kỳ không nhỏ hơn 12, tốt nhất là 16.

7.11 Hệ mật mã khối IDEA

Lịch sử ra đời

“Chuẩn mã hóa dữ liệu quốc tế” (IDEA – International Data Encryption Algorithm)

là một hệ mật thuộc nhóm mã khối. Nó được xây dựng bởi hai thành viên của Viện công

Page 33: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

nghệ Thụy Điển là Xuejla Lai và James Massey. Phiên bản đầu tiên được công bố trong

[LAI90] vào năm 1990 dưới cái tên PES (Proposed Encryption Standard). Ngay năm sau

(1991), sau khi Biham và Shamir công bố phương pháp mã thám mới là “thám vi phân”

thì các tác giả đã cải biên thuật toán PES để chống lại phương pháp thám mã đó. Bản cải

biên được đặt tên là IPES (Improved PES) và được đổi thành IDEA vào năm 1992. IDEA

được mô tả chi tiết trong các ấn phẩm [LAI91] và [LAI92].

Miêu tả IDEA

IDEA mã hóa và giải mã theo từng khối 64 bits. Khóa có chiều dài 128 bít. Thực hiện

trong 9 vòng.

Quá trình sinh khóa con.

Như đã nói ở trên chiều dài khóa trong IDEA là 128 bits. Nhưng bản thân thuật toán

IDEA lại sử dụng đến 52 khóa con với kích thước mỗi khóa là 16 bits. Như vậy cần có

một thủ tục để sinh 52 khóa con này từ khóa mẹ 128 bits. Thủ tục thực hiện như sau:

1. Gán i=0

2. 128 bít khóa ban đầu K[1..128] được chia thành 8 phần, mỗi phần 16 bits.

Bằng cách đó ta có được 8 khóa con: k1+i=K[1..16], k2+i=K[17..32], ..., k6+i=K[81..96],

k7+i=K[97..112], k8+i=K[113..128].

3. Dịch K sang trái 25 bít,

4. Nếu chưa sinh đủ 52 khóa con thì i=i+8, quay lại bước 2.

IDEA thực hiện 9 vòng mã, 8 vòng giống nhau, 1 vòng có cấu trúc như hình 7.21.

Page 34: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.21. Sơ đồ miêu tả IDEA

Vòng thứ 9 của IDEA có cấu trúc được miêu tả trên hình 7.22.

Hình 7.22 Sơ đồ miêu tả vòng cuối của IDEA

Quá trình mã hóa được viết dưới dạng thuật toán sau:

Đầu vào: là khối rõ 64 bít chia ra 4 phần , 52 khóa con

Khi i chạy từ 1 đến 8 thực hiện các biến đổi sau:

Begin

ik 1

iX ,1 iX ,2

ik 4ik 2ik 3

iX ,3 iX ,4

ik 5

ik 6

1,2 iX 1,3 iX 1,4 iX1,1 iX

49k

8,1X

52k50k 51k

8,2X 8,3X 8,4X

9,1X 9,2X 9,3X 9,4X

Page 35: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

;

;

; ; ;

;

; ; ;

End

Đầu ra là 64 bít bản mã

Quá trình giải mã:

Thuật toán quá trình giải mã giống quá trình mã hóa, chỉ khác là phải dùng phép biến

đổi khóa con. Mà cụ thể là các khóa được dùng trong phép cộng module 216 phải được

chuyển thành phần tử đối của chúng, còn các khóa được dùng trong phép nhân module

216+1 thì phải chuyển thành phẩn tử nghịch đảo tương ứng.

Bảng sau đây cho biết quy tắc dùng khóa khi mã hóa và giải mã: Gọi quá trình

giải mã với các khóa con là

Mã hóa Giải mã

Số tt

vòn

g

Các khóa con Tương ứng với Các khóa con Tương ứng với

1 K[1..96]

2 K[97..128;26..89]

3 K[90..128;1..25;51..82

]

4 K[83..128;1..50]

5 K[76..128;1..43]

6 K[44..75;101..128;1..3

6]

Page 36: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

7 K[37..100;126..128;1..

29]

8 K[30..125]

9 K[23..86]

7.12 Hệ mật mã khối MARS

Đặc điểm chung: MARS không giống với phần lớn các thuật toán mã khối khác,

IBM thiết kế MARS với một cấu trúc mới lạ, nó có cấu trúc bất đồng nhất

(heterogeneous). Thuật toán sử dụng các khóa biến đổi giữa 128 và 448 bít (biến đổi trên

32 bít). Thuật toán bao gồm 32 vòng với 2 kiểu cấu trúc, được chia thành 8 phần thực

hiện. Các thành phần cơ bản trong 1 vòng thường là các toán tử cộng số nguyên, cộng

mod2 và dịch vòng. Vì vậy thuật toán có hiệu suất hoạt động rất cao trên hầu hết các nền

(platform) thực hiện (có một số hạn chế khi thực hiện trên smart card). MARS khác với

tất cả các thuật toán AES chung kết khác là không dựa trên các cấu trúc đã biết vì vậy độ

an toàn của thuật toán rất khó ước lượng. Nói chung ưu điểm chính của MARS là nó rất

bền vững, trong thuật toán có sử dụng nhiều các cơ chế “fail stop” hơn so với các thuật

toán AES chung khảo khác. Nhờ có cấu trúc bất đồng nhất và sự đa dạng của các toán tử

bền vững, vì vậy thậm chí với các tấn công thành công trên một thành phần nào đó của

thuật toán, cũng sẽ không dẫn tới 1 tấn công thành công trên toàn bộ thuật toán. Thực tế,

với 12 vòng MARS là không an toàn, vì vậy số vòng tối thiểu sử dụng của nó là 20.

Mô tả thuật toán:

Đầu vào thuật toán là khối 128 bít, chia ra làm 4 nhánh, mỗi nhánh 32 bít. Thuật hiện

32 vòng mã. Quá trình mã gồm 6 giai đoạn sau:

1> Cộng khóa

2> 8 vòng trộn tới

3> 8 vòng mã tới

4> 8 vòng mã lùi

5> 8 vòng trộn lùi

6> Trừ khóa.

Được miêu tả như hình 7.23.

Page 37: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.23. Sơ đồ thuật toán MARS

Giai đoạn trộn tới có 8 vòng, biểu diễn bởi hình 7.24.

Hình 7.24 Sơ đồ trộn tới

Giai đoạn trọn lùi cũng có 8 vòng, được cho như hình 7.25.

Page 38: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.25. Sơ đồ trộn lùi

Các S0 và S1 là các hàm hoán đổi, tham số của nó là một số x có độ lớn là 1 byte, với

sự hổ trợ của bảng S-boxes gồm 512 phần tử, thực hiện như sau S0 là thêm vào 1 bít 0

vào đầu của x, tức là y=S-boxes[0 & x ], còn hàm S1 thì thêm vào đầu x bít 1, tức là hàm

S1 thực hiện như sau: y=S-boxes[1 & x]. Cách chọn x được đưa ra như sau, từ nhánh

nguồn (nhánh chọn các byte) có 4 byte b0, b1, b2, b3 theo thứ tự b0 là byte thấp nhất, đến b3

là byte cao nhất. b0, b2 làm tham số cho S0 còn b1 và b3 làm tham số cho S1.

Giai đoạn mã tới có 8 vòng, và mã lùi có 8 vòng, 2 giai đoạn này thể hiện như hình vẻ

7.26.

Page 39: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.26. Sơ đồ giai đoạn mã tới và mã lùi

Hàm mở rộng E được cho như hình 7.27.

Hình 7.27. Sơ đồ miêu tả hàm mở rộng F

S đơn giản là phép thay thế 9 bít cuối cùng của nhánh thứ hai (nhánh out2) qua bảng

S-boxes để thu được 32 bít.

E-function (input: in, key1,key2)

1. // we use three temporary variables, L, M, R

2. 2. M=in+key1 //add first key word

Page 40: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

3. R=(in<<<13) key2 //multiply by end key word, which must be odd

4. i= lowest 9 bits of M

5. L=S[i] //S-box lookup

6. R=R<<<5

7. r=lowest 5 bits of R //these bits specify rotation amount

8. M=M<<<r //1st data-dependent rotation

9. L=L R

10. R=R<<<5

11. L=L R

12. r=lowest 5 bits of R // these bits specify rotation amount

13. L=L<<<r //2st data-dependent rotation

14. output (L, M, R)

Trong 32 vòng mã, sử dụng 40 khóa con 32 bít, 40 khóa con này được mở rộng từ khóa

mật k[] bằng hàm Key–Expansion , k có độ dài từ 4 đến 14 từ 32 bít. Hàm Key–

Expansion có đặc điểm:

1. Hai bít thấp nhất của một từ trong khóa sử dụng đối với phép nhân có giá trị là 1.

2. Không có từ nào trong khóa chứa liên tiếp 10 bít 0 hay 10 bít 1.

Thủ tục Key–Expansion bao gồm các bước sau:

1. Ban đầu, nội dung khóa gốc được chép vào một mảng tạm T[] (có độ dài là 15 từ),

tiếp theo là số n và cuối cùng là các số 0. Nghĩa là:

[0.. T n−1]=k[0..n−1],T[n]=n,T[n+1..14] = 0

2. Sau đó, các bước dưới đây được thực hiện lặp lại bốn lần tương ứng với j=0,1,2,3.

Mỗi lần lặp sẽ tính giá trị của 10 từ kế tiếp trong khóa mở rộng:

a) Mảng T[] được biến đổi sử dụng công thức tuyến tính sau:

for i = 0 to 14

T[i]=T[i] ((T[i−7mod15] T[i−2mod15])<<<3) (4i+ j)

b) Kế đến, mảng T[] sẽ được biến đổi qua bốn chu kỳ của mạng Feistel loại 1:

T[i]=(T[i] + S-box[9 bit thấp của T[i–1 mod 15]]) <<< 9, với i = 0, 1, …, 14.

c) Sau đó, lấy 10 từ trong mảng T[], sắp xếp lại rồi đưa vào thành 10 từ kế tiếp của

mảng khóa mở rộng K[]:

K[10j + i] = T[4i mod 15], i = 0,1,…,9

Page 41: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

3. Cuối cùng, xét 16 từ dùng cho phép nhân trong mã hóa (bao gồm các từ K[5], K[7],

…, K[35]) và biến đổi chúng để có hai đặc tính nêu trên. Cần lưu ý là khả năng từ được

chọn lựa ngẫu nhiên không thỏa đặc tính thứ hai (tức là từ có 10 bit liên tiếp bằng 0 hoặc

bằng 1) là khoảng 1/41. Mỗi từ K[5], K[7], K[9]…, K[35] được xử lý như sau:

a) Ghi nhận hai bit thấp nhất của K[i] bằng cách đặt j=K[i]^3. Sau đó, xây dựng từ w

dựa trên K[i] bằng cách thay thế hai bit thấp nhất của K[i] bằng giá trị 1, tức là w=K[i]v3.

b) Xây dựng một mặt nạ M của các bit trong w thuộc một dãy gồm 10 (hoặc nhiều hơn)

bit 0 hoặc 1 liên tiếp. Ta có Ml = 1 nếu và chỉ nếu wl thuộc một dãy 10 bit 0 hoặc 1 liên

tục. Sau đó đặt lại 0 cho các bit 1 trong M tương ứng với điểm cuối của đường chạy các

bit 0 hoặc 1 liên tục trong w, cũng làm như vậy đối với 2 bit thấp nhất và 1 bit cao nhất

của M. Như vậy, bit thứ i của M được đặt lại giá trị 0 nếu i < 2, hoặc i = 31 , hoặc nếu bit

thứ i của w khác bit thứ (i +1) hoặc bit thứ (i −1).

c) Tiếp theo, sử dụng một bảng B (gồm bốn từ) cố định để “sửa w”. Bốn phần tử

trong B được chọn sao cho mỗi phần tử (cũng như các giá trị xoay chu kỳ khác được xây

dựng từ phần tử này) không chứa bảy bit 0 hoặc mười bit 1 liên tiếp nhau. Cụ thể, các tác

giả sử dụng bảng B[] = {0xa4a8d57b, 0x5b5d193b, 0xc8a8309b, 0x73f9a978}, (đây là

các phần tử thứ 265 đến 268 trong S–box). Lý do chọn các phần tử này là chỉ có 14 mẫu

8 bit xuất hiện hai lần trong các phần tử này và không có mẫu nào xuất hiện nhiều hơn

hai lần.

Sử dụng hai bit j (ở bước (a)) để chọn một phần tử trong B và sử dụng năm bit thấp nhất

của K[i–1] để quay giá trị của phần tử được chọn này, tức là:

p = B[j] <<< (5 bit thấp nhất của K[i–1])

d) Cuối cùng, thực hiện XOR mẫu p với w sử dụng mặt nạ M và lưu kết quả trong

K[i]:

K[i]=w (p^M)

Do hai bit thấp nhất của M là 0 nên hai bit thấp nhất của K[i] sẽ là 1 (do những bit này

trong w là 1). Ngoài ra, việc chọn giá trị của mảng B bảo đảm rằng K[i] không chứa dãy

mười bit 0 hoặc 1 liên tục.

Lưu ý rằng thủ tục này không chỉ đảm bảo rằng các từ K[5], K[7], K[9]…, K[35] có

hai đặc tính nêu trên mà còn giữ được tính chất “ngẫu nhiên” của các từ này, tức là không

có bất kỳ một giá trị của từ đơn nào có xác suất lớn hơn trong sự phân bố đồng. Sử dụng

phương pháp vét cạn, có thể kiểm chứng được rằng không có mẫu 20 bit nào xuất hiện

Page 42: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

trong các từ này với xác xuất lớn hơn 1.23 x 2–20. Tương tự, không có mẫu 10 bit nào xuất

hiện với xác suất lớn hơn 1.06 x 2–10. Các yếu tố này được sử dụng trong việc phân tích

thuật toán.

Key-Expansion (input:k[], n; output: K[])

1. //n is the number of words in the key buffer k[], ( )

2. //K[] is the expanded key array, consisting of 40 words

3. //T[] is a temporary array, consisting of 15 words

4. //B[] is a fixed table of four words

5. //Initialize B[]

6. B[] = {0xa4a8d57b, 0x5b5d193b, 0xc8a8309b, 0x73f9a978}

7. //Initialize T[] with key data

8. T[0…n-1]=k[0…n-1], T[n]=n, T[n+1…14]=0

9. //Four iterations, computing 10 words of K[] in each

10. for j=0 to 4 do

11. for i=0 to 14 do //Linear transformation

12. T[i]=((T[i-7 mod 15] T[i-2 mod 15])<<<3) (4i+j)

13. repeat four times //Four stirring rounds

14. for i=0 to 14 do

15. T[i]=(T[i]+S[low 9 bits of T[i-1 mod 15]]<<<9

16. end –repeat

17. for i=0 to 9 do //store next 10 words into K[]

18. K[10j+i]=T[4i mod 15]

19. end for

20. //Modify multiplication keys

21. for i=5,7,9,…,35 do

22. j= least two bits of K[i]

23. w=K[i] with both of the least two bits set to 1

24. //Generate a bit - Mask M

25. Ml= 1 iff wl belongs to a sequence of ten consecutive 0’s or 1’s in w

26. and also and wl-1=wl=wl+1

27. Select a pattern from the fixed table and rotate if

28. r= least five bits of K[i-1] //Rotation amount

Page 43: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

29. p=B[j]<<<r

30. // Modify K[i] with p under the control of the mask M

31. K[i]=w (p^M)

32. end for

MARS-encrypt(input: D[], K[])

Phase (I): Forward mixing – trộn tới

1. // First add subkeys to data

2. for i=0 i = 0 to 3 do

3. D[i]=D[i]+K[i]

4. // Then do eight rounds of forward mixing

5. for i=0 0 to 7 do // use D[0] ] to modify D[1],D[2],D[3]

6. // four S-box look-ups

7. D[1]=D[1] S0[low byte of D[0]]

8. D[1]=D[1]+S1[[ 2nd byte of D[0]]

9. D[2]=D[2]+S0[3rd byte of D[0]]

10.D[3]=D[3] S1[high byte of D[0]]

11.// and rotation of the source word to the right

12.D[0]=D[0]>>>24

13.// followed by additional mixing operations

14.if i=0 or i=4 then

15.D[0]=D[0]+D[1]// add D[1] ] back to the source word

16.if i=1 or i=5 then

17.D[0]=D[0]+D[1]// add D[1] ] back to the source word

18.// rotate D[] ] by one word to the right for next round

19.(D[3],D[2],D[1],D[0]) (D[0],D[3],D[2],D[1])

20.end-for

Phase (II): Keyed transformation

21. // Do 16 rounds of keyed transformation

22. for i=0 to 15 do

23. (out1, out2, out3)=E-function(D[0],K[2i+4],K[2i+5])

24. D[0]=D[0]<<<13

25. D[2]=D[2]+out2

Page 44: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

26. if i<8 then // first 8 rounds in forward mode

27. D[1]=D[1]+out1

28. D[3]=D[3] out3

29. else // last 8 rounds in backwards mode

30. D[3]=D[3]+out1

31. D[1]=D[1] out3

32. end-if

33. // rotate D[] by one word to the right for next round

34. (D[3],D[2],D[1],D[0]) (D[0],D[3],D[2],D[1])

35. end-for

Phase (III): Backwards mixing –trộn lùi

36. // Do eight rounds of backwards mixing

37. for i=0 to 7 do

38. // additional mixing operations

39. if i=2 or i=6 then

40. D[0]=D[0]-D[3]3] // subtract D[3] from source word

41. if i=3 or i=7 then

42. D[0]=D[0]-D[1]1] // subtract D[1]] from source word

43. // four S-box look-ups

44. D[1]=D[1] S1[ low byte of D[0]]

45. D[2]=D[2] - S0[high byte of D[0]]

46. D[3]=D[3]- S1[ 3rd byte of D[0]]

47. D[3]=D[3] S0[2nd byte of D[0]]

48. // and rotation of the source word to the left

49. D[0]=D[0]<<<24

50. // rotate D[0] by one word to the right for next round

51. (D[3],D[2],D[1],D[0]) (D[0],D[3],D[2],D[1])

52. end-for

53. // Then subtract subkeys from data

54. for i=0 to 3 do

55. D[i]=D[i]-K[36+i]

Page 45: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Quy trình giải mã là nghịch đảo của quy trình mã hóa. Mã giả cho quy trình giải mã

của thuật toán MARS tương tự với mã giả của quy trình mã hóa của thuật toán:

MARS-derypt(input: D[], K[])

Phase (I): Forward mixing –trộn tới

1. // First add subkeys to data

2. for i=0 i = 0 to 3 do

3. D[i]=D[i]+K[36+i]

4. // Then do eight rounds of forward mixing

5. for i=7 to 0 do

6. //rotate D[] by one word to the left for this round

7. (D[3],D[2],D[1],D[0]) (D[2],D[1],D[0],D[3])

8. //and rotate of the source word to the right

9. D[0]=D[0]>>>24

10.//four S-box look-ups

11.D[3]=D[3] S0[2nd byte of D[0]]

12.D[3]=D[3]+S1[3rd byte of D[0]]

13.D[2]=D[2]+S0[high byte of D[0]]

14.D[1]=D[1] S1[low byte of D[0]]

15.// followed by additional mixing operations

16.if i=2 or i=6 then

17.D[0]=D[0]+D[3]// add D[3]3] back to the source word

18.if i=3 or i=7 then

19.D[0]=D[0]+D[1]// add D[1]1] back to the source word

20.end-for

Phase (II): Keyed transformation

21. // Do 16 rounds of keyed transformation

22. for i=15 to 0 do

23. //rotate D[] by one word to the left for this round

24. (D[3],D[2],D[1],D[0]) (D[2],D[1],D[0],D[3])

25. D[0]=D[0]>>>13

26. (out1, out2, out3)=E-function(D[0],K[2i+4],K[2i+5])

27. D[2]=D[2]-out2

Page 46: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

28. if i<8 then // last 8 rounds in forward mode

29. D[1]=D[1]-out1

30. D[3]=D[3] out3

31. else // first 8 rounds in backwards mode

32. D[3]=D[3]-out1

33. D[1]=D[1] out3

34. end-if

35. end-for

Phase (III): Backwards mixing – trộn lùi

36. // Do eight rounds of backwards mixing

37. for i=7 to 0 do

38. // rotate D[] by one word the left for this round

39. (D[3],D[2],D[1],D[0]) (D[2],D[1],D[0],D[3])

40. //additional mixing operations

41. if i=0 or i=4 then

42. D[0]=D[0]-D[3]1] // subtract D[3]1] from source word

43. if i=1 or i=5 then

44. D[0]=D[0]-D[1] //subtract D[1] from source word

45. //and rotation of the source word to the left

46. D[0]=D[0]<<<24

47. //four S-box look-ups

48. D[3]=D[3] S1[high byte of D[0]

49. D[2]=D[2]-S0[3rd byte of D[0]]

50. D[1]=D[1]-S1[2nd byte of D[0]

51. D[1]=D[1] S0[low byte of D[0]

52. end-for

53. // Then subtract subkeys from data

54. for i=0 to 3 do

55. D[i]=D[i]-K[i]

7.13 Hệ mật RC6

Page 47: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Đặc điểm chung RC6: là thuật toán được phát triển từ RC5, được xây dựng dựa trên

cấu trúc cơ sở Feistel. Nó có thể được thực hiện trên các biến thể khác nhau (kích thước

khối dữ liệu đầu vào, kích thước khóa, số lượng vòng, trong cuộc thi AES thuật toán gồm

20 vòng, khóa có độ dài thay đổi được là 128 hoặc 192 hoặc 256 bít và khối mã có độ lớn

là 128 bít), vì thế thuật toán rất mềm dẻo đối với tất cả các cấp độ của độ an toàn và sự

hiệu quả. Thuật toán RC6 tương ứng với các tham số w/r/b, trong đó kích thước từ là w

bit, quy trình mã hóa bao gồm r chu kỳ và tham số b xác định chiều dài mã khóa tính

bằng byte. Trên thực tế, RC6 được xem như 2 quá trình mã hóa RC5 song song. RC6 bao

gồm 20 vòng, tác giả của thuật toán đã xác nhận rằng với 16 vòng, thuật toán có thể tấn

công với độ phức tạp 2119. Thuật toán có thể ít phù hợp trên một số nền nào đó vì trong

thuật toán có sử dụng các toán tử dịch vòng trên 32 bít (có thể biến đổi) và các phép nhân

số nguyên, nhưng khi các toán tử này được hỗ trợ, RC6 sẽ thực hiện nhanh hơn so với tất

cả các thuật toán AES chung kết khác. Nhược điểm chính của RC6 liên quan đến số

lượng vòng được sử dụng trong thuật toán.

Miêu tả thuật toán. Thuật toán RC6-w/r/b thực hiện trên các đơn vị bốn từ w bít sử

dụng 6 phép toán cơ bản và logarit cơ số 2 của w, ký hiệu là lgw.

a + b phép cộng số nguyên theo modulo 2w

a - b phép trừ số nguyên theo modulo 2w

a b phép XOR

a * b phép nhân số nguyên modulo 2w

a<<<b quay a sang trái b bít

a>>>b quay a sang phải b bít.

Sơ đồ thuật toán được cho như hình 7.28. Đầu vào là khối 4 từ w bít, thực hiện r

vòng. Trong sơ đồ có một hàm f: f(x)=x(2x+1).

Page 48: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.28. Sơ đồ thuật toán RC6

Quá trình sinh khóa: Thuật toán sử dụng khóa mật có chiều dài b bytes, ở đây

. Từ khóa mật thực hiện mở rộng khóa thành 2r+4 từ (w bít mỗi từ). 2r+4 từ

này cóp vào mảng S[0,...,2r+3]. Mảng này sử dụng cho quá trình mã hóa và giải mã.

Trong thủ tục mở rộng khóa sử dụng các hằng số Pw và Qw như các “hằng số huyển bí”.

Thủ tục mở rộng khóa được thực hiện như sau. b byte khóa mật sẽ cóp vào mảng L[0,

…,c-1] (gồm c từ w bít), nếu thiếu thì thêm vào các byte 0, sau đó thực hiện các phép

biến đổi để tạo ra khóa con để lưu vào mảng S[]. Quá trình này được miêu tả bằng đoạn

lệnh sau:

Key schedule của RC6–w/r/b

Input:

Khóa (gồm b byte) do người dùng cung cấp được đưa vào mảng L[0,…, c–1] (gồm c–

từ)

r là số lượng chu kỳ

Output: Các khóa chu kỳ w bit S[0, …, 2r + 3]

Page 49: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Begin

S[0] = Pw

for i = 1 to 2r + 3

S[i] = S[i – 1] + Qw

A = B = i = j = 0

v = 3 × max{c; 2r + 4}

for s = 1 to v

A = S[i] = (S[i] + A + B) <<< 3

B = L[j] = (L[j] + A + B) <<< (A + B)

i = (i + 1) mod (2r + 4)

j = (j + 1) mod c

end for

End

Quy trình mã hóa và giải mã

RC6 làm việc với bốn từ w bit A, B, C, D chứa các dữ liệu đưa vào ban đầu cũng như

dữ liệu mã hóa đưa ra cuối quy trình mã hóa. Quy trình mã hóa, giải mã được cho bởi

đoạn miêu tả code giả sau:

Encryption/Decryption with RC6-w/r/b

Input: Plaintext stored in four w-bit input registers A, B, C & D

r is the number of rounds

w-bit round keys S[0, ... , 2r + 3]

Output: Ciphertext stored in A, B, C, D

// '''Encryption Procedure:'''

B = B + S[0]

D = D + S[1]

for i = 1 to r do

{

t = (B(2B + 1)) <<< lg w

u = (D(2D + 1)) <<< lg w

A = ((A ^ t) <<< u) + S[2i]

C = ((C ^ u) <<< t) + S[2i + 1]

}

Page 50: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

A = A + S[2r + 2]

C = C + S[2r + 3]

// '''Decryption Procedure:'''

C = C - S[2r + 3]

A = A - S[2r + 2]

for i = r downto 1 do

{

(A, B, C, D) = (D, A, B, C)

u = (D.(2D + 1)) <<< lg w

t = (B.(2B + 1)) <<< lg w

C = ((C - S[2i + 1]) >>> t) ^ u

A = ((A - S[2i]) >>> u) ^ t

}

D = D - S[1]

B = B - S[0]

7.14 Hệ mật mã khối Serpent

Đặc điểm chung: Serpent là thuật toán được thiết kế dựa trên cấu trúc cơ sở là mạng

chuyển vị-thay thế (S-P Network). Các tác giả thiết kế thuật toán này hướng tới việc tuân

thủ dựa trên các thiết kế đã có và coi trọng tính an toàn của thuật toán hơn là tính mới lạ

và tốc độ của thuật toán. Trong mỗi vòng của thuật toán bao gồm 8 hộp S dựa trên các

hộp S của mã DES, nó được thiết kế cho phép tất cả các toán tử có thể thực hiện song

song. Thuật toán bao gồm 32 vòng. Các tác giả của thuật toán khẳng định rằng 16 vòng

đã đảm bảo độ an toàn của thuật toán (32 vòng sẽ đảm bảo khả năng chống lại các kiểu

tấn công trong tương lai). Điều này dễ ràng tạo cho thuật toán một sự an toàn cần thiết

(Serpent được nhìn nhận là thuật toán an toàn nhất trong các thuật toán chung khảo AES),

nhưng sự trả giá của nó là hiệu suất thấp của thuật toán so với tất cả các thuật toán chung

khảo AES. Tuy nhiên, vì yêu cầu ít bộ nhớ khi thực hiện, vì vậy thuật toán rất thích hợp

để thực hiện trên smart card (chính điều này giúp cho Serpent chiến thắng thuật toán

CAST-256, mặc dù chúng có cùng hiệu năng và độ an toàn).

Miêu tả thuật toán:

Quá trình mã hóa của Serpent được chia ra làm 3 giai đoạn sau:

1. Phép hoán vị đầu IP (initial permutation);

Page 51: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

2. 32 chu kỳ, mỗi chu kỳ bao gồm một phép trộn khóa, một lượt duyệt qua 32 bảng S–

box và một phép biến đổi tuyến tính (cho tất cả các chu kỳ trừ chu kỳ cuối). Ở chu kỳ

cuối cùng, phép biến đổi tuyến tính này thay thế bằng một phép trộn khóa.

3. Phép hoán vị cuối FP (final permutation).Đây là phép hoán đổi nghịch của phép

hoán đổi ban đầu IP.

Sơ đồ thuật toán mã hóa của Serpent được cho như hình 7.29.

Hình 7.29. Sơ đồ miêu tả qúa trình mã hóa của Sepent

ở đây Kr là khóa vòng 128 bít, mỗi vòng dùng 32 bảng Si giống nhau, với i=r mod 8, r

là số thứ tự của vòng mã, 8 bảng DES, và biến đổi đầu và cuối xem phụ lục, còn phép

biến đổi tiến tính được cho như hình sau với đầu vào 128 bít chia ra làm 4 nhánh làm đầu

vào của biến đổi tuyến tính.

Quá trình giải mã của Serpent là biến đổi ngược của quá trình mã hóa, cũng có 32

vòng, và sơ đồ thuật toán được cho như hình 7.30:

Page 52: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.30. Sơ đồ miêu tả qúa trình giải mã của Sepent

Hàm mở rộng khóa. Như chúng ta thấy quá trình mã hóa và giải mã cần đến 33 khóa

con 128 bít (K0, …, K32). Các khóa này hình thành từ khóa mật bằng hàm mở rộng khóa.

Hàm mở rộng được cho như sau. Khóa mật K ban đầu sẽ ghi ra thành 8 từ 32 bít (w -8, …,

w-1), nếu khóa K không đủ thì ta them vào dãy bít 100…0 để cho đủ, mở rộng 8 từ này

thành 132 khóa trung gian bằng công thức sau:

wi=(wi-8 wi-5 wi-3 wi-1 i )<<<11

ở đây là phần phân số của tỉ số vàng hay dạng số hexa 0x9e3779b9. Bằng cách

tạo ra các khóa trung gian theo công thức trên cho phép các bít khóa phân đều ở các chu

kỳ, tránh được khóa yếu. Từ các khóa trung gian này hình thành nên các khóa của chu kỳ,

nhờ giúp đở của bảng thay thế S-box như sau:

K0=S-box3 (w0, w1, w2,w3)

K1= S-box2 (w4, w5, w6,w7)

K3= S-box1 (w8, w9, w10,w11)

K4= S-box0 (w12, w13, w14,w15)

K5= S-box7 (w16, w17, w18,w19)

Page 53: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

….

K31= S-box4 (w124, w125, w126,w127)

K32= S-box3 (w128, w129, w130,w131)

S-boxi ở đây 32 bảng Si liên tiếp nhau, để thay thế 128 bít khóa trung gian thành khóa

vòng.

7.15 Hệ mật mã khối Twofish

Đặc điểm chung: là thuật toán được thiết kế dựa trên thuật toán Blowfish (được thiết

kế dựa trên cấu trúc cơ sở là mạng Feistel). Twofish là thuật toán nhanh và không yêu

cầu nhiều bộ nhớ khi thực hiện. Cấu trúc của thuật toán rất phức tạp và do đó rất khó

phân tích (để đạt được sự mềm dẻo trong cấu trúc, các tác giả của thuật toán đã sử dụng

một số “kỹ xảo - tricks”, sự an toàn của các kỹ thuật này không rõ ràng, vì vậy trong 5

thuật toán chung khảo AES, Twofish là thuật toán khó phân tích nhất), điều này làm cho

nó giống như thuật toán MARS, nhưng nó có ưu điểm hơn là thiết kế được dựa trên một

thuật toán đã được nghiên cứu và đã phổ biến. Twofish bao gồm 16 vòng, tính năng đặc

biệt của nó là sử dụng các hộp S được tính toán trước phụ thuộc vào khóa, và sử dụng

khóa theo thời gian biểu tương đối phức tạp. Trong thiết kế, thuật toán sử dụng 1 số thành

phần của các thiết kế khác – ví dụ biến đổi PHT (Pseudo-Hadamard Transform) của họ

mã SAFER. Trên hầu hết các nền phần mềm Twofish chậm hơn một chút so với Rijndael

(với 128 bít khóa), nhưng có phần nhanh hơn đối với 256 bít khóa. Các tác giả của thuật

toán đã đề cập đến việc tấn công thuật toán trên 6 vòng và tấn công liên quan đến khóa

lên tới 10 vòng. Trên thực tế (đến năm 2005) không có kiểu tấn công nào lên thuật toán

hiệu quả hơn kiểu tấn công “tìm khóa theo phương pháp vét cạn – brute force key

search”.

Miêu tả thuật toán. Sơ đồ thuật toán như hình vẻ 7.31. Ở đây, văn bản ban đầu đưa

vào là bốn từ 32 bit A, B, C, D. Trước khi tham gia vào 16 vòng bốn từ này XOR với bốn

từ khóa K0..3. Kế đến thực hiện tiếp 16 chu kỳ. Trong mỗi chu kỳ, hai từ A, B là dữ liệu

vào của hàm g (đầu tiên từ B được quay trái 8 bit). Hàm g bao gồm bốn S–box (mỗi S–

box là một byte) phụ thuộc khóa, theo sau là bước trộn tuyến tính dựa trên ma trận MDS.

Kết hợp kết quả trả ra của hai hàm g thông qua biến đổi tựa Hadamard (PHT) rồi cộng

thêm vào hai từ khóa (K2r+8 cho A và K2r+9 cho B ở chu kỳ r). Sau đó hai kết quả này XOR

với hai từ C và D (trước khi xor từ D với B, từ D được quay trái 1 bit và sau khi XOR từ

C với A, từ C được quay phải 1 bit). Kế đến hai từ A và C, B và D hoán đổi cho nhau để

Page 54: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

thực hiện chu kỳ kế tiếp. Sau khi thực hiện xong 16 chu kỳ, hoán chuyển trở lại hai từ A

và C, B và D, cuối cùng thực hiện phép XOR bốn từ A, B, C, D với bốn từ khóa K4...7 cho

ra bốn từ A’, B’, C’, D’ đã được mã hóa.

Hình 7.31. Sơ đồ thuật toán Twofish

Hàm F: Ở đây hàm F là phép hoán vị phụ thuộc khóa trên gía trị 64 bít. Hàm F nhận

vào ba tham số, đó là hai từ dữ liệu vào R0 và R1, và số thứ tự r của chu kỳ dùng để chọn

khóa con thích hợp. R0 được đưa qua hàm g để tạo ra T0. R1 được quay sang trái 8 bít, sau

đó được đưa qua hàm g để tạo ra T1. Tiếp theo là T0 và T1 được được kết hợp sử dụng

PHT và cộng thêm hai từ trong bảng khóa mở rộng, hàm F có thể biểu diễn bằng chuỗi

lệnh sau:

T0=g(R0)

T1=g(ROL(R1,8))

F0=(T0+T1+K2r+8)mod 232

F1=(T0+2T1+K2r+9)mod 232

(F0,F1) là kết quả của hàm F

Page 55: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hàm g: Hàm g là trung tâm của thuật toán Twofish. Từ dữ liệu đâu vào X được chia

thành 4 byte. Mỗi byte thực hiện thông qua S–box phụ thuộc khóa của chính mình. Mỗi

S–box đưa 8 bit dữ liệu vào và đưa ra 8 bit kết quả. 4 byte kết quả được xem như một véc

tơ có chiều dài bằng 4 trên GF(28) và véc tơ này nhân với ma trận MDS 4 × 4 (sử dụng

trường GF(28) cho việc tính toán). Véc tơ kết quả Z được xem như một từ 32 bit và nó

cũng là kết quả của hàm g.

, i=0,…,3

, i=0,…,3

Si là các S-box phụ thuộc vào khóa, ma trận MDS được cho ở dạng Hexa như sau:

S-box phụ thuộc vào khóa: Mỗi S–box được định nghĩa với 2, 3 hoặc 4 byte của dữ liệu

đầu vào của khóa phụ thuộc vào kích thước khóa. Điều này thực hiện như sau cho các

khóa 128 bit, được miêu tả ở hình 7.32.

S0(x)=q1[q0[q0[x] S0,0] S1,0]

S1(x)=q0[q0[q1[x] S0,1] S1,1]

S2(x)=q1[q1[q0[x] S0,2] S1,2]

S3(x)=q0[q1[q1[x] S0,3] S1,3]

Hình 7.32. Sơ đồ miêu tả sinh S-Box

Phép hoán vị q0 và q1: ở đây q0 và q1 là các phép hoán vị cố định trên các gía trị 8 bít.

Nó được xây dựng từ 4 phép hoán vị 4 bít khác nhau. Nếu gọi x là giá trị đầu vào thì y là

giá trị đầu ra của hoán vị được xác định như sau:

Page 56: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

a0,b0=[x/16], x mod 16

a1=a0 b0

b1=a0 (b0>>>1) 8a0 mod 16

a2,b2=t0[a1], t1[a1]

a3=a2 b2

b3=a2 (b2>>>1) 8a2 mod 16

a4,b4=t2[a3], t3[b3]

y=16b4+a4

ở đây t0,t1,t2,t3 là các S-box, được xác định khác nhau đối với q0 và q1. Trường hợp q0

thì t0,t1,t2,t3 được cho như sau:

t0=[817D6F320B59ECA4]

t1=[ECB81235F4A6709D]

t2=[BA5E6D90C8F32471]

t3=[D7F4126E9B3085CA]

Trường hợp q1 thì t0,t1,t2,t3 được cho như sau:

t0=[28BDF76E31940AC5]

t1=[1E2B4C376DA5F908]

t2=[4C75169A0ED82B3F]

t3=[B951C3DE647F208A]

Các giá trị Si,j: Cách xác định giá trị của Si,j qua các bước sau:

Đầu tiên ta định nghĩa k=N/64, với N là chiều dài khóa mật 128 hay 192 hay 256.

Khóa M bao gồm 8k byte m0,…,m8k-1, các byte này biến đổi thành 2k từ 32 bít. Ta xác

định Mi như sau:

Từ Mi ta xác định 2 véc tơ có chiều dài k như sau:

Me=(M0,M2,…,M2k-2)

Mo=(M1,M3,…,M2k-1)

Một vector gồm k từ 32 bit thứ 3 cũng được suy ra từ khóa bằng cách lấy ra từng

nhóm gồm 8 byte trong khóa, xem nhóm các byte này là một vector trên GF(28) và nhân

vector này với ma trận 4×8 RS. Sau đó mỗi kết quả 4 byte được xem như một từ 32 bit.

Những từ này kết hợp lại tạo thành vector thứ ba. Được xác định như sau:

Page 57: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

ở đây RS được cho như sau:

Các giá trị của véc tơ thứ 3 được tính như sau:

S=(Sk-1,Sk-2,…,S0)

Hàm mở rộng khóa: Thuật toán Twofish sử dụng 40 khóa con 32 bít, các khóa con

này hình thành từ khóa mật bằng hàm mở rộng khóa. Hàm này được xây dựng trên cơ sở

thủ tục h, thủ tục này được biểu diễn như hình vẻ 7.33.

Hình 7.33. Quá trình sinh khóa con

Như ta thấy đối số đầu vào của h là X có độ lớn là 32 bít và một danh sách L=(L0,

…,Lk-1) mỗi phần tử cũng là 32 bít, và đầu ra là một số có độ lớn là 32 bít. Hàm h thực

hiện qua k giai đoạn. Trong mỗi giai đoạn 4 byte, mỗi byte thực hiện thay thế qua S-box

cố định và XOR với một phần tử của danh sach L. Qua k giai đoạn, các byte thu được lại

thực hiện tiếp phép thay thế S-box nữa và cuối cùng là nhân với ma trân MDS như trong

hàm g. Cụ thể là ta chia các từ thành cá byte:

, i=0,…,k-1; j=0,1,2,3.

Sau đó lần lượt xác định thay thế và phép toán XOR.

Nếu k=4 thì:

Page 58: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Nếu chúng ta có:

Trong các trường hợp còn lại thì chúng ta có:

y0=q1[q0[q0[y2,0] l1,0] l0,0]

y1=q0[q0[q1[y2,1] l1,1] l0,1]

y2=q1[q1[q0[y2,2] l1,2] l0,2]

y3=q0[q1[q1[y2,3] l1,3] l0,3]

Sauk hi tìm hiểu xong hàm h, ứng dụng hàm này để mở rộng khóa bằng dãy các phép

tính sau:

Hằng số sử dụng để nhân đôi các byte, i= 0, ..., 255, iρ gồm 4 byte bằng nhau, mỗi

byte ứng với giá trị i. Áp dụng hàm h lên các từ theo dạng này. Đối với Ai các giá trị byte

là 2i và đối số thứ hai của h là Me. Tương tự Bi được tính toán, sử dụng 2i + 1 như giá trị

byte và Mo như đối số thứ hai với một phép quay thêm trên 8 bit. Các giá trị Ai và Bi tổ

hợp thành một PHT (Pseudo–Hadamard Transform). Một trong hai kết quả này quay 9

bit nữa. Hai kết quả này tạo thành hai từ khóa mở rộng

7.16 Chuẩn mã khối AES

Lịch sử ra đời. Với rất nhiều nhược điểm đã được chỉ ra, thuật toán DES (được công

nhận vào năm 1976 bởi NIST của Mỹ và có tên gọi chính thức là chuẩn FIPS PUB 46

vào năm 1977) đã gần như không còn được sử dụng trong các ứng dụng thực tiễn. Các

nghiên cứu về khả năng ứng dụng của DES đã chỉ ra rằng, thuật toán DES đã không còn

Page 59: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

đáp ứng được các tiêu chuẩn cần thiết (độ an toàn, tính hiệu quả, tốc độ thực hiện, …) để

có thể tiếp tục là chuẩn cho các ứng dụng trong thực tiễn. Để cố gắng khắc phục các

nhược điểm đã chỉ ra của thuật toán DES, trên thực tế đã xuất hiện rất nhiều các thuật

toán cải tiến dựa trên DES (như DES-X, G-DES, D_DES, T_DES) hoặc các thuật toán

khác (như IDEA, RC5, Blowfish, …) nhằm khắc phục các nhược điểm hoặc thay thế

thuật toán DES. Nhưng với các đòi hỏi ngày càng cao của các ứng dụng trong thực tiễn

các thuật toán này đều đã chứng tỏ là không đạt chuẩn với các yêu cầu mới.

Trước tình hình đó, NIST đã mở ra một cuộc thi nhằm tìm kiếm thuật toán mới thay

thế cho thuật toán DES (được gọi là AES – Advanced Encryption Standard [12-20]). Các

yêu cầu cơ bản đối với các thuật toán AES là có tốc độ nhanh hơn so với DES, ít nhất có

độ an toàn không kém T_DES và có khả năng thực hiện tối ưu trên cả phần cứng và phần

mềm. Các thuật toán này phải thực hiện trên khối dữ liệu có độ dài 128 bít, và có khả

năng làm việc với các khóa có độ dài khác nhau – 128, 192, và 256 bít, và cuộc thi đã

chính thức công nhận thuật toán Rijndael là chuẩn mới (với độ dài khóa là 128 bít, và

khuyến nghị sử dụng khóa 256 bít đối với các yêu cầu tối mật).

Kết quả qua so sánh thực hiện trên phần mềm và phần cứng, có 5 thuật toán vào vòng

chung kết MARS, RC6, Rijndael, Serpent, Twofish, chúng ta đã xem 4 thuật toán trước.

Ở đây chúng ta xem thuật toán được bầu làm chuẩn mới Rijndael.

Đặc điểm chung: là thuật toán được phát triển từ thuật toán Square, Nhà thiết kế:

Vincent Rijmen và Joan Daemen. 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 việc với khối dữ liệu 128 bít và khóa có độ dài 128 (có 10 vòng mã), 192 (có 12

vòng mã) hoặc 256 (có 14 vòng mã) 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. Trong

phần này chúng ta tìm hiểu về hệ mật AES.

Miêu tả thuật toán: Hầu hết các tính toán của AES được thực hiện trên trường hữu

hạn. AES hoạt động trên các mảng của byte kích thước 44, được gọi là state (trạng

thái).

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

1. AddRoundKey: cộng ( ) mã khóa của chu kỳ vào trạng thái hiện hành. Độ dài của

khóa của chu kỳ bằng với kích thước của trạng thái.

Page 60: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

2. 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-box).

3. 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.

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

khác nhau.

Quá trình mã hóa được thực hiện 3 ba giai đoạn sau:

1. Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ mã hóa.

2. Nr – 1 chu kỳ mã hóa bình thường: mỗi chu kỳ 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 chu kỳ mã hóa cuối cùng: trong chu kỳ này thao tác MixColumns được

bỏ qua.

Chúng ta đi tìm hiểu các lệnh biến đổi trong quá trình mã hóa.

+ SubstituteBytes – bước thay thế có tính phi tuyến, theo đó mỗi byte được thay thế

bởi một byte có giá trị khác theo bảng tìm kiếm (lookup table) – gọi là hộp S. Như vậy,

mỗi byte trong bảng được thay thế bởi một byte của hộp S (S-box). Hộp S được sinh ra từ

hàm ngược (inverse function) trên GF(28) để có được tính chất phi tuyến cao nhất. Để

ngăn ngừa cuộc tấn công dựa trên các tính chất đại số đơn giản, hộp S-box này được tạo

nên bằng cách kết hợp phép nghịch đảo với một phép biến đổi affine khả nghịch. Hộp S

cũng được thiết kế để bảo đảm tính xáo trộn tốt nhất và được chọn để tránh các điểm bất

động.

Hình 7.34. Trong bước SubstituteBytes,

mỗi byte trong state được thay thế bởi

một byte (phần tử 8 bít) của hộp S đóng

vai trò là bảng tìm kiếm.

+ ShiftRows – bước chuyển dịch, theo đó mỗi hàng của state được dịch vòng một số

bước nào đó. Đối với AES hàng đầu tiên không thay đổi. Các byte của hàng thứ 2 được

dịch vòng đi 1byte về bên trái. Tượng tự, các byte của hàng thứ 3 và 4 được dịch vòng đi

Page 61: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

2 và 3 byte tương ứng về phía trái. Bằng cách này mỗi cột của state ra của ShiftRows là

sự kết hợp lại của các byte từ mỗi cột của state vào.

Hình 7.35. Trong bước ShiftRows, các

byte trong mỗi hàng của state được dịch

vòng về phía trái. Số lượng các bước dịch

vòng là khác nhau ở mỗi hàng.

+ MixColumns – hoạt động trên các cột của state, thực hiện một biến đổi tuyến tính.

Trong bước này 4 byte của mỗi cột của state được tổ hợp sử dụng một biến đổi tuyến tính

ngược. Trong hàm MixColumns mỗi byte của lối vào sẽ ảnh hưởng lên tất cả 4 byte ở lối

ra. Cùng với ShiftRows, MixColumns sẽ tạo ra tính khuếch tán (diffusion) của mã. Mỗi

cột được xử lý như một đa thức trên GF(28) và được nhân với một đa thức cố định c(x) =

‘03’x3 +’01’ x2 + ‘01’x + ‘02’ theo modul (x4 + 1).

Hình 7.36. Trong MixColumns,

mỗi cột của state được nhân với

một đa thức cố định c(x) theo

mod(x4 + 1).

Hàm Mixcolums(state) được thực hiện trên mỗi cột của ma trận state. Như vậy, đối

với 4 cột của ma trận state, hàm Mixcolums(state) được thực hiện 4 lần.

+ AddRoundKey – mỗi byte của state được kết hợp với khóa vòng, mỗi khóa vòng

được sinh ra từ khóa bí mật, khi sử dụng thời gian biểu của khóa (key schedule), mỗi

khóa vòng có cùng kích thước với state.

Hình 7.37. Trong bước

AddRoundKey, mỗi byte của state

được kết hợp tương ứng với 1 byte

của khóa vòng bằng sử dụng toán tử

XOR.

Page 62: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Vòng cuối cùng, thay thế bước Mixcolumns bằng một giá trị

AddRoundKey riêng biệt.

Quá trình giải mã: Quá trình này thực hiện các biến đổi ngược so với quá trình mã

hóa. Nó thực hiện thông qua các bước sau:

1. Thực hiện thao tác AddRoundKey đầu tiên trước khi thực hiện các chu kỳ giải mã.

2. Nr −1 chu kỳ giải mã bình thường: mỗi chu kỳ bao gồm bốn bước biến đổi liên tiếp

nhau: InvShiftRows, InvSubBytes, AddRoundKey, InvMixColumns.

3. Thực hiện chu kỳ giải mã cuối cùng. Trong chu kỳ này, thao tác InvMixColumns

được bỏ qua.

Phép biến đổi InvSubBytes: Phép biến đổi ngược của thao tác SubBytes, ký hiệu là

InvSubBytes, sự dụng bảng thay thế nghịch đảo của S-box trên GF(28), ký hiệu là S-box-

1.

Phép biến đổi InvShiftRows: InvShiftRows chính là phép biến đổi ngược của phép

biến đổi ShiftRows. Dòng đầu tiên của trạng thái sẽ vẫn được giữ nguyên trong khác ba

dòng cuối của trạng thái sẽ được dịch chuyển xoay vòng theo chiều ngược với phép biến

đổi ShiftRows.

Phép biến đổi InvMixColumns: InvMixColumns là biến đổi ngược của phép biến đổi

MixColumns. Mỗi cột của trạng thái hiện hành được xem như đa thức s(x) bậc 4 có các

hệ số thuộc GF(28) và được nhân với đa thức a-1(x) là nghịch đảo của đa thức a(x)

(modulo M(x)) được sử dụng trong phép biến đổi MixColumns.

a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e}

Hàm mở rộng khóa:

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 mã khóa chính. Hàm mở rộng khóa được hổ trợ bởi hai hàm sau:

Hàm SubWord(W) thực hiện việc thay thế (sử dụng S-box) từng byte thành phần của

từ 4 byte được đưa vào và trả kết quả về là một từ bao gồm 4 byte kết quả sau khi thực

hiệc việc thay thế.

Page 63: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hàm RotWord(W) thực hiện việc dịch chuyển xoay vòng 4 byte thành phần (a, b, c,

d) của từ được đưa vào. Kết quả trả về của hàm RotWord là một từ gồm 4 byte thành

phần là (b, c, d, a).

KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr + 1)], Nk)

begin

i=0

while (i < Nk)

w[i] = word[key[4*i],key[4*i+1],

key[4*i+2],key[4*i+3]]

i = i + 1

end while

i = Nk

while (i < Nb * (Nr + 1))

word temp = w[i - 1]

if (i mod Nk = 0) then

temp = SubWord(RotWord(temp)) xor Rcon[i / Nk]

else

if (Nk = 8) and (i mod Nk = 4) then

temp = SubWord(temp)

end if

w[i] = w[i - Nk] xor temp

i = i + 1

end while

end

Các hằng số của mỗi chu kỳ hoàn toàn độc lập với giá trị Nk và được xác định bằng

Rcon[i] = (RC[i], {00}, {00}, {00}) với RC[i] ∈ GF(28) và thỏa:

RC[1]=1 ({01})

RC[i] =x ({02})•(RC[i-1]) = x(i–1)

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 mã khóa mở rộng. Như vậy, mã khóa của chu kỳ thứ i bao gồm

các phần tử w[Nb*i], w[Nb* i +1] ,…, w[Nb*(i+1)−1] . Các khóa vòng được miêu tả ở

hình 7.38.

Page 64: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.38. Miêu tả khóa vòng

Độ bền vững của thuật toán:

Khắc phục được điểm yếu của khóa DES

Thám mã vi sai (diffrential cryptanalysis): các tấn công vi sai là có thể nếu có thể dự

đoán được sự sai khác lan truyền trên tất cả các vòng mà có tỉ số lan truyền lớn hơn đáng

kể 21-n, với n là độ dài của khối dữ liệu. Trong AES với 4 vòng đưa ra, tỉ số lan truyền

khoảng 2-150 và với 8 vòng là khoảng 2-300. Vì vậy nó đủ nhỏ để chống lại thám mã vi sai.

Thám mã tuyến tính (linear cryptanalysis): với AES tương qua vào ra qua 4 vòng vào

khoảng 2-75 và qua 8 vòng là 2-150. Vì vậy nó đủ nhỏ để chống lại thám mã tuyến tính.

Ưu điểm và hạn chế:

Ưu điểm:

Phương diện thực hiện:

AES có thể được thực hiện để làm việc tại tốc độ rất nhanh (đối với một thuật toán mã

khối) trên bộ vi xử lý Pentium (Pro).

AES có thể được thực hiện trên một Smart card với 1 số lượng nhỏ của chỉ thị (code),

sử dụng ít RAM và tiêu tốn ít chu kì thời gian.

Vòng biến đổi song song bởi thiết kế, đây là một ưu điểm quan trọng cho các bộ vi xử

lý song song và dành cho phần cứng chuyên dụng.

Trong thuật toán không sử dụng các phép toán số học, nó không ảnh hưởng đến giới

hạn trên hoặc dưới của cấu trúc bộ vi xử lý.

Tính đơn giản thực hiện:

Thuật toán mã hoàn toàn “tự hỗ trợ”. Nó không sử dụng các thành phần của thuật toán

mã khác.

Tính bí mật của thuật toán không dựa trên sự không rõ ràng.

Thiết kế kín của thuật toán không cho phép có đủ cơ hội để che giấu một cửa sập.

Độ dài của khối dữ liệu:

128 bít là phù hợp với các yêu cầu hiện tại của các ứng dụng trong thực tế.

Khả năng mở rộng:

Page 65: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Khả năng sử dụng khóa với các độ dài khóa 128, 192, 256 cho phép thuật toán đáp

ứng được một phạm vi rộng về các mức độ bảo mật.

Giới hạn:

Phần giải mã ít phù hợp để thực hiện trên Smart card hơn phần mã hóa, nó yêu cầu

nhiều chỉ thị và số chu kì thực hiện nhiều???.

Trên phần mềm: mã và giải mã sử dụng các chỉ thị và/hoặc các bảng khác nhau.

Trên phần cứng: giải mã chỉ sử dụng một phần mạch đã được thiết kế thực hiện cho

mã hóa.

7.17 Các chế độ mật mã khối

Trong các phần vừa qua chúng ta trình bày các thuật toán mã khối. Rõ ràng để mã

một bản tin/bản mã có độ dài lớn hơn kích thước khối của thuật tóan, thì chúng ta phân

chia ra từng khối có kích thước với khối của thuật toán và tiến hành mã/giải mã theo thứ

tự.

Đối với thuật toán mã khối thì nó làm việc với các chế độ khác nhau. Các chế độ này

đảm bảo được các tính chất cần thiết của mã khối, ví dụ như tính ngẫu nhiên, khả năng

san bằng bản tin ban đầu đến một kích thước bất kỳ (để chiều dài bản mã không có quan

hệ với bản tin ban đầu), kiểm tra sự lan truyền của lỗi, tạo ra khóa chạy cho mã dòng…

vv.

Tồn tại 5 chế độ: Chế độ mã thay thế (ECB - Electronic Code Book), Chế độ móc nối

khối (CBC - Cipher Block Chaining), Chế độ hồi tiếp theo bản mã (CFB - Cipher

Feedback), Chế độ hồi tiếp theo đầu ra (OFB - Output Feedback) và chế độ đếm (CRT-

Counter). Để miêu tả các chế độ, chúng ta sử dụng các ký hiệu sau:

E(): thuật toán mã hóa tương ứng với mã khối.

D(): thuật toán giải mã tương ứng với mã khối.

n: kích thước khối tin ở dạng nhị phân.

-m các đoạn bản tin ban đầu, ở đây ta lưu ý:

- Nếu như bản tin thứ m có độ dài ngắn hơn kích thước khối chuẩn thì ta thêm

vào các bít để đạt kích thước chuẩn.

- Trong một số chế độ kích thước của đoạn bản tin bằng n, nhưng trong một số

chế độ khác có thể không vượt số n.

: m các đoạn bản mã, đây là kết quả ứng dụng các chế độ mã

xác định.

Page 66: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

LSBu(B),MSBv(B) tương ứng là u bít thấp, và v bít cao của khối B.

A||B là kệnh nối 2 khối A và B.

Chế độ mã thay thế (ECB - Electronic Code Book).

Một cách mã hóa (hay giải mã) đơn giản nhất là mã (giải mã) từng đoạn bản tin (bản

mã), các đoạn này độc lập nhau với một khóa K. Chế độ ECB xác định như sau:

Mã hóa ở chế độ ECB: .

Giải mã ở chế độ ECB: .

ECB là chế độ đơn giản nhất của mã khối, nó thường được sử dụng khi cần truyền an

toàn các thông tin có dung lượng nhỏ (ví dụ, mã hóa khóa). Chế độ này có nhược điểm là

độ an toàn không cao, vì rằng đối thủ có thể dựng lại các bản mã từ các bản mã gốc.

Nhưng khi hoạt động ở chế độ này, sơ đồ mã có khả năng dung lỗi chống lại lỗi của bản

mã (chỗ các bit bị thay đổi) và lỗi đồng bộ hóa (chỗ các bit có thể được thêm vào hoặc

mất đi). Ở chế độ này các thuật toán mã có thể hoạt động với tốc độ cao nhất (nó có khả

năng mã hóa song song các khối dữ liệu).

Chế độ móc nối khối (CBC - Cipher Block Chaining).

Ở chế độ này bản tin cũng được chia thành các khối . Trước khi mã hóa,

khối được cộng từng bit theo module 2 với khối mã Ci-1 vừa nhận được trước đó.

Trong trường hợp i=1 thì Ci-1 = C0 = IV là một hằng số, được gọi là véc tơ khởi tạo, nó là

n bít ngẫu nhiên, véc tơ này như một khối mã, nên cũng không bắt buộc là bí mật. Như

vậy, giá trị của khối mã Ci không chỉ phụ thuộc vào giá trị của khối rõ mà còn phụ

thuộc vào giá trị của khối mã trước nó Ci-1. Đây cũng là lời giải thích cho tên gọi chế độ

móc nối khối. Vì tính kết nối này nên kết quả của quá trình mã là một khối mã ngẫu

nhiên, và nó bao gồm m+1 khối dữ liệu n bít. Chế độ này được miêu tả ở hình 7.39. Ở

chế độ này được hiện bởi các lệnh sau:

Mã hóa ở chế độ CBC:

Đầu vào: IV, ;

Đầu ra: IV, ;

Giải mã ở chế độ CBC:

Đầu vào: IV, ;

Đầu ra: IV, ;

Page 67: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.39. Chế độ mã CBC

Chế độ CBC thường được sử dụng nhất của mã khối, nó thường được sử dụng khi

truyền các khối dữ liệu hoặc dùng để xác thực, vì sau khi giải mã, người nhận có thể thực

hiện lại quá trình mã hóa bản tin thu được (sử dụng cùng khóa K và vector IV của người

gửi), nếu khối CN thu được sau mã hóa trùng với khối CN trong bản mã nhận được từ phía

người gửi thì coi như bản mã không bị sai lệch trong quá trình gửi. Khi làm việc ở chế độ

này, các sơ đồ mã có nguy cơ bị lộ thông tin do kiểu tấn công “nghịch lý ngày sinh nhật”.

Với khả năng chống lại lỗi bản mã thì một bit lỗi truyền sẽ chỉ ảnh hưởng đến việc giải

mã của 2 khối tiếp sau. Chế độ này không có khả năng chống lại lỗi đồng bộ hóa. Nhược

điểm chính của các thuật toán khi hoạt động ở chế độ này là nó chỉ cho phép hoạt động

theo dòng liên tiếp, mà không có khả năng xử lý song song các khối dữ liệu.

Chế độ hồi tiếp theo bản mã (CFB - Cipher Feedback).

Ở chế độ này thì bản tin đầu vào có kích thước là s, với , với sự tham gia của

véc tơ khởi tạo khối với kích thước n bít ngẫu nhiên. Kết quả của quá trình mã quay trở

về đầu vào của thuật toán mã khối, xem hình 7.40 Véc tơ khởi tạo cũng đóng vai trò là

Mã hóa(E)

IV 1P

Mã hóa(E)

2P

2C

Mã hóa(E)

mP

mC

Giải mã(D)

IV

1C

1P

Giải mã(D)

2C

2P

1mC

Giải mã(D)

mC

mP

Page 68: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

một khối bản mã nên cũng không bắt buộc phải dữ bí mật. Chế độ này được thực hiện bởi

các tập lệnh sau:

Mã hóa ở chế độ CFB:

Đầu vào: IV, ;

Đầu ra: IV, ;

Giải mã ở chế độ CFB:

Đầu vào: IV, ;

Đầu ra: IV, ;

Hình 7.40. Chế độ mã CFB

Thanh ghi dịchn-s bít || s bít

n

Hàm mã hóa(E)

Chọn s bít cao

n

Đoạn bản tin

ss

Đoạn bản tin

Thanh ghi dịchn-s bít || s bít

n

Hàm mã hóa(E)

Chọn s bít cao

n

ss

Đoạn bản mã

s s

s

Quá trình mã hóa

Page 69: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Chúng ta thấy rằng qúa trình mã hóa và giải mã chỉ dùng hàm mã hóa, chính vì điều

này nên có thể dùng bất kỳ hàm một chiều nào. Chế độ CFB cũng giống như chế độ

CBC, đoạn bản mã phụ thuộc vào tất cả các đoạn bản tin ban đầu và véc tơ khởi tạo.

Chế độ CFB thường được sử dụng khi truyền các dòng dữ liệu hoặc dùng để xác thực.

Chế độ này có khả năng khôi phục chống lại lỗi bản mã và lỗi đồng bộ hóa sau khi truyền

một số lượng nào đó các khối dữ liệu.

Chế độ hồi tiếp theo đầu ra (OFB - Output Feedback).

Chế độ này khá giống với chế độ CFB, chỉ khác ở chổ là, kết quả khối quay lại đầu

vào của thuật toán mã khối, xem hình 7.41. Ở chế độ này thì véc tơ khởi tạo cần phải n

bít và là khối đầu vào. Nó được thể hiện bằng chuổi lệnh sau:

Mã hóa ở chế độ OFB:

Đầu vào: IV, ;

Đầu ra: IV, ;

Giải mã ở chế độ OFB:

Đầu vào: IV, ;

Đầu ra: IV, ;

Page 70: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Hình 7.41. Chế độ OFB

Ở chế độ này thì quá trình mã hóa và giải mã cũng chỉ dùng một hàm mã hóa, nên có

thể dùng hàm một chiều bất kỳ cho hàm mã. Và chúng ta thấy rằng kết quả chọn s bít để

cộng từng bít theo modulo 2 với bản rõ chỉ phụ thuộc vào khóa, và véc tơ khởi tạo, nên

nếu biết được vị trí đoạn bản tin thì có thể giải mã được mà không cần xét đến các đoạn

tin trước, đều này có thể giúp cho chúng ta sữa lỗi nếu quá trình mã bị lỗi, vì thế ở chế độ

này thường được sử dụng khi truyền dòng dữ liệu trên các kênh có. Tuy nhiên trong chế

độ này OFB cần phải sử dụng một kênh tín hiệu phụ để định kỳ truyền các véc tơ khởi

tạo (IV – Initialization vector) từ bên gửi đến bên nhận để có được khả năng tái đồng bộ.

Chế độ đếm (CTR-Counter).

Chế độ CTR thì các giá trị của đếm sẽ quay về đầu vào tương ứng với thuật toán mã

khối, đếm được khởi tạo lúc đầu. Chế độ này có thể biểu diễn bằng chuỗi lệnh sau:

Mã hóa ở chế độ đếm;

Đầu vào: , ;

Đầu ra: , ;

Giải mã ở chế độ đếm

Đầu vào: , ;

Đầu ra: , ;

Thanh ghi dịchn-s bít || s bít

n

Hàm mã hóa(E)

Chọn s bít cao

n

Đoạn bản tin

ss

Đoạn bản tin

Thanh ghi dịchn-s bít || s bít

n

Hàm mã hóa(E)

Chọn s bít cao

n

ss

Đoạn bản mã

s s

s

Quá trình mã hóa

Page 71: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Ở chế độ này thì có ưu việt hơn các chế độ CFB và OFB bởi vì chế độ này hoàn toàn

đơn giản, và cho phép sử lý song song.

Khi thực hiện các thuật toán mã trong các ứng dụng và dưới các điều kiện làm việc cụ

thể, thì người thiết kế phải nắm vững các khả năng hoạt động của thuật toán ở các chế độ

làm việc cụ thể. Bởi vì trong các chế độ hoạt động này, các thuật toán mã sẽ có khả năng

thực hiện các giải pháp mã khác nhau, và chúng sẽ nhận được các ưu điểm hoặc các

nhược điểm tương ứng với chế độ hoạt động đó. Phân tích các chế độ làm việc cụ thể của

các sơ đồ mã khối ta có thể thấy được các ưu nhược điểm của chúng như sau:

Trong chế độ không hồi tiếp, các khối dữ liệu có thể được mã hóa một cách độc lập

với các khối khác. Vì vậy trong chế độ này một số khối dữ liệu có thể được thực hiện mã

hóa song song. Còn trong chế độ hồi tiếp, các sơ đồ mã không có khả năng thực hiện mã

hóa khối dữ liệu tiếp sau trừ khi khối dữ liệu trước nó đã được xử lý xong. Vì vậy trong

chế độ này các khối dữ liệu phải được mã hóa một cách tuần tự. Tuy nhiên ở chế độ giải

mã các sơ đồ mã có thể hoạt động xử lý song song đối với cả chế độ hồi tiếp và không

hồi tiếp.

Dựa trên các đánh giá, ta thấy rằng việc mã hóa sẽ dữ liệu chủ yếu dựa trên các chế độ

hồi tiếp của mã khối như CBC và CFB. Còn với chế không độ hồi tiếp thường sử dụng

chế độ ECB để mã hóa khóa phiên trong quá trình phân phối khóa.

7.18 Phân tích kiểm tra và thống kê thuật toán

Chúng ta đã biết để đánh giá hiệu quả của một hệ mật chúng ta cần quan tâm đến 4

đặc điểm: Độ bền vững, tốc độ mã, đơn giản khi thực hiện và giá thành thấp. Điều chúng

ta quan tâm đầu tiên là độ bền vững của hệ mật. Khi chúng ta tạo ra một hệ mật mới làm

thế nào để biết được nó bền vững hay không bền vững? Để trả lời câu hỏi này chúng ta

có 2 phương pháp xác định: Phân tích hệ mật với các phương pháp tấn công, phân tích

thống kê thuật toán. Vì các phương pháp tấn công chúng ta không thể lường hết các

phương pháp mới và có nhiều thuật toán thám mã, nên cách hiệu quả để đánh giá hệ mật

là phân tích và thống kê thuật toán.

Tiêu chí đánh giá tính chất “hiệu ứng thác lũ”

Để phân tích kết quả xử lý thống kê thuật toán mã khối tổ chức NESSIE (New

European Schemes for Signatures, Integrity and Encryption) của Châu Âu đề xuất những

tiêu chí sau đây:

Page 72: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

1. Số lượng bít ở đầu ra bị thay đổi khi thay đổi một bít của véc tơ đầu vào.

2. Bậc biến đổi hoàn toàn.

3. Bậc hiệu ứng thác lũ.

4. Bậc ứng với hiệu ứng thác lũ chặc chẽ.

Đặt U(i) = U Ei – là một véc tơ nhị phân nhận được khi thay đổi một bít thứ i của véc

tơ U. Lúc này véctơ nhị phân Y(i) = F(U(i)) F(U) được gọi là véctơ thác lũ theo thành

phần i. Đối với một mã khối thì U = X║K. Để xem các tiêu chí, chúng ta giả sử U có

chiều dài là n và Y có chiều dài là m.

Ở tiêu chí 2 và 4 chúng ta sử dụng ma trận phụ thuộc ║aij║n×m, với:

.

Ma trận ║aij║n×m cho chúng ta biết sự phụ thuộc của bít thứ j của véctơ đầu ra vào bít

thứ i của véctơ đầu vào. Lúc này thì bậc biến đổi hoàn toàn được đánh giá qua công thức

sau:

.

Còn bậc tương ứng với tiêu chí thác lũ chặc chẽ xác định theo công thức sau:

Với N = #U = #{U}.

Để nhận được đánh giá một cách chính xác cần phải lựa chọn tất cả các giá trị của

véctơ U, thế nhưng véctơ U có kích thước lớn thì không thể lựa chọn tất cả hết các giá trị

của nó, để tính giá trị gần đúng chúng ta nên dùng phương pháp Monte Carlo.

Ở tiêu chí 1 và 3 chúng ta sử dụng ma trận khoảng cách Hamming ║bij║n×m, với:

.

Số lượng bít trung bình thay đổi khi thay đổi một bít của véctơ đầu vào được đánh giá

theo công thức sau:

Page 73: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

.

Còn bậc hiệu ứng thác lũ được xác định theo công thức sau:

.

Đánh giá ảnh hưởng các bít của bản rõ đối với bản mã

Các tiêu chí đánh giá ảnh hưởng các bít của bản rõ đối với bản mã nhằm xem xét

điểm yếu của thuật toán, các tiêu chí này có thể sử dụng phương pháp thám mã trên cơ sở

lựa chọn bản rõ hoặc hay phương pháp thám mã vi sai. Trong trường hợp này véctơ thác

lũ Y(i) được hình thành theo véctơ đầu vào U = X║K и U(i) = X(i)║K, где X(i) = X Ei.

Trong số các tham số đưa ra các giá trị: q là số lượng khóa được chọn, t là số lượng

bản tin được chọn thì N = qt. Việc lựa chọn q và t phụ thuộc vào giá trị của n và m. Ma

trận phụ thuộc ║aij║n×m và ma trận khoảng cách Hamming ║bij║n×m có dạng sau:

Để tạo kết quả chính xác thì việc lựa chọn khóa và bản tin cần phải ngẫu nhiên.

Trong trường hợp này thì véctơ thác lũ Y(i) được hình thành theo véctơ đầu vào U =

X║K và U(i) = X║K(i), где K(i) = K Ei. Trong các tiêu chí thì ma trận phụ thuộc ║aij║n×m

và ma trận khoảng cách Hamming║bij║n×m có dạng sau:

Chúng ta cần chú ý rằng các tiêu chí đã xem xét là công cụ hiệu quả đối với việc xem

xét điểm yếu của thuật toán, cũng như xem hiệu quả của cách miêu tả khóa, và qua đây

chúng ta biết được thuật toán chúng ta nên chọn số vòng là bao nhiêu để đạt hiệu quả.

Chú ý: Ngoài ra để thiết lập quan hệ giữa các mô hình lý thuyết và thực hành người ta

còn đưa ra tiêu chí ở đây chúng ta không xem xét.

7.19 Thám mã véc cạn khóa

Giả sử rằng kẻ gian có được một hoặc một số cặp (x,y). Gỉa sử rằng đối với một cặp

(x,y) bất kỳ thì tồn tại một khóa k duy nhất thỏa mãn . Chúng ta sắp xếp tập hợp

không gian khóa và lần lượt kiểm tra các khóa từ tập khóa K xem sự thỏa mãn biểu thức

. Nếu như xem một lần kiểm tra khóa là một lệnh thì việc véc cạn khóa

Page 74: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

cần #K lệnh, ở đây #K là số lượng phần tử của tập K. Giả sử rằng khóa k trong sơ đồ mã

hóa được chọn ngẫu nhiên và khả năng như nhau từ tập K. Như vậy xác suất đoán được

khóa k là , và độ khó của phương pháp véc cạn sẽ bằng 1. Cho nên để đánh giá độ

khó của phương pháp ta chọn kỳ vọng toán học của độ lớn ngẫu nhiên , ở đây là số

phép thử trước thời điểm tìm được khóa sử dụng. Bởi vì là độ lớn ngẫu nhiên phân bố

đều, nên M( )= .

Thuật toán véc cạn cho phép thực hiện song song, bời vì điều này nên có thể tăng tốc

đáng kể quá trình tìm khóa. Có hai hướng trong quá trình tính toán khóa song song.

Một là, xây dựng dây chuyền. Cho thuật toán của biểu thức được biểu diễn

dưới dạng dây chuyền cố định các lệnh .

Chọn N quá trình , sắp xếp theo thứ tự và cho quá trình thứ i hoàn thành

3 lệnh như nhau theo thời gian:

a. Nhận dữ liệu thứ (i-1) quá trình;

b. Hoàn thành lệnh ;

c. Chuyển dữ liệu cho quá trình thứ (i+1);

Như vậy dây chuyền gồm N quá trình được liên kết nối tiếp nhau làm việc song song,

đồng bộ làm việc với tốc độ , là tốc độ hoàn thành 1 lệnh của quá trình.

Hướng thứ hai là tập khóa K được phân nhỏ ra thành các tập không giao nhau

. Hệ thống gồm Q máy thực hiện việc lựa chọn khóa, máy thứ i thực hiện

việc lựa chọn khóa từ tập . Hệ thống ngừng làm việc nếu như có một máy tìm

được khóa. Điều phức tạp nhất của phương pháp là tổ chức phân chia tập khóa. Thế

nhưng nếu tổ chức việc tìm kiếm khóa như vậy thì trong mỗi lần thí nghiệm thì một trong

N quá trình sẽ trở nên ngẫu nhiên, thời gian thí nghiệm sẽ tăng nhưng tốc độ của sơ đồ lại

tăng lên đáng kể. Số bước thí nghiệm thực hiện N quá trình trong trường hợp này là .

Việc thực hiện xử lý song song như vậy phải có các cách giải quyết khác nhau. Một

trong các cách được ưu tiên đó là tạo ra virut máy tính để phân bố chương trình trong

mạng nội bộ.Virut cần sử dụng chu kỳ dừng của máy tính để thực hiện việc tìm kiếm theo

tập khóa. Sớm hay muộn thì một trong các máy nhiểm virut sẽ tìm được khóa cần tìm.

Với sự lớn của công suất máy tính cũng như tốc độ lây lang virut thì khả năng thành công

của phương pháp này ngày một tăng.

Page 75: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

7.20 Thám mã bằng phương pháp thống kê

Mục đích của phương pháp thám mã thống kê là xử lý thuật toán nhằm tìm khóa chưa

biết (hoặc một phần khóa) . Chúng ta xem các nguyên tắc cơ bản và định nghĩa của

phương pháp thống kê đối với mã khối.

Thực hiện phương pháp thám mã thống kê nhằm xác định khóa mật đối với mã khối

cho phép nhận được đánh giá hiệu quả thuật toán hơn là phương pháp véc cạn khóa. Đầu

vào là mốt số cặp (Xi,Yi), i=1,…,N bản rõ và bản mã, bản mã thu được bằng cách ứng

dụng ánh xạ F với khóa k. Các cặp như vậy được gọi là “tư liệu” và ký hiệu là M. Dung

lượng của tư liệu tương ứng với số cặp (Xi,Yi): . Giả sử rằng các bản rõ Xi, i=1,

…,N được chọn ngẫu nhiên, đồng khả năng và độc lập từ không gian .

Quá trình thống kê phân loại là phần quan trọng nhất của phương pháp phân tích

thống kê, quá trình này dùng để tìm các tham số chưa biết theo quan sát ngẫu nhiên. Hàm

phân bố xác suất để quan sát phụ thuộc vào tham số mật này. Ý tưởng của quá trình

thống kê phân loại thể hiện ở chổ, nếu như sự phận bố xác suất này mà khác nhau thì khi

số lượng quan sát đủ lớn thì có thể xác định được định luật phân bố quan sát và từ đó có

thể xác định tham số cần tìm.

Chúng ta ký hiệu tập hợp ở đó nhận giá trị của tham số chưa biết là .

Mỗi quá trình thống kê phân loại được xác định sự phân chia tất cả không gian quan

sát M ra T phần không giao nhau: với

. Vùng gọi là vùng chọn nghiệm. Đối với từng vùng Mi

quá trình thống kê phân loại cũng xác định danh mục thứ thự s’ thành phần của tập hợp

, lúc này với .

Để xác định thành phần chưa biết từ tập cần thực hiện các lệnh sau. Đầu tiên theo sự

quan sát nhận được cần xác định số thứ tự vùng chọn nghiệm i(m). Sau đó lựa

chọn lần lượt các tham số từ tập và kiểm tra xem giá trị của

tham số thứ j (j=1…s’) có phải là cần tìm hay không.

7.21 Thám mã vi sai

Thám mã vi sai là một trong các phương pháp phân tích cơ bản và hiệu quả nhất đối

với mã khối. Phương pháp mã vi sai đươc đưa ra năm 1990 bởi các nhà nhà toán học E.

Biham và Shamir. Đây là phép tấn công với việc chọn bản rõ chọn lọc, để tìm ra khóa

mật hay một phần khóa mật.

Page 76: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Định nghĩa: Cho cặp hai véc tơ X, X* . Khoảng cách giữa hai véc tơ hay

còn gọi là hiệu giữa hai véc tơ được xác định bằng lệnh XOR: .

Định nghĩa: Vi sai của vòng mã thứ i được xác định bằng cặp véc tơ ( ), sao cho

cặp bản rõ (x,x’) có hiệu bằng có thể đi qua i vòng mã, đầu ra là cặp bản mã (y,y’) với

hiệu của chúng là .

Xác suất vi sai của vòng mã thứ i- đó là xác suất có điều kiện, sao cho hiệu của

cặp bản mã (y,y’) sau i vòng mã bằng với điều kiện là cặp bản rõ tương ứng (x, x’) có

hiệu khoảng cách là , khi bản rõ x và các khóa k(1), k(2),…,k(i) sử dụng tương ứng

trong các vòng 1,2,…,i là độc lập và đồng khả năng, có nghĩa là

,

lúc này xác suất phân bố vi sai đối với từng vòng là không đổi và không phụ thuộc vào

vòng trước.

Giá trị vi sai ở đầu ra của vòng mã thứ i được sử dụng để tìm kiểm khóa con của vòng

mã cuối cùng tức là vòng thứ i+1 bằng cách như sau:

Đối với từng cặp bản rõ –mã ta giả sử rằng giá trị vi sai đầu ra của vòng mã thứ i là . Tiếp

theo để giá trị này và giá trị của cặp bản rõ –mã tìm được những giá trị có thể của khóa con trong

vòng mã cuối i+1 cùng, tức là hình thành một số tập hợp khóa con mà nó thỏa mã điều kiện trên.

Lúc này thì một phần trong các tập hợp là khóa đúng. Đối với tất cả tập hợp giá trị có thể của

khóa vòng, chúng ta thiết lập bảng tần số xuất hiện của chúng. Tấn công sẽ thành công khi giá trị

đúng của khóa vòng xuất hiện thường xuyên hơn các giá trị khác.

Trong trường hợp này có thể tính toán biểu thức tương quan giữa số lương cặp giá trị

giả sử đúng và số lượng trung bình các phương án có thể của khóa vòng trong bảng tần

số.

Biểu thức này được gọi là biểu thức tín hiệu – tiếng ồn S/N (Signal to noise). Nếu như

kích thước bảng phương án của khóa vòng là , ở đây l là chiều dài của khóa vòng, còn

số lượng trung bình các phương án là thì biểu thức S/N được viết:

(7.1)

Biểu thức (7.1) ảnh hưởng rất lớn lên số lượng cặp bản mã và rõ đúng mà số lượng

này cần thiết để xác định một khóa vòng.

Thuật toán thám mã vi sai

Page 77: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Quá trình cơ bản của thuật toán thám mã vi sai r vòng mã sử dụng bản rõ chọn lọc,

diễn ra như sau:

Đầu vào: thuật toán mã hóa, bản rõ chọn lọc và bản mã tương ứng.

Đầu ra: khóa.

1. Ở bước đầu tiên của tính toán chúng ta tìm tập hợp vi sai của cho vòng

mã thứ , với , sao cho xác suất lớn nhất hoặc

gần lớn nhất. Lúc này bản rõ X và tất cả khóa con đối với vòng

mã là độc lập và đồng khả năng. Sắp xếp chúng theo thứ tự tăng dần của xác suất.

2. Đối với một bản rõ bất kỳ x chúng ta tính bản rõ x’ sao cho hiệu khaỏng cách giữa

x và x’ bằng . Mã hóa bản rõ x và x’ trên khóa cần tìm và sau r vòng thu được cặp bản

mã . Giả sử rằng đầu ra của vòng mã thứ hiệu khoảng cách của các bản

mã có xác suất lớn nhất: . Từ bộ ba chúng ta tìm ra tất

cả giá trị có thể của khóa .

3. Lặp lại bước 2 cho đến khi có một hoặc một số giá trị của khóa con к (r) không

ngừng xuất hiện thường xuyên các giá trị khác. Chúng ta xem khóa này hoặc một tập

khóa này là nghiệm mã hóa đối với khóa của vòng mã cuối cùng.

4. Chúng ta lặp lại các bước từ 1-3 đối với vòng mã kề cuối, lúc này giá trị

được tính bằng cách giải mã bản mã trên khóa tìm được . Chúng ta thực hiện tương tự

để tìm ra các khóa vòng còn lại.

Hiệu quả của thuật toán phụ thuộc vào độ lớn và sự phân bố tập hữu hạn vi sai sau

vòng mã, có nghĩa là biểu thức S/N. Xác suất vi sai càng nhỏ và càng phân bố đều

giữa chúng thì càng khó xác định giá trị khóa .

Từ thuật toán chúng ta thấy rằng, điều kiện cần để thám mã vi sai r vòng mã thành

công là tồn tại vi sai của vòng mã thứ (r-1), mà xác suât xuất hiện của chúng lớn hơn rất

nhiều so với 2−m.

Điều này có nghĩa là, để phân tích khả năng thực hiện tấn công vi sai, cũng như đánh

giá hiệu quả của phương pháp, cần phải biết được giá trị lớn nhất của xác suất vi sai sau

một số vòng mã.

Page 78: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Xác suất lớn nhất của vi sai được sử dụng để xác định giới hạn dưới của độ phức tạp

tấn công vi sai và có thể chứng tỏ rằng r vòng mã sẽ không bị tổn thương bởi phép tấn

công này.

Đối với mật mã có vi sai không phụ thuộc vào sự lựa chọn bản rõ, nếu các khóa con

của các chu kỳ độc lập nhau thì dãy các khoảng cách sau từng chu kỳ tạo thành chu trình

Markob. Lúc này xác suất thu được vi sai của vòng thứ s được xác định:

P( y(s)= s | x= )= .

Đối với cặp vi sai đã cho xác suất để thu được cặp này lớn hơn nhiều so với

:

P( y(i)= | x= )= ,

với m là kích thước của khối mã.

Độ phức tạp bẻ khóa của vòng thứ r mật mã là Q(r) được xác định bắng số lệnh mã sử

dụng trong qúa trình tìm khóa:

Q(r) 2/ (Pmax - 1/(2m-1)),

ở đây:

Pmax=max( )max( )(P( y(r-1)= | x= )),

Trong số đó nếu Pmax 1/(2m-1), thì việc tấn công được xem là không thành công.

7.22 Thám mã tuyến tính

Ý tưởng của phương pháp tuyến tính lần đầu tiên được chuyên gia người Nhật M.

Matsu đưa ra năm 1992. Phương pháp này được cho là một trong các phương pháp phân

tích hiện đại và hiệu quả đối với mã khối. Phương pháp dựa trên tập bản rõ và bản mã

tương ứng để tìm ra khóa mật.

Thám mã tuyến tính là một trường hợp của phương pháp thám mã thống kê tổng quát

trên cơ sở sử dụng biểu thức sau:

, (7.2)

Page 79: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

ở đây a, b Vn, c Vm, 0≤ t1 ≤ t2 ≤ r (ở đây cặp véc tơ (a, b) được gọi là đặc trưng tuyến

tính) . Lệnh là tích vô hướng giữa hai véc tơ a và b cùng kích thước.Ở

phương pháp thám mã tuyến tính chỉ sử dụng biểu thức kiểu (7.2), xác suất để thu được

biểu thức này khác với ½ và có thể viết dưới dạng:

21,,, )()( 21 cKbYaYP tt , (7.3)

ở đây 21

21

.số ε gọi là ưu thế (deviation, bias).

Hiệu quả của phương pháp thám mã tuyến tính càng lớn nếu như trị tuyệt đối của ε

càng lớn. Cho nên khi xây dựng một thuật toán cụ thể xác định khóa bằng phương pháp

thám mã tuyến tính thì nhiệm vụ đặt ra là tìm các véc tơ a, b Vn, c Vm, để giá trị tuyệt

đối của có thể lớn nhất: max,,

||cba

. Lúc này thì hiệu quả và độ khó của phương pháp

được xá định bằng độ lớn đã cho |ε|, có nghĩa là để xây dựng các véc tơ a, b Vn, c

Vm, cần biết đánh giá |ε| trong biểu thức (7.3).

Chúng ta xem một phương án đơn giản nhất (không phải hiệu quả nhất) của thám mã

tuyến tính – đó là thuật toán xác định một bít khóa, được gọi là thuật toán 1 Masui. Thuật

toán này sử dụng biểu thức (7.2) với t1=0 và t2=r, có nghĩa là biểu thức (7.2) được viết lại

dưới dạng bản rõ và bản mã như sau:

,

ở đây cặp véc tơ (Xi, Yi) là căp bản rõ và bản mã mà thám mã biết. Phương pháp thám

mã vi sai tương ứng với phương án đã cho xác định tổ hợp tuyến tính các bít khóa.

Tập hợp công sức được tính:

Quá trình phân loại thống kê phân chia tất cả không gian quan sát M ra hai phần M 0

và M1 ( : Đối với vùng M0 tương ứng với , còn vùng M1 ứng với

. Thuật toán sử dụng nguyên tắc sự hợp lý cực đại: Nếu như và trong

biểu thúc (7.3) hoặc và trong biểu thức (7.3) , thì thuật toán đưa ra giá trị

, trong trường hợp ngược lại thì . Các bít khóa còn lại xác định theo

phương pháp véc cạn.

7.23 Hệ mã dòng RC4

Page 80: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

Thuật toán RC4.

Đây là một hệ mã dòng, với chiều dài khóa biến đổi, tác giả của nó là Ronald Rivest,

được nêu ra năm 1987.

Hạt nhân của thuật toán là thủ tục tạo khóa dòng, xem hình 7.42, hàm này tạo dãy bít

sau đó cộng với bản tin theo modulo 2 với bản rõ ta thu được bản mã, và khi giải mã thì

cũng sinh ra mã dòng, rồi cộng với bản mã theo từng bít ta thu được bản rõ ban đầu. RC4

làm việc ở chế độ OFB. Gọi k là giá trị mã dòng được sinh. Việc sinh mã dòng được thực

hiện trên cơ sỡ khối hoán đổi kích thước 8x8 : S[0],...S[255]. Khối hoán đổi là phép hoán

vị các số 0,…, 255 phụ thuộc vào khóa, được thực hiện bởi các lệnh sau:

1.

2.

3. Hoán đổi giá trị của S[i] và S[j]

4. Tính tổng S[i] và S[j], gán cho t: t= (S[i] + S[j]) mod 256

5. k=S[t].

Hình .7.42. Sơ đồ tạo khóa dòng k

Trong quá trình sử dụng, bộ đếm i sẽ làm cho nội dung của khối S thay đổi chậm, còn

bộ đếm j sẽ đảm bảo sự thay đổi này là ngẫu nhiên.

Byte k được tạo ra cộng với byte của bản rõ để tạo ra byte bản mã.

Một phần chính của thuật toán nữa là khởi tạo khối hoán đổi S, việc khởi tạo được

thực hiện các bước sau:

2. Gán cho mỗi phần tử giá trị bằng chỉ số của nó: S[0]=0,…,S[255]=255.

3. Tạo một mảng key gồm 256 phần tử, mỗi phần tử có kích thước 1 byte. Điền đầy

mảng key bằng các byte của khóa K, nếu mảng key chưa điền đầy thì lặp lại mốt

số bye của khóa K.

4. Xáo trộn khối S:

a. i = 0..255

b. j = (j + S[i] + key[i]) mod 256

Page 81: Chương 7fit.mta.edu.vn/files/FileMonHoc/Chương 7 - Mật mã... · Web viewMẬT MÃ KHÓA ĐỐI XỨNG Lý thuyết cơ bản của Shannon Nhiều người cho rằng kỷ

c. Hóan đổi giá trị: S[i] ↔ S[j]

Những ưu điểm chính của RC4

Thuật toán đơn giản. Ý nghĩa của từng bước rõ ràng, logic. RC4 tỏ ra an toàn đối với cả 2 phương pháp thám cơ bản là thám tuyến tính và

thám vi phân (chưa có công trình nào về thám RC4 được công bố) . Số trạng thái

mà RC4 có thể có là 256!×256×256 » 21700. Tốc độ mã đạt rất cao. Ví dụ so với DES thì RC4 nhanh gấp 10 lần. Có thể khía quát thuật toán trên cơ sở từ có chiều dài lớn và kích thước khối hoán

đổi lớn, ví dụ 16x16.

7.24 Mã dòng WAKE

Đây là thuật toán mã dòng, tác giả của WAKE là Devit Uyler. Ở đầu ra nhận được

chuỗi từ 32 bít. WAKE làm việc ở chế độ CFB – từ trước của bản mã được dùng để tạo

ra từ tiếp theo bằng chuỗi khóa.

Trong thuật toán sử dụng khối hoán đổi đặc biệt S gồm 256 từ 32 bít. Ở đây các bytes

cao của từ là hoán đổi các số từ 0 đến 255, còn 3 bytes thấp được chọn ngẫu nhiên.

Ban đầu khối hoán đổi được khởi tạo trên cơ sở khóa. Sau đó 4 thanh ghi A, B, C và

D được khởi tạo bằng giá trị ban đầu, cũng phụ thuộc vào khóa: . Từ tiếp theo

của khóa dòng nhận được theo công thức .

Sau bước này thì giá trị của các thanh ghi bị thay đổi:

Với

Thuật toán này có tốc độ lớn mặc dầu nó không vững chắc với phép tấn công theo

phương pháp chọn bảng rõ ban đầu.