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

Nghiên cứu các giải thuật mã hoá

41 3 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

Tiêu đề Nghiên cứu các giải thuật mã hoá
Trường học Trường Đại Học Kinh Tế Quốc Dân
Chuyên ngành Công Nghệ Thông Tin
Thể loại Tiểu luận môn học
Năm xuất bản 2009
Thành phố Hà Nội
Định dạng
Số trang 41
Dung lượng 748,41 KB

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

Cấu trúc

  • CHƯƠNG I: CÁC HỆ MÃ (4)
    • 1. Hệ mật mã đối xứng (4)
      • 1.1. Giới thiệu (4)
      • 1.2. Giải thuật DES (Data Encryption Standard) (4)
        • 1.2.1. DES In Electronic CodeBook Mode (ECB) (12)
        • 1.2.2. DES In Cipher Block Chaining Mode (CBC) (13)
    • 2. Hệ mật mã bất đối xứng (14)
      • 2.1. Giới thiệu (14)
      • 2.2. Lý thuyết về mật mã khóa công khai (15)
      • 2.3. Ứng dụng của mật mã khóa công khai (19)
      • 2.4. Các yêu cầu của mật mã khóa công khai (19)
      • 2.5. Giải thuật RSA (Rivest, Shamir và Adleman – 1977) (20)
        • 2.5.1. Mô tả giải thuật (20)
        • 2.5.2. Tính bảo mật của giải thuật RSA (24)
          • 2.5.2.1. Phương pháp p-1 (24)
          • 2.5.2.2. Bẻ khóa khi biết được số mũ d của hàm giải mã (25)
          • 2.5.2.3. Bẻ khóa dựa trên các attack lặp lại (26)
        • 2.5.3. Sự che dấu thông tin trong hệ thống RSA (27)
        • 2.5.4. Các giải thuật toán học được sử dụng trong RSA (28)
          • 2.5.4.1. Giải thuật Euclidean – tìm USCLN của hai số nguyên (28)
          • 2.5.4.2. Lý thuyết số dư Trung Hoa (28)
          • 2.5.4.3. Giải thuật Euclidean mở rộng (28)
          • 2.5.4.4. Giải thuật Miller –Rabin kiểm tra số nguyên tố lẻ (29)
          • 2.5.4.5. Giải thuật tính x b mod n (29)
    • 3. Giải thuật băm MD5 (30)
  • TÀI LIỆU THAM KHẢO (41)

Nội dung

CÁC HỆ MÃ

Hệ mật mã đối xứng

Các giải thuật mật mã đối xứng sử dụng cùng một khóa bí mật cho cả mã hóa và giải mã Một ví dụ điển hình là giải thuật DES (Data Encryption Standard), giải thuật này là một trong những phương pháp mã hóa phổ biến nhất hiện nay.

1.2 Giải thuật DES (Data Encryption Standard) :

Vào năm 1977, "National Bureau of Standards" đã giới thiệu chuẩn mã hóa DES cho các ứng dụng tại Mỹ DES mã hóa các khối dữ liệu 64 bit với khóa 56 bit, và thuật toán này được sử dụng cho cả quá trình mã hóa và giải mã.

Đầu tiên, đầu vào 64 bit T được hoán vị thông qua phép hoán vị khởi động IP, với To = IP(T) Sau đó, T trải qua 16 vòng lặp, mỗi vòng sử dụng một khóa khác nhau.

Khóa 56 bit được sử dụng để tạo ra 48 bit thông qua hàm F, sau đó được hoán vị bằng phép hoán vị đảo IP -1 để tạo ra đầu ra cuối cùng 64 bit Các bảng IP và IP -1 được trình bày trong bảng 1a và bảng 1b, và được đọc từ trái sang phải, từ trên xuống dưới.

T = t1t2… t64  T0 = t58t50…….t7 Đầu tiên khối T được tách thành hai khối trái và phải (mỗi khối 32 bits):

