IV. Các thuật toán hiện đại của hệ mã hóa khóa bí mật
3. Các bước thực hiện (Nghi thức RSA)
1. Tạo ngẫu nhiên 2 số nguyên tố p, q phân biệt, gần nhau và rất lớn( có số ký tự ít nhất là 100) và sau đó tính:
n = p * q
Ф(n) = (p -1) * (q -1)
2. Chọn ngẫu nhiên 1 số e sao cho 1 < e < Ф(n), với e là số nguyên tố cùng nhau với Ф(n).
3. Tính số nghịch đảo d của e đối với Ф(n): 1 < d < Ф(n), ed = 1(mod Ф(n)) (dùng thuật toán Eulid mở rộng).
Mã hoá: B muốn gởi thông điệp m cho A với yêu cầu cần bảo mật thông tin.
B yêu cầu A gởi khoá công khai (e, n)
B dùng khoá công khai (e, n) này, mã hoá thông điệp m thành c theo công thức c = me mod n.
B sẽ gởi c cho Ạ
Giải mã: dùng khoá bí mật (d, n), A sẽ tính m = cd mod n, để có thể khôi phục lại dữ liệu gốc ban đầu do B gởi đến.
Chú ý:
Với dữ liệu có kích thước lớn, khi mã hoá, dữ liệu sẽ được phân chia thành nhiều block nhỏ để dể dàng hơn.
Dữ liệu khi được mã hoá sẽ biến thành những con số, có kích thước phụ thuộc vào số n ( thường là nhỏ hơn n). Khi người nhận nhận được dữ liệu bị mã hoá, trước khi giải mã, nếu người nhận muốn đọc thì đó chỉ là những con số vô nghĩa, không thể đoán được nội dung. Để đọc được nội dung thì người nhận phải giải mã lại dữ liệu bị mã hoá trên, dùng Private Key của mình phù hợp với Public Key đã gởi cho người gởị
Khi giải mã, dựa vào những số được mã hoá bằng Public Key, người dùng sẽ giải , mã dữ liệu bằng Private Key của mình. Thật sự, đây cũng là những con số, dựa vào số d.
Public Key là chung (người nào cũng có thể biết) nhưng để giải mã được văn bản bị mã hoá thì phải dùng Private key phù hợp với Public key trên, và Private key này là bí mật, chỉ người cần giải mã mới biết đến.
Ví dụ:
Trước hết, Ta chọn hai số nguyên tố p và q, với p = 5, q = 7 Tính n = p*q = 5 * 7 = 35
Z = (p-1) * (q – 1) = (5 -1)(7-1) = 24 Tiếp đến, chọn e thoả điều kiện 1< e< n
Ta có: ( 5 * 29- 1) thì thoả chia hết cho 24 chọn d = 29
Do đó, ta có cặp key (Key Pair) như sau: Public Key = (n,e) = (35, 5)
Private Key = (n,d) = (35,29)
Áp dụng để mã hoá chuổi : secure
Trong bảng chữ cái, có tất cả 26 ký tự, các ký tự ứng với một con số. Do đó, ta có bảng sau:
Bảng P3.B22: Mã hóa chuổi SECURE
Nội dung Vị trí Me Nội dung bị mã hoá
S 19 2476099 24 E 5 3125 10 C 3 243 33 U 21 4084101 21 R 18 1889568 23 E 5 3125 10
Nếu tại đây, dữ liệu trên đường chuyển đến người nhận bị một người khác bắt được, anh ta sẽ không biết được nội dung muốn nói điều gì, mà chỉ nhận được đó chỉ là những con số, không nói lên được điều gì. Nếu muốn đọc được nội dung, anh ta phải có Private Key, mà ứng với Public Key dùng để mã hoá dữ liệu trên thì phải có private Key thích hợp. Do đó, dữ liệu sẽ an toàn.
Khi dữ liệu đến tay người nhận, muốn khôi phục lại dữ liệu gốc ban đầu, ta sẽ decrypt lại với n = 35, d = 29
Bảng P3.B23: Giải mã chuổi SECURE
Nội dung bị mã hoá M = cd mod n Dữ liệu gốc
24 19 S 10 5 E 33 3 C 21 21 U 23 18 R 10 5 E
Public Key = (n,e) = (35, 5). Private Key = (n,d) = (35,29).
4. Nhận xét:
Khi mã hoá dữ liệu dùng thuật toán RSA, dữ liệu sẽ được gởi đi dưới dạng những con số, bằng cách dùng Public Key để mã hoá. Trên đường truyền, nếu Hacker bắt được thì đó cũng chỉ là những con số, không thể đoán được gì. Khi nhận được dữ liệu bị mã hoá, người nhận sẽ dùng Private Key phù hợp để giải mã ngược trở lạị