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

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 34 - 126)

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 độ cao.

Trên thế giới một số hãng sản xuất các thiết bị bảo mật cũng đã nghiên cứu thiết kế các thuật toán mã khối bằng các công cụ phần cứng nhƣ: công nghệ ASIC, công nghệ FPGA...,

Công nghệ ASIC cho phép thiết kế thuật toán mã khối với hầu hết các ƣu điểm của giải pháp phần cứng, và theo [19] tốc độ mã hoá - giải mã dữ liệu khi thiết kế thuật toán mã khối bằng công nghệ ASIC có thể lên tới vài Gigabít/s. Tuy nhiên để thiết kế một ứng dụng trên ASIC đòi hỏi phải đầu tƣ dây chuyền công nghệ với chi phí khá lớn đặc biệt là khâu “đóng chíp”. Tại Việt nam hiện nay các ứng dụng đƣợc thiết kế trên ASIC sau khi thiết kế, kiểm tra và thử nghiệm bằng các công cụ dùng cho thiết kế thì khâu ”đóng chíp” thƣờng đƣợc đặt hàng bởi một nhà sản xuất thiết bị ở nƣớc ngoài.

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ông nghệ FPGA là một sự phát triển của công nghệ ASIC, tuy tốc độ xử lý dữ liệu có thấp hơn một chút nhƣng nó đã thừa hƣởng đƣợc những tính năng ƣu việt, khắc phục đƣợc mặt hạn chế của ASIC. Ngƣời thiết kế sử dụng phần mềm để tiến hành thiết kế với các phần tử logic cơ bản và tạo các giản đồ kết nối. FPGA là một thiết bị logic có thể đƣợc ngƣời sử dụng lập trình trực tiếp mà không phải sử dụng bất kỳ một công cụ chế tạo mạch tích hợp nào. Điều này cho phép chế tạo ngay thiết bị và vì vậy giá thành sản phẩm thấp.

FPGA đƣợc ứng dụng rộng rãi và khá lý tƣởng vì chúng có mức độ tích hợp cao trên chip, đáp ứng yêu cầu phức tạp và đa dạng. Thay vì các IC nguyên mẫu để lắp ghép vào hệ thống ngƣời thiết kế có thể tạo các kết nối theo các phần trong FPGA của mình bằng phần mềm. Mặt khác chúng ta có thể nạp lại chƣơng trình một cách liên tục để thay đổi các thuật toán mã khối hoặc thực hiện các thuật toán khác.

1.3.5.3. Lựa chọn giải pháp thiết kế module mã khối ở Việt Nam.

Ở Việt Nam hiện nay các thuật toán mã khối chủ yếu đƣợc thiết kế bằng các chƣơng trình phần mềm chạy trên máy PC, việc nghiên cứu để có thể cứng hoá các thuật toán mã khối trên các công cụ phần cứng nhằm đáp ứng các yêu cầu về tốc độ xử lý dữ liệu, tính chủ động, chuyên dụng hoá thiết bị bảo mật cũng nhƣ giá thành là một hƣớng nghiên cứu mới.

Công nghệ FPGA với những tính năng ƣu việt của nó đƣợc lựa chọn để nghiên cứu thiết kế module mã khối nhằm đáp ứng những yêu cầu trên là một sự vận dụng, nghiên cứu phù hợp với điều kiện thực tế về công nghệ và yêu cầu sử dụng ở Việt Nam.

1.4. Kết luận chƣơng.

Chƣơng này đã đƣa ra những khái niệm cơ bản về mô hình hệ thống truyền tin mật; mô hình của hệ mật khoá bí mật và hệ mật khoá công khai cùng các kiến thức chung về cơ sở lý thuyết của mã khối, khái niệm cũng nhƣ nguyên lý thiết kế mã khối, các tham số, cấu trúc và giới thiệu một số kỹ thuật mã khối đang đƣợc sử dụng với các ƣu việt của từng kỹ thuật. Phần tiếp theo của luận văn này sẽ đề cập

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 công nghệ FPGA với các tính năng ƣu việt của FPGA khi “cứng hoá” hệ thống mã khối.

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

CHƢƠNG 2: CÔNG NGHỆ FPGA

2.1. TỔNG QUAN VỀ CÔNG NGHỆ FPGA. 2.1.1. Giới thiệu về công nghệ FPGA. 2.1.1. Giới thiệu về công nghệ FPGA.

Công nghệ chế tạo mạch vi điện tử ngày nay đang có một sự thay đổi lớn: từ một mạch tính hợp vi điện tử với cơ sở thiết bị công nghệ tiên tiến chế tạo ra với số lƣợng lớn chuyển dần sang các mạch chuyên dụng sản xuất với lô nhỏ tại các cơ sở có điều kiện công nghệ chƣa phát triển. Sự thay đổi đó đƣợc hình thành nhờ các công cụ thiết kế tự động. Động lực chính của quá trình thay đổi này là giảm thời gian thiết kế, chế tạo vi mạch và tăng tính linh hoạt cho ngƣời thiết kế lập trình với những ứng dụng riêng biệt.

FPGA (Field-Programmable Gate Array), là mạch tích hợp cỡ lớn trong đó cho phép ngƣời lập trình thay đổi các thiết kế của mình mà không phải sử dụng bất kỳ một công cụ chế tạo mạch tích hợp nào. FPGA là công nghệ tiên tiến nhất hiện nay của ngành công nghệ chế tạo IC (Integrated Circuit) chuyên biệt.

2.1.1.1. Sự phát triển của các thiết bị lập trình được.

Các thiết bị lập trình đƣợc đóng vai trò quan trọng lâu dài trong thiết kế các

vi mạch với những ứng dụng riêng biệt trong ngành điện tử-viễn thông. Chúng là các chíp đa dụng có thể đƣợc cấu hình theo nhiều cách cho ứng dụng. Loại đầu tiên của thiết bị lập trình đƣợc sử dụng rộng rãi là PROM (Programmable Read Only Memory). PROM là thiết bị lập trình chỉ đƣợc một lần gồm một dãy các ô nhớ chỉ đọc.

Có hai loại PROM cơ bản, một loại chỉ có thể lập trình bởi nhà sản xuất gọi là

mask programmable và một loại có thể lập trình bởi ngƣời sử dụng gọi là field

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 34 - 126)