1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố

80 539 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 7 Kiểm tra và Xây dựng Số Nguyên tố
Trường học Đại học Bách Khoa Hà Nội
Chuyên ngành Kỹ thuật lập trình
Thể loại Tài liệu kỹ thuật
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 80
Dung lượng 2,26 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ở đâ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ậnnó 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 đổivới sự tham gia của kh

Trang 1

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 ClaudeShannon, 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 ofSecrecy 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 ofCommunication - Lý thuyết toán học trong truyền thông - cùng với tác giả WarrenWeaver 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ậpmộ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ạnnhư 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ếptụ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ồnkhó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: F K ( X)

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:

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?

Trang 2

Để 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

) ( / ) ( ) ( )

mã Y; P Y ( X)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 P Y ( X) và P ( X)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êuthô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 racá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 đổinhỏ 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

Trang 3

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ảibằ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:

n i

i p i p K

1

)(log)(

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ậncủ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

i p i

p x

H

1

2 ( )log)()

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

Tạo ra khóa mật

Trang 4

ở đâ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 đổivớ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ế,…)

x x x

x ( 1, 2, , )  ( 2 ) thành một dãy N bit

N

y y

y

y ( 1, 2, , )  ( 2 ) 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

) ,

( k x F

ở đâ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ựngtrê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ễnchú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àotập, 1 , 2 , ,n, lệnh hoán đổi  có dạng sau:

2 1

,

ở đâ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 đầucần hoán đổi tương ứng,i, i1 , 2 , ,n( i  j, i  jkhi i  j), tức là vị trí thứ  1 đổi

Trang 5

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

Ví dụ:





 4 4 3 2

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

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ễnsau:

) 4 )(

1 , 3 , 2 ( ) 4 )(

3 , 2 , 1

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ộtnhó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ử  '   ' :  ' S(  )

Đối với  1,2, ,n lệnh hoán đổi có dạng:





2 ' 1 2 1 n n

 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:





 2 4 4 3 2 1

S

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àmsố…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ánbít tốt

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

Trang 6

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ớimạ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ítqua 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áchxâ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 rakhóa dòng hay khóa dịch hay gamma được cho bằng chuỗi bít k1,k2, ,k i … Chuỗi bítnày sẽ cộng với chuỗi bít bản rõ p1,p2, ,p i, để nhận được chuỗi bản mã:

i i

Trang 7

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à

ở đây P i 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ằngZ=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:

Trang 8

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 đượcgamma 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 FeistelTrong 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 đượcchọ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)

KR

Trang 9

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

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à

Ư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ầncứ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ênlà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ạngFeistel 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ánhvới các kiểu của nó biểu diễn ở hình 7.7, 7.8 và 7.9

Trang 10

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

Trang 11

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

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áchà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ómtương ứng và X1, X2là các véctơ đầu vào, K1, K2là các khóa, Y1,Y2 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ậttoá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ànchỉ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 quantrọ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ênmộ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ậttoá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ệnchú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émquan 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

Trang 12

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 chophép nhận được tốc độ mã hóa cao nhất và đảm bảo khả năng độc lập biến đổitừng bit và byte, và cho phép giảm khả năng lỗi khi truyền bản mật mã quakê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 gammaphụ 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ãinhất Mã khối đảm bảo được tính an toàn cao ở chế độ độc lập mã hóa từngkhố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ảomậ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ủafile 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 ánthự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 độ

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ươngphá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ườnghợ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ôngtin 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ốicá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ó

Trang 13

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ệmcũ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ớiviệ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ó chocá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ướcnà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ếucầ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ầncứ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ạchkết quả phân tích để kiểm tra toàn diện và tương ứng với lý thuyết Ngoài raviệ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ântí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ủakhó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ộngtốt thì sẽ tránh tấn công của thám mã nhằm đạt được khóa mật Thế nhưngphương pháp này có nhược điểm là sẽ làm giảm tốc độ mã trong ứng dụng ở

Trang 14

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ượngtà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ậttoán chuẩn liên xô 28147-89, chúng ta sẽ xem chi tiết thuật toán này ở phầnsau Nhược điểm của phương pháp này là khóa vòng phụ thuộc rõ ràng vàokhó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ệntrự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ùngcho 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ấthiế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ưngkhi 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àinguyê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ờivớ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ậnnghị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

Trang 15

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ộtphươ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ênphạ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ấtnhiê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ôngthể 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:

) , ( )

Trang 16