T = L0R0 với L0 = t1… t32 và R0 = t33… t64 Trong vòng lặp thứ i (0 < i < 16), ta có Li = Ri-1 và Ri = Li-1  F(Ri-1, Ki), trong đó  là phép cộng exclusive_or và Ki là khóa 48 bits Ở vòng lặp cuối cùng, các nhánh trái và phải không đổi chỗ cho nhau, do đó input của IP -1 là R16L16.

Ri-1 được mở rộng thành khối 48 bits E(Ri-1) theo bảng lựa chọn bit trong bảng 2 Tiếp theo, thực hiện phép XOR giữa E(Ri-1) và Ki, sau đó tách kết quả thành 8 khối 6 bit từ B1 đến B8.

Mỗi khối Bj được xử lý qua hàm Sj (S - box), trong đó Sj(Bj) trả về một khối 4 bit từ bảng 4 Các khối 4 bit này được nối lại để tạo thành một khối kết quả 32 bit, sau đó khối này được hoán vị bằng phép P từ bảng 3.

Hoạt động của S-box diễn ra bằng cách sử dụng số nguyên tương ứng với b1b6 để chọn hàng trong bảng, trong khi số nguyên tương ứng với b3b4b5b6 sẽ xác định cột Giá trị của Sj(Bj) được chọn sẽ là một số nguyên 4 bit nằm tại vị trí giao nhau giữa hàng và cột đó.

DES tạo ra 16 khóa, mỗi khóa chiều dài 48 bit từ một khóa input 56 bit, dùng cho 16 vòng lặp Lưu đồ tính toán khóa được cho trong hình 2:

The input key is a 64-bit block that includes 8 parity bits located at positions 8, 16, , and 64 The PC-1 permutation removes the parity bits and rearranges the remaining 56 bits according to a specified table.

5 Kết quả, PC-1(K) sau đó được chia thành hai phần C0 và D0 mỗi phần 28 bit. Khóa Ki dùng trong vòng thứ i được tạo ra từ Ci-1 và Di-1 theo quy tắc như sau: trong các vòng 1, 2, 9 và 16, Ci-1 và Di-1 được quay vòng một bít qua trái, trong các vòng còn lại thì được quay vòng hai bít qua trái Qua phép quay vòng này

Ci-1 và Di-1 sẽ được chuyển đổi thành Ci và Di Tiến hành hoán vị Ci và Di theo bảng 6 Sau khi hoán vị, Ci sẽ bỏ qua các bít 9, 18, 22, 25 để tạo thành nửa trái của Ki với 24 bít.

Di bỏ đi các bít 35, 38, 43, 54 tạo ra nữa phải của Ki (24 bít) Ghép nữa trái và nữa phải tạo ra khóa Ki 48 bít.

Quá trình giải mã được thực hiện theo thuật toán ngược lại, bắt đầu với IP -1, là phép đảo của IP Trong vòng lặp thứ i, khóa K17-i được sử dụng, với K16 ở vòng lặp đầu tiên và K1 ở vòng lặp cuối cùng.

Ri-1 = Li ; Li-1 = Ri  F(Li, Ki)

Bảng 1a: Bảng hoán vị đầu tiên IP Bảng 1b: Bảng hoán vị cuối cùng IP -1

Bảng 2: Bảng chọn bít E Bảng 3: Bảng hoán vị P

Bảng 5: Bảng hoán vị khóa PC-1 Bảng 6: Bảng hoán vị khóa

1.2.1 DES In Electronic CodeBook Mode (ECB) : Ở mode này, các khối data dưới dạng rỏ (clear text) được đưa vào input của DES Các khối kết quả dưới dạng mật mã (ciphertext) có thể được sử dụng cho các ứng dụng khác Quá trình biến đổi diễn ra như sau: (hình 4)

Clear text  Input block  DES  Output block  Ciphertext

Hình 4: Electronic Codebook Mode (ECB)

