Quản lý khóa của hệ mật RSA

Một phần của tài liệu Tìm hiểu một số kỹ thuật tấn công hệ mật RSA (Trang 38 - 50)

CHƯƠNG II. HỆ MẬT MÃ KHÓA CÔNG KHAI

2.2. Hệ mật khóa công khai RSA

2.2.4. Quản lý khóa của hệ mật RSA

Khi sử dụng hệ mật mã khóađối xứng, vấn đề đặt ra là phải trao đổi khóa bí mật. Một trong những công dụng của hệ mật RSA là giải quyết vấn đề phân phối

• Phân phối khóa công khai.

• Sử dụng hệ mật khóa công khai để phân phối khóa bí mật.

2.2.4.1. Phân phốikhóa công khai Có các kỹ thuật phân phối khóa sau:

• Thông báo khóa công khai

• Danh mục khóa công khai có sẵn

• Phân quyền khóa công khai

• Chứng chỉ khóa công khai a. Thông báo khóa công khai

Do hệ mật khóa công khai sử dụng khóa công khai nên tất cả các đối tượng tham gia trao đổi thông điệp có thể gửi khóa công khai của họ cho các đối tác còn lại hoặc thông báo rỗng rãi khóa công khai của họ.

Hình 2.4. Thông báo khóa công khai

Mặc dù phương pháp trên tương đối thuận tiệ n nhưng nó có một vài nhược điểm. Mọi người đều có thể giả mạo khóa công khai. Do đó, bất kỳ một người nào đều có thể giả mạo là A và gửi khóa công khai của mình cho cácđối tác khác hoặc

A

PUa

PUa

PUa

PUa

B

PUb

PUb

PUb

PUb

thông báo rỗng rãi khóa công khai của mình. Sauđó họ nhận thông điệp lẽ ra phải gửi cho A và đọc giải mãđược thông điệp nhờ khóa riêng của họ.

b. Danh mục khóa công khai

Một kỹ thuật khác đảm bảo độ an toàn cao hơn là duy trì một danh mục động khóa công khai luôn sẵn sàng. Việc duy trì và phân phối khóa được một tổ chức hay cá nhân nào đó đáng tin cậy chịu trách nhiệm. Kỹ thuật này bao gồm các thành phần sau:

• Người quản lý duy trì một danh mục cho mỗi đối tượng tham gia trao đổi gồm tên và khóa công khai.

• Mỗi đối tượng tham gia đăng ký một khóa công khai với người quản lý danh mục khóa công khai. Việc đăng ký phải được đảm bảo an toàn.

• Mỗi đối tương tham gia có thể thay đổi khóa đang sử dụng bất cứ thời điểm nào, có thể do khóa đang sử dụng đãđược dùng để gửi một lượng lớn dữ liệu hoặc khóa riêng tương ứng bị phát hiện.

• Các đối tượng tham gia cũng có thể truy cập đến danh mục khóa bằng đường điện tử. Trong trường hợp này, giao dịch giữa các đối tượng tham gia và người phân quyền phải đảm bảo an toàn và được xác thực.

Danh mục Khóa Công khai

A B

PUb

PUa

Phương pháp này an toàn hơn việc công bố cá nhân, tuy nhiên vẫn có khả năng bị dò tìm khóa. Nếu một kẻ tấn công nào đó có khả năng thu được hoặc tính toán được khóa riêng của trung tâm khóa thì người này sẽ có khả năng mạo nhận một đối tượng nào đó và nghe lén các thông điệp gửi cho đối tượng khác. Một cách khác để thực hiện việc mạo danh này là kẻ mạo danh sẽ xáo trộn các bản ghi lưu trữ tên và khóa của các đối tượngở trung tâm.

c. Phân quyền khóa công khai

Có thể tăng độ an toàn cho trung tâm phân phối khóa bằng cách kiểm soát chặt hơn việc trao đổi khóa từ danh mục khóa. Hình sau minh họa một trường hợp:

Hình 2.6. Phân quyền khóa công khai

Trường hợp này giả sử rằng có một trung tâm phân quyền quản lý danh mục khóa công khai động của tất cả các đối tượng tham gia. Hơn nữa, mỗi đối tượng đều biết khóa công khai của trung tâm, và chỉ có trung tâm biết được khóa riêng tương ứng. Các bước tương ứng với các số trong hình:

1. A gửi một thông điệp có gán nhãn thời gian lên trung tâm trong đó có yêu cầu được biết khóa công khai hiện thời của B.

A B

Phân quyền khóa Công khai (1)Request||Time1

