Ưu nhược điểm của hệ mật DES

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu tìm hiểu hệ mã hóa đồng cấu và ứng dụng (Trang 48)

2.1.4.1 Ưu điểm

- Có tính bảo mâ ̣t cao. - Công khai, dễ hiểu.

- Nó có thể triển khai trên thiết bi ̣ điê ̣n tử có kích thước nhỏ.

2.1.4.2 Nhược điểm của DES

Là thuật toán mã hóa đối xứng. Khi phương pháp này mới tím ra ý tưởng thực hiện 50000 tỷ phép mã hóa cần thiết để vượt mặt DES bằng cách thử lần lượt các khóa có thể là điều không thể làm được nhưng ngày nay với sự phát triển mạnh của phần cứng liệu độ dài 56 bit đã đủ chưa? Và các phép thay thế đã đủ phức tạp chưa? Để đạt được độ an toàn thông tin mong muốn, đó là vấn đề người ta vẫn đang bàn luận.

1). Tính bù

Nếu ta ký hiệu u là phần bù của u (ví dụ : 0100101 là phần bù của 1011010) thì des có tính chất sau:

y = DES (x,k)  y= DES ( x ,k)

Cho nên nếu ta biết mã y được mã hóa từ thông tin x với khóa K thì ta suy được bản mã y được mã hóa từ bản rõ x với khóa k. Tính chất này là một yếu điểm của DES bởi vì qua đó đối phương có thể loại bỏ đi một số khóa phải thử khi tiến hành thử giải mã theo kiểu vét cạn

2). Khóa yếu

Khóa yếu là các khóa mà theo thuật toán sinh khóa con thì tất cả 16 khóa con đều như nhau : K1 = K2 = ... = K16

Điều đó khiến cho viê ̣c mã hóa và giải mã đối với khóa yếu là giống hê ̣t nhau

Khóa yếu (Hex) C0 D0

0101 0101 0101 0101 FEFE FEFE FEFE FEFE

{0}28 {1}28 28 {0}28 {1}28 28

Bảng 2.10 Các khóa yếu của DES

Đồng thời còn có 6 cặp khóa nửa yếu (semi-weak key) khác với thuộc tính như sau: y = DES (x, k1) và y = DES (x, k2).

Nghĩa là với 2 khóa khác nhau nhưng mã hóa cùng một bản mã từ cùng một bản rõ :

C0 D0 Semi-weak key(Hex) C0 D0 {01}14 {01}14 {01}14 {01}14 {0}28 {1}28 {01}14 {10}14 {0}28 {1}28 {01}14 {01}14

01FE 01FE 01FE 01FE 1FE0 1FE0 1FE0 1FE0 01E0 01E0 01F1 01F1 1FFE 1FFE 0EFE 0EFE 011F 011F 010E 010E E0FE E0FE F1FE F1FE

FE01 FE01 FE01 FE01 E01F E01F E01F E01F E001 E001 F101 F101 FE1F FE1F FE0E FE0E 1F01 1F01 0E01 0E01 FEE0 FEE0 FEF1 EF1

{10}14 {10}14 {10}14 {10}14 {0}28 {1}28 {10}14 {01}14 {0}28 {1}28 {10}14 {10}14

Bảng 2.11 Các khóa nửa yếu của DES

3). DES có cấu trúc đại số

Với 64 bit khối bản rõ có thể được ánh xạ lên tất cả các vị trí của khối 64 bit khối bản mã trong 264 cách. Trong thuật toán DES, với 56 bit khóa có thể cho chúng ta 256 (khoảng 1017) vị trí ánh xạ. Với việc đa mã hóa thì không gian ánh xạ còn lớn hơn. Tuy nhiên điều này chỉ đúng nếu việc mã hóa DES là không cấu trúc

Với DES có cấu trúc đại số thì việc đa mã hóa sẽ được xem ngang bằng với việc đơn mã hóa. Ví dụ như có hai khóa bất kỳ K1 và K2 thì sẽ luôn được khóa K3 như sau: EK2(EK1(X)) = EK3(X).

Nói một cách khác, việc mã hóa DES mang tính chất “nhóm”, đầu tiên mã hóa bản rõ bằng khóa K1 sau đó là khóa K2 sẽ giống với việc mã hóa ở khóa K3. Điều này thực sự quan trọng nếu sử dụng DES trong đa mã hóa. Nếu một “nhóm” được phát với cấu trúc hàm quá nhỏ thì tính an toàn sẽ giảm.

4). Không gian khóa K

DES có 256 = 1017 khóa. Nếu chúng ta biết được một cặp “tin/mã” thì chúng ta có thể thử tất cả 1017 khả năng này để tìm ra khóa cho kết quả khớp nhất. Giả sử như một phép thử mất 10-6s, thì chúng sẽ mất 1011s, tức 7300 năm. Nhưng với các máy tính được chế tạo theo xử lý song song. Chẳng hạn với 107 con chip mã DES chạy song song thì bây giờ mỗi một con chipset chỉ phải chịu trách nhiệm tính toán với

1010 phép thử. Chipset mã DES ngày nay có thể xử lý tốc độ 4.5x107 bit/s tức có thể làm được hơn 105 phép mã DES trong một giây.

Vào năm 1976 và 1977, Dieffie và Hellman đã ước lượng rằng có thể chế tạo được một máy tính chuyên dụng để vét cạn không gian khóa DES trong ½ ngày với cái giá 20 triệu đô la. Năm 1984, chipset mã hóa DES với tốc độ mã hóa 256000 lần/giây. Năm 1987, đã tăng lên 512000 lần/giây. Vào năm 1993, Michael Wiener đã thiết kế một máy tính chuyên dụng với giá 1 triệu đô la sử dụng phương pháp vét cạn để giải mã DES trung bình trong vòng 3,5 giờ (và chậm nhất là 7 giờ).

Đến năm 1990, hai nhà toán học người Do Thái – Biham và Shamir – đã phát minh ra phương pháp mã hóa vi sai (diferential cryptanalyis), đây là một kỹ thuật sử dụng những phỏng đoán khác nhau trong bản rõ để đưa ra những thông tin trong bản mã. Với phương pháp này, Biham và Shamir đã chứng minh rằng nó hiệu quả hơn cả phương pháp vét cạn.

Phá mã vi sai là thuật toán xem xét những cặp mã khóa khác nhau, đây là những cặp mã hóa mà bản mã của chúng là khác biệt. Người ta sẽ phân tích tiến trình biến đổi của những cặp mã này thông qua các vòng của DES khi chúng được mã hóa với cùng một khóa K. Sau đó sẽ chọn hai bản rõ khác nhau một cách ngẫu nhiên hợp lý nhất. Sử dụng sự khác nhau của kết quả bản mã và gán cho những khóa khác nhau một cách phù hợp nhất. Khi phân tích nhiều hơn những cặp bản mã, chúng ta sẽ tìm ra một khóa được xem là đúng nhất.

2.1.5 Độ an toàn của DES

2.1.5.1 Các đặc trưng an toàn cơ bản của một hệ mã khối

Qua các khảo sát trên đây và qua các nghiên cứu của thế giới, chúng ta có thể rút ra các đặc trưng an toàn cơ bản sau đây đối với một hệ mã khối bất kỳ.

- Hệ mã phải có độ dài khối rõ, khối khóa đủ lớn (không gian rõ và khóa lớn) để tránh tấn công vét cạn trên không gian rõ cũng như không gian khóa (thường độ dài cỡ khối lớn hơn hoặc bằng 128).

- Hệ mã phải có độ đo vi sai và độ đo lệch tuyến tính tối thiểu để tránh được hai kiểu tấn công nguy hiểm nhất là tấn công vi sai và tấn công tuyến tính.

- Tầng tuyến tính trong các hàm vòng cần phải được lựa chọn cẩn thận để khi phối hợp với tầng phi tuyến phải tạo ra hệ mã có tính khuếch tán tốt để tránh tấn công địa phương trên các khói mã nhỏ.

- Các phép biến đổi đầu vào đầu ra của một hệ mã khối cũng không được quá đơn giản (như DES) mà cần phải là tầng che dấu, ngăn cản việc thiết lập các vi sai hay các mảng đánh dấu tuyến tính các vòng đầu cuối đã biết trước.

- Lược đồ tạo khóa cần tránh được các lớp khóa yếu, và nói chung nên dùng kiểu khóa phiên độc lập (nếu có thể được). Đặc biệt lược đồ khóa không tồn tại những quan hệ khóa đơn giản do tính đều, hay cân xứng trong lược đồ gây nên, nhưng lại đảm bảo các khóa là tôt như nhau để tránh các kiểu tấn công khóa quan hệ, tấn công trượt khối dựa trên tính giống nhau trong các phân đoạn tạo khóa con (không phụ thuộc khóa vòng của hệ mã).

2.1.5.2 Độ an toàn của DES trước một vài phương pháp tấn công phá mã

1) Tấn công vét cạn khóa (Brute Force Attack):

Vì khóa của mã DES có chiều dài là 56 bít nên để tiến hành brute-force attack, cần kiểm tra 256 khóa khác nhau. Hiện nay với những thiết bị phổ dụng, thời gian gian để thử khóa là rất lớn nên việc phá mã là không khả thi (xem bảng). Tuy nhiên vào năm 1998, tổ chức Electronic Frontier Foundation (EFF) thông báo đã xây dựng được một thiết bị phá mã DES gồm nhiều máy tính chạy song song, trị giá khoảng 250.000$. Thời gian thử khóa là 3 ngày. Hiện nay mã DES vẫn còn được sử dụng trong thương mại, tuy nhiên người ta đã bắt đầu áp dụng những phương pháp mã hóa khác có chiều dài khóa lớn hơn (128 bít hay 256 bít) như TripleDES hoặc AES.

2) Phá mã DES theo phương pháp vi sai (differential cryptanalysis):

Năm 1990 Biham và Shamir đã giới thiệu phương pháp phá mã vi sai. Phương pháp vi sai tìm khóa ít tốn thời gian hơn brute-force. Tuy nhiên phương pháp phá mã này lại đòi hỏi phải có 247 cặp bản rõ - bản mã được lựa chọn (chosen-plaintext). Vì vậy phương pháp này là bất khả thi dù rằng số lần thử có thể ít hơn phương pháp brute-force.

3) Phá mã DES theo phương pháp thử tuyến tính (linear cryptanalysis)

Năm 1997 Matsui đưa ra phương pháp phá mã tuyến tính. Trong phương pháp này, cần phải biết trước 243 cặp bản rõ-bản mã (known-plaintext). Tuy nhiên 243 cũng là một con số lớn nên phá mã tuyến tính cũng không phải là một phương pháp khả thi.

2.2 Hệ mật IDEA

2.2.1 Mô tả hệ mật IDEA

Thuật toán IDEA ( International Encryption Algorihm) được mô tả như sau: IDEA là phương pháp mã khối sử dụng 128 bit khoá để mã khối dữ liệu 64 bit. IDEA được xây dựng nhằm mục đích kết hợp với nhiều yếu tố khác để tăng độ an toàn và khả năng thực hiện. Từ khi mới được công bố thì thuật toàn này đều là đối tượng quan tâm của các nhà phân tích mật mã(mã thám), và không ai có thể đảm bảo được mức độ chắc chắn, sự an toàn của thuật toán này cung cấp và cũng không ai có thể bảo đảm rằng việc tấn công hay đột phá vào thuật toán này là không thể thành công. Một ngày nào đó, cho dù có đột phá được thì người ta cũng không hề công bố. Tuy nhiên, với điều kiện kỹ thuật như hiện nay thì điếu đó vẫn khó có thể xảy ra.

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

Trong thuật toán IDEA gồm có 3 thuật toán sau: - Phép XOR theo bit. Kí hiệu là 

- Phép cộng 2 số nguyên lấy modulo 216 (65536) với đầu vào và các đầu ra là các số nguyên không dấu 16 bit. Kí hiệu là  .

- Phép nhân hai số nguyên lấy modulo 216 +1 với đầu vào và đầu ra là các số nguyên không dấu 16 bit. Quy ước là khối toàn số 0 biểu thị cho 216 . Kí hiệu . Cả ba phép toán này đều phải thoả mãn các tính chất sau:

- Không có 2 phép toán nào thoả mãn luật phân phối : a  (b  c )  (a  b )  ( a  c)

- Không có 2 phép toán nào thoả mãn luật kết hợp : a  (b  c )  (a  b )  c

Việc sử dụng 3 phép toán này tạo ra một sự biến đổi phức tạp dữ liệu đầu vào làm cho việc mã thám trở nên khó khăn hơn so với việc chỉ sử dụng một phép toán đơn giản.

Trong IDEA sự phân bố được tạo ra dựa trên khối thuật toán có cấu trúc như hình vẽ gọi là cấu trúc MA( Multiplication/Additio) trong hình sau:

Hình 2.8 Cấu trúc Multiplication/Additio (MA)

Khối này nhận 16 bit từ bản rõ và 16 bit được lấy từ khoá ra theo một quy tắc nào đó ( 16 bit này được gọi là subkey và quy tắc lấy subkey từ khoá sẽ được trình bày ở sau)để tạo ra 16 bit đầu ra. Một chương trình kiểm tra trên máy tính bằng phương pháp vét cạn xác định rằng mỗi bit ở đầu ra phụ thuộc vào các bít rõ và bit subkey đầu vào. Cấu trúc này được sử dụng lặp lại 8 lần trong thuật toán và tạo nên một sự phân bố có hiệu qủa.

IDEA được xây dựng sao cho việc thực hiện nó được dễ dàng cả trên phần cứng và phần mềm. Việc thực hiện trên phần cứng, điển hình là trên vi mạch VLSI (VLSI: mạch tích hợp cao), được thiết kế để đạt được tốc độ cao. Việc xây dựng trên phần mềm thì thuận tiện và giá thành thấp.

Những điểm chủ yếu trong việc xây dựng phần mềm:

+ Sử dụng những khối nhỏ: những phép mã thực hiện trên những khối có độ dài 8,16,32 bit phù hợp với việc xử lý trên máy tính.

+ Sử dụng thuật toán giản đơn: Phép toán mã dễ dàng trong lập ttình như phép cộng , phép dịch chuyển (shift), ..., Cả 3 phép toán của IDEA đều thoả mãn những yêu cầu này. Điểm khó khăn nhất là phép toán nhân modulo(216 +1) cũng có

- Những điểm chủ yếu trong việc thực hiện trên phần cứng:

+ Sự tương tự trong mã hoá và giải mã: Mã hoá và giải mã chỉ nên khác nhau trong việc sử dụng khoá và nhờ đó một phương tiện có thể dùng cho cả mã hoá và giải mã.

+ Cấu trúc lặp lại: Phương pháp mã nên có cấu trúc modul lặp lại để các mạch VLSI có thể thực hiện được dễ dàng. IDEA được xây dựng từ 2 khối modulo đơn giản và sử dụng lặp lại nhiều lần.

2.2.3 Mã hoá và giải mã trong IDEA 2.2.3.1 Mã hoá 2.2.3.1 Mã hoá

Giống như các sơ đồ mã hoá khác, hàm mã hoá có 2 tham số ở đầu vào là Bản rõ cần mã và khoá. Trong trường hợp này là 64 bit rõ là 128 bit khoá.

Từ đầu vào đến đầu ra, các bit rõ lần lượt đi qua 8 modul và một hàm biến đổi cuối cùng. Tám modul này có cấu trúc giống nhau và thực hiện các thao tác như nhau với dữ liệu đầu vào. Mỗi modul nhận 4 khối 16 bit rõ ở đầu vào cùng với các subkey và đưa ra 4 khối 16 bit đã được mã hoá. Do đó 64 bit rõ sẽ được chia thành 4 khối nhỏ gọi là các subblock, mỗi subblock là 16 bit. Cùng với các subblock này là 6 khối subkey cũng sẽ được đưa vào từng modul. Như vậy thêm 4 subkey cần thiết cho hàm biến đổi cuối cùng, ta cần tổng cộng 52 khối subkey cho một lần

Như đã nói ở trên, các modul có cấu trúc giống nhau và chỉ khác nhau ở dữ liệu đầu vào. Trừ modul đầu tiên nhận 64 bit rõ đưa từ ngoài vào, các modul đứng sau sẽ nhận 4 khối subblock 16 bit đầu ra của modul đứng trước nó làm các bit rõ đầu vào. Trong quá trình đầu tiên các modul kết hợp 4 subblock với 4 subkey bằng các phép toán  và . Bốn khối đầu ra của quá trình này XOR với nhau như trong sơ đồ để tạo ra 2 khối đầu vào cho cấu trúc MA sẽ kết hợp chúng với 2 subkey còn lại để tạo ra 2 khối 16 bit mới.

Cuối cùng, 4 khối được tạo ra từ quá trình đầu tiên sẽ được XOR với 2 khối đầu ra của cấu trúc MA để tạo ra 4 khối đầu ra của modul. Ta cũng cần chú ý một điều là 2 khối đầu vào X2 và X3 được hoán đổi cho nhau để tạo ra 2 khối W12 và W13 được đưa ra ngoài. Điều này làm tăng sự hoà trộn của các bit được xử lý và tăng khả năng chống lại các phương pháp mã thám.

Hình 2.10 Cấu trúc một modul (Modul 1)

Hàm biến ở cuối cùng ta cũng có thể coi như một modul thứ 9. Hàm này có cấu trúc giống như cấu trúc đã thực hiện trong quá trình đầu tiên của một modul chỉ khác một điều là khối thứ 2 và thứ 3 ở đầu vào được đổi chỗ cho nhau trước khi

modul thứ 8. Lý do của việc này là sự giống nhau về cấu trúc của quá trình giải mã và quá trình mã hoá.

Hình 2.11 Hàm biến đổi của IDEA

* Quy tắc tạo ra subkey:

Như trên đã trình bày, cần thiết phải có 52 khối subkey 16 bit được tạo ra từ 128 bit khoá. Quy tắc tạo subkey như sau:

- 8 subkey đầu tiên , Z1...Z8, được lấy trực tiếp từ khoá với X1 là 16 bit đầu ( Bit có trọng số cao nhất ), Z2 là 16 bit tiếp theo và cứ tiếp tục như vậy

- Sau đó khoá được quay trái 25 bit và 8 subkey tiếp theo được tạo ra theo quy tắc trên. Thao tác này được lặp lại cho đến khi có đủ 52 khối subkey.

Quy tắc này là một phương pháp hiệu quả cho việc đa dạng hoá các bit khoá dùng cho các modul. Ta nhận thấy rằng những subkey đầu tiên dùng trong mỗi modul sử dụng những tập hợp bit khác nhau của khoá. Nếu như khoá 128 bit được ký hiệu là Z[ 1..128] thì subkey đầu tiên của modul sẽ là :

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu tìm hiểu hệ mã hóa đồng cấu và ứng dụng (Trang 48)

Tải bản đầy đủ (PDF)

(73 trang)