Ở đâ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 x0 chia thành hai khối con có độ dài bằng nhau

có một khóa k i ,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 DESDiễ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:

Trang 17

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 S1 ,S2 , ,S8, mỗi bảng S có 64 phần tử,xếpthà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ỗibảng hoán đổi S ilà 6 bít b1b2b3b4b5b6, thì đầu ra sẽ là 4 bít, cách xác định 4 bit

đó như sau: 2 bit b1b 6xác định thứ tự hàng của bảng S, 4 bít b2b3b4b5xác địnhcột của bảng S, và phần tử cần xác định tương ứng có hàng thứ b1b6và cột thứ

5

4

3

2b b b

b 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:

Trang 18

1 ,k , ,k

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

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 IP 1 của hoán vị IP ta thu được 64 bít mã IP 1 tính ra như sau:

Trang 19

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

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 tathực hiện hoán vị cố định PC1, với PC1 được cho ở bảng dưới:

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

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

Hai khối con C i1 ,D i1 bít thực hiện dịch vòng trái shifts i bít, với mảng

 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 1

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 k i chiều dài là 48 bít, PC2 được cho ở bảng sau:

Trang 20

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

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ệndạ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ácnhau để 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

thu đượcC1,C1giải mã bởiK1ta 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 K1 K2 K2thì 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 sovớ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ênphầ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 đượcnhược điểm của DES DESX được xác định như sau:

)) (

( )

Trang 21

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ênkhối dữ liệu M sẽ cộng theo modulo 2 với khóa K1theo từng bít, kết quả thu được được

mã hóa bỡi DES với khóa K và cuối cùng lại cộng từng bít theo modulo 2 với khóa K2.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 đơngiả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ớnhơ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ớikhó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ình7.15

Hình 7.15 Sơ đồ thuật toán chuẩn Liên Xô GOST 28147-89Thuậ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ítkhác, nó bao gồm 8 bảng S0 ,S1 , ,S7, mỗi bảng có 16 phần tử, mỗi phần tử 4 bít, 8bả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

S <<<11 1

Q

S <<<11 2

Trang 22

Các khóa con Q icó 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 conK i Và cách sử dụng các khóa con Q i,Q i' tương ứng với qúatrình mã hóa và giải mã được miêu ta trong bảng sau

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à 1vò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 Q i,Q i' theo modulo 232

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éphoán đổi S ita 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àncao 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óathích hợp Chúng ta xem sơ đồ thuật toán Blowfish ở hình 7.16

Trang 23

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

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

Trang 24

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ềudài 32 bít

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:

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

Trang 25

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:

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 connà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ụngtrong trường hợp sản phẩm được dành để xuất khẩu Ở đây chúng ta sẽ không xem xétthủ 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ảnggiả 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 rabằ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]]

Trang 26

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, 16vòng “xáo trộn” (mixing round) và và 2 vòng “nghiền nát” (mashing round), chúng ta đitì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

Hình 7.18 Thủ tục MIX - transformationVò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+1R[1] = R[1] + K[j] + (R[0] ^ R[3]) + (NOT (R[0]) ^ R[2])R[1] = R[1] <<< 2

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

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

j=j+3

Mashing round.

Trang 27

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:

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 trongquá 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] >>>3R[2] = R[2] - K[j] - (R[2] ^ R[0]) - (NOT (R[1]) ^ R[3])j=j-1

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

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

Trang 28

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 modulo232

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íchthướ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ỗikhó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óacon đượ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

Trang 29

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

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:

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 2w)

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ôngchia 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 bytecủ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 wthì có một số bits bên phải của L sẽ giữ nguyên bằng 0

Bước 3.

Trang 30

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ủamả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ầnduyệt 3 lần mảng lớn nhất trong hai mảng L, S:

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ầnphả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

Trang 31

Thuật toán

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

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

For i=1 to r do begin

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

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

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à

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 2w);

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

end

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

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

Ư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ápthá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

Trang 32

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 (LinearCryptanalysis) cho thấy RC5 tỏ ra an toàn khi số chu kỳ không nhỏ hơn 6 Rivest khuyếncá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ôngnghệ 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ảibiê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ệntrong 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ánIDEA 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:

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

Trang 33

Hình 7.21 Sơ đồ miêu tả IDEAVò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 IDEAQuá 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 X1 ,X2 ,X3 ,X4, 52 khóa con k1 ,k2 , ,k52

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

2 i

X X3 ,i 1 X4 ,i 1

1 ,

X X3,8 X4,8