1.2.2 DES In Cipher Block Chaining Mode (CBC) :

Khối dữ liệu cần mã hóa được chia thành các khối B1, B2, … Bn, mỗi khối có kích thước 64 bits Một vectơ khởi tạo IV (64 bits) được lựa chọn để bắt đầu quá trình mã hóa Sơ đồ mã hóa được minh họa trong hình 5.

Cn Cn-1  Bn , (Cn-1  Bn)  Cn-1 = Bn

DES encry DES encry DES encry

Time = 1 Time = 2 Time = n Giải mã

Hình 5: Cipher Block Chaining (CBC) mode

Hệ mật mã bất đối xứng

Sự phát triển của mật mã khóa công khai đã tạo ra một cuộc cách mạng lớn trong lịch sử mật mã.

Các giải thuật mã hóa công khai dựa trên các hàm toán học thay vì các phép thay thế và hoán vị như trong mật mã cổ điển Đặc biệt, mật mã công khai có tính chất bất đối xứng, sử dụng hai khóa riêng biệt, trái ngược với mã hóa đối xứng chỉ sử dụng một khóa Việc áp dụng hai khóa này đóng vai trò quan trọng trong việc đảm bảo tính bí mật, phân phối khóa và xác thực.

DES decry DES decry DES decry

- Một số quan niệm sai liên quan đến mã hóa khóa công khai :

Mã hóa khóa công khai cung cấp mức độ bảo mật cao hơn so với mã hóa qui ước, vì tính bảo mật của các sơ đồ mã hóa phụ thuộc vào chiều dài của khóa và độ phức tạp trong việc bẻ khóa.

Mã hóa khóa công khai sử dụng kỹ thuật mã hóa qui ước lỗi thời, nhưng việc tính toán trong sơ đồ này được ưu tiên hàng đầu Do đó, khả năng mã hóa qui ước bị bỏ rơi dường như là điều không thể tránh khỏi Một trong những người tiên phong trong lĩnh vực này đã chỉ ra rằng: “Hạn chế của mật mã khóa công khai trong việc quản lý khóa và sử dụng chữ ký đã được chấp nhận rộng rãi.”

Sự phân bố khóa có vẻ không quan trọng khi sử dụng mã hóa khóa công khai, nhưng cơ chế bắt tay lại phức tạp hơn, bao gồm các trung tâm phân bố khóa cho mã hóa qui ước Thực tế, một số khuôn dạng giao thức là cần thiết, thường bao gồm một tác nhân trung tâm và các thủ tục liên quan, nhưng chúng không đơn giản và cũng không hiệu quả hơn so với yêu cầu cho mã hóa khóa công khai.

2.2 Lý thuyết về mật mã khóa công khai:

Mật mã khóa công khai đã được phát triển nhằm giải quyết hai vấn đề lớn trong mã khóa qui ước, bao gồm việc phân bố khóa và chữ ký số.

Trong mã hóa qui ước, việc phân bố khóa yêu cầu hai bên tham gia phải chia sẻ một khóa đã được phân phối cho họ hoặc sử dụng một trung tâm phân bố khóa chung Whitfield Diffie, một trong những người phát minh ra mật mã khóa công khai cùng với Martin Hellman, đã chỉ ra rằng yêu cầu này đi ngược lại bản chất của mật mã, đó là khả năng bảo vệ tính bí mật hoàn hảo trong quá trình truyền thông riêng tư.

“Nó sẽ làm tốt như thế nào sau mọi sự phát triển, hệ thống không thể xuyên

1 6 qua được nếu các user bị bắt buộc tham gia (share) các khóa của nó với một KDC mà có thể được thỏa hiệp bởi kẻ trộm?”.

Việc sử dụng mật mã ngày càng phổ biến không chỉ trong quân đội mà còn trong thương mại và các mục đích cá nhân Do đó, các tin nhắn và tài liệu điện tử cần có chữ ký tương đương như trong tài liệu giấy Cần phát triển một phương pháp đảm bảo sự hài lòng cho tất cả các bên liên quan khi một tin nhắn số được gửi bởi một cá nhân cụ thể.

