GIỚI THIỆU MỘT SỐ KỸ THUẬT MÃ KHỐI

Một phần của tài liệu thiết kế hệ thống mã khối bằng công nghệ fpga (Trang 31 - 126)

1.3.1. Chuẩn mã dƣ̃ liệu DES .

Mô tả đầy đủ của DES (Data Encryption Standard) đƣợc nêu trong Công bố số 46-2 về các chuẩn xƣ̉ lý th ông tin Liên bang (Mỹ) vào 15.01.1977. Chuẩn mã dƣ̃ liệu DES là một kỹ thuật mã khối có cấu trúc dạng Feistel , thƣ̣c hiện mã hoá một xâu bít x của bản rõ độ dài 64 bằng một khoá 56 bít. Bản mã nhận đƣợc cũng là một xâu bít có độ dài 64. Mô tả ở mƣ́c cao về hệ thống nhƣ sau : (Mô tả chi tiết của DES sẽ đƣợc trình bày trong chƣơng 3 của luận văn):

Thuật toán tiến hành theo 3 giai đoạn:

1. Với bản rõ cho trƣớc x , một xâu bít x0 sẽ đƣợc xây dƣ̣ng bằng cách hoán vị các bít của x theo phép hoán vị cố định ban đầu IP . Ta viết: x0= IP(X) = L0R0, trong đó L0 gồm 32 bít đầu và R0 là 32 bít cuối.

2. Sau đó tính toán 16 lần lặp theo một hàm xác định . Ta sẽ tính LiRi, 1 i

16 theo quy tắc sau:

Li = Ri-1

Ri = Li-1 f(Ri-1,Ki)

trong đó  kí hiệu phép hoặc loại trừ của hai xâu bít (cộng theo modulo 2). f là một hàm bao gồm các phép hoán vị, phép thế, phép cộng modun 2, còn K1, K2, . . . , K16 là các xâu bít độ dài 48 đƣợc tính nhƣ hàm của khoá K (trên thƣ̣c tế mỗi Ki là một

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

phép chọn hoán vị bít trong K ). K1, . . ., K16 sẽ tạo thành bảng khoá . Một vòng của phép mã hoá đƣợc mô tả trên hình 1.7.

3. Áp dụng phép hoán vị FPcho xâu bít R16L16, ta thu đƣợc bản mã y. Tƣ́c là y= FP (R16L16). Hãy chú ý thứ tự đã đảo của L16 và R16

Li-1 Ri-1

F

Ki

+

Li Ri

Hình 1.7: Mô tả 1 vòng của DES.

Phép giải mã đƣợc thực hiện nhờ dùng cùng thuật toán nhƣ phép mã nếu đầu vào là y nhƣng dùng bảng khoá theo thứ tự ngƣợc lại K 16,…,K1. Đầu ra của thuật toán sẽ là bản rõ x.

1.3.2. Chuẩn mã dƣ̃ liệu Xô -Viết.

Mô tả chi tiết của t huật toán mã hoá Xô -Viết (GOST) đã đƣợc công bố trong GOST 28147-89. Thuật toán GOST là một ví dụ của hệ mật kiểu DES cùng với lịch trình khoá đƣợc đơn giản hoá tối đa , là một trong những kiểu đặc trƣng của hệ mã khối sƣ̉ dụng cấu trúc Feistel với hạt nhân là các hộp thế , phép dịch vòng , kết hợp với các phép toán số học nhƣ phép XOR và phép cộng môdulo . Mô hình mã hoá - giải mã dữ liệu của GOST cũng gần tƣơng tự nhƣ DES , tuy nhiên nó mã bản rõ có độ dài 64 bít thành bản mã có độ dài 64 bit khóa có độ dài 256 bit.

Mô tả thuật toán GOST nhƣ sau:

Thuật toán GOST gồm 32 vòng l ặp. Mỗi vòng lặp đƣợc chỉ ra ở hình 1.8. Có hai phần tƣ̉ là bí mật trong thuật toán này : khóa mã K có độ dài 256-bit và định

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

nghĩa các S-box S1,…, S8.