9 , 1

X X2,9 X3,9 X4,9

Trang 34

) 1 2 (mod

1 , 1

Y ;Y2  (X2,ik2i)(mod 2 )

) 2 )(mod

3 , 3

4 , 4

1 2 )(mod

X1,i1 1 ;X2,i1Y3 f ;X3,i1Y2e;X4,i1 Y4e

End

) 1 2 (mod

) 2 )(mod (

) 2 )(mod (

) 1 2 (mod

16 52

8 , 4 9

,

4

16 51

8 , 2 9

,

3

16 50

8 , 3 9

,

2

16 49

8 , 1 9

k X X

k X X

k X X

Đầu ra là 64 bít bản mã X1 , 9X2 , 9X3 , 9X4 , 9

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 đượcchuyể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à u1 ,u2 , ,u52

40 38 39

22 20 21

16 14 15

Trang 35

9 k49k50k51k52 K[23 86] u49u50u51u52 1

4 3 2

1

k k k k

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ựchiệ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ộngmod2 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ớitấ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ấtbề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ậttoá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ủathuậ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óa2> 8 vòng trộn tới3> 8 vòng mã tới4> 8 vòng mã lùi5> 8 vòng trộn lùi6> Trừ khóa

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

Trang 36

Hình 7.23 Sơ đồ thuật toán MARSGiai đ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ớiGiai đoạn trọn lùi cũng có 8 vòng, được cho như hình 7.25

Trang 37

Hình 7.25 Sơ đồ trộn lùiCá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 0và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àmS1 thực hiện như sau: y=S-boxes[1 & x] Cách chọn x được đưa ra như sau, từ nhánhnguồ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

Trang 38

Hình 7.26 Sơ đồ giai đoạn mã tới và mã lùiHà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ảngS-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

Trang 39

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

4 i= lowest 9 bits of 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à:

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ủamảng khóa mở rộng K[]:

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

Trang 40

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ừ đượcchọ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ặcbằ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ừ wdự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êntụ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ácbit 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ấtcủ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 bitthứ 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âydự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ácgiả 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ơnhai 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ấtcủ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ả trongK[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àytrong 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ãymườ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ụngphươ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

Ngày đăng: 26/04/2014, 20:54

HÌNH ẢNH LIÊN QUAN

Hình 7.1. Mô hình truyền tin Shannon - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.1. Mô hình truyền tin Shannon (Trang 2)
Sơ đồ tổng quát của hệ mã đối xứng được miêu tả ở hình 7.2. - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Sơ đồ t ổng quát của hệ mã đối xứng được miêu tả ở hình 7.2 (Trang 3)
Hình 7.3.Mạng hoán vị thay thế S_BOX 32/22 - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.3. Mạng hoán vị thay thế S_BOX 32/22 (Trang 6)
Hình 7.4. Quá trình mã hóa gamma - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.4. Quá trình mã hóa gamma (Trang 7)
Hình 7.6. Sơ đồ 1 vòng Feistel - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.6. Sơ đồ 1 vòng Feistel (Trang 8)
Hình 7.7. Cấu trúc mở rộng mạng Feistel loại 2 - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.7. Cấu trúc mở rộng mạng Feistel loại 2 (Trang 10)
Hình 7.9. Cấu trúc mở rộng mạng Feistel loại 2 - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.9. Cấu trúc mở rộng mạng Feistel loại 2 (Trang 11)
Hình 7.12 Sơ đồ miêu tả hàm F của DES - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.12 Sơ đồ miêu tả hàm F của DES (Trang 16)
Hình 7.13 Sơ đồ sinh khóa DES - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.13 Sơ đồ sinh khóa DES (Trang 19)
Hình 7.15 Sơ đồ thuật toán chuẩn Liên Xô GOST 28147-89 - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.15 Sơ đồ thuật toán chuẩn Liên Xô GOST 28147-89 (Trang 21)
Hình 7.16 Sơ đồ thuật toán Blowfish - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Hình 7.16 Sơ đồ thuật toán Blowfish (Trang 23)
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: - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
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: (Trang 24)
Sơ đồ sinh khóa con được miêu tả ở hình 7.19. - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
Sơ đồ sinh khóa con được miêu tả ở hình 7.19 (Trang 29)
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. - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
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 (Trang 33)
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: - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
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: (Trang 33)
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. - Tài liệu Kỹ thuật lập trình - Chương 7 Kiểm tra và xây dựng số nguyên tố
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 (Trang 36)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w