Trong sơ đồ mã hóa quy ước, khóa dùng cho mã hóa và giải mã là giống nhau, nhưng điều này không cần thiết Có thể phát triển thuật toán mã hóa với một khóa cho mã hóa và một khóa khác liên quan cho giải mã Các thuật toán này có những đặc điểm quan trọng.

+ Đó là việc tính toán một cách không khả thi để xác định khóa giải mã trong khi chỉ biết giải thuật mật mã và khóa mã hóa.

Trong giải thuật RSA, một trong hai khóa có thể được sử dụng cho mã hóa, trong khi khóa còn lại được dùng cho giải mã.

- Các bước cần thiết trong quá trình mã hóa khóa công khai:

+ Mỗi hệ thống cuối trong mạng tạo ra một cặp khóa để dùng cho mã hóa và giải mã đoạn tin mà nó sẽ nhận.

Mỗi hệ thống công bố khóa mã hóa bằng cách lưu trữ khóa công khai trong một thanh ghi hoặc file công khai, trong khi khóa riêng còn lại được bảo mật.

+ Nếu A muốn gởi một đoạn tin tới B thì A mã hóa đoạn tin bằng khóa công khai của B.

Khi B nhận được đoạn tin mã hóa, nó sử dụng khóa bí mật của mình để giải mã Chỉ có B mới có khả năng giải mã đoạn tin này, vì không ai khác có quyền truy cập vào khóa bí mật đó.

B biết khóa bí mật đó thôi.

Khóa công khai của B khóa bí mật của B đoạn tin mật mã đoạn tin

Với phương pháp này, mọi người tham gia đều có thể truy cập khóa công khai, trong khi khóa bí mật được tạo ra và giữ riêng bởi từng cá nhân, không bao giờ được chia sẻ Hệ thống có khả năng chuyển đổi cặp khóa bất kỳ lúc nào để đảm bảo tính bảo mật.

Mã hóa quy ước sử dụng một khóa bí mật, trong khi mã hóa công khai sử dụng hai khóa: khóa công khai và khóa bí mật Bảng dưới đây tóm tắt những khía cạnh quan trọng của hai loại mã hóa này, giúp phân biệt rõ ràng giữa chúng.

Mã hóa quy ước Mã hóa công khai

- Giải thuật tương tự cho mã hóa và giải mã.

- Người gởi và người nhận phải tham gia cùng giải thuật và cùng khóa.

- Khóa phải được giữ bí mật.

- Không thể hay ít nhất không có tính thực tế để giải mã đoạn tin nếu thông tin khác không có sẵn.

- Kiến thức về giải thuật cộng với các mẫu về mật mã không đủ để xác định khóa.

- Một giải thuật cho mã hóa và một giải thuật cho giải mã.

- Người gởi và người nhận , mỗi người phải có cặp khóa cho riêng mình.

- Một trong hai khóa phải được giữ bí mật.

- Không thể hay ít nhất không có tính thực tế để giải mã đoạn tin nếu thông tin khác không có sẵn.

- Kiến thức về giải thuật cộng với một trong các khóa, cộng với các mẫu về

Giải thuật mã hóa Giải thuật giải mã User B

1 8 mật mã không đủ để xác định khóa kia.

- Các sơ đồ mật mã quy ước và mật mã khóa công khai: xem sơ đồ bên

2.3 Ứng dụng của mật mã khóa công khai:

Tùy thuộc vào ứng dụng, người gửi có thể sử dụng khóa bí mật của mình, khóa công khai của người nhận, hoặc cả hai để tạo ra các chức năng mật mã khác nhau Có ba chiến lược chính trong việc này.

+ Mã hóa/giải mã: người gởi mã hóa đoạn tin bằng khóa công khai của người nhận, người nhận giải mã bằng khóa bí mật của mình.

