Cơ chế mã hóa khóa công khai

Một phần của tài liệu Nghiên cứu giải pháp đảm bảo an toàn và bảo mật cho Trung tâm tích hợp dữ liệu (Trang 27)

1). Cơ chế mã hóa RSA

Mô tả: Thuật toán mã hóa RSA do ba nhà toán học là Ron Rivest, Adi Shamir và Len Adlerman tại đại học MIT cùng thực hiện vào năm 1977 và đƣợc công bố vào năm 1978. Thuật toán đƣợc đặt tên là RSA(Rivest - Shamir - Adlerman) đƣợc thiết kế theo hệ mã hóa khóa công khai.

Sự khác biệt cơ bản giữa một hệ mã hóa khóa bí mật với một hệ mã hóa khóa công khai đó là hệ mã hóa khóa công khai sử dụng hai khóa khác nhau để mã hóa và giải mã. Vì thế một bộ mã hóa khóa công khai gồm hai khóa, một khóa dành cho ngƣời mã hóa và thƣờng đƣợc công khai, khóa còn lại dành cho ngƣời giải mã, đƣợc giữ bí mật. Mặc dù hai khóa này thực hiện các thao tác ngƣợc nhau và có liên quan đến nhau, nhƣng phải làm thế nào đó để không thể suy ra khóa bí mật từ khóa công khai.

Và để thực hiện đƣợc yêu cầu này, Rivest, Shamir và Adleman đã đƣa ra phƣơng pháp dựa trên nhận xét là có thể dễ dàng sinh ra hai số nguyên tố lớn và nhân chúng lại với nhau, nhƣng rất khó khăn khi muốn phân tích thừa số cho tích của chúng.

28 Các bƣớc thực hiện của thuật toán RSA:

Tính n = pq

o|

Tính (n)= (p -1)(q - 1)

