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

Một phần của tài liệu giao_trinh_mang_may_tinh (Trang 89 - 94)

CHƯƠNG 4 NHỮNG VẤN ĐỀ CƠ BẢN CỦA MẠNG MÁY TÍNH

4.3. AN TOÀN THễNG TIN TRấN MẠNG

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ó hoỏ cổ điển thỡ nếu biết khoỏ mó Ek thỡ cũng biết được khoỏ giải Dk. Núi một cỏch cụ thể thỡ khoỏ giải cú thể suy ra trực tiếp từ khoỏ mó hoặc cú thể tớnh toỏn từ khoỏ mó khụng mấy khú khăn, và ngược lại.

Khoỏ 28 bớt 28 bớt Dịch 28 bớt 28 bớtDịch 56 bớt Hoỏn vị Lựa chọn 48 bớt Ri-1 32 bớt Mở rộng Hoỏn vị 48 bớt Hộp S Thay thế Lựa chọn 32 bit Hộp P Hoỏn vị Ri Li Li-1 32 bớt Hỡnh 4.8. Một vũng lặp DES

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 toỏ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 khoỏ 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 toà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ỏ hoàn toàn bài toỏn phõn phối khoỏ. Những hệ thống mó hoỏ như vậy được gọi là cỏc hệ mó hoỏ cụng khai.

í tưởng về mó hoỏ cụng khai (mó hoỏ 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 toỏn mó hoỏ cụng khai sử dụng khoỏ để mó húa và khoỏ để 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 khoỏ 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ự khoỏ mó Ek được cụng bố rộng dói. Khoỏ mó cú thể cụng khai nhưng khoỏ giải phải được giữ bớ mật. DK2 EK1 P (Bản rừ) Người gửi A Kờnh khụng an toàn Người nhận B C (Bản mó) (Bản rừ) P Mỏy sinh khoỏ Điều kiện khởi đầu Thỏm mó K1 (Khoỏ cụng khai) K2 (Khoỏ bớ mật) Hỡnh 4.9. Mó hoỏ cụng khai

Mặc dự khoỏ mó (khoỏ cụng khai) và khoỏ giải (khoỏ 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 khoỏ riờng từ khoỏ cụng khai. Yờu cầu đú cú thể đạt được nhờ cỏc hàm toỏ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ó hoỏ 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ó hoỏ 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 toỏ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. Khoỏ cụng cộng và khoỏ 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ó hoỏ 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 toỏn Euclid để tớnh khoỏ 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 và n chớnh là khoỏ cụng cộng cũn d là khoỏ 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ó hoỏ 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ó hoỏ đơn giản là:

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ó hoỏ ci và tớnh:

mi = cid (mod n)

Thật vậy:

cid = (mie)d = mied = mik(p-1)(q-1)+1 = mi.mik(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à khoỏ 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

m3 = 687 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 khoỏ giải mó d =1019. Vớ dụ:

15701019 (mod 3337) = 688 = m1

4.3.3.5. So sỏnh cỏc phương phỏp mật mó

Để đỏnh giỏ một giải thuật mó hoỏ cần dựa vào cỏc yếu tố như độ phức tạp, thời gian mó hoỏ và vấn đề phõn phối khoỏ trong mụi trường nhiều người sử dụng.

Cỏc phương phỏp mó hoỏ cổ điển như phương phỏp đổi chỗ và thay thế là đơn giản và được sử dụng sớm nhất. Nhược điểm của chỳng là độ an toàn khụng cao do thường khụng đạt được độ phức tạp cần thiết đồng thời rất dễ bị lộ khoỏ do cả người gửi lẫn người nhận đều phải biết khoỏ.

Cũn cỏc phương phỏp mó hoỏ sử dụng khoỏ cụng khai (như RSA) mặc dự khắc phục được vấn đề phõn phối khoỏ song lại cú chi phớ cao và khỏ chậm chạp. Trong khi thời gian mó hoỏ của phương phỏp DES chỉ đũi hỏi vài micro giõy thỡ phương phỏp RSA lại đũi hỏi tới vài mili giõy, do đú hạn chế thụng lượng ở mức 50 Kb/s.

Hiện nay nhỡn chung phương phỏp mó hoỏ DES được sử dụng rộng rói nhất, tuy người ta vẫn cũn bàn cói xem độ dài của khoỏ 48 bớt đó đủ chưa và cỏc phộp thay thế đó đủ phức tạp chưa để đạt được độ an toàn thụng tin mong muốn.

Một số bài tập

1. Cho xõu ký tự: “KINH TE THI TRUONG”, hóy dựng phương phỏp đổi chỗ theo mẫu hỡnh học để mó hoỏ với ma trận cú kớch thước 3x5, và hoỏn vị cột là 1,3,5,4,2.

2. Cho xõu ký tự: “HOI NHAP VAO WTO DE PHAT TRIEN”, hóy dựng phương phỏp đổi chỗ cột để mó hoỏ với ma trận cú kớch thước 4x6, và hoỏn vị cột là 3,1,2,5,4,6.

3. Cho xõu ký tự: “KINH TE NUOC TA DANG TANG TRUONG MANH”, hóy dựng phương phỏp hoỏn vị theo chu kỳ cố định để mó hoỏ, cho chu kỳ d = 6, hoỏn vị trong mỗi chu kỳ là 1,5,2,4,6,3.

Một phần của tài liệu giao_trinh_mang_may_tinh (Trang 89 - 94)

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

(118 trang)