các hệ mật mã.doc

97 862 7
các hệ mật mã.doc

Đ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

các hệ mật mã

Trang 1

Lời Nói Đầu

Thế giới của chúng ta luôn sôi sục trong muôn vàn biến động được tạo ra bởi con người Và trong thế kỷ 20 này, máy tính là một trong những sản phẩm vĩ đại nhất Cùng với thời gian, người ta không muốn sử dụng một máy tính đơn lẻ nữa mà sẽ kết nối các máy này lại thành một mạng máy tính nhằm tăng khả năng làm việc, hiểu biết, trao đổi, cập nhật các thông tin … Mạng Internet là xu hướng phát triển của thế giới ngày nay Hiện nay, Internet đã trở nên rất phổ biến trên toàn thế giới Thông qua mạng Internet mọi người có thể trao đổi thông tin với nhau một cách nhanh chóng thuận tiện Những công ty phát triển và kinh doanh trên môi trường Intranet/Internet họ phải đối diện với khó khăn lớn là làm thế nào để bảo vệ những dữ liệu quan trọng, ngăn chặn những hình thức tấn công, truy xuất dữ liệu bất hợp pháp từ bên trong (Intranet), lẫn cả bên ngoài (Internet) Khi một người muốn trao đổi thông tin với một người hay một tổ chức nào đó thông qua mạng máy tính thì yêu cầu quan trọng là làm sao để đảm bảo thông tin không bị sai lệch hoặc bị lộ do sự xâm nhập của kẻ thứ ba Trước các yêu cầu cần thiết đó, một số giải thuật mã hóa đã dược xây dựng nhằm đảm bảo tính an toàn dữ liệu tại nơi lưu trữ cũng như khi dữ liệu được truyền trên mạng, như các giải thuật mã hóa đối xứng (DES giải thuật mã hóa công ), khai , Việc tìm hiểu và xây dựng chương trình các giải thuật này cũng không nằm ngoài mục đích của bản luận văn này Luận văn có nhiệm vụ tìm hiểu lý thuyết về mật mã hoá thông tin, xây dựng server tạo khóa cho user trong vấn đề bảo mật dữ liệu.

Do thời gian và khả năng có hạn, trong khi phạm vi đề tài lại rộng, những người thực hiện chỉ có thể tìm hiểu được một số giải thuật chính như : DES, ECB, CBC, RSA, MD5 và qua đó đưa ra mô hình server tạo khóa cho các user, cụ thể là làm thế nào để quản lý và phân phối khóa một cách an toàn, hiệu quả Chắc chắn rằng tập thuyết minh này sẽ không tránh khỏi những thiếu sót, người thực hiện mong nhận được sự góp ý, chỉ dẫn thêm của các Thầy Cô, bạn bè để bản thuyết minh được hoàn thiện hơn Chúng tôi xin chân thành cảm ơn Thầy hướng dẫn, các Thầy Cô trong khoa đã tạo điều kiện thuận lợi để bản thuyết minh này có thể hoàn thành đúng thời hạn

Trang 2

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

1.1 Giới thiệu:

Các giải thuật mật mã đối xứng là các giải thuật sử dụng cùng một khóa bí mật cho tác vụ mã hóa và tác vụ giải mã Ví du ïnhư các giải thuật thay thế và hoán vị, giải thuật DES,… Ở đây ta chỉ tìm hiểu giải thuật DES (Data Encryption Standard) là giải thuật mật mã đối xứng được sử dụng phổ biến nhất.

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

Vào năm 1977, "National Bureau of standard" đã đưa ra chuẩn DES để sử dụng cho các ứng dụng ở Mỹ DES mã hóa các khối data 64 bits với khóa 56 bits Giải thuật dùng để mã hóa lẫn giải mã được mô tả tóm tắt như hình 1.

Trước tiên 64 bit input T được hoán vị bởi phép hoán vị hoán vị khởi động IP, với To = IP(T) Sau khi qua 16 vòng lặp (mỗi vòng sử dụng một khóa 48 bit được tạo ra từ khóa input 56 bits) với tác động của hàm F, nó được hoán vị bằng phép hoán vị đảo IP-1 để tạo ra 64 bit output cuối cùng IP và IP-1 được cho trong các bảng (bảng 1a và bảng 1b) Các bảng này được đọc từ trái sang phải, từ trên xuống dưới theo dạng:

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 , R0 = t33… t64

Ở vòng lặp thứ i (0 < i < 16) : Li = Ri-1 , 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 vì vậy input của IP-1 là R16L16

Hàm F và S_boxes: (hình 3)

Trước tiên Ri-1 được mở rộng thành khối 48 bits E(Ri-1) với E là bảng lựa chọn bit được cho trong bảng 2 Sau đó thực hiện phép XOR E(Ri-1) với Ki và kết quả được tách thành 8 khối 6 bit từ B1 tới B8 :

E(Ri-1) ⊕ Ki = B1B2 B8

Mỗi khối Bj sau đó được đưa vào một hàm Sj (S - box) : Sj (Bj) trả về một khối 4 bit (bảng 4) Các khối này được nối lại và khối kết quả 32 bit được hoán vị bằng phép P (bảng 3)

Trang 3

F(Ri-1 , Ki) = P(S1(B1) … S8(B8))

Hoạt động của S-box: số nguyên tương ứng với b1b6 sẽ chọn Row trong bảng, còn số nguyên tương ứng với b3b4b5b6 sẽ chọn Column Giá trị của Sj(Bj) được chọn sẽ là một số nguyên 4 bit ở vị trí Row và Column đó.

Tính khóa: (hình 2)

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:

Khóa input là một khối 64 bit, với 8bit parity tại các vị trí 8, 16,.…, 64 Permutation PC-1 sẽ loại bỏ các bit parity và sẽ hoán vị 56 bit còn lại theo bảng 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 biến đổi thành Ci và Di Hoán vị Ci và Di theo bảng 6 Sau khi hoán vị Ci bỏ qua các bít 9, 18, 22, 25 tạo thành nữa trái của Ki (24 bít), còn 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.

Giải mã:

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

Ri-1 = Li

Li-1 = Ri⊕ F(Li, Ki)

Trang 7

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 PC-2

Trang 9

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 data cần mã hóa được chia thành các khối B1, B2, … Bn với kích thước mỗi khối là 64 bits Vectơ khởi tạo IV (64 bits) được chọn Sơ đồ mật mã đưọc cho trong hình 5:

+ Quá trình mã hóa:

Trang 10

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

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

Trang 11

- Sự phát triển của mật mã khóa công khai là rất lớn và có lẽ chính nó tạo ra cuộc cách mạng trong toàn bộ lịch sử của mật mã khóa.

- Những giải thuật khóa công khai đều dựa trên những hàm toán học hơn là những phép thay thế và hoán vị trong mật mã khóa cổ điển Quan trọng hơn mật mã khóa công khai có tính chất bất đối xứng, bao gồm việc sử dụng 2 khóa riêng biệt tương phản với mã hóa qui ước có tính đối xứng mà chỉ sự dụng 1 khóa Việc sử dụng 2 khóa có tầm quan trọng sâu sắc trong lĩnh vực cần tính bí mật, phân bố khóa và sự chứng thực.

