Phương pháp sử dụng khóa cơng khai (Public key)

Một phần của tài liệu Mạng máy tính và HTM (Trang 85 - 89)

e. Cổng giao tiế p Gateway

4.3.3.4. Phương pháp sử dụng khóa cơng khai (Public key)

Đối với các hệ mã hố cổ điển thì nếu biết khố mã Ek thì cũng biết được khố giải Dk. Nói một cách cụ thể thì khố giải có thể suy ra trực tiếp từ khố mã hoặc có thể tính tốn từ khố mã khơng mấy khó khăn, và ngược lại.

Trong các lĩnh vực ứng dụng thương mại như chuyển ngân điện tử và thư điện tử thì bài tốn phân phối khoá là một vấn đề lớn đối với các hệ mã hoá cổ điển. Khuynh hướng cung cấp các khố dài mà nó phải được thay đổi thường xuyên, trong khi vẫn tiếp tục duy

trì cả tính an tồn lẫn hiệu quả chi phí sẽ cản trở rất nhiều đến việc phát triển các hệ thống như vậy. Tuy nhiên các phương pháp gần đây được phát triển sẽ hứa hẹn việc loại bỏ hồn tồn bài tốn phân phối khoá. Những hệ thống mã hoá như vậy được gọi là các hệ mã hố cơng khai.

Ý tưởng về mã hoá cơng khai (mã hố phi đối xứng - đối lập với các hệ mã hoá cổ điển) thuộc về Whitfield Diffie và Martin Hellman. Diffie và Hellman lần đầu tiên đưa ra ý tưởng này vào năm 1976.

Thuật tốn mã hố cơng khai sử dụng khoá để mã hóa và khố để giải mã là khác nhau. Các khoá này tạo thành một cặp chuyển đổi ngược nhau. Việc biết khoá mã Ek không nhất thiết làm lộ Dk. Cụ thể hơn người thám mã có thể biết Ek và do đó có thể tính được Dk, tuy nhiên việc tính Dk từ Ek là khơng khả thi với hầu hết các khố k, bởi vì việc đó phải mất đến hàng tỷ năm. Do vậy trên thực tế bản mã C vẫn được giữa an tồn mặc dù khố mã Ek được công bố rộng dãi. Khố mã có thể cơng khai nhưng khố giải phải được giữ bí mật. Hình 4.9. Mã hố cơng khai Người gửi A Kênh khơng an tồn Người nhận B P (Bản rõ) EK1 C (Bản mã) DK2 P (Bản rõ) K1 (Khố cơng khai) K2 (Khố bí mật) Máy sinh khố Thám mã Điều kiện khởi đầu

Mặc dù khố mã (khố cơng khai) và khố giải (khố bí mật) thực hiện các thao tác ngược nhau và do đó có liên quan đến nhau nhưng phải làm sao để khơng thể suy ra khố riêng từ khố cơng khai. u cầu đó có thể đạt được nhờ các hàm tốn học đặc biệt gọi là các hàm sập bẫy một chiều (trapdoor one-way function). Các hàm này có đặc điểm là không thể chỉ dựa vào mô tả cả hàm mà còn phải biết được cách xây dựng hàm thì mới có thể suy ra được nghịch đảo của nó.

Một số hệ mã hố cơng khai: 1. Hệ Merkle-Hellman Knapsack 2. Hệ Rivest-Shamir-Adleman (RSA)

3. Hệ EL Gamal và Digital Signature Algrithms

Các hệ mã hố cơng khai này đều dựa trên cơ sở những vấn đề phức tạp thuộc lĩnh vực lý thuyết số, đó là các thuật toán số học được thực hiện trên các số nguyên tố rất lớn.

Thuật toán mã hoá RSA

RSA là tên viết tắt từ tên các tác giả của nó Ron Rivest, Adi Shamir, Leonard Adleman - những người đầu tiên giới thiệu thuật tốn này năm 1978.

Bí mật của mã RSA là ở việc rất khó khăn khi phân tích ra thừa số nguyên tố của các số lớn. Khố cơng cộng và khố riêng là các hàm số của một cặp số nguyên tố rất lớn nào đó (có từ 100 đến 200 chữ số, thậm chí có thể lớn hơn). Việc giải mã từ một khoá và thơng điệp đã mã hố là tương đương với việc phân tích một số rất lớn ra thừa số nguyên tố.

Để tổng hợp hai khoá, ta phải chọn hai số nguyên tố lớn p và q. Sau đó tính: n = p*q (p, q được giữ bí mật).

Chọn ngẫu nhiên một khoá mã, e, sao cho e và (p-1)(q-1) là nguyên tố cùng nhau. Sau đó dùng thuật tốn Euclid để tính khố giải mã d thoả mãn:

e*d = 1 (mod (p-1)(q-1)) hay nói cách khác d = e-1 (mod (p-1)(q-1))

Ta cần chú ý rằng d và n cũng nguyên tố cùng nhau. Số e n chính là khố cơng

cộng cịn d là khố bí mật. Số p và q khơng cịn cần thiết nữa, chúng có thể bỏ đi nhưng

khơng bao giờ được lộ ra.

Để mã hoá một bản rõ m, trước tiên ta phải chuyển các chữ cái thành các số tương ứng và chia nhỏ m thành các khối với độ dài của mỗi khối đều nhỏ hơn n. Với dữ liệu

nhị phân, chọn luỹ thừa của 2 số lớn nhất mà vẫn nhỏ hơn n. Như vậy nếu p và q là số nguyên tố 100 chữ số thì n có khoảng 200 chữ số, và mỗi khối bản rõ, mi, phải nhỏ hơn 200 chữ số.

Thơng điệp đã mã hố c sẽ được tạo ra từ các khối đã mã hoá ci có kích cỡ hay độ dài tương tự.

Cơng thức mã hố đơn giản là:

e

i

c i i i i i

Quá trình giải mã làm ngược lại. Để giải mã một thông điệp, ta lấy mỗi khối đã mã hố ci

và tính: mi = c d Thật vậy: (mod n) d = (m e)d= m ed = m k(p-1)(q-1)+1 = mi.m k(p-1)(q-1)= mi.1 = mi (tất cả lấy theo mod n).

Ta có thể tổng kết theo bảng sau: KHOÁ MÃ HOÁ (PUBLIC KEY):

n: là tích của 2 số nguyên tố, p và q (p và q là bí mật chính) e: là số nguyên tố cùng nhau với (p-1)(q-1)

KHOÁ GIẢI MÃ (PRIVATE KEY):

d: e-1 (mod (p-1)(q-1)) MÃ HOÁ (ENCRYTING):

c = me (mod n)

GIẢI MÃ (DECRYPTING)

m = cd (mod n)

Sau đây là một ví dụ ngắn để minh hoạ rõ thuật toán mã hoá RSA. Giả sử ta chọn p = 47 và q = 71 thì:

n = p.q = 3337

Số e phải nguyên tố cùng nhau với giá trị: (p-1)(q-1) = 46.70 = 3220

Chọn e (một cách ngẫu nhiên) là 79. Từ đó ta suy ra d:

d = 79-1 (mod 3220) = 1019

Số này tính được nhờ thuật toán Euclid mở rộng. e và n là khố cơng cộng và d là

khoá riêng, p và q được bỏ đi.

Để mã hoá một bản rõ nào đó, ví dụ:

m = 6882326879666683

Đầu tiên ta chia bản rõ đó thành các khối nhỏ. Ta chọn cách chia thành các khối nhỏ có 3 chữ số là tốt nhất. Như vậy ta có tất cả 6 khối bản rõ:

m1 = 688

m2 = 232

m4 = 966

m5 = 668 m6 = 3

Khối đầu tiên được mã hoá thành: 68879 (mod 3337) = 1570 = c1

Tương tự thực hiện trên các khối khác, sau đó tổng hợp lại ta sẽ được bản rõ hoàn chỉnh:

c = 1570 2756 2714 2276 2423 158

Việc giải mã tiến hành tương tự với khố giải mã d =1019. Ví dụ:

15701019 (mod 3337) = 688 = m1

Một phần của tài liệu Mạng máy tính và HTM (Trang 85 - 89)

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

(124 trang)