Khóa mật mã K = (K0, …, K7) đƣợc lƣu trƣ̃ trong thiết bị lƣu trƣ̃ khóa (key storage unit-KSU) nhƣ một dãy của 8 tƣ̀ 32-bit (K0, …, K7). Mỗi tƣ̀ khoá 32-bit Ki đƣợc gọi là khóa thành phần (i=0,…,7). Để mã một văn bản 64-bit, trƣớc hết nó đƣợc chia thành 2 nƣ̉a 32-bit và đƣợc đặt vào thanh ghi 32-bit R1 và R2. Nội dung của thanh ghi R 1 đƣợc cộng theo modulo 232 vào thành khóa thà nh phần K0 (bộ cộng CM1), tƣ́c là R1+K0 (mod 232). Dãy thu đƣợc 32 bit đƣợc chia thành 8 khối 4 bit, 8 khối 4 bit này là đầu vào của 8 S-box tƣơng ƣ́ng S1,…, S8. Mỗi Si, i=1,…,8 là một phép hoán vị . 8 đầu ra 4-bit của các S -box đƣợc lƣu vào thanh ghi dịch R , nội dungcủa thanh này đƣợc dịch trái 11 bit (về phía bit bậc cao). Nội dung của thanh R bây giờ đƣợc cộng modulo 2 (Exclusive-Or hoặc XOR ) với nội dung của thanh ghi R2 bằng bộ cộng CM2. Nội dung tƣ̀ sẽ đƣợc lƣu trong R1 và giá trị cũ của R 1 đƣợc lƣu trƣ̃ trong R2 và đến đây kết thúc vòng lặp thứ nhất.

Các vòng lặp khác tƣơng tự nhƣ vòng lặp thứ nhất . Trong vòng lặp thƣ́ hai , chúng ta sử dụng khóa K 1 tƣ̀ KSU. Các vòng lặ p thƣ́ 3, 4, 5, 6, 7, 8 sƣ̉ dụng tƣơng ứng các khoá thành phần K 2, K3, …, K7. Các vòng lặp từ 9 đến 16 và từ 17 đến 24 cũng sử dụng các khoá thành phần này . Các vòng lặp từ 25 đến 32 sƣ̉ dụng các khoá thành phần theo thứ tự ngƣợc lại, tƣ́c là vòng lặp thƣ́ 25 sƣ̉ dụng khóa K7, vòng lặp thƣ́ 26 sƣ̉ dụng khóa K6 và cứ tiếp tục nhƣ vậy . Vòng lặp cuối cùng dùng khóa K 0. Cho nên thƣ́ tƣ̣ của các khóa thành phần trong 32 vòng lặp là:

K0 ,…., K7, K0 ,…., K7, K0 ,…., K7, K7 ,…., K0.

Sau 32 vòng lặp, đầu ra tƣ̀ bộ cộng CM2 đƣợc đặt trong R2, còn R1 giƣ̃ nguyên giá trị cũ. Nội dung của thanh ghi R1 và R2 là bản mã 64-bit cho bản rõ có 64-bit.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn R2 R1 + S1 ….. S8 R + R1 R2 K0 …… K7 K S CM1 CM2 KSU

Hình 1.8: Sơ đồ một vòng lặp của GOST.

1.3.3. Thuật toán mã hoá dƣ̃ liệu IDEA .

Thuật toán IDEA (International Data Encryption Algorithm) [2], [7]đƣợc phát triển bởi Xuejia Lai & James Massey của viện Công nghệ Thụy sĩ . IDEA có cấu trúc một phần của cấu trúc Feistel, thƣ̣c hiện mã hoá một xâu bít x của bản rõ độ dài 64 bằng một khoá 128 bít, bản mã nhận đƣợc cũng là một xâu bít có độ dài 64.

Các phép toán sử dụng trong IDEA :

- Phép XOR, ký hiệu là 

- Phép cộng các số nguyên module 216 (modulo 65536) với dƣ̃ liệu vào và ra là các số nguyên không dấu 16 bit. Ký hiệu phép toán là .