- 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 thì bảo mật đối với nhà phân tích mật mã hơn là mã hóa qui ước Thật ra, tính bảo mật của bất kỳ sơ đồ mã hóa nào đều phụ thuộc vào chiều dài của khóa và việc tính toán để giải quyết việc bẻ khóa.

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

+ Có cảm giác rằng sự phân bố khóa thì không quan trọng trong khi sử dụng mã hóa khóa công khai, so sánh thì cơ chế bắt tay trở ngại hơn, bao gồm những trung tâm phân bố khóa cho mã hóa qui ước Thật ra, 1 vài khuôn dạng giao thức là cần thiết, nói chung bao gồm 1 tác nhân trung tâm và những thủ tục liên quan thì không đơn giản mà cũng không hiệu quả hơn yêu cầu cho việc mã hóa khóa công khai này.

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

- Khái niệm mật mã khóa công khai đã tạo ra sự cố gắng để giải quyết 2 vấn đề khó khăn nhất trong mã khóa qui ước, đó là sự phân bố khóa và chữ ký số:

+ Trong mã hóa qui ước sự phân bố khóa yêu cầu hoặc là hai người truyền thông cùng (share) tham gia một khóa mà bằng cách nào đó đã được phân bố tới họ hoặc là sử dụng chung một trung tâm phân bố khóa Whitfield Diffie, một trong những người khám phá ra mật mã khóa công khai (cùng với Martin Hellman) đã giải thích rằng yêu cầu này đã phủ định bản chất của mật mã: khả năng bảo vệ tính bí mật hoàn hảo qua việc truyền thông riêng của bạn: “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

Trang 12

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?”.

+ Nếu việc sử dụng mật mã đã trở nên phổ biến, không chỉ trong quân đội mà còn trong thương mại và những mục đích cá nhân thì những đoạn tin và tài liệu điện tử sẽ cần những chữ ký tương đương đã sử dụng trong các tài liệu giấy Tức là, một phương pháp có thể được nghĩ ra có quy định làm hài lòng tất cả những người tham gia khi mà một đoạn tin số được gởi bởi một cá nhân đặc biệt hay không?.

- Trong sơ đồ mã hóa quy ước, các khóa được dùng cho mã hóa và giải mã một đoạn tin là giống nhau Đây là một điều kiện không cần thiết Thay vì nó có thể phát triển giải thuật mã hóa dựa trên một khóa cho mã hóa và một khóa khác (có quan hệ với khóa trên) cho giải mã Hơn nữa các giải thuật này có những đặc điểm quan trọng sau:

+ Đó 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 còn có đặc điểm hoặc một trong hai khóa quan hệ có thể được sử dụng cho mã hóa còn khóa kia đượ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ố rộng rãi khóa mã hóa bằng cách đặt khóa vào một thanh ghi hay một file công khai Đây là khóa công khai, khóa còn lại được giữ riêng.

+ 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 đoạn tin mã hóa, nó giải mã bằng khóa bí mật của mình Không một người nào khác có thể giải mã đoạn tin mã này bởi vì chỉ có mình B biết khóa bí mật đó thôi.

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

Trang 13

Với cách tiếp cận này, tất cả những người tham gia có thể truy xuất khóa công khai Khóa bí mật được tạo ra bởi từng cá nhân, vì vậy không bao giờ được phân bố Ở bất kỳ thời điểm nào, hệ thống cũng có thể chuyển đổi cặp khóa để đảm bảo tính bảo mật

- Bảng sau tóm tắt một số khía cạnh quan trọng về mã hóa quy ước và mã hóa công khai: để phân biệt giữa hai loại, chúng ta sẽ tổng quát hóa liên hệ khóa sử dụng trong mã hóa quy ước là khóa bí mật, hai khóa sử dụng trong mã hóa công khai là khóa công khai và

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

* Tính bảo mật:

- 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.

* Yêu cầu:

- 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.

* Tính bảo mật:

- 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ề 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

Trang 16

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 sử dụng hoặc khóa bí mật của người gởi hoặc khóa công khai của người nhận hoặc cả hai mà hình thành một số kiểu chức năng của mật mã khóa Có 3 chiến lược sau:

+ 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.

+ Chữ ký số: người gởi mã hóa đoạn tin (ký tên) bằng khóa bí mật của mình, người nhận giải mã bằng khóa công khai của người gởi Chữ ký được áp dụng tới đoạn tin hay tới một khối dữ liệu nhỏ mà được liên kết trong một số phương thức tới đoạn tin.

+ Chuyển đổi khóa: người gởi mã hóa đoạn tin hai lần, lần 1 sử dụng khóa bí mật của bản thân, lần 2 sử dụng khóa công khai của người nhận Người nhận giải mã đoạn tin nhận được bằng khóa bí mật của bản thân và khóa công khai của người gởi.

- Một số giải thuật cho mật mã khóa công khai: RSA, ECC, LUC, DSS, Diffie_Hellman… Trong đồ án này, chỉ trình bày giải thuật RSA.

2.4 Các yêu cầu của mật mã khóa công khai:

- Công việc tính toán thì dễ dàng cho người nhận B  tạo cặp khóa: khóa công khai KU và khóa bí mật KR

- Công việc tính toán thì dễ dàng cho người gởi A  biết khóa công khai và đoạn tin cần mã hóa M, để tạo mật mã tương ứng: C=EKUb (M).

- Công việc tính toán thì dễ dàng cho người nhận B  sử dụng khóa bí mật để giải mã đoạn tin mã hóa C, khôi phục lại đoạn tin đầu:

M= DKRb (C)= DKRb [EKUb (M)]

- Công việc tính toán không thể thấy trước đối với địch thủ biết khóa công khai KUb, để xác định khóa bí mật KRb.

- Công việc tính toán không thể thấy trước đối với địch thủ biết khóa công khai KUb và một mật mã C, để khôi phục đoạn tin ban đầu M.

- Chức năng mã hóa và giải mã có thể được áp dụng theo thứ tự: M= DKRb [EKUb (M)]

Trang 17

M= EKUb [DKRb (M)]

Có thể nhận thấy rằng việc tính Y=f(X) thì dễ dàng trong khi tính X=f –1(Y) là không thể thấy trước Nói chung từ “dễ dàng” được xác định bởi 1 bài toán là nó có thể được giải quyết trong thời gian nhất định (hàm của chiều dài input) Nếu chiều dài input là n bít thì thời gian để tính hàm đó tỉ lệ với na (a=const) Để đảm bảo tính bảo mật, phải sử dụng khóa có kích thước đủ lớn (thường trên 100 chữ số thập phân) Ví dụ kích thước khóa và thời gian bẻ khóa (MIPS năm) trong các giải thuật RSA/DSS và ECC như sau:

2.5 Giải thuật RSA (Rivest, Shamir và Adleman – 1977):

2.5.1 Mô tả giải thuật:

- Sơ đồ RSA là sơ đồ mã hóa khối: đoạn tin được mã hóa từng khối, với mỗi khối có giá trị nhỏ hơn n Việc mã hóa và giải mã theo hình thức sau, cho khối văn bản M và khối bảo mật C:

C = Me mod n

M = Cd mod n = (Me)d mod n = Mde mod n

- Cả hai người gởi và nhận phải biết giá trị n, người gởi biết e và chỉ có người nhận biết d Cho nên đây là giải thuật mã hóa với khóa công khai KU=[e,n] và khóa bí mật KR=[d,n] Vì giải thuật này thỏa giải thuật mật mã khóa công khai nên các yêu cầu sau phải được đáp ứng:

+ Có thể tìm thấy giá trị d,e,n để M=Mde mod n với mọi M<n hay không? + Một cách tương đối dễ dàng tính Me và Cd với mọi M<n hay không? + Không thể xác định d khi biết e và n.

- Theo lí thuyết của Euler: cho 2 số nguyên tố p và q, 2 số nguyên n và m (n=p*q , 0<m<n) và số nguyên k Ta có:

Trang 18

0(n) = 0(pq) = (p-1)(q-1) Do đó:

nếu: de = k0(n) +1 và gcd(0(n),e) = 1 (gcd: ước số chung) thì : de mod 0(n) = 1 và d mod 0(n) = e-1

- Sơ đồ RSA:

+ Giả sử user A đã công bố khóa công khai e của nó và user B muốn gởi đoạn tin M tới A Khi đó B tính C = Me mod n và truyền C Khi nhận được đoạn tin C này, user A giải mã bằng cách tính Cd mod n Có thể thấy rằng M = Cd mod n vì:

de mod 0(n) = 1 hay de = k0(n) + 1

 Mk0 (n) + 1 = Mk (p-1) (q-1) + 1 = M mod n = (Mde mod n) mod n = Mde mod n Cd mod n = (Me)d mod n = Mde mod n = M

+ Có thể tóm tắt giải thuật RSA như bảng sau:

Tạo 2 số nguyên tố lớn p và q Tính n = p*q, 0(n) = (p-1)*(q-1)

Chọn 1 số ngẫu nhiên 1<e<0(n): gcd(0(n), e) = 1

Tính d: d = e-1 mod 0(n) (giải thuật Extended Euclidean) Khóa công khai KU = [e, n] Đoạn tin mã: C

Giải mã : M = Cd mod n - Độ phức tạp:

+ Cộng 2 số k bít: 0(k)

Trang 19

+ Nhân 2 số k bít: 0(k2) + 2 k bít mod n : 0(k2) + xc mod n : 0(k3)

Để tính xc mod n cần c-1 phép nhân modulus  không hiệu quả (do c lớn)  sử dụng giải thuật square_multiply để giảm số phép nhân mod nhiều nhất 2l (l là số bít nhị phân của c, l<=k với k là số bít nhị phân của x)

- Tốc độ mã hóa trong RSA:

Tốc độ và hiệu quả của nhiều phần mềm thương mại có sẵn và công cụ phần cứng của RSA đang gia tăng 1 cách nhanh chóng Với pentium 90Mhz, bộ toolkit BSAFE 3.0 của cơ quan bảo mật dữ liệu RSA đạt tốc độ tính khóa bí mật là 21,6Kbps với khóa 512 bít và 7,4Kbps với khóa 1024 bít Phần cứng RSA nhanh nhất đạt hơn 300 Kbps với khóa 512 bít, nếu được xử lý song song thì đạt 600 Kbps với khóa 512 bít và 185Kbps với khóa 970 bít Người ta mong đợi rằng tốc độ RSA sẽ đạt 1Mbps vào cuối năm1999 So sánh với giải thuật DES và các giải thuật mã khối khác thì RSA chậm hơn: về phần mềm DES nhanh hơn RSA 100 lần, về phần cứng DES nhanh hơn RSA từ 1000 tới 10000 lần tùy thuộc công cụ (implementation) sử dụng (thông tin này được lấy từ http://www.rsa.com).

- Kích thước khóa trong RSA:

Tùy thuộc vào tính bảo mật cần thiết của mỗi người và thời gian sống của khóa mà khóa có chiều dài thích hợp:

+ Loại Export : 512 bít + Loại Personnal : 768 bít + Loại Commercial: 1024 bít + Loại Militery : 2048 bít - Chu kỳ sống của khóa phụ thuộc: + Việc đăng ký và tạo khóa + Việc phân bố khóa.

+ Việc kích hoạt hoặc không kích hoạt khóa + Việc thay thế hoặc cập nhập khóa.

+ Việc hủy bỏ khóa.

+ Việc kết thúc khóa bao gồm sự phá hoại hoặc sự lưu trữ.

Trang 20

2.5.2 Tính bảo mật của giải thuật RSA:

- Vì khóa là công khai, nên người giải mã thường dựa vào cặp khóa này để tìm cặp khóa bí mật Điều quan trọng là dựa vào n để tính hai thừa số p, q của n từ đó tính được d Có nhiều giải thuật như thế, đầu tiên ta xét trường hợp đơn giản nhất là người giải mã biết được Φ(n) Khi đó tính p, q đưa về việc giải hai phương trình sau:

n = p.q

Φ(n) = (p-1)(q-1)

Thay q=n/p ta được phương trình bậc hai: p2 – (n - Φ(n) + 1)p + n = 0

Hai nghiệm của phương trình bậc hai này sẽ là p, q Tuy nhiên vấn đề có được Φ(n) còn khó hơn tính hai thừa số của n nhiều.

2.5.2.1 Phương pháp p-1:

Chúng ta biết rằng nếu n<1012 thì việc tìm hai thừa số của n không mấy khó khăn, bởi việc chia n cho các số từ 1 đến √ n Giải thuật p-1 được đưa ra vào năm 1974 : số nhập số lẻ n , và một số B ràng buột Giải thuật :

else no factor of n is found (failure)

Nội dung của giải thuật này như sau: giả sử n=p.q (p, q chưa biết) và B là 1 số nguyên đủ lớn, với mỗi thừa số nguyên tố k , k<=B mà k | (p-1) , ta phải có:(p-1) | B!

Tại cuối của vòng lặp bước 2 : a=2B!(mod n) Vì thế : a= 2B!(mod p)

Vì p | n Theo định lý Fermat , ta có: 2p-1 =1 (mod p)

Do (p-1) | B! , nên chúng ta có : a=1 (mod p) (trong bước 3) Vì thế ở bước 4 : p | (a-1) và p | n, nên nếu d=gcd(a-1, n) thì d=p

Trang 21

Trong giải thuật này có B-1 phép tính modular bằng lũy thừa, mỗi phép đòi hỏi 2log2B phép modular, phép tính USCLN cần thời gian O((log)3), giải thuật Euclidean cần thực hiện trong thời gian O((log n)3 ) Nên độ phức tạp của giải thuật là O(BlogB(logn)2 + (logn)3)

Tuy nhiên xác xuất thành công trong việc chọn B là rất nhỏ, mặt khác nếu gia tăng kích thước B rất lớn chẳng hạn sqrt(n) thì giải thuật sẽ thành công , nhưng không nhanh hơn giải thuật chia dần như trình bày trên Điều rút ra từ giải thuật này là: n có thừa số nguyên tố p mà (p-1) chỉ có các ước số nguyên tố “nhỏ” Rất dễ dàng để xây dựng mã hóa công khai mà không bị tấn công của phương pháp này Cách đơn giản nhất là tìm môt số nguyên tố p1 lớn , mà p=2p1+1 cũng là số nguyên tố, tương tự tìm q1 nguyên tố lớn và q=2q1+1 nguyên tố (sử dụng giải thuật Monte _ Carlos).

2.5.2.2 Bẻ khóa khi biết được số mũ d của hàm giải mã:

- Việc tính số d không dễ dàng, bởi vì đây là khóa bí mật nên nếu biết nó thì có thể giải mã được mọi đoạn tin tương ứng Tuy nhiên giải thuật này mang nhiều ý nghĩa lý thuyết, nó cho chúng ta biết rằng nếu có d thì ta có thể tính các thừa số của n Nếu điều này xảy ra thì người sở hữu khóa này không thể thay đổi khóa công khai, mà phải thay luôn số n.

- Giải thuật này dựa trên cơ bản là nếu n=pq với p, q là hai số nguyên tố lẻ và x2 =1 (mod n) có kết quả chỉ là x=1 hay –1 (mod n), tương tự x2=1 (mod n) có lời giải như thế.

Ta có x2=1 (mod n) tương đương x2 = 1 (mod p) và x2 = 1 (mod q) Vì thế có bốn căn bậc hai của 1 modulo n, chúng ta có thể sử dụng lý thuyết số dư Trung Hoa.

- Giải thuật như sau :

+ Chúng ta có thể phân tích giải thuật, đầu tiên nếu may mắn chọn w là bội số của n thì tìm ra p, q ngay Nếu w nguyên tố cùng nhau với n thì chúng ta tính wr, w2r, w4r,… modulo n cho đến khi tồn tại t sao cho:

w2r T =1 (mod n)

và ab –1 =2sr=0(mod Φ(n))

+ Cuối cùng, tại cuối vòng lặp while chúng ta tìm thấy vo sao cho v2

o =1 (mod n) nhưng vo <> 1 (mod n) Bước 12 tìm USCLN(vo +1,n) ta tìm được p hay q.

1 chọn w bất kỳ mà 1<= w<=n

Trang 22

10 10 if vo=-1 (mod n) thenquit (thất bại)

11 11 else tính x=uscln(vo+1,n) ( thành công x=p;x=q)

2.5.2.3 Bẻ khóa dựa trên các attack lặp lại:

Siimons và Norris đã chỉ ra rằng hệ thống RSA có thể bị tổn thương khi sử dụng tấn công lặp liên tiếp (iteration attack) Đó là khi đối thủ biết cặp khóa công khai {n,e} và mật mã C thì anh ta có thể tính chuỗi các mật mã sau:

Trang 23

Hệ thống RSA có một đặc điểm đặc trưng là thông tin không phải luôn luôn được che dấu Giả sử người gởi có e = 17, n = 35 Nếu anh ta muốn gởi bất cứ data nào thuộc tập sau:

{1, 6, 7, 8, 13, 14, 15, 20, 21, 22, 27, 28, 29, 34}

thì mọi mật mã cũng chính là data ban đầu Nghiã là: M = Me mod n Còn khi p=109, q=97, e=865 thì hệ thống hoàn toàn không có sự che dấu thông tin , bởi vì:

M = M865 mod (109*97) với mọi M

Với mỗi modulus n, không che dấu được ít nhất là 9 message: M = Me mod n (1)

Hay: M = Me mod p và M = Me mod q (2)

Với mỗi e, (2) có ít nhất 3 giải pháp thuộc tập {0, 1, -1} Do đó tất cả message thỏa (1) là:

{M = [M (mod p), M (mod q)] / M (mod p), M (mod q) ∈ {0, 1, -1}}

Để xác định chính xác số message không được che dấu (không bị thay đổi sau khi mã hóa) ta sử dụng định lý sau:

“ Nếu các message được mã hóa trong hệ thống RSA được xác định bởi số modulus n = pq (p, q la nguyên tố) và khóa công khai e thì có:

m = [1 + gcd(e-1, p-1)][1 + gcd(e-1), q-1] message không bị che dấu”.

2.5.4 Các giải thuật toán học được sử dụng trong RSA:

2.5.4.1 Giải thuật Euclidean – tìm USCLN của hai số nguyên:

Cho hai số nguyên ro và r1, giải thuật Euclidean gồm những phép tính sau:

Trang 24

Giả sử m1,m2, …mr có từng cặp nguyên tố cùng nhau và giả sử a1,a2,…ar là những số nguyên Cho r phương trình x= aI (mod mi) (1<= I<=r) có một lời giải duy nhất

x=Σ aiMiyi

i=1

trong đó Mi =M/mI và yI =MI-1 mod mI , M=m1*m2*…mr

2.5.4.3 Giải thuật Euclidean mở rộng:

if temp>=0 then temp=temp mod n if temp<0 then temp =n-((-temp) mod n)

2.5.4.4 Giải thuật Miller –Rabin kiểm tra số nguyên tố lẻ:

1 Write n-1 =2km ,where m is odd

2 2 Chose a random integer a , 1<=a<=n-1 3 3 Compute b=am mod n

4 If b=1 (mod n) then anwser “n is prime “ and quit

Trang 25

4 5 for i=0 to k-1 do

if b=-1(mod n) then anwser “n is prime “ and quit else b=b2 mod n

6 answer “n is composite”

2.5.4.5 Giải thuật tính xb mod n:

Đầu tiên ta phân tích số nguyên b dưới dạng nhị phân b=Σ bI 2I (I=0 đến l) z=1

for i=l-1 downto do z=z2 mod n

if bI =1 then z=z z mod n

3 Giải thuật băm MD5

- Để kiểm tra tính toàn vẹn của một khối data lớn, người ta sử dụng chữ ký số để đại diện cho khối data đó (giống như chữ ký trên văn bản) bằng cách dùng hàm băm: với input là một message bất kỳ, output là một chuỗi bít có chiều dài xác định trước, chuỗi bít này được gọi là message_digest.

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

+ Là hàm một chiều, không thể thực hiện phép biến đổi ngược như trong quá trình mã hóa và giải mã, nghĩa là với một message_digest cho trước, khó có thể tìm được một message nào mà có hàm băm bằng message_digest này.

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

- Các giải thuật băm được sử dụng hiện nay là: MD2, MD4, MD5, SHS Trong đó MD5 là giải thuật băm được sử dụng phổ biến và nó sẽ được trình bày trong phần dưới.

- Giải thuật MD5 được phát triển bởi Ron Rivest ở MIT: nhận đầu vào là một khối data (message) có chiều dài bất kỳ, xử lý nó thành các khối 512 bít, tạo đầu ra là một message_digest 128 bít Quá trình bao gồm các bước sau:

* Bước 1: message ban đầu được thêm (padding) một số bít (bắt đầu là bít 1, kế tiếp là các bít 0, số bít thêm vào từ 1 tới 512 bít) sao cho tổng số bít sau khi thêm vào cộng với 64 (chiềi dài của message ban đầu) là bội số của 512.

K bít

Bội số của 512 bít

Trang 26

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

* Bước 2: khởi tạo bộ đệm MD Bộ đệm 128 bít được dùng để chứa kết quả trung gian và cuối cùng của hàm băm Có thể xem bộ đệm như là 4 thanh ghi 32 bít Các thanh ghi này được khởi tạo (dạng số hex) như sau:

A = 01234567; B = 89abcdef; C = fedcba98; D = 76543210

* Bước 3: xử lý message thành từng khối 512 bít (16 từ 32 bít) Quá trình tính toán được chia thành từng giai đoạn, số giai đoạn bằng số chiều dài (tính theo bít) của message sau khi đã padding chia cho 512 Mỗi giai đoạn nhận đầu vào là khối 512 bít của message đã được padding và message_digest của giai đoạn trước, cho ra kết quả là message_digest mới (xem hình 1) Mỗi giai đoạn thực hiện trong 4 bước (vòng), bốn vòng có cấu trúc giống nhau nhưng mỗi vòng sử dụng một hàm luận lý khác nhau, được đặc tả là F, G, H, I Trong hình 2, bốn vòng được đặt nhãn là fF , fG , fH , fI , để chỉ rằng mỗi vòng có cấu trúc hàm tổng quát như nhau nhưng tùy thuộc vào sự khác nhau của hàm thao tác (F, G, H, I).

Trang 27

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]) Trong đó:

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.