(2) E(PRauth,[PUb||Request||Time1

(5) E(PRauth,[PUa||Request||Time2]) (3) E(PUb[IDA||N1])

(6) E(PUa[N1||N2])

(4) Request||Time2

(7) E(PUb, N2)

2. Trung tâm gửi lại cho A một thông điệp đãđược mã hóa dùng khóa riêng của trung tâm PRauth. Dó đó A có thể giải mã thông điệp dùng khóa công khai của trung tâm. Khi đó A cho rằng thông điệp được chính trung tâm tạo ra.

Thông điệp gồm nhưng thành phần sau:

• Khóa công khai PUbcủa B để A có thể mã hóa thôngđiệp gửi cho B.

• Yêu cầu gốc để A có thể so sánh thông điệp phản hồi với yêu cầu A đã gửi trước đó để kiểm chứng rằng yêu cầu đó khô ng bị thay đổi trước khi nó được gửi đến trung tâm.

• Nhãn thời gian để A biết rằng đó không phải là một thông điệp cũ của trung tâm với khóa công khai phải là khóa hiện thời của B.

3. A lưu trữ khóa công khai của B và sử dụng nó để mã hóa thôngđiệp gửi cho B bao gồm một định danh IDa của A và thời gian N1 để xác nhận rằng giao dịch này là duy nhất.

4, 5. B nhận khóa công khai của A từ trung tâm giống như cách A nhận khóa công khai của B từ trung tâm. Tại thời điểm này, khóa công khai đãđược phân phối tới A và B một cách an toàn và hai bên có thể bắt đầu giao dịch một cách an toàn. Tuy nhiên, cần có thêm hai bước sau:

6. B gửi thông điệp tới A mà mã hóa bằng khóa PUabao gồm nhãn thời gian N1của A và nhãn thời gian mới N2của B. Do chỉ có B mới có khả năng giải mã thôngđiệp (3) nên N1trong thông điệp (6) đảm bảo rằng người gửi thông điệp là B.

7. A gửi lại N2 cho B sử dụng khóa công khai của B để đảm bảo với B rằng người gửi thông điệp là A.

Do đó toàn bộ 7 bước này là cần thiết. Tuy nhiên 4 bước đầu ít xảy ra vì cả A và B có thể lưu trữ khóa công khai của đối tác để lần sau dùng. Định kì, người dùng cần phải yêu cầu bản sao khóa công khai mới của đối tác để đảm bảo khóa đó vẩn đang được sử dụng.

Trường hợp minh họa trong trung tâm khóa công khai là khá tiện ích, tuy nhiên vẫn xảy ra một số nhược điểm. Trung tâm khóa công khai có thể bị xảy ra tình trạng thắt nút cổ chai ở một số thời điểm nào đó vì một người dùng có thể yêu cầu khóa công khai của bất kì người nào trong trung tâm mà họ muốn trao đổi thông điệp. Cũng như trên, trung tâm khóa công khai có thể bị tấn công.

Một lối tiệp cận khác được Kohnfelder đề xuất là sử dụng chứng chỉ để các đối tượng tham gia có thể trao đổi khóa mà không cần khóa công khai của trung tâm theo cách đáng tin cậy theo họ nhận được khóa từ chính trung tâm. Về bản chất, chứng chỉ bao gồm khóa công khai và định danh của đối tượng tham gia, tất cả các thông tin này được kí xác nhận bởi một đối tượng thứ 3 đáng tin cậy. Thông thường đối tác thứ 3 là một trung tâm cấp chứng chỉ có thẩm quyền như đại điện chính phủ hay một cơ quan tài chính. Một đối tượng tham gia có thể cung cấp khóa công khai cho trung tâm một cách an toàn và nhận được chứng chỉ. Sau đó đối tượng này có thể công khai chứng chỉ của họ. Đối tượng nào muốn gửi thông điệp cho một người nào đó có thể thu chứng chỉ của họ và kiểm chứng tính đúng đắn của nó bằng chữ kí đáng tin cậy. Người dùng cũng có thể truyền thông tin về khóa của họ bằng cách truyền chứng chỉ. Các đối tác khác có thể xác định chứng chỉ đó có phải do trung tâm xác nhận hay không. Các yêu cầu trong lối tiếp cận này như sau:

1. Mọi đối tượng tham gia đều có khả năng đọc chứng chỉ để xác định tên và khóa công khai của chủ sở hửu chứng chỉ.

2. Mọi đối tượng tham gia đều có thể xác nhận rằng chứng chỉ được tạo ra bởi trung tâm và không bị giả mạo.

3. Chỉ có trung tâm chứng chỉ có thể tạo ra và cập nhật chứng chỉ.

4. Mọi đối tượng đều có thể xác nhận rằng khóa công khai đang trong thời gian sử dụng.

Hình 2.7.Trao đổi chứng chỉ khóa công khai

Ứng dụng này phải được sử dụng bởi đích thân người dùng hoặc giao tiếp một cách an toàn. Đối với A, trung tâm cung cấp cho A một chứng chỉ dưới dạng:

với PRauth là khóa riêng được sử dụng bởi trung tâm, còn T là nhãn thời gian. Sau đó A có thể chuyển chứng chỉ của mình chođối tượng nào đó và đối tượng này có thể đọc và xác thực chứng chỉ bằng cách sau:

Người nhận sử dụng khóa công khai của trung tâm để giải mã chứng chỉ. Do chứng chỉ là đáng tin cậy chỉ sử dụng khóa công khai của trung tâm nên việc này xác nhận rằng chứng chỉ được tạo bởi trung tâm chứng chỉ. Các thành phần

và cung cấp tên và khóa công khai của chủ sở hữu chứng chỉ. Nhãn thời gian T xác nhận rằng chứng chỉ này đang được sử dụng. Nhãn thời gian ngăn chặn tình huống sau đây. Khóa riêng của A bị lỗ. A tạo một cặp khóa mới và gửi lên trung tâm chứng chỉ để xin cấp chứng chỉ. Khi đó, kẻ tấn công gửi chứng chỉ cũ cho B, nếu B mã hóa thông điệp bằng khóa công khai cũ thì kẻ tấn công sẽ đọc được thông điệp đó.

A B

Chứng chỉ khóa P

Ua

CA=E(PRauth[Time1||IDA||P Ua])

CB=E(PRauth[Time2||IDB||

PUb]) (1)

CA

(2) CB

P Ub

Trong tình huống này, khóa bị lỗ cũng giống như mất thẻ tín dụng. Chủ sở hữu sẽ hủy số thẻ tín dụng nhưng vẫn bị nguy hiểm cho đến khi tất cả những người truyền tin biết rằng thẻ tín dụng cũ để hết thời hạn . Do đó nhãn thời gian đóng vai trò giống như hạn sử dụng.

Có một lược đồ được sử dụng chung trên toàn thế giới để định dạng chứng chỉ là chuẩn X.509. Chứng chỉ chuẩn X.509 được sử dụng trong hầu hết các ứng dụng mạng an toàn, bao gồm độ an toàn IP, tầng Socket an toàn (SSL), giao dịch điện tử an toàn (SET) và S/MIME.

2.2.4.2. Phân phốikhóa bí mật sử dụng hệ mật khóa công khai

Sau khi phân phối khóa công khai, hai bên sẽ có thể giao dịch với nhau một cách an toàn. Tuy nhiên, rất ít người sử dụng phương pháp này do tốc độ mã hóa chậm. Thay vào đó, hai bên sẽ dùng hệ mật khóa công khai để trao đổi khóa bí mật.

Phân phối khóa bí mật đơn giản

Xét một trường hợp đơn giản, A muốn liên lạc với B, hai bên phải thực hiện các thao tác sau:

1. Tạo ra cặp khóa công khai {UPa, PRa} và gửi cho B một thông điệp gồm PUavà định danhIDAcủa A.

2. B tạo ra khóa bí mật Ksvà truyền cho A, sử dụng khóa công khai PUa của A để mã hóa.

3. A tính toán D (PRa, E(PUa, Ks))để khôi phục lại khóa bí mật. Do chỉ có A có thể giải mã nên chỉ A và B biết khóa bí mật.

4. A bỏ PUaPRa, B bỏ PUa.

Hình 2.8. Sử dụng mã hóa khóa công khai để trao đổi khóa phiên

Bây giờ A và B có thể trao đổi thông điệp một cách an toàn sử dụng phương pháp mã hóađối xứng và khóa phiên Ks. Khi hoàn tất việc trao đổi thông điệp, cả A và B sẽ hủy bỏKs. Mặc dù đây là phương pháp đơn giản nhưng rất được ưa chuộng.

Trước và sau khi trao đổi thông điệp, không có khóa nào tồn tại. Do đó nguy cơ bị dò khóa là rất thấp. Đồng thời, phiên giao dịch là an toàn.

Giao thức mô tả trong hình trên là giao thức không an toàn vì kẻ tấn công có thể chặn các thông điệp để dùng lại hoặc thay thế bằng m ột thông điệp khác. Kiểu tấn công này được gọi là man-in-the-middle.

Thuật toán trao đổi khóa Diffie-Hellman

Mục tiêu của thuật toán là cho phép hai người có thể trao đổi khóa một cách an toàn để có thể sử dụng khóa mã hóa thôngđiệp.

Độ hữu dụng của thuật toán phụ thuộc vào độ khó của các thuật toán tính toán rời rạc. Chúng ta có thể định nghĩa bài toán rời rạc như sau. Đầu tiên, định nghĩa căn nguyên thủy của số nguyên tố p là một số mà các lũy thừa modulo p sẽ tạo ra tất cả các số nguyên từ 0 đến p-1. Tức là, nếu a là một căn nguyên thủy của số nguyên tố p thì khiđó các số:

a mod p, a2mod p, …, ap-1mod p là một hoán vị của các số từ 0 đến p-1.

Với mọi số nguyên b, nếua là một căn nguyên thủy của số nguyên tố p ta có thể xác định được số i duy nhất thỏa mãn: b≡ai (mod p) với 1 ≤ i ≤ p-1.

A B

(1) PUa ||IDA

(2) E(PUa, KS)

Số mũ i được gọi là logarithm rời rạc của b với cơ sở a mod p. Biểu diễn giá trị này bởi dloga,p(b).

Mô tả thuật toán

Các thành phần công khai:

Số nguyên tố q vàα là một căn nguyên thủy của q.

A tạo khóa:

• Chọn một số bí mật XA: XA< q.

• Tính toán số công khaiYA: B tạo khóa:

• B chọn một số bí mật XB: XB< q.

• B tính toán số công khai YB: A tính toán khóa bí mật:

B tính toán khóa bí mật:

Khi đó cả hai bên đã traođổi được khóa bí mật. Hơn nữa, do XAXB là các số bí mật nên kẻ tấn công chỉ có thể có được các giá trị: q, α, YAYB. Do đó, kẻ tấn công phải sử dụng một thuật toán rời rạc để tính khóa. Ví dụ: để tính toán khóa bí mật của B, kẻ tấn công phải tính:

XB= dlogα, q(YB)

Sau đó kẻ tấn công sẽ tính khóa bí mật K giống như cách B tính.

Độ an toàn của thuật toán này phụ thuộc vào độ khó của bài toán logarit rời rạc: có thể tương đối dễ dàng tính được lũy thừa modulo của một số nguyên tố nhưng rất khó để tính toán bài toán logarit rời rạc. Đặc biệt với số nguyên tố lớn thì việc tính logarit rời rạc là hầu như không thể thực hiện được.

Ví dụ:

Việc trao đổi khóa sử dụng số nguyên tố q=353, căn nguyên thủy của q làα

= 3. A và B lần lượt chọn khóa riêng XA = 97, XB = 233. Mỗi bên tự tính giá trị khóa công khai:

A tính YA= 397mod 353 = 40 B tính YB= 3233mod 353 = 248

Sau khi trao đổi khóa công khai, hai bên có thể tính giá trị khóa bí mật chung:

A tính:

B tính: :

Giả sử kẻ tấn công thu được các giá trị sau: q = 353, α = 3, YA= 40, YB= 248

Trong ví dụ đơn giản này, kẻ tấn công có thể sử dụng phương pháp vét cạn để tìm ra khóa bí mật là 160. Nói một cách cụ thể, kẻ tấn công E có thể tìm ra khóa chung bằng cách tìm a sao cho 3a mod 353 = 40 hoặc tìm b sao cho 3b mod 353 = 48. Thuật toán vét cạn để tìm ra khóa tức là ta sẽ tính tất cả các lũy thừa của 3 cho tới khi nào kết quả bằng 40 hoặc 248 thì dừng. Kết quả tính được sẽ là 97 vì 397 mod 353 = 40.

Với số lớn thì việc tính toán này là không thực hiện được trong thời gian mong muốn.

Giao thức trao đổi khóa

Giả sử A muốn kết nối với B và sử dụng một khóa bí mật để mã hóa thông điệp gửi cho B. A có thể tạo khóa sử dụng một lần XA, tính giá trịYA rồi gửi cho B.

B nhận được và tạo ra XBYBrồi gửi YB cho A. Sau đó cả hai bên cùng tính khóa K. Các giá trị công khaiq vàα phải được xác định trước đó. Có thể A sẽ chọn giá trị q vàα rồi gửi cho B trong thông điệp đầu tiên.

Hình 2.9. Giao thức trao đổi khóa Diffie- Hellman Tạo sốngẫu nhiên

XA< q;

Tính giá trị

Tính

Tạo số ngẫu nhiên XB< q;

Tính giá trị

Tính

Người dùng A Người dùng B

Một phần của tài liệu Tìm hiểu một số kỹ thuật tấn công hệ mật RSA (Trang 38 - 50)

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

(83 trang)