- Phép nhân các số nguyên modulo 216+1 (modulo 65537) với dƣ̃ liệu vào và ra là các số nguyên 16 bit không dấu, ngoại trừ một khối gồm tất cả các bit 0 đƣợc coi nhƣ biểu diễn 216

. Ký hiệu phép toán là .

1.3.3.1. Quá trình mã hoá của IDEA.

Theo cách thiết kế của thuật toán , mỗi bit đầu ra của vòng đầu tiên phụ thuộc vào mọi bít của 64 bit đầu vào rõ và mọi bít của khoá con . Toàn bộ thuật toán có 8

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

khối lặp, mỗi khối lặp lại có 4 vòng lặp con theo cấu trúc cộng /nhân (Addition & Multiplication - MA).

Đầu vào rõ 64 bit đƣợc chia th ành 4 bộ 16 bit (X1,X2,X3,X4) làm đầu vào của khối lặp số 1 để thực hiện theo MA với 6 khối khóa con của khóa đầu vào (mỗi khối khóa con 16 bit). Các khối tiếp theo , lấy đầu ra của khối trƣớc làm đầu vào và tiếp tục thực hiện theo MA với 6 khối khóa con kế tiếp . Cuối cùng là một hàm biến đổi đầu ra dùng 4 khoá con còn lại , tại đây 4 khối 16 bit đƣợc kết hợp tạo thành đầu ra mã 64 bít. 64 bit rõ X x1 x2 x3 x4 Vòng 1 z1 z6 w11 w12 w13 w14 Vòng 2 z7 z12 w71 w72 w73 w74 Vòng 8 z43 z48 w81 w82 w83 w84 Biến đổi ra z49 z52 y1 y2 y3 y4 64 bít mã

Bộ sinh khóa con 128 bit key Z

16 16

z1 z52

Hình 1.9: Sơ đồ cấu trúc của IDEA.

Hình 1.10 mô tả hoạt độ ng của vòng đầu tiên , cấu trúc các vòng sau đều giống vòng trƣớc . Vòng lặp bắt đầu bằng một phép biến đổi kết hợp 4 khối con đầu vào với 4 khoá con theo MA. Bốn khối ra của phép biến đổi này đƣợc kết hợp bằng phép XOR để tạo thành hai khối 16 bit là đầu vào của cấu trúc MA . Cấu trúc MA lấy hai khoá con nhƣ đầu vào và kết hợp các đầu vào để cho hai khối 16 bit đầu ra. Cuối cùng 4 khối đầu ra tƣ̀ phép biến đổi trên đƣợc kết hợp với hai khối đầu vào của cấu trúc MA dùng phép XOR để tạo ra bốn khối đầu vào cho vòng tiếp theo .

Hai đầu vào đƣợc sinh ra bởi các đầu vào thƣ́ hai và thƣ́ ba (x2 và x3) đƣợc tráo đổi để tạo ra các đầu ra thứ hai và thứ ba (w12 và w13). Điều này làm tăng khả

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

năng trộn giƣ̃a các bit đƣợc xƣ̉ lý và tạo cho thuật toán chịu đƣợc các phân tích mã khác nhau.

Chú ý: Giai đoạn thƣ́ chín có tên là giai đoạn biến đổi ra (hình 1.11). Nó có cùng cấu trúc nhƣ các vòng ở trên. Chỉ khác là đầu vào thứ hai, thƣ́ ba đƣợc tráo đổi trƣớc khi tham gia vào các phép toán để phép dịch có cùng cấu trúc nhƣ phép mã.

z2 z1 x1 x2 x3 x4 z3 z4 z5 z6

Hình 1.10: Chi tiết mỗi vòng đơn của IDEA.

w82

w81 w83 w84

z49 z50 z51 z52

y1 y2 y3 y4

Hình 1.11: Phép biến đổi ra của quá trình mã hoá IDEA. 1.3.3.2. Sinh khoá con.