Chọn E (khóa công Khai sao cho USCLN

[E, (n) = 1]|o Tính khóa bí mật D = E-1 mod (n)|o Mã hóa C = PE mod n Giải mã P = CD mod n

Khối văn bản nguồn P

Khối văn bản đƣợc mã hóa C

Khối văn bản nguồn P Chọn 2 số

nguyên tố lớn p và q

Hình 2.8 Các bƣớc thực hiện của thuật toán RSA.

Vấn đề cốt lõi của thuật toán RSA là hai số nguyên tố p và q, hai số này cần phải đƣợc giữ bí mật tuyệt đối. Mặt khác, có thể tính toán đƣợc khóa bí mật D nếu phân tích đƣợc n thành hai số nguyên tố p và q. Nhƣng điều này là không khả thi vì phải đối mặt với bài toán khó.

Định nghĩa các giá trị: Sinh khóa: - Chọn p, q là 2 số nguyên tố. - Tính N: N=p*q - Tính 𝜙 𝑛 : 𝜙 𝑛 = 𝑝 − 1 (𝑞 − 1) - Chọn e: USCLN[e,𝜙 𝑛 ] = 1 - Tính d: d=e-1 mod 𝜙(𝑛)

- Khóa public: KU={e,N}

- Khóa private: KR={d,N}

Mã hóa: Bản tin gốc: P, bản mã: C=Pe(mod n).

Giải mã: Bản tin mã: C, bản giải mã: P=Cd(mod n).

Các hệ thống mã hóa khóa công khai khắc phục đƣợc nhƣợc điểm phân phối khóa phải đƣợc giữ một cách an toàn. Tuy nhiên thì khi công khai các khóa dùng để mã hóa thì lại nảy sinh vấn đề một ngƣời nào đó giả danh sử dụng để mã hóa các thông báo gửi đến bên nhận làm cho họ không thể phân biệt đƣợc thông bao đó là hợp lệ hay không. Và có nhiều phƣơng pháp giải quyết đƣợc vấn đề này, điển hình là chữ ký số.

29

Hệ mã hóa Elgamal đƣợc T.Elgamal đề xuất vào năm 1985, với độ phức tạp dựa vào bài toán tính logarit rời rạc, sau đó đã nhanh chóng đƣợc sử dụng rộng rãi trong vấn đề bảo mật truyền tin và trong vấn đề xác nhận và chữ ký điện tử.

Sơ đồ hệ mã hóa Elgamal:

Tạo cặp khóa (bí mật, công khai) (a, h):

- Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là khó giải.

- Chọn phần tử nguyên thủy g ∈Zp*, đặt P=Zp*, C=Zp* x Zp*

- Chọn khóa bí mật là a ∈Zp*. Tính khóa công khai h≡ ga mod p.

- Định nghĩa cặp khóa K={(p, g, a, h): h≡ ga mod p}.

- Các giá trị p, g, h đƣợc công khai, và a phải đƣợc giữ bí mật. (adsbygoogle = window.adsbygoogle || []).push({});

Định nghĩa: với Bản rõ x ∈ P và Bản mã y ∈ C, với khóa k ∈ K thì

- Lập mã: Chọn ngẫu nhiên bí mật r ∈ Zp-1, bản mã là y = ek(x, r)=(y1, y2). Trong

đó y1=gr mod p và y2=x*hr mod p.

- Giải mã: dk(y1, y2)=y2(y1a)-1 mod p. Ví dụ: với bản rõ là x=1299.

 Chọn p=2579, g=2, a=765. Tính khóa công khai h=2765 mod 2579=949.

 Lập mã: Chọn ngẫu nhiên r=853, và bản mã là y=(435, 2369), trong đó

y1=2852mod 2579=435 và y2=1299*949853mod 2579=2396.

 Giải mã: x=y2(y1

a

)-1mod p=2369*(435765)-1mod 2579=1299.

Độ an toàn của hệ mã hóa Elgamal:

- Hệ mã hóa Elgamal là không tất định, tức là với một bản rõ x và 1 khóa bí mật

a thì có thể có nhiều hơn một bản mã y, do trong tập mã hóa có thành phần ngẫu nhiên r.

- Độ an toàn của hệ mã hóa Elgamal dựa vào khả năng giải bài toán logarit rời

rạc trong Zp, theo giả thiết trong sơ đồ thì bài toán này phải là bài toán khó giải.

Cụ thể nhƣ, theo công thức lập mã y=ek(x, r)=(y1, y2), trong đó y1=gr mod p và

y2=x*hr mod p, do đó muốn xác định bản rõ x từ công thức y2 thì kẻ thám mã

phải biết đƣợc thành phần r, và r có thể đƣợc tính từ công thức y1, tuy nhiên thì

hắn lại gặp phải bài toán logarit rời rạc.

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

a). Vấn đề quản lý khóa công khai:

Đối với hệ mã hóa khóa công khai thì có nhiều ƣu điểm hơn so với hệ mã hóa khóa bí mật ở chỗ có thể công khai thuật toán mã hóa và khóa mã hóa (khóa công khai) cho nhiều ngƣời sử dụng, còn khóa bí mật do một ngƣời quản lý nên không cần kênh an toàn để “thống nhất” khóa mật (qua kênh phân phối khóa). Tuy nhiên thì đa số hệ mã hóa khóa công khai chậm hơn hệ mã hóa khóa riêng, vì thế nên hệ mã hóa khóa bí mật để mã hóa các tin dài, còn hệ mã hóa khóa công khai để thống nhất khóa riêng.

Ngoài ra hệ mã hóa khóa công khai còn đƣợc sử dụng để tạo ra sơ đồ ký số hay các giao thức phục vụ đảm bảo an toàn thông tin. Sự khác biệt nữa đối với hệ mã hóa khóa bí mật là đối với hệ mã hóa khóa công khai, hai đối tác không cần phải thống nhất khóa mật, do đó không có nỗi lo chung về quản lý khóa mật (từng ngƣời phải lo bảo vệ khóa mật của chính mình), nhƣng họ vẫn có nỗi lo về quản lý khóa công khai.