Trang 28

H(b,c,d) = b ^ c ^ d 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] = 232 * 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 232

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

Trang 29

T1 = D76AA478 T17 = F61E2562 T33 = FFFA3942 T49 = F4292244 T9 = 698098D8 T25 = 21E1CDE6 T41 = 289B7EC6 T57 = 6FA87E4F T10 = 8B44F7AF T26 = C33707D6 T42 = EAA127FA T58 = FE2CE6E0 T11 = FFFF5BB1 T27 = F4D50D87 T43 = D4EF3085 T59 = A3014314 T12 = 895CD7BE T28 = 455A14ED T44 = 04881D05 T60 = 4E0811A1 T13 = 6B901122 T29 = A9E3E905 T45 = D9D4D039 T61 = F7537E82 T14 = FD987193 T30 = FCEFA3F8 T46 = E6DB99E5 T62 = BD3AF235 T15 = A679438E T31 = 676F02D9 T47 = 1FA27CF8 T63 = 2AD7D2BB T16 = 49B40281 T32 = 8D2A4C8A T48 = C4AC5665 T64 = EB86D391

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

Trang 30

ABCD 12 7 13 13 5 29 9 4 45 4 6 61

- 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 232 hai toán hạng 32 bít với nhau + Phép toán dịch trái vòng (w << s): dịch trái vòng w (32 bít) với s bít.

* Bước 4: xuất (output) Tất cả khối 512 bít L đã được xử lý thì đầu ra ở giai đoạn

+ L: số khối message (đã được padding) + MD: giá trị message_digest cuối cùng.

Trang 31

1 Tổng quan về mã hóa và một số khái niệm:

- Trong một mạng liên lạc dữ liệu, giả sử rằng một user ở một terminal đang liên lạc với một chương trình ứng dụng hay 1 user ở một terminal khác ở trong cùng một vùng hay ở

1 vùng khác, các user này dùng chung 1 khóa chung (khóa chính K) mà nó có thể là một

khóa bí mật (khóa riêng tư = private key) được cung cấp và được chấp nhận trước bởi các user hoặc một khóa được cấp phát động bởi hệ thống và gán cho các user này, được gọi là khóa mã hóa dữ liệu hoặc khóa giải mã dữ liệu (hình 1.1)

- Một khóa chính được dùng để bảo mật liên lạc được gọi là khóa liên lạc chính

(primary communication key = KC) Khóa mã hóa dữ liệu chỉ có tác dụng trong khoảng

thời gian của một phiên liên lạc (communication session) và được gọi là khóa phiên liên lạc

(session key = KS).

- Đối với bảo mật tập tin, khóa mã hóa dữ liệu dùng để bảo vệ tâp tin được gọi là

khóa tập tin KF (file key) Khóa tập tin này được tạo bởi user cuối cùng hoặc bởi hệ

thống Tập tin đã mã hóa có thể được giải mã ở một terminal hoặc một host bất kỳ nào có chứa sẵn khóa KF này

- Khóa phụ (secondary key = KN) trong đó N biểu diễn nút là một loại khóa mã hóa

khóa được dùng để bảo vệ các khóa chính Khi một khóa phụ được dùng để bảo vệ khóa trong môi trường liên lạc thì được gọi là khóa liên lạc phụ (secondary communication key =

KNC), còn khi áp dụng trong môi trường cơ sở dữ liệu thì nó được gọi là khóa tập tin phụ (secondary file key = KNF)

- Trong một môi trường liên lạc, một khóa chính chỉ tồn tại trong khoảng thời gian hai user cuối cùng trao đổi dữ liệu với nhau Thông thường khóa sẽ tồn tại trong khoảng vài phút hoặc vài giờ ít khi tồn tại hơn một ngày Ngược lại một khóa chính được dùng để bảo vệ dữ liệu lưu trữ có thể tồn tại trong khoảng vài năm hoặc trong suốt thời gian mà tập tin được lưu giữ Còn khóa phụ thông thường được đưa vào trong hệ thống lúc có yêu cầu

Trang 32

cài đặt thông qua bộ tạo khóa, các khóa phụ được lưu giữ lâu dài (vài tháng hoặc vài năm) và không được thay đổi

- Đối với bảo mật liên lạc, các khóa phiên liên lạc được tạo ra ở host và sau đó được truyền đến một nút nhận (terminal hoặc host) thông qua một mạng liên lạc (giả sử là không được bảo mật) Khóa phiên liên lạc được bảo mật bằng cách mã hóa nó bởi một khóa khác (khóa mã hóa khóa) mà được cài sẵn ở nút nhận Mỗi nút nhận có một khóa mã hóa khóa duy nhất Do đó nếu khóa này bị hỏng thì chỉ ánh hưởng đến sự bảo mật ở tại terminal này mà không làm ảnh hưởng đến sự bảo mật của toàn bộ mạng.