52 khoá phụ lấy từ 128 bit khoá chính. Tám khoá phụ đầu có nhãn Z1,Z2,...,Z8, với khoá Z1 gồm 16 bit đầu, khoá Z2 tƣơng ứng 16 bit kế tiếp, cho đến khoá Z8 tƣơng ứng 16 bit cuối. Sau đó dịch trái 25 bít và 8 khoá con tiếp theo đƣợc trích ra. Thủ tục sẽ thực hiện lặp lại cho đến khi 52 khoá con đƣợc sinh ra. Sơ đồ này cung

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

cấp một kỹ thuật hiệu quả cho việc thay đổi các bit khoá đƣợc dùng cho các khoá con trong 8 vòng lặp của mã IDEA.

1.3.3.3. Quá trình giải mã của IDEA.

Quá trình giải mã cơ bản giống nhƣ quá trình mã hoá, bản mã làm dữ liệu vào nhƣng với khoá con khác. Các khoá con giải mã U1,U2,...,U52 nhận đƣợc từ các khoá con mã hoá nhƣ sau: Bốn khoá con đầu tiên của vòng dịch thứ i đƣợc nhận từ bốn khoá con đầu tiên của vòng mã hoá (10-i). Trong đó giai đoạn biến đổi ra đƣợc coi nhƣ vòng thứ 9. Các khoá con dịch thứ nhất và thứ tƣ là nghịch đảo của phép nhân modulo (216+1) của khoá con mã hoá thứ nhất và thứ 4. Với các vòng thứ 2 đến thứ 8, khoá con giải mã thứ 2 và 3 là nghịch đảo của phép cộng module (216) của các khoá con mã tƣơng ứng thứ 3 và thứ 2. Với các vòng thứ nhất và thứ 9, các khoá con giải mã thứ 2 và 3 là nghịch đảo của phép cộng module (216) của các khoá con mã hoá tƣơng ứng thứ 2 và thứ 3.

Với tám vòng đầu tiên, hai khoá con cuối cùng của vòng giải mã thứ i là hai khoá con cuối cùng của vòng mã hoá thứ (9-i).

1.3.4. Các chế độ ứng dụng của mã khối.

Để mã hoá bản rõ độ dài tuỳ ý, các mã khối có thể đƣợc sử dụng ở 4 chế độ làm việc thƣờng gặp nhất trong các hệ thống mật mã bảo vệ thông tin:

- Chế độ sách mã điện tử (ECB-Electronic Code Book).

- Chế độ phản hồi mã (CFB-Cipher Freed Back).

- Chế độ liên kết khối mã (CBC-Cipher Block Channing).

- Chế độ phản hồi đầu ra (OFB-Output Freed Back).

Chế độ ECB tƣơng ứng với cách dùng thông thƣờng của mã khối: với một dãy các khối bản rõ cho trƣớc x1,x2,. . .( mỗi khối có 64 bít), mỗi xj sẽ đƣợc mã hoá bằng cùng một khoá K để tạo thành một chuỗi các khối bản mã c1c2 ... theo quy tắc cj = eK(cj-1 xj) j  1.

Trong các chế độ OFB và CFB dòng khoá đƣợc tạo ra sẽ đƣợc cộng mod 2 với bản rõ (tức là nó hoạt động nhƣ một hệ mã dòng). Chế độ OFB thực sự là một hệ mã dòng đồng bộ: dòng khoá đƣợc tạo bởi việc mã lặp véc tơ khởi tạo 64 bít (véc

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

tơ IV). Ta xác định I1 =IV và rồi tính dòng khoá O1O2 . . . theo quy tắc Oj = eK(Oj-1), j 1. Dãy bản rõ x1x2 . . . xj sau đó sẽ đƣợc mã hoá bằng cách tính cj = xj Oj,j 1.

Trong chế độ CFB, bắt đầu với I1 = IV (là một véc tơ khởi tạo 64 bít) và tạo phần tử Oj của dòng khoá bằng cách mã hoá khối bản mã trƣớc đó. Tức Oj = eK(cj- 1), j 1, cũng nhƣ trong chế độ OFB: cj = xj Oj, j 1. Việc sử dụng CFB đƣợc mô tả trên hình 1.12c (chú ý rằng hàm mã EK đƣợc dùng cho cả phép mã và phép giải mã ở các chế độ CFB và OFB).