Giải thuật băm MD5

Để đảm bảo tính toàn vẹn của một khối dữ liệu lớn, chữ ký số được sử dụng để đại diện cho khối dữ liệu đó, tương tự như chữ ký trên văn bản Quá trình này sử dụng hàm băm, trong đó input là một thông điệp bất kỳ và output là một chuỗi bít có chiều dài cố định, được gọi là message_digest.

- Các tính chất cơ bản của hàm băm:

Hàm băm là hàm một chiều, không cho phép thực hiện phép biến đổi ngược, điều này có nghĩa là từ một message_digest đã cho, rất khó để tìm ra một message tương ứng có cùng hàm băm.

+ Khó có thể tìm được hai message mà có cùng một message_digest.

Các giải thuật băm hiện nay bao gồm MD2, MD4, MD5 và SHS, trong đó MD5 là giải thuật băm phổ biến nhất và sẽ được trình bày chi tiết trong phần tiếp theo.

MD5 (Message-Digest algorithm 5) là một hàm băm 128 bit, từng được coi là tiêu chuẩn trên Internet Hàm băm này được sử dụng rộng rãi trong các chương trình an ninh mạng và thường được áp dụng để kiểm tra tính nguyên vẹn của tập tin.

- MD5 có 2 ứng dụng quan trọng:

MD5 là một thuật toán phổ biến trong lĩnh vực phần mềm, giúp đảm bảo tính toàn vẹn của các tập tin tải về Người dùng có thể so sánh giá trị kiểm tra MD5 được công bố với giá trị kiểm tra của tập tin đã tải về để xác nhận rằng tập tin không bị hỏng Trong hệ điều hành Unix, MD5 được sử dụng để kiểm tra các gói phần mềm, trong khi hệ điều hành Windows thường dựa vào phần mềm của bên thứ ba để thực hiện kiểm tra này.

MD5 là một thuật toán được sử dụng để mã hóa mật khẩu, nhằm chuyển đổi chuỗi mật khẩu thành một đoạn mã khác Mục tiêu của việc mã hóa này là đảm bảo rằng từ đoạn mã đó, không thể khôi phục lại mật khẩu gốc, khiến cho việc giải mã trở nên không khả thi hoặc tốn thời gian rất lâu, đủ để làm nản lòng các hacker.

Thuật toán MD5, được phát triển bởi Ron Rivest tại MIT, nhận đầu vào là một khối dữ liệu có chiều dài tùy ý và xử lý nó thành các khối 512 bit, tạo ra đầu ra là một message digest dài 128 bit Quá trình này bao gồm nhiều bước khác nhau.

Bước đầu tiên trong quá trình xử lý thông điệp là thêm vào một số bít (padding), bắt đầu bằng một bít 1 và tiếp theo là các bít 0 Số bít thêm vào có thể từ 1 đến 512, nhằm đảm bảo tổng số bít sau khi thêm vào, cộng với 64 (chiều dài của thông điệp ban đầu), là bội số của 512.

Hình 1: Tạo message_digest sử dụng MD5.

Bước 2 là khởi tạo bộ đệm MD, với kích thước 128 bít để lưu trữ kết quả trung gian và cuối cùng của hàm băm Bộ đệm này có thể được hình dung như 4 thanh ghi 32 bít, và các thanh ghi này được khởi tạo dưới dạng số hex.

Bước 3 trong quá trình xử lý message là chia nó thành các khối 512 bít (16 từ 32 bít) Quá trình này được thực hiện qua nhiều giai đoạn, với số giai đoạn tương ứng với chiều dài của message sau khi đã padding chia cho 512 Mỗi giai đoạn nhận đầu vào là một khối 512 bít đã được padding và message_digest từ giai đoạn trước, tạo ra một message_digest mới Mỗi giai đoạn bao gồm 4 bước (vòng), trong đó bốn vòng có cấu trúc giống nhau nhưng sử dụng các hàm luận lý khác nhau, được ký hiệu là F, G, H, I Các vòng này được đánh dấu là fF, fG, fH, fI, cho thấy mặc dù có cấu trúc hàm tổng quát giống nhau, nhưng chúng khác nhau ở hàm thao tác.