- Trong một hệ thống riêng biệt, một tập các khóa mã hóa khóa được dùng để mã hóa các khóa phiên liên lạc được truyền từ host này đến host khác và một tập các khóa mã hóa khóa khác được dùng để mã hóa các khóa phiên liên lạc được truyền từ host đến terminal Vì vậy mỗi host phải chứa khóa mã hóa khóa đến host và terminal mà nó liên lạc

đến (được gọi là khóa chủ của host = KM), trong khi mỗi terminal chỉ cần chứa một khóa mã hóa khóa đến host mà nó liên lạc (được gọi là khóa chủ của terminal = KTM)

- Hệ mật mã (crytographic facility) là vùng chứa giải thuật mật mã (như là DES) và

một bộ nhớ cố định để chứa các khóa chủ (như là KM, KTM ở host hoặc KTM ở terminal) Nó chỉ có thể được truy xuất thông qua các giao tiếp hợp pháp Vì một số lượng lớn các khóa mã hóa được dùng ở bộ xử lý của host nên cần phải có các thủ tục tự động tạo ra và quản lý các khóa này Bộ tạo khóa sẽ tạo ra các khóa mã hóa khóa mà chúng được yêu cầu bởi host hoặc có thể được chỉ định bởi các user Nó có đặc quyền thêm vào, thay đổi và hủy bỏ các khóa Bộ quản lý khóa có nhiệm vụ mã hóa lại một khóa từ việc mã hóa bởi một khóa này thành việc mã hóa bởi một khóa khác.

- Các nút mà ở đó đòi hỏi mã hóa dữ liệu thì phải chứa các giải thuật mã hóa giống nhau và mỗi nút phải có một bản sao của cùng một khóa mã hóa K (hình 1.2) Hai nút phải luôn luôn sử dụng một khóa mã hoá dữ liệu chung để cho phép liên lạc bảo mật với nhau, việc bảo mật sẽ được thực hiện tốt hơn nếu các cặp nút liên lạc sử dụng các khóa mã hóa dữ liệu khác nhau Nhờ vậy sẽ giảm tối thiểu hư hỏng nếu một khóa bị phá hỏng.

Trang 33

( )h1 3c

Trang 34

- Để bảo mật khi truyền thông thường người ta sử dụng các giải thuật mã hóa đối xứng (hệ thống khóa bí mật) và mã hóa bất đối xứng (hệ thống khóa công khai) Hệ thống khóa công khai có thuận lợi hơn hệ thống khóa bí mật là kênh bảo mật không cần thiết phải chuyển đổi khóa bí mật, nhưng hầu hết các hệ thống khóa công khai đều chậm hơn nhiều so với các hệ thống khóa bí mật như là DES Vì vậy trong thực tế hệ thống khóa bí mật vẫn thường được sử dụng để mã hóa đoạn tin dài nhưng phải giải quyết bài toán về chuyển đổi khóa bí mật

- Sự phân bố khóa (key distibution) được xác định bởi cơ chế một người trong mạng

chọn 1 khóa bí mật và sau đó truyền nó tới một hay nhiều người khác.

- Sự đồng ý khóa (key agreement) biểu thị bởi một giao thức giữa hai hay nhiều

người tham gia thiết lập một khóa bí mật trên kênh truyền thông công khai.

- TA (Trusted Authority) có nhiệm vụ làm rỏ định danh của user, chọn và truyền

khóa tới user …

- Đối phuơng bị động (passive adversary) nghĩa là hoạt động của anh ta bị hạn chế

để nghe trộm đoạn tin mà được truyền trên kênh.

- Đối phương chủ động (active adversary) có thể thực hiện:

Thay đổi đoạn tin mà hắn quan sát khi nó đang dược truyền trên mạng Lưu đoạn tin cho việc sử dụng lại ở lần sau.

Cố gắng giả dạng làm user khác trong mạng - Mục tiêu của đối phương chủ động là:

Gạt user U và V chấp nhận 1 khóa không hợp lệ là 1 khóa hợp lệ (khóa không hợp lệ có thể là 1 khóa cũ đã hết hạn hay 1 khóa được chọn bởi đối phương).

Làm cho U và V tin rằng họ đã được chuyển đổi 1 khóa bằng 1 khóa khác trong khi họ không có.

- Mục tiêu của sự phân bố khóa và đồng ý khóa là ở cuối mỗi giao thức cả hai đối tác đều có cùng khóa K và giá trị của K thì không được biết bởi bất kỳ một người nào khác (ngoại trừ TA có khả năng)

- Sự tiền phân bố khóa (key predistribution): cho mỗi cặp user {U,V}, TA chọn một

khóa ngẫu nhiên KU,V = KV,U và truyền nó tới U, V qua kênh bí mật (việc truyền khóa không xảy ra trên mạng bởi vì độ bảo mật của mạng thì không cao) Cách tiếp cận này là bảo mật không điều kiện nhưng nó đòi hỏi một kênh bảo mật giữa TA và mỗi user trong mạng Mỗi user phải lưu trữ n-1 khóa và TA cần truyền n(n-1) khóa một cách bảo mật Trong một

Trang 35

mạng tương đối nhỏ, điều này có thể trở nên quá tốn kém, vì thế nó không phải là giải pháp thực tế.

- Một cách tiếp cận thực tế hơn là sự phân bố khóa trực tuyến bởi TA Trong sơ đồ như thế , TA hoạt động như là một server khóa TA tham gia khóa bí mật KU với mỗi user trong mạng Khi U muốn truyền thông với V, U yêu cầu một khóa phiên liên lạc từ TA, TA tạo một khóa phiên liên lạc K và gởi nó (trong dạng mã hóa) cho U và V để giải mã Hệ thống được biết là Kerberos.

- Giao thức đồng ý khóa: U, V liên kết chọn ra một khóa thông qua kênh truyền thông công khai Các hệ thống được biết là Diffie_Hellman, MTI và Girault.

2 Phân bố các khóa bảo mật

2.1 Sự tiền phân bố khóa:

- Đối với mạng n user, TA phải tạo và truyền n(n-1) khóa Nếu n lớn, giải pháp này rất không thực tế vì phải đảm bảo lượng thông tin được truyền một cách bảo mật và lượng thông tin mà mỗi user phải lưu trữ một cách bí mật (tên, khóa bí mật của n-1 user khác) Sơ đồ tiền phân bố khóa Blom cho phép giảm lượng thông tin mà cần để truyền và lưu trữ, trong khi vẫn cho phép mỗi cặp user U và V có thể tính một cách độc lập khóa bí mật KU,V

2.1.1 Sơ đồ của Blom:

- Giả sử mạng có n user, khóa được chọn thuộc miền xác định Zp với p là số nguyên tố (p >= n).

- K là một số nguyên : 1 =< K <= n-2 biểu thị cho kích thước lớn nhất chống lại sự liên kết của K user mà sơ đồ vẫn còn bảo mật.

- TA sẽ truyền K + 1 phần tử của Zp tới mỗi user qua kênh bảo mật (trong sơ đồ tiền phân bố khóa cơ bản là n-1) Mỗi cặp user U và V sẽ có thể tính khóa KU,V = KV,U Điều kiện bảo mật như sau: tập nhiều nhất K user không liên kết từ {U,V} không thể xác định bất kỳ thông tin về KU,V.

- Xét trường hợp đặt biệt của sơ đồ Blom khi K=1 (hình bên): TA sẽ truyền hai phần tử thuộc Zp tới mỗi user qua kênh bảo mật và bất kỳ user riêng lẻ W sẽ không thể xác định bất kỳ thông tin về KU,V nếu W khác U, V

- Ví dụ: giả sử có ba user U, V, và W, p=17, các phần tử công khai là rU=12, rV=7, rW=1 Giả sử rằng TA chọn a=8, b=7, c=2 Khi đó:

Trang 36

f(x,y) = 8 + 7(x+y) + 2xy gU(x) = 7 + 14x

gV(x) = 6 + 4x gW(x) =15 + 9x

KU,V = 3, KU,W = 4, KV,W = 10

U tính KU,V như sau: KU,V = gU(rV) = 7 + 14*7 mod 17 = 3 V tính KV,U như sau: KV,U = gV(rU) = 6 + 4*12 mod 17 = 3

Sơ đồ phân bố khóa của Blom (K=1)

1 Số nguyên tố p được chọn công khai và cho mỗi user U, một phần tử rU

thuộc Zp được chọn công khai Các phần tử rU phải khác biệt nhau.

2 TA chọn ba phần tử ngẫu nhiên a, b, c thuộc Zp (không cần khác biệt) và tính:

f(x,y) = a + b(x+y) + cxy mod p 3 Đối với mỗi user U, TA tính

gU(x) = f(x,rU) mod p

Và truyền gU(x) tới user U qua kênh bảo mật Vì gU(x) là hàm tuyến tính theo x nên có thể được ghi như sau:

gU(x) = aU + bUx Với aU = a + brU mod p

bU = b + crU mod p

4 Nếu U và V muốn truyền thông thì chúng sử dụng khóa KU,V = KV,U = f(rU,rV) = a + b(rU + rV) + crUrV mod p Với U tính KU,V = f(rU, rV) = gU(rV)

V tính KV,U = f(rU, rV) = gV(rU)

- Khi có sự liên kết của hai user {W, X} thì có thể xác định bất kỳ khóa KU,V mà {W, X} khác {U, V} Bởi vì W và X cùng biết:

aW = a + brW bW = b + crW

aX = a + brX bX = b + crX

Với 4 phương trình 3 ẩn trên ta có thể dễ dàng tính a, b, c Từ đó tính được khóa KU,V

Trang 37

- Để tạo sơ đồ vẫn còn bảo mật chống lại sự liên kết của K user, TA sẽ sử dụng hàm f(x,y) có dạng :

f(x,y) = ∑∑ ai,j xi yj mod p (ai,j thuộc Zp và ai,j = aj,i )

2.1.2 Diffie-Hellman:

1 Số nguyên tố p và phần tử đơn giản α thuộc Zp được làm công khai 2 V tính

KU,V = αauav mod p = bUav mod p

Sử dụng giá trị công khai bU từ sự chứng thực của U, cùng với giá trị bảo mật aV của riêng mình.

3 U tính

KU,V = αauav mod p = bVau mod p

Sử dụng giá trị công khai bV từ sự chứng thực của V, cùng với giá trị bảo mật aU của riêng mình.

- Sơ đồ tiền phân bố khóa này cung cấp bài toán Diffie-Hellman quan hệ với bài toán Discrete Logarithm là không thể bẻ gãy.

- Sơ đồ được xét trên Zp, với p là số nguyên tố, α là phần tử đơn giản của Zp , giá trị của p và α là công khai với mọi người trong mạng, ID(U) sẽ biểu thị thông tin định danh nhất định cho mỗi user trong mạng (ví dụ: tên, địa chỉ email, số điện thoại hay các thông tin thích hợp khác) Mỗi user U có một mũ bảo mật aU (0 <= aU <= p-2) (TA không biết giá trị này) và giá trị công khai tương ứng: bU = αau mod p.

- TA sẽ có một sơ đồ chữ ký với giải thuật làm rỏ (công khai) verTA và giải thuật chữ ký bảo mật sigTA.

- Mỗi user U khi tham gia mạng sẽ có sự chứng thực: C(U) = (ID(U), bU, sigTA(ID(U), bU))

Sự chứng thực này có thể được lưu trữ trong cơ sở dữ liệu công khai hay mỗi user có thể lưu trữ sự chứng thực của riêng mình Chữ ký của TA trên sự chứng thực cho phép bất kỳ người nào trong mạng làm rỏ thông tin mà nó chứa.

Thật dễ dàng cho user U và V để tính khóa:

Trang 38

KU,V = αauav mod p Ví dụ: p = 25307, α = 2

Giả sử U chọn aU = 3578 và tính

bU = αau mod p = 23578 mod 25307 = 6113 Sau đó U đặt bU vào trong sự chứng thực của mình Giả sử V chọn aV = 19956 và tính

bV = αav mod p = 219956 mod 25307 = 7984 Sau đó V đặt bV vào trong sự chứng thực của mình Giờ đây U và V có thể tính khóa:

KU,V = bVau mod p = bUav mod p

= 79843578 mod 25307 = 611319956 mod 25307 = 3694

- Nhờ có chữ ký của TA trên sự chứng thực của user nên ngăn cản một cách hiệu quả sự xâm nhập của user W khác

Câu hỏi đặt ra là W có thể tính KU,V nếu W khác U, V hay không? Hoặc nếu W biết bU, bV thì nó có thể xác định KU,V hay không? Bài toán này được gọi là bài toán

Bài toán Diffie_Hellman

I = (p, α, β, γ ) trong đó p là số nguyên tố, α thuộc Zp* là phần tử đơn giản và β, γ thuộc Zp*.

Mục tiêu : tính βlog αγ mod p (=γlog αβ mod p)

Sơ đồ tiền phân bố khóa Diffie_Hellman là bảo mật chống lại đối phương bị động nếu và chỉ nếu bài toán Diffie_Hellman là khó giải ra Tuy nhiên việc phỏng đoán không chứng minh rằng bất kỳ giải thuật mà giải bài toán Diffie_Hellman cũng có thể được sử dụng để giải bài toán Discrete Log (giống như trong giải thuật RSA , việc bẻ gãy RSA thì tương đương với việc phân tích thừa số).

2.2 Hệ phân bố khóa Kerberos

- Do vấn đề không an toàn khi sử dụng cùng một khóa trong một thời gian dài, cho nên thường sử dụng một phương pháp trực tuyến thích hợp hơn mà trong đó khóa liên lạc mới được tạo ra cho mỗi cặp user muốn truyền thông (tính chất làm tươi khóa).

Trang 39

- Nếu sự phân bố khóa trực tuyến được sử dụng thì không cần thiết cho bất kỳ user trong mạng phải lưu trữ khóa để truyền thông với user khác (mỗi user sẽ tham gia một khóa với TA) Các khóa phiên liên lạc sẽ được truyền theo yêu cầu của TA.

- Kerberos là một hệ thống phục vụ khóa phổ biến dựa trên hệ mật mã khóa bí mật (không dựa vào mã hóa khóa công khai) Mỗi user U tham gia một khóa bí mật (DES) KU

với TA, trong hầu hết các version của Kerberos, tất cả đoạn tin khi truyền được mã hóa sử dụng kiểu CBC (Cipher Block Chain).

- Khi có yêu cầu về khóa phiên liên lạc được gởi tới TA, TA sẽ tạo một khóa phiên liên lạc ngẫu nhiên K TA sẽ ghi thời gian mà tại đó yêu cầu được thực hiệngọi là thời gian timestamp T và mô tả khoảng thời gian sống L mà khóa K còn hợp lệ (từ T tới T+L) Tất cả các thông tin này được mã hóa và được truyền tới U và V Giao thức truyền khóa phiên liên lạc như sau:

1 U yêu cầu TA cho một khóa phiên liên lạc để truyền thông với V 2 TA chọn một khóa phiên liên lạc ngẫu nhiên K, timestamp T và L.

3 TA tính: m1 = eKu (K, ID(V), T, L) và m2 = eKv (K, ID(U), T, L) và gởi m1, m2 tới U 4 U sử dụng hàm giải mã dKu để tính K, T, L và ID(V) từ m1.

Sau đó tính: m3 = eK (ID(U), T) Và gởi m3 tới V cùng với m2 mà đã nhận từ TA 5 U sử dụng hàm giải mã dKv để tính K, T, L và ID(U) từ m2.

Sau đó sử dụng dK để tính T và ID(U) từ m3, rồi kiểm tra xem hai giá trị Của T và hai giá trị của ID(U) có giống nhau không? Nếu thỏa thì tính: m4 = eK (T+1) Và gởi m4 tới U.

6 U giải mã m4 sử dụng dK và làm rỏ rằng kết quả là T+1 Nếu đúng thì K đã được truyền thành công tới V.

Trang 40

Trong đó:

KU, KV : khóa tham gia của U và V với TA U (V) sử dụng của mình để giải mã eKu (eKv).

m1, m2 : cung cấp sự bảo mật trong khi truyền khóa K m3, m4 : cung cấp sự xác nhận khóa.

- Mục đích của T và L là nhằm ngăn cản đối phương chủ động từ việc lưu trữ đoạn tin cũ cho việc tái truyền ở lần sau Các khóa sẽ không đươc coi là hợp lệ một khi chúng đã hết hạn.

- Một trong những nhược điểm của Kerberos là tất cả user trong mạng phải có đồng hồ đồng bộ bởi vì thời gian hiện tại được sử dụng để xác định khi nào một khóa phiên liên lạc đã cho là hợp lệ Trong thực tế rất khó khăn để cung cấp sụ đồng bộ hoàn hảo bởi vì thường trong máy sự thay đổi một lượng thời gian phải được cho phép

2.3 Trao đổi khóa Diffie_Hellman:

Nếu chúng ta không muốn sử dụng server khóa trực tuyến thì sử dụng giao thức đồng ý khóa để trao đổi các khóa bí mật:

Ngày đăng: 24/08/2012, 15:42

Hình ảnh liên quan

Hình 1: Encrypt ion comp utation - các hệ mật mã.doc

Hình 1.

Encrypt ion comp utation Xem tại trang 4 của tài liệu.
Hình 2: KeyS che dul eC al cu la tionK e y - các hệ mật mã.doc

Hình 2.

KeyS che dul eC al cu la tionK e y Xem tại trang 5 của tài liệu.
Hình 3: Ca lc ula tion off (R , K)6 - các hệ mật mã.doc

Hình 3.

Ca lc ula tion off (R , K)6 Xem tại trang 6 của tài liệu.
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 - các hệ mật mã.doc

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 Xem tại trang 7 của tài liệu.
Bảng 2: Bảng chọn bí tE Bảng 3: Bảng hoán vị P - các hệ mật mã.doc

Bảng 2.

Bảng chọn bí tE Bảng 3: Bảng hoán vị P Xem tại trang 7 của tài liệu.
Bảng 5: Bảng hoán vị khóa PC-1 Bảng 6: Bảng hoán vị khóa PC-258 50  42  34   26  18  10   2 - các hệ mật mã.doc

Bảng 5.

Bảng hoán vị khóa PC-1 Bảng 6: Bảng hoán vị khóa PC-258 50 42 34 26 18 10 2 Xem tại trang 7 của tài liệu.
Bảng 4: Bảng chọn (S-boxex) - các hệ mật mã.doc

Bảng 4.

Bảng chọn (S-boxex) Xem tại trang 8 của tài liệu.
Hình 4: Electronic Codebook Mode (ECB) - các hệ mật mã.doc

Hình 4.

Electronic Codebook Mode (ECB) Xem tại trang 9 của tài liệu.
1.2.1. DES In Electronic CodeBook Mode (ECB ): - các hệ mật mã.doc

1.2.1..

DES In Electronic CodeBook Mode (ECB ): Xem tại trang 9 của tài liệu.
Hình 5: Cipher Block Chaining (CBC) mode - các hệ mật mã.doc

Hình 5.

Cipher Block Chaining (CBC) mode Xem tại trang 10 của tài liệu.
- Bảng sau tóm tắt một số khía cạnh quan trọng về mã hóa quy ước và mã hóa công khai: để phân biệt giữa hai loại, chúng ta sẽ tổng quát hóa liên hệ khóa sử dụng trong mã  hóa quy ước là khóa bí mật, hai khóa sử dụng trong mã hóa công khai là khóa công kha - các hệ mật mã.doc

Bảng sau.

tóm tắt một số khía cạnh quan trọng về mã hóa quy ước và mã hóa công khai: để phân biệt giữa hai loại, chúng ta sẽ tổng quát hóa liên hệ khóa sử dụng trong mã hóa quy ước là khóa bí mật, hai khóa sử dụng trong mã hóa công khai là khóa công kha Xem tại trang 13 của tài liệu.
Hình 1: Tạo message_digest sử dụng MD5. - các hệ mật mã.doc

Hình 1.

Tạo message_digest sử dụng MD5 Xem tại trang 26 của tài liệu.
Hình 2: Xử lý MD5 của khối đơn 512 bít (HDMD5). - các hệ mật mã.doc

Hình 2.

Xử lý MD5 của khối đơn 512 bít (HDMD5) Xem tại trang 27 của tài liệu.
Hình 3: Tác vụ của MD5: [abcd ks i] - các hệ mật mã.doc

Hình 3.

Tác vụ của MD5: [abcd ks i] Xem tại trang 28 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan