1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu và khai thác các công cụ kẻ khóa md5, des, và thám mã 3 vòng

148 515 0

Đ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

Định dạng
Số trang 148
Dung lượng 433,17 KB

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

Nội dung

Tìm hiểu và khai thác các công cụ kẻ khóa md5, des, và thám mã 3 vòng

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG KHOA CÔNG NGHỆ THÔNG TIN -0O0 -0O0 0O0

ĐỀ ÁN: Môn Bảo Mật thông TinTÌM HIỂU HỆ MÃ CHUẨN CÀI ĐẶT MD5, DES VÀ THÁM MÃ 3 VÒNG

Trang 2

MỤC LỤC

Trang 3

TÌM HỂU VÀ KHAI THÁC CÔNG CỤ KẺ KHÓA MD5,

DES, 3DES

1 Lời nói đầu

Trước khi các bạn tạo một chương trình bẻ khóa nhằm vào số serial của

chương trình (còn gọi là keygen), ngoài việc biết code bằng một ngôn ngữ lập trình nào đó, các bạn nên học qua các thuật toán mã hóa Vì việc học cho tốt ngôn ngữ lập trình chưa chắc các bạn đã tạo được một keygen Luyện đọc code cho tốt là một việc nên làm, nhưng chưa chắc bạn đã nắm hết ý nghĩa của đoạn code đó Vì các phần mềm mới sau này họ dùng các cách mã hóa làm phức tạp quá trình bẻ khóa Khi ta không nắm vững một số thuật toán mã hóa, thì dù bạn có thiệt là giỏi, bạn cũng mất nhiều thòi gian để bẻ khóa Nhưng nếu bạn nắm vững được thuật toán mã hóa của nó thì “chuyện nhỏ”

Học thuật toán chúng ta sẽ học được rất nhiều điều Nó giống như việc học

bảng cửu chương vậy Chúng ta phải học thuộc các loại thuật toán mã hóa, quen với nó, thấy nó làm việc, thân thiết với nó để khi gặp nó, hay “hậu duệ” của nó hoặc cái gì đó gần giống nó chúng ta sẽ không phải bỡ ngỡ

Mỗi người chúng ta đều có một dấu vân tay riêng, không ai giống ai Chính tạo hóa đã tạo ra chúng, từ những ý tưởng đó, con người mới nghĩ ra việc: tại sao

chúng ta không tự tạo ra một “dấu vân tay” cho một cái gì đó để phân biệt chúng với nhau Ví dụ như tên người chẳng hạn (tên là chuỗi các kí tự được gọi là String)

Do vậy trong lĩnh vực công nghệ thông tin người ta bắt đầu nghiên cứu các cách để tạo ra “dấu vân tay” cho các chuỗi String Một trong những cách đó là thuật toán

Trang 4

MD5 mà chúng tôi sẽ nói ở dưới đây.

“dấu vân tay” do thuật toán MD5 tạo ra từ một String gọi là message digest

(gọi tắt là md) hay còn gọi là “MD5 hashes” (gọi tắt là hashes)

Bản báo cáo này chỉ tìm hiểu cách thực hiện của MD5, nguyên lý cũng như

thuật toán cụ thể Từ đó giúp chúng ta nhận dạng ra các chương trình sử dụng MD5 Giờ chúng ta bắt đầu tìm hiểu về MD5

2 Giới thiệu về MD5(Message-Digest algorithm)

2.1 Giới thiệu:

Từ ý tưởng mỗi người có một dấu vân tay riêng để phân biệt mọi người với nhau

Ronald Rivest đã tạo ra MD5 như một công nghệ tạo dấu vân tay(fingerprint) cho

1 cái gì đó(văn bản,password…)để phân biệt chúng với nhau

-MD5 (Message-Digest algorithm 5) là một hàm băm để mã hóa với giá trị băm là

128bit Từng được xem là một chuẩn trên Internet, MD5 đã được sử dụng rộng rãi trong các chương trình an ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin

MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4 (cũng do ông thiết kế, trước đó nữa là MD2)

2.2 Ứng dụng quan trọng:

1/ MD5 được sử dụng rộng rải trong thế giới phần mềm để đảm bảo rằng tập tin tải về không bị hỏng Người sử dụng có thể so sánh giữa thông số kiểm tra phần mềm bằng MD5 được công bố với thông số kiểm tra phần mềm tải về bằng MD5.(ví dụ:khi người sư dụng download một file trên mạng nhà phát triển ứng dụng sẽ tạo ra một mã MD5 cho file đó.khi chúng ta vừa tải về thì sẽ có một mã MD5.nếu 2 mã này trùng nhau thì file đó an toàn ngược lại thì có thể file download

có virut hoặc cái gì đó)Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà

Trang 5

nó phân phối, trong khi hệ điều hành Windows sử dụng phần mềm của hãng thứ ba.

2/ MD5 được dùng để mã hóa mật khẩu Mục đích của việc mã hóa này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể nào lần trở lại mật khẩu Có nghĩa là việc giải mã là không thể hoặc phải mất một khoãng thời gian vô tận (đủ để làm nản lòng các hacker)

2.3 Đặc điểm của MD5

- Từ một đoạn văn bản đầu vào sẽ tạo ra một string gọi là Message Degist

Hay còn gọi là MD5 hash có độ dài cố định được mã hóa dưới dạng hexa

-Từ một đọan văn bản đầu vào sẽ tạo ra duy nhất một hash đầu ra không bao giờ

có 2 hash cho 1 văn bản

- Từ một hash đầu ra ta sẽ không bao giờ có thể suy ngược lại được plantext ban đầu

Trang 6

+Trước tiên nó sẽ chèn bit 1 vào cuối thông điệp.

+Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội số của

Trang 7

-MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước cố định 128 bits

Trang 8

3.2 Giải thuật

Thuật toán chính của MD5 hoạt động trên một bộ 128 bit Chia nhỏ nó ra thành 4 từ 32 bit, kí hiệu là A,B,C và D Các giá trị này là các hằng số cố định

Sau đó thuật toán chính sẻ luân phiên hoạt động trên các khối 512 bit Mỗi khối sẽ phối hợp với một bộ Quá trình xữ lý một khối thông điệp bao gồm 4 bước tương tự nhau, gọi là vòng (“round”) Mỗi vòng lại gồm 16 quá trình tương tự nhau dựa trên hàm một chiều F, phép cộng module và phép xoay trái…

Hình bên dưới mô tả một quá trình trong một vòng

Trang 9

Quá trình xử lý của một block

Có 4 hàm một chiều F

có thể sử dụng Mỗi vòng sử dụng một hàm khác nhau

Trang 10

Đây là quá trình thực hiện xử lý của 4 hàm F, G, H, I ở trên:

Vòng 1 (Round 1):

Ký hiệu [abcd k s t] là bước thực hiện của phép toán

a = b + ((a + F(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước sau:

[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4][ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8][ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12][ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16] Giải thích:

Ví dụ biểu thức thứ 2 là [DABC 1 12 2], tương đương với:

D = A + ((D + F(A,B,C) + X[1] + T[2]) <<< 12) Nhận xét: Vòng 1 dùng hàm

F, Với giá trị t từ 1 -> 16 và k từ 1 -> 15

Vòng 2 (Round 2):

Tương tự, ký hiệu [abcd k s t] là của biểu thức :

a = b + ((a + G(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước :[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]

[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]

[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]

[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]

Nhận xét: Vòng 2 dùng hàm G, với t từ 17 -> 32 và k = 1 + 5k mod 16

Vòng 3 (Round 3):

Tương tự, ký hiệu [abcd k s t] là của biểu thức :

a = b + ((a + H(b, c, d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước:[ABCD 5 4 33] [DABC 8 11 34] [CDAB 1 16 35] [BCDA 14 23 36]

[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]

[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]

[ABCD 9 4 45] [DABC 12 11 46] [CDAB 5 16 47] [BCDA 2 23 48]

Nhận xét: Vòng 3 dùng hàm H, với t từ 33 -> 48 và k =5 + 3k mod 16

Vòng 4(Round 4):

Tương tự, ký hiệu [abcd k s t] là của biểu thức:

a = b + ((a + I(b,c,d) + X[k] + T[t]) <<< s) Quá trình thực hiện 16 bước :

Trang 11

[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]

[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]

[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]

[ABCDb 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]

Nhận xét: Vòng 4 dùng hàm I, với t từ 49 -> 64 và k =7k mod 16

/* Sau đó làm các phép cộng sau ( Nghĩa là cộng vào mỗi thanh ghi giá trị của

nó trước khi vào vòng lặp xử lý block tiếp theo) */

Hàm băm MD5 ( còn được gọi là hàm tóm tắt thông điệp – masage degests) sẽ trả về một chuổi số thập lục phân gồm 32 số liên tiếp Dưới đây là các ví dụ

mô tả các kết quả thu được sau khi băm

MD5("The quick brown fox jumps over the lazy dog") =

9e107d9d372bb6826bd81d3542a419d6

Trang 12

Chỉ cần một thay đổi nhỏ cũng làm thay đổi hoàn toàn chuỗi đầu ra

MD5("The quick brown fox jumps over the lazy

cog") = 1055d3e698d289f2af8663725127bd4b

Ngay cả một chuổi rổng cũng cho ra một kết quả phức tạp:

MD5("") = d41d8cd98f00b204e9800998ecf8427e

Mã hóa bằng giải thuật MD5

private string EncodeMD5(string pass)

Trang 13

ràng lắm nhưng các chuyên gia mã hóa đã nghĩ đến việc phải đưa ra một thuật giải khác, như là SHA-1…

MD5 được thiết kế bởi Ron Rivet Từ khi thuật toán này được công bố đã

có một số điểm yếu đã được tìm thấy năm 1993 B.den Boer and A Bosselaers đã tìm ra một sự va chạm của MD5 và từ đó một loạt các điểm yếu của MD5 đã được tìm ra

Mọi chuyện bắt đầu từ khi nhà khoa học máy tính người Pháp Antoine

Joux phát hiện ra một lỗ hổng trong thuật toán phổ biến MD5, thường dùng trong công nghệ chữ ký điện tử Ngay sau đó, bốn nhà nghiên cứu người

Trung Quốc lại phát hành công trình nghiên cứu chỉ ra cách xuyên phá thuật toán thứ hai có tên SHA-0

Tuy chỉ mới ở giai đoạn nghiên cứu sơ bộ song những phát hiện này có thể tạo điều kiện để kẻ xấu cài những chương trình cửa sau (backdoor) bí mật vào trong mã máy tính, hoặc giả mạo chữ ký điện tử Trừ phi một thuật toán mới, bảo mật hơn được xây dựng và đưa vào sử dụng!

Một phát hiện thứ ba, được đón đợi và đánh giá rất cao được công bố

trong hội thảo Crypto Hai nhà nghiên cứu Eli Biham và Rafi Chen của

Viện Công nghệ Israel đã diễn thuyết về cách nhận dạng các hình thức tấn công vào chức năng bảo mật của thuật toán SHA-0, một thuật toán có sơ hở

Những lỗ hổng bảo mật được cho là "nghiêm trọng" bên trong thuật toán SHA-0 và SHA-1, tuỳ thuộc vào mức độ chi tiết của phần trình bày, có thể làm chấn động cả ngành bảo mật Từ trước tới nay, SHA-1 vẫn được coi là chuẩn mực "vàng"về thuật toán Nó được tích hợp bên trong rất nhiều chương trình thông dụng như PGP và SSL, được chứng thực bởi Viện Chuẩn Công nghệ Quốc gia và là thuật toán chữ ký điện tử duy nhất được Cơ quan Chuẩn Chữ ký Số của chính phủ Mỹ phê chuẩn

Cả ba thuật toán MD5, SHA-0 và SHA-1 đều được giới khoa học máy tính coi là"đa chức năng" Chúng có thể nhận mọi dạng dữ liệu đầu vào, từ tin nhắn email cho đến hạt nhân (kernel) của hệ điều hành, cũng như tạo ra một dấu vân tay số duy nhất Chỉ thay đổi một ký tự bất kỳ bên trong file đầu vào cũng tạo ra những dấu vân tay hoàn toàn khác nhau Các ứng dụng bảo mật đều dựa vào tính năng "dấu vân tay duy nhất" này làm nền Tuy nhiên, nếu kẻ tấn công có thể tạo ra một dấu vân tay "Dolly" với một dòng dữ liệu đầu vào khác, dấu vân tay "sinh sản vô tính" này sẽ khiến phần mềm bị gài backdoor

Trang 14

khoản ngân hàng của người sử dụng khơng may.

tốc độ giả mạo một dấu vân tay sẽ được đẩy nhanh lên 500 triệu lần, hồn tồn trong tầm tay của một mạng máy tính tốc độ cao.

Tuy mức độ tác hại ít trầm trọng hơn song sơ hở bảo mật trong thuật tốn MD5 cĩ lẽ lại gây hậu quả ngay tức thì Sản phẩm máy chủ Apache Web

nguồn mở đang sử dụng MD5 để kiểm duyệt những website cĩ mã nguồn chưa

bị chỉnh sửa, từ đĩ sẽ an tồn khi chạy trong máy Tương tự, sẽ là cơ sở dữ liệu Solaris của Sun Microsystems, với khả năng mà theo hãng tự nhận là "xác minh một file đích thực chứ khơng phải phiên bản bị điều chỉnh để hạ gục hệ thơng bảo mật''

Lỗ hổng mới phát hiện trong MD5 sẽ cho phép kẻ tấn cơng tạo ra file giả mạo chỉ trong vài giờ với một máy tính đạt chuẩn "Giờ đây, người ta đã chứng minh được các thuật tốn này cĩ lỗ hổng Trước khi kẻ tấn cơng lợi dụng khai thác được, đã đến lúc phải thơi dần việc sử dụng MD5.'' - nhà phân tích Hughes của Viện Chuẩn Cơng nghệ Quốc gia nhận định

I LẬP MÃ DES

Đây là ví dụ về việc lập mã sử dụng DES Giả sử ta mã hóa bản rõ sau trong dạng thập lục phân (Hexadecimal)

0123456789ABCDEF sử dụng khóa thập lục phân

133457799BBCDFF1 Khóa trong dạng nhị phân không có các bit kiểm tra sẽ là:

00010010011010010101101111001001101101111011011111111000.

Aùp dụng IP, ta nhận được L 0 và R 0 (trong dạng nhị phân) :

Trang 15

11110000101010101111000010101 010

16 vòng lập mã được thể hiện như sau:

00011011000000101110111111111100011100000111

0010 01100001000101111011101010000110011001010010 0111

01011100100000101011010110010111 00100011010010101010100110111011 11101111010010100110010101000100

01111001101011101101100111011011110010011110 0101

00001100010001001000110111101011011000111110 1100

11111000110100000011101010101110

Trang 16

00111100101010111000011110100011 11001100000000010111011100001001

0101010111111100100010100100001011001111100110 01

1011000001111100100010001111100000100111110010 10

00100111000100001110000101101111 01001101000101100110111010110000 10100010010111000000101111110100

0111001010101101110101101101101100110101000111 01

0010001011101111001011101101111001001010101101 00

00100001111011011001111100111010 10111011001000110111011101001100 011101110

Trang 17

0111110011101100000001111110101101010011101010 00

1100011000000101000000111110101101010001101000 10

01010000110010000011000111101011 00101000000100111010110111000011 10001010010011111010011000110111

0110001110100101001111100101000001111011001011 11

1010011011100111011000011000000010111010100000 00

01000001111100110100110000111101 10011110010001011100110100101100 11101001011001111100110101101001

11101100100001001011011111110110000110001011110 0

Trang 18

00010000011101010100000010101101 10001100000001010001110000100111 00000110010010101011101000010000

1111011110001010001110101100000100111011111110 11

1111011101001000011011111001111001111011010110 11

01101100000110000111110010101110 00111100000011101000011011111001 11010101011010010100101110010000

1110000011011011111010111110110111100111100000 01

1000101001110000101110010100100010011011001000 00

00010001000011000101011101110111 00100010001101100111110001101010

Trang 19

1011000111110011010001111011101001000110010011 11

1010000101110000101111101101101010000101101110 11

11011010000001000101001001110101 01100010101111001001110000100010 10110111110101011101011110110010 E(R 10 )

0010000101011111110100111101111011010011100001 10

0111101110100001011110000011010000101110001000 11

01110011000001011101000100000001 11100001000001001111101000000010 11000101011110000011110001111000

E(R 11 )

K 12

0110000010101011111100000001111110000011111100 01

Trang 20

01111011100010110010011000110101 11000010011010001100111111101010 01110101101111010001100001011000

1001011111000101110100011111101010111010010000 01

1010110101111000001010110111010110111000101100 01

10011010110100011000101101001111 11011101101110110010100100100010 00011000110000110001010101011010

0101111101000011101101111111001011100111001110 10

0101000001010101101100010111100001001101110011 10

01100100011110011001101011110001

Trang 21

10110111001100011000111001010101 11000010100011001001011000001101

1011111110010001100011010011110100111111000010 10

0101111111000101110101000111011111111111010100 01

10110010111010001000110100111100 01011011100000010010011101101110 01000011010000100011001000110100

1100101100111101100010110000111000010111111101 01

1110101101010111100011110001010001010110010111 01

10100111100000110010010000101001 11001000110000000100111110011000 00001010010011001101100110010101

Cuối cùng, áp dụng IP -1 cho R 16 L 16 ta nhận được bản mã trong dạng thập lục

Trang 22

II THÁM MÃ DES

Một phương pháp rất nổi tiếng trong thám mã DES là “thám mã vi sai“ (differential cryptanalysic) do Biham và Shamir đề xuất Đó là phương pháp thám với bản rõ được chọn Nó không được sử dụng trong thực tế để thám mã DES 16 vòng, mà chỉ được sử dụng để thám các hệ DES có ít vòng hơn.

Bây giờ ta sẽ mô tả những ý tưởng cơ bản của kỹ thuật này Để đạt mục đích thám mã, ta có thể bỏ qua hoán vị khởi tạo IP và hoán vị đảo của nó (bởi vì điều đó không cần thiết cho việc thám mã) Như đã nhận xét ở trên, ta xét các hệ DES n vòng, với n ≤ 16 Trong cài đặt ta có thể coi L 0 R 0 là bản rõ và L n R n như là bản mã

Thám mã vi sai đòi hỏi phải so sánh or (exclusive-or) của hai bản rõ với

x-or của hai bản mã tương ứng Nói chung, ta sẽ quan sát hai bản rõ L 0 R 0 và L 0*R 0* với trị x-or được đặc tả L 0 ’R 0 ’ = L 0 R 0 ⊕ L 0*R 0* Trong những thảo luận sau ta sẽ sử dụng ký hiệu (‘) để chỉ x-or của hai xâu bit.

Định nghĩa 3.1: Cho Sj là một S-hộp (1 ≤ j ≤ 8) Xét một cặp xâu 6-bit là (B j ,B j*) Ta nói rằng, xâu nhập x-or (của S j ) là B j ⊕ B j* và xâu xuất x-or (của S j ) là

S j (B j ) ⊕ S j (B j*).

Chú ý là xâu nhập x-or là xâu bit có độ dài 6, còn xâu xuất x-or có độ dài 4.

Định nghĩa 3.2: Với bất kỳ Bj ’ ∈ (Z 2 ) 6 , ta định nghĩa tập ∆ (B j ’) gồm các cặp (B j ,B j*) có x-or nhập là B j ’.

Dễ dàng thấy rằng, bất kỳ tập ∆ (B j ’) nào cũng có 2 6 = 64 cặp, và do đó

∆ (B j ’) = {(B j , B j ⊕ B j ’) : B j ∈ (Z 2 ) 6 }

Trang 23

Với mỗi cặp trong ∆ (B j ’), ta có thể tính xâu x-or xuất của S j và lập được phân bố kết quả Có 64 xâu xuất x-or, được phân bố trong 2 4 = 16 giá trị có thể có Tính không đồng đều của các phân bố đó là cơ sở để mã thám.

Ví dụ 3.1: Giả sử ta xét S1 là S-hộp đầu tiên và xâu nhập x-or là 110100 Khi đó

∆ (110100) = {(000000, 110100), (000001, 110101), , (111111, 001011)} Với mỗi cặp trong tập ∆ (110100), ta tính xâu xuất x-or của S 1 Chẳng hạn,

S 1 (000000) = E 16 = 1110, S 1 (110100) = 1001, như vậy xâu xuất x-or cho cặp (000000,110100) là 0111

Nếu thực hiện điều đó cho 64 cặp trong ∆ (110100) thì ta nhận được phân bố của các xâu x-or xuất sau:

010 0

010 1

011 0

011 1

100 0

100 1

101 0

101 1

110 0

110 1

111 0

111 1

Trong ví dụ 3.1, chỉ có 8 trong số 16 xâu x-or xuất có thể có xuất hiện thật sự Ví dụ cụ thể này đã chỉ ra sự phân bố rất không đều của các xâu x-or xuất Nói chung, nếu ta cố định S-hộp S j và xâu nhập x-or B j ’, thì trung bình có khoảng 75 - 80% các xâu x-or xuất có thể có xuất hiện thực sự.

Để mô tả các phân bô đó ta đưa ra định nghĩa sau.

Định nghĩa 3.3: Với 1 ≤ j ≤ 8 và với các xâu bit B j ’ độ dài 6 và Cj’ độ dài 4,

ta định nghĩa:

IN j (B j ’,C j ’) = {B j ∈ (Z 2 ) 6 : S j (B j ) ⊕ S j (B j ⊕ B j ’) = C j ’}

Trang 24

Bảng sau sẽ cho các xâu nhập có thể có với xâu x-or nhập 110100

Xâu xuất x-or Các xâu nhập có thể có 0000

0001 000011, 001111, 011110,

011111

101010, 101011, 110111, 111011

0010

000100, 000101, 001110, 010001

010010, 010100, 011010, 011011

100000, 100101, 010110, 101110

101111, 110000, 110001, 111010

0011 000001, 000010, 010101,

100001

110101, 110110

0100 010011, 100111 0101

0110

0111

000000, 001000, 001101, 010111

011000, 011101, 100011,

Trang 25

101100, 110100, 111001, 111100

1000 001001, 001100, 011001,

101101

111000, 111101 1001

1010 1011 1100

1101 000110, 010000, 010110,

011100

110010, 100100, 101000, 110010

1110

1111 000111, 001010, 001011,

110011

111110, 111111

N j (B j ’, C j ’) tính số các cặp với xâu nhập x-or bằng B j ’ có xâu xuất x-or bằng

C j ’ với S-hộp S j Các cặp đó có các xâu nhập x-or được đặc tả và đưa ra cách tính các xâu xuất x-or có thể nhận được từ tập IN j (B j ’, C j ’) Để ý rằng, tập này có thể phân thành N j (B j ’, C j ’) /2 cặp, mỗi cặp có xâu x-or nhập bằng B j ’.

Phân bố trong ví dụ 3.1 chứa các trị N 1 (110100, C 1 ’), C 1 ’ ∈ (Z 2 ) 4 Trong bảng trên chứa các tập IN(110100, C 1 ’).

Trang 26

Với mỗi tám S-hộp, có 64 xâu nhập x-or có thể có Như vậy, có 512 phân bố có thể tính được Nhắc lại là, xâu nhập cho S-hộp ở vòng thứ i là B= E ⊕ J, với E = E(R i-1 ) là mở rộng của R i-1 và J = K i gồm các bit khóa của vòng i Bây giờ xâu nhập x-or (cho tất cả tám S-hộp) có thể tính được như sau:

E j ⊕ J j ∈ IN j (E j ’, C j ’), với E j ’ = E j ⊕ E j*.

Định nghĩa 3.4: Giả sử E j và E j * là các xâu bit độ dài 6, và C j ’ là xâu bit độ dài 4

Ta định nghĩa:

test j (E j , E j * , C j ’) = { B j E j : B j IN j (E j ’, C j ’) }, với E j ’ = E j E j * .

Trang 27

Nếu ta có một bộ ba thứ hai như thế E 1 , E 1*, C 1 ’, khi đó ta sẽ nhận được tập

thứ hai test 1 của các trị cho các bit khóa trong J 1 Trị đúng của J 1 cần phải nằm trong giao của các S-hộp Nếu ta có một vài bộ ba như vậy, khi đó ta có thể mau chóng tìm được các bit khóa trong J 1 Một cách rõ ràng hơn để thực hiện điều đó là lập một bảng của 64 bộ đếm biểu diễn cho 64 khả năng của của 6 khóa bit trong J 1 Bộ

đếm sẽ tăng mỗi lần, tương ứng với sự xuất hiện của các bit khóa trong tập test 1 cho một bộ ba cụ thể Cho t bộ ba, ta hy vọng tìm được duy nhất một bộ đếm có trị t; trị đó sẽ tương ứng với trị đúng của các bit khóa trong J 1

1 Thám mã hệ DES - 3 vòng

Bây giờ ta sẽ xét ý tưởng vừa trình bày cho việc thám mã hệ DES - ba vòng

Ta sẽ bắt đầu với cặp bản rõ và các bản mã tương ứng: L 0 R 0 , L 0*R 0*, L 3 R 3 và L 3*R 3*

Ta có thể biểu diễn R 3 như sau:

R 3 = L 2 ⊕ f(R 2 , K 3 ) = R 1 ⊕ f(R 2 , K 3 ) = L 0 ⊕ f(R 0 , K 1 ) ⊕ f(R 2 , K 3 )

R 3 * có thể biểu diễn một cách tương tự , do vậy:

Trang 28

Bây giờ, giả sử ta đã chọn được các bản rõ sao cho R 0 = R 0 , chẳng hạn:

R 0 ’ = 00 0 Khi đó f(R 0 , K 1 ) = f(R 0*, K 1 ), và do đó:

P(C) ⊕ P(C * ) = R 3 ’ ⊕ L 0 ’ và kết quả là:

C’ = C ⊕ C* = P -1 (R 3 ’ ⊕ L 0 ’) (1) Đó là xâu xuất x-or cho tám S-hộp trong vòng ba.

Bây giờ, R 2 = L3 và R2* = L3* là đã biết (chúng là một phần của các bản mã) Từ đây ta có thể tính:

Trang 29

Input: L 0 R 0 , L 0*R 0*, L 3 R 3 và L 3*R 3*, với R 0 = R 0*

Bây giờ ta sẽ minh họa điều đó qua ví dụ sau.

03C70306D8A09F10 78560A0960E6D4CB 486911026ACDFF31

375BD31F6ACDFF31

45FA285BE5ADC730 134F7915AC253457 357418DA013FEC86

12549847013FEC86

D8A31B2F28BBC5CF 0F317AC2B23CB944

Từ cặp đầu tiên ta tính các xâu nhập của S-hộp (cho vòng 3) từ các phương trình (2) và (3) Chúng là:

Trang 30

E = 101111110000001010101100000001010100000001010010

Xâu xuất x-or của S-hộp được tính bằng phương trình (1) sẽ là:

C’ = 10010110010111010101101101100111 Từ cặp thứ hai, ta tính được các xâu nhập cho S-hộp là:

E 1 ’= 101111 và C 1 ’ = 1001 Tập:

IN 1 (101111, 1001) = {000000, 000111, 101000, 101111}

Do E 1 = 000000 ta có:

J 1 ∈ test 1(000000, 101111, 1001) = {000000, 000111, 101000, 101111}

Do đó ta tăng các trị 0, 7, 40 và 47 trong các mảng đếm cho J 1

Cuối cùng ta sẽ trình bày các bảng Nếu ta xem các xâu bit độ dài 6 như là biểu diễn của các số nguyên trong khoảng 0-63, thì 64 trị sẽ tương ứng với 0, 1, ,

63 Các mảng đếm sẽ là như sau:

Trang 33

ba Suy ra là K có dạng:

Trang 34

2 Thám mã hệ DES 6-vòng

Bây giờ ta sẽ mô tả việc mở rộng ý tưởng trên cho việc thám mã trên hệ DES vòng Ý tưỏng ở đây là lựa chọn một cách cẩn thận cặp bản rõ với xâu x-or đặc thù và sau đó xác định các xác suất của các dãy đặc thù của các xâu x-or qua các vòng lập mã Bây giờ ta cần định nghĩa một khái niệm quan trọng sau.

6-Định nghĩa 3.5: Cho n ≥ 1 là số nguyên Đặc trưng của vòng thứ n là một danh sách các dạng

L 0 ’, R 0 ’, L 1 ’, R 1 ’, p 1 , , L n ’, R n ’, p n thỏa mãn các điều kiện sau:

1 L i ’ = R i-1 ’ với 1 ≤ i ≤ n

2 Cho 1 ≤ i ≤ n và L i-1 , R i-1 và L *

i-1 , R * i-1 là đã được chọn sao cho L i-1 ⊕ L *

i-1 = L’ i-1 và R i-1 ⊕ R *

i-1 = R’ i-1 Giả sử L i , R i và L i* , R i* là tính được nhờ việc áp dụng một vòng lập mã DES Khi đó xác suất để L i ⊕ L *

i = L i ’ và R i ⊕ R *

i = R i ’ chính xác bằng

p i (Chú ý là, xác suất này được tính trên tất cả các bộ có thể có của J = J 1 J 8 )

Xác suất đặc trưng được định nghĩa bằng tích p = p 1 × × p n

Nhận xét: Giả sử ta chọn L0, R 0 và L 0*, R 0* sao cho L 0 ⊕ L 0* = L 0 ’ và R 0 ⊕ R 0*= R 0 ’ và ta áp dụng n vòng lập mã của DES, nhận được L 1 , L n và R 1 , , R n Khi đó ta không thể đòi hỏi xác suất để L i ⊕ L i* = L i ’ và R i ⊕ R i* = R i ’ cho tất cả i ( 1 ≤ i ≤ n) là

p 1 × × p n Bởi vì các bộ -48 trong lịch khóa K 1 , , K n không phải là độc lập lẫn nhau (Nếu n bộ-48 này đuợc chọn độc lập một cách ngẫu nhiên, thì điều xác nhận là đúng) Nhưng ta sẽ coi rằng p 1 × × p n chính xác là xác xuất đó.

Ta còn cần xác nhận là, các xác suất p i trong đặc trưng là các cặp bản rõ được xác định tùy ý (nhưng cố định) được đặc tả bằng xâu x-or, với 48 bit khóa cho một vòng lập mã DES là có 2 48 khả năng Do đó việc thám mã sẽ nhằm vào việc xác định khóa cố định (nhưng chưa biết) Do đó cần cố chọn các bản mã ngẫu nhiên (nhưng chúng có các xâu x-or được đặc tả), hy vọng rằng các xác suất để các xâu x-or trong

n vòng lập mã trùng hợp với các xâu x-or, được đặc tả trong đặc trưng, từng đôi một

p 1 , , p n tương ứng.

Trang 35

Trong ví dụ sau đây, ta sẽ trình bày đặc trưng vòng 1 để làm cơ sở cho việc thám mã DES ba vòng trong hình sau (như ở trên, ta sẽ sử dụng cách biểu diễn theo hệ thập lục phân)

L’ 0 = bất kỳ R’ 0 = 00000000 1

6 L’ 1 = 00000000 1

000000 Các xâu xuất x-or cho S 2 đến S 8 đều là 0000 Xâu xuất x-or cho S 1 là 1110 với xác suất 14/64 (do N1(001100, 1110) = 14) Nên ta nhận được:

C’ = 11100000000000000000000000000000 với xác suất 14/64 Aùp dụng P, ta nhận được:

Trang 36

trong dạng thập lục phân sẽ là 00808200 16 Khi xâu này cộng x-or với L 0 ’, ta nhận được R 1 ’ với xác suất 14/64 Do đó L 1 ’ = R 0 ’.

Việc thám mã DES sáu vòng dựa trên đặc trưng ba vòng được cho trong hình sau Trong thám mã 6-vòng, ta bắt đầu với L 0 R 0 L 0*R 0*, L 6 R 6 và L 6*R 6*, mà ta phải chọn bản rõ sao cho L 0 ’= 40080000 16 và R 0 ’= 04000000 16 , ta có thể biểu diễn R 0 như sau:

04000000 1 6

00000000 1 6

04000000 1 6

00000000 1 6

04000000 1 6

40080000 1 6

p = 1/4

p = 1

p = 1/4

R 6 = L 5 ⊕ f(R 5 , K 6 ) = R 4 ⊕ f(R 5 , K 6 ) = L 3 ⊕ f(R 3 , K 4 ) ⊕ f(R 5 , K 6 )

R 6* cũng có thể biểu diễn tương tự, ta có

R 0 ’ = L 3 ’ ⊕ f(R 3 , K 4 ) ⊕ f(R 3*, K 4 ) ⊕ f(R 5 , K 6 ) ⊕ f(R 5*, K 6 ) (4)

(Để ý là tương tự như thám mã 3-vòng)

R 6 ’ là được biết Từ đặc trưng ta tính L 3 ’ = 04000000 16 và R 3 ’ = 40080000 16 với xác suất 1/16 Nếu như vậy, thì xâu nhập x-or cho S-hộp trong vòng 4 có thể tính được nhờ hàm mở rộng phải là:

Trang 37

001000000000000001010000 0 Các xâu x-or cho S 2 , S 5 , S 6 , S 7 và S 8 tất cả đều bằng 000000, và vì thế xâu xuất x-or là 0000 cho tất cả năm S-hộp đó trong vòng 4 Điều này có nghĩa là, ta có thể tính được các xâu xuất x-or cho năm S-hộp đó trong vòng 6 nhờ phương trình (4) Do đó giả sử ta tính:

C 1 ’C 2 ’C 3 ’C 4 ’C 5 ’C 6 ’C 7 ’C 8 ’ = P -1 (R 6 ’ ⊕ 04000000)

mỗi C i là xâu bit có độ dài 4 Khi đó với xác suất 1/16, thì sẽ dẫn đến là C 2 ’, C 5 ’,

C 6 ’, C 7 ’ và C 8 ’ tương ứng là các xâu x-or xuất của S 2 , S 5 , S 6 , S 7 và S 8 trong vòng 6 Các xâu nhập cho các S-hộp đó trong vòng 6 có thể tính được là E 2 , E 5 , E 6 , E 7 và E 8 ; và E 2*, E 5*, E 6*, E 7* và E 8*, với

E 1 E 2 E 3 E 4 E 5 E 6 E 7 E 8 = E(R 5 ) = E(L 6 )

E 1*E 2*E 3*E 4*E 5*E 6*E 7*E 8* = E(R 5*) = E(L 6*)

có thể tính được từ các bản rõ như sau:

Input: L 0 R 0 , L 0*R 0*, L 6 R 6 và L 6*R 6*; với L 0 ’ = 40080000 16

Trang 38

3-1/16 Còn 15/16 phần còn lại ta sẽ thường nhận được những xâu vô dụng ngẫu nhiên hơn là các bit khóa.

Định nghĩa 3.6: Giả sử L0⊕ L 0* = L 0 ’ và R 0 ⊕ R 0*= R 0 ’ Ta nói rằng, cặp bản rõ L 0 R 0 và L 0* R 0* là đúng (right) ứng với đặc trưng nếu L i ⊕ L i* = L i ’ và R i ⊕ R i*= R i ’ cho mọi i,

1 ≤ i ≤ n Cặp trái với cặp được định nghĩa gọi là cặp sai (wrong).

Ta mong rằng, khoảng 1/16 số cặp của ta là đúng, còn các cặp còn lại là cặp sai ứng với đặc trưng vòng ba của ta.

Chiến lược của ta là tính E j E j* và C j’như đã mô tả ở trên và sau đó xác định testj (E j ,

E j*, C j ’) với j = 2,5,6,7,8 Nếu ta bắt đầu với một cặp đúng, thì thì các bit khóa chính xác cho mỗi J j sẽ nằm trong tập testj Nếu cặp là sai, thì trị C j ’ sẽ không đúng, và đó

là nguyên do để giả định rằng, mỗi tập testj thực chất là ngẫu nhiên.

Ta có thể nhận ra cặp đúng theo phương pháp sau: Nếu testj  = 0, với bất kỳ j ∈

{2,5,6,7,8}, khi đó ta tất yếu có được cặp đúng Bây giờ cho một cặp sai, ta có thể

hy vọng rằng, xác suất để testj  = 0 cho một j cụ thể là xấp xỉ 1/5 Đó là lý do để giả định là, N j (E j ’, C j ’) = testj  và như đã nhận xét từ trước, xác suất để N j (E j ’, C j ’)

= 0 là xấp xỉ 1/5 Xác suất để cả năm testj đều dương là vào khoảng 0.8 5 ≈ 0.33,

quả vậy xác suất để ít nhất một testj bằng 0 là vào khoảng 0.67 Nên ta có khoảng

2/3 số cặp là sai, nhờ vào một nhận xét đơn giản, được gọi là phép lọc (filtering

operation) Tỷ số của các cặp đúng trên các cặp còn lại sau phép lọc là vào khoảng:

6 1 3 1 16 15 16 1

16 1

=

× +

Ví dụ 3.4: Giả sử ta có cặp bản rõ - bản mã sau:

86FA1C2B1F51D3BE 1E23ED7F2F553971

Trang 39

111100 111101 011010 101111 111110

010010 111100 000101 010110 101100

1101 0001 0010 1100 1101

Khi đó các tập testj sẽ là như sau:

2 14, 15,26, 30, 32, 33, 48, 52 5

6 7, 24, 36, 41, 54, 59 7

Trang 40

Ta thấy rằng, hai tập test5 và test7 là rỗng , nên cặp này là cặp sai và nó bị loại bỏ bằng phép lọc.

Bây giờ giả sử ta có cặp sao cho testj  > 0 với j = 2,5,6,7,8 là những tập còn lại sau phép lọc.(Bởi vì ta không biết được là cặp nào đúng, cặp nào sai.) Ta nói rằng, xâu bit J 2 J 5 J 6 J 7 J 8 độ dài 30 là được đề xuất bởi cặp nếu J j ∈ testj với j = 2,5,6,7,8 Số các cặp được đề xuất là:

∈ 2 , 5 , 6 , 7 , 8

j

jtest

Đó là bình thường với số xâu bit được đề xuất là khá lớn (Chẳng hạn lớn hơn 80000)

Giả sử, ta lập bảng cho tất cả các xâu được đề xuất nhận được từ N cặp, mà không

bị loại bởi phép lọc Với mỗi cặp đúng, thì xâu bit đúng J 2 J 5 J 6 J 7 J 8 sẽ là xâu được đề xuất Xâu bit đúng sẽ được tính khoảng 3N/16 lần Xâu bit sai thường xuất hiện ít hơn, bởi vì chúng xuất hiện ngẫu nhiên và có khoảng 2 30 khả năng (Là một số rất lớn.)

Ta nhận được một bảng cực lớn tất cả các xâu được đề xuất, nên ta sử dụng một thuật toán chỉ đòi hỏi một không gian và thời gian ít nhất Ta có thể mã hóa

bất kỳ một tập testj nào thành một véc tơ T j có độ dài 64, với tọa độ thứ i của T j được đặt bằng 1 (0 ≤ i ≤ 63), nếu xâu bit độ dài 6 là biểu diễn của i ở trong tập test j ; và tọa độ thứ i được đặt bằng 0 trong trường hợp ngược lại ( điều này giống như mảng các bộ đếm mà ta đã sử dụng trong thám mã DES ba vòng).

Với mỗi cặp còn lại, ta xây dựng các véc tơ như trên và gọi chúng là T ji, j=2,5,6,7,8; 1 ≤ i ≤ N Với I ⊆ {1, , N} ta nói rằng I là chấp nhận được (allowable)

nếu với mỗi j ∈ {2,5,6,7,8} có ít nhất một tọa độ bằng  I  trong véc tơ

I i

i j

T

Ngày đăng: 06/11/2015, 01:03

HÌNH ẢNH LIÊN QUAN

Bảng sau sẽ cho các xâu nhập có thể có với xâu x-or nhập 110100 - Tìm hiểu và khai thác các công cụ kẻ khóa md5, des, và thám mã 3 vòng
Bảng sau sẽ cho các xâu nhập có thể có với xâu x-or nhập 110100 (Trang 24)

TỪ KHÓA LIÊN QUAN

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