Hình 2: Xử lý MD5 của khối đơn 512 bít (HDMD5).

Mỗi vòng được thực hiện 16 bước tuần tự trên các data A, B, C, D (hình 3) Biểu thức tính toán được sử dụng trong mỗi vòng có dạng: a = b + CLSs(a + g(b,c,d) + X[k] + T[i]).

a, b, c, d: là 4 word A, B, C, D theo thứ tự nào đó.

g: là một trong các hàm F, G, H, I.

I(b,c,d) = c ^ (b & ~d) CLSs: dịch vòng bên trái s bít.

X[k] = M[q*16 + k] : từ 32 bít thứ k của khối 512 bít thứ q của message.

T[i] = 2 32 * abs(sin(i)) : từ 32 bít thứ i (i tính theo radian) (xem bảng). Phép toán cộng (+) tính cho modulo 2 32

Hình 3: Tác vụ của MD5: [abcd k s i]

Bảng T được xây dựng từ hàm sin a b c d g

T10 = 8B44F7AF T26 = C33707D6 T42 = EAA127FA T58 = FE2CE6E0

- Các tác vụ [abcd k s i] trong mỗi vòng là:

- Các phép toán dùng trong giải thuật MD5 gồm có:

+ Phép toán đối (~): bù bít.

+ Phép toán and (&): and các bít của hai toán hạng 32 bít với nhau.

+ Phép toán or (|): or các bít của hai toán hạng 32 bít với nhau.

+ Phép toán xor (^): xor các bít của hai toán hạng 32 bít với nhau.

+ Phép toán cộng (+): cộng modulo 2 32 hai toán hạng 32 bít với nhau. + Phép toán dịch trái vòng (w

Ngày đăng: 13/07/2023, 16:31

HÌNH ẢNH LIÊN QUAN

Bảng 1a: Bảng hoán vị đầu tiên IP Bảng 1b: Bảng hoán vị - Nghiên cứu các giải thuật mã hoá
Bảng 1a Bảng hoán vị đầu tiên IP Bảng 1b: Bảng hoán vị (Trang 9)
Bảng 5: Bảng hoán vị khóa PC-1  Bảng 6: Bảng hoán vị khóa - Nghiên cứu các giải thuật mã hoá
Bảng 5 Bảng hoán vị khóa PC-1 Bảng 6: Bảng hoán vị khóa (Trang 10)
Bảng 4: Bảng chọn (S-boxex) - Nghiên cứu các giải thuật mã hoá
Bảng 4 Bảng chọn (S-boxex) (Trang 11)
Hình 4: Electronic Codebook Mode (ECB) - Nghiên cứu các giải thuật mã hoá
Hình 4 Electronic Codebook Mode (ECB) (Trang 12)
Hình 5: Cipher Block Chaining (CBC) mode - Nghiên cứu các giải thuật mã hoá
Hình 5 Cipher Block Chaining (CBC) mode (Trang 14)
Hình 1: Tạo message_digest sử dụng MD5. - Nghiên cứu các giải thuật mã hoá
Hình 1 Tạo message_digest sử dụng MD5 (Trang 32)
Hình 2: Xử lý MD5 của khối đơn 512 bít (HD MD5 ). - Nghiên cứu các giải thuật mã hoá
Hình 2 Xử lý MD5 của khối đơn 512 bít (HD MD5 ) (Trang 33)
Hình 3: Tác vụ của MD5: [abcd  k  s  i] - Nghiên cứu các giải thuật mã hoá
Hình 3 Tác vụ của MD5: [abcd k s i] (Trang 35)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w