Cũng còn một số biến tấu của OFB và CFB đƣợc gọi là các chế độ phản hồi K bít (1 < K < 64 ). Ở đây ta đã mô tả các chế độ phản hồi 64 bít. Các chế độ phản hồi 1 bít và 8 bít thƣờng đƣợc dùng trong thực tế cho phép mã hoá đồng thời 1 bit (hoặc byte) số liệu.

Bốn chế độ công tác có những ƣu, nhƣợc điểm khác nhau. Ở chế độ ECB và OFB, sự thay đổi của một khối bản rõ xj 64 bít sẽ làm thay đổi khối bản mã cj tƣơng ứng, nhƣng các khối bản mã khác không bị ảnh hƣởng. Các chế độ CBC và CFB, nếu một khối bản rõ xj bị thay đổi thì cj và tất cả các khối bản mã tiếp theo sẽ bi ảnh hƣởng. Nhƣ vậy các chế độ CBC và CFB có thể đƣợc sử dụng rất hiệu quả cho mục đích xác thực.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

b) Chế độ liên kết khối mã (CBC)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

d) Chế độ phản hồi đầu ra (OFB)

Hình 1.12: Các chế độ hoạt động của mã khối.

1.3.5. Một số giải pháp kỹ thuật thiết kế mã khối.

Việc thiết kế các thuật toán mã khối trong thiết bị bảo mật thông tin hiện nay có thể thực hiện theo các kỹ thuật nhƣ mô tả trong hình 1.13.

THUẬT TOÁN MÃ KHỐI

PHẦN CỨNG PHẦN MỀM

ASIC FPGA DSP, µP

Smart Card INTER,

RISC

Hình 1.13: Các kỹ thuật thiết kế mã khối. 1.3.5.1. Thiết kế mã khối bằng chương trình phần mềm.

Thiết kế thuật toán mã khối bằng chƣơng trình phần mềm và thực hiện trên các bộ xử lý Intel, RISC hoặc nhúng trong môi trƣờng DSP, Smart-Card..., hoặc

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

trên các máy PC. Ƣu điểm của kỹ thuật này là không phụ thuộc quá nhiều vào công nghệ thiết kế, cho phép thiết kế nhanh, có tính mềm dẻo cao khi cần thay đổi thuật toán mã hoá đƣợc thực hiện một cách đơn giản. Tuy nhiên kỹ thuật này lại bị hạn chế về mặt tốc độ xử lý mã hoá- giải mã, nó phù hợp với những hệ thống truyền tin có tốc độ không cao. Mặt khác, việc sử dụng không hết các tính năng của một thiết bị sẵn có làm cho giá thành tăng lên, và không thuận lợi cho chuyên dụng hoá thiết bị bảo mật thông tin.

1.3.5.2. Thiết kế mã khối bằng công cụ phần cứng.

Phần lớn các kỹ thuật mã khối thông dụng hiện nay đang đƣợc dùng để bảo mật thông tin trong các hệ truyền tin mật là có cấu trúc Feistel nhƣ đã trình bày trong phần 1.2.4, đây là một cấu trúc mã khối rất thích hợp cho việc thiết kế bằng phần cứng. Tuy thiết kế thuật toán mã khối trên các công cụ phần cứng không mềm dẻo bằng phần mềm nhƣng nó lại có một số ƣu điểm: Tại cùng một thời điểm các thiết bị phần cứng cho phép thay đổi các phép xử lý dữ liệu một cách linh hoạt hơn so với phần mềm. Tốc độ xử lý dữ liệu và an toàn về mặt vật lý cao hơn, bảo mật đƣợc thiết kế, không phụ thuộc vào hệ điều hành, rất thích hợp trong việc thiết kế những thiết bị bảo mật chuyên dụng và bảo mật trong các hệ thống truyền tin có tốc

Một phần của tài liệu thiết kế hệ thống mã khối bằng công nghệ fpga (Trang 31 - 126)