Để hiểu rõ việc cần phải quản lý khóa công khai, xét ví dụ ngƣời dùng M có khóa bí mật m và bị ngƣời N đánh cắp đƣợc, nếu đối tác của M vẫn dùng khóa công khai của M (ứng với khóa bí mật m) để mã hóa bản tin gửi cho M thì N có thể xem

30

đƣợc bản tin này (vì N đã có khóa bí mật m của M để giải mã). Trong trƣờng hợp này thì ngƣời dùng M phải thông báo với các đối tác của mình rằng khóa bí mật m đã bị lộ, không dùng khóa công khai n để mã hóa nữa, vì kẻ trộm có thể xem đƣợc các bản tin mật đã đƣợc mã hóa bởi khóa n. chính vì thế ngƣời dùng M phải chọn cặp khóa (m,n) mới và công bố khóa công khai mới n.

Một ví dụ khác nữa là việc ngƣời dùng M có khóa bí mật m bị ngƣời dùng N đánh cắp đƣợc. Nếu M không thông báo cho các đối tác của mình thì N sẽ dùng m làm khóa ký lên các thông điệp giả mạo, tuy nhiên nhờ khóa công khai n của M nên các đối tác của M vẫn kiểm tra đƣợc rằng đó chính là chữ ký của M, khi đó M sẽ bị mạo danh. Trong trƣờng hợp này thì ngƣời dùng M sẽ thông báo cho các đối tác của mình khóa bí mật m đã bị lộ và không dùng khóa công khai n để kiểm tra chữ ký của M nữa, M cũng phải chọn cặp khóa (m,n) mới và công bố khóa công khai n mới.

Chính vì thế đặt ra yêu cầu ngƣời dùng phải tự lo việc quản lý khóa công khai của riêng họ hay có một cơ quan để quản lý khóa công khai của mọi ngƣời. Một cơ quan nhƣ vậy phải lo cấp chứng chỉ để chứng thực khóa công khai của một ngƣời nào đó vẫn còn hiệu lực, khi ngƣời đó bị lộ khóa mật thì họ phải báo cho cơ quan này biết để xin đƣợc cấp chứng chỉ cho khóa công khai mới. Và mọi ngƣời dùng sẽ xem chứng chỉ số sẽ biết đƣợc khóa công khai nào còn hiệu lực, do đó khắc phục đƣợc các vấn đề gặp phải đối với vấn đề trên.

Xu hƣớng hiện nay là tổ chức các cơ quan nhƣ trên để quản lý khóa công khai, tổ chức này gọi là cơ quan chứng thực khóa công khai hay CA (Certificate Authority). c). Phân phối khóa công khai:

Để thực hiện việc phân phối khóa công khai thì có những cách sau: (adsbygoogle = window.adsbygoogle || []).push({});

1. Thông báo khóa công khai cho ngƣời sử dụng:Trong cách này thì ngƣời dùng

phân phối khóa công khai cho ngƣời nhận hoặc thông báo rộng rãi cho cộng đồng, chẳng hạn ngƣời gửi có thể tự gửi cho nhóm chia sẻ tin hoặc một danh sách thƣ điện tử khóa công khai của mình.

Điểm yếu của phƣơng pháp này là việc mạo danh, tức là một ngƣời nào đó có thể tạo khóa và tuyên bố họ là một ngƣời khác và gửi thông báo cho mọi ngƣời, cho đến khi kẻ giả mạo bị phát hiện thì hắn đã có thể lừa trong vai trò của một ngƣời khác rồi.

2. Dùng thƣ mục truy cập công cộng:Việc dùng thƣ mục công cộng có thể đạt đƣợc

tính an toàn cao hơn bằng cách đăng ký khóa với thƣ mục công cộng để đăng tải và chia sẻ cho mọi ngƣời.

Chính vì thế thƣ mục công cộng cần đƣợc đảm bảo là đáng tin cậy với các tính chất sau: chứa việc nhập tên và khóa công khai, ngƣời dùng đăng ký mật với thƣ mục, thƣ mục có thể truy cập đƣợc qua mạng và ngƣời dùng có thể thay khóa bất kỳ lúc nào, thƣ mục đƣợc in định kỳ.

3. Chủ quyền khóa công khai:Là một bƣớc cải thiện tính an toàn bằng cách kiểm

soát chặt chẽ tập trung việc phân phối khóa từ thƣ mục, bao gồm có tính chất của một thƣ mục và đòi hỏi ngƣời dùng phải biết đƣợc khóa công khai của thƣ mục đó, và ngƣời dùng có thể nhận đƣợc bất kỳ khóa công khai nào bằng cách truy nhập thời gian thực đến thƣ mục khi cần khóa

4. Chứng nhận khóa công khai cho phép trao đổi khóa không cần thời gian thực

truy cập đến chủ quyền thƣ mục khóa công khai, để thực hiện việc này thì chứng nhận gắn danh tính của ngƣời sử dụng với khóa công khai và “đóng dấu vào giấy chứng nhận” đó để tránh việc bị giả mạo. Nội dung này đƣợc ký bởi khóa công

31

khai của CA và thông báo rộng rãi cho nên chứng nhận có thể đƣợc kiểm chứng bởi ngƣời nào đó biết khóa công khai CA.

Một số giao thức phân phối khóa: nhƣ giao thức phân phối khóa Blom, giao thức phân phối khóa Diffie-Hellman,…

Ví dụ đơn giản phân khối công khai khóa mật: đƣợc đề xuất bởi Merkle vào 1979.

- A tạo ra một cặp khóa công khai mới tạm thời.

- A gửi cho B một khóa công khai và danh tính của A.

- B tạo khóa phiên và gửi nó cho A sử dụng khóa công khai đƣợc cấp.

- A giải mã khóa phiên và A và B cùng dùng nó.

Tuy nhiên thì vấn đề nằm ở chỗ là kẻ gian có thể ngăn chặn hoặc đóng giả cả hai bên của thủ tục.

4). Trao đổi khóa Diffie-Hellman

Giao thức Diffie-Hellman không cung cấp cơ chế mã hóa với khóa công khai. Mục tiêu của giao thức này là khởi tạo và trao đổi khóa an toàn giữa hai thành phần qua một kênh không an toàn mà có thể sử dụng với cơ chế mã hóa quy ƣớc. Giao thức này còn có thể gọi là giao thức trao đổi khóa.

Tuy nhiên, không có giá trị thực sự đƣợc trao đổi bởi vì khóa đƣợc khởi tạo một cách ngẫu nhiên.

Chuẩn bị:Giả sử A và B muốn thực hiện trao đổi khóa trong một phiên làm việc, A và

B thống nhất chọn số nguyên tố p rất lớn sao cho bài toán logarit rời rạc trong Zp* là

“khó” giải, chọn 𝛼 là phần tử nguyên thủy ∈ Zp*, phần tử p và 𝛼 là công khai.

1. A chọn au ngẫu nhiên và bí mật (0≤au≤p-2). Tính bu=𝛼𝑎𝑢mod p và gửi cho B.

2. B chọn av ngẫu nhiên và bí mật (0≤av≤p-2). Tính bv=𝛼𝑎𝑣mod p và gửi cho A.

3. A tính khóa chung Ku,v=(𝛼𝑎𝑣)𝑎𝑢mod p.

4. B tính khóa chung Kv,u=(𝛼𝑎𝑢)𝑎𝑣mod p.

Hai giá trị khóa này bằng nhau, do đó A, B đã trao đổi đƣợc khóa chung để dùng trong một phiên làm việc. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Nghiên cứu giải pháp đảm bảo an toàn và bảo mật cho Trung tâm tích hợp dữ liệu (Trang 27)