Cơ chế hoạt động của RSA [1], [3], [6], [7], [8]

Một phần của tài liệu Số học số lớn cho mật mã luận án thạc sĩ (Trang 30 - 33)

6. Ý nghĩa khoa học và thực tiễn cửa đề tài

1.3.2Cơ chế hoạt động của RSA [1], [3], [6], [7], [8]

a, Định nghĩa các tập làm việc của RSA

Tập các bản rõ (plaintext): P = ZN = {0, 1,..., N 1}.

Tập các bản mã (ciphertext): C = ZN = {0, 1,., N 1}.

Tập các khóa: K = {(n, p, q, e, d): N = p q, e d = 1(mod (N))}

b, Quá trình tạo khoá, mã hoá, giải mã - Tạo khoá:

Tạo hai số nguyên tố phân biệt pq lớn, sao cho bài toán phân tích thật sự là khó giải (kích cỡ mỗi số khoảng 512 bits ^ 1024 bits).

Tính N = p q và (N) = (p 1) (q 1).

Chọn một số nguyên ngẫu nhiên e sao cho 1<e< (N) và gcd(e, (N))= 1

Sử dụng thuật toán Euclid mở rộng, để tính số nguyên d duy nhất, sao cho 0 < d < (N) và e d = 1 mod (N) (d là nghịch đảo của e modulo N)

Hai số (e, N) là khóa công khai, còn (d, N) đƣợc giữ bí mật làm khóa r

riêng. Các số nguyên tố p, q sẽ bị xóa khi kết thúc quá trình tạo khóa.

- Mã hoá:

Giả sử để gửi thông điệp M cho ngƣời B. Ngƣời A thực hiện nhƣ sau:

Lấy khoá công khai của ngƣời nhận B: (e, N).

Biển đổi thông điệp M thành những số nguyên Mi tƣơng ứng sao cho

Mi < N, (i=1;…;k). Theo phép biến đổi sau:

+1 Biến đổi các ký tự trong thông điệp M thành các số nguyên tƣơng ứng, thí dụ theo qui tắc: Dấu các 00, A 01, B 02,…, Z 26.

+2 Chia thông điệp vừa biến đổi thành k nhóm có chiều dài bằng nhau, mỗi nhóm biểu diễn một số nguyên Mi {0, 1, …, N 1} (với 1 k).

Ci = Ek e(Mi) = Mie (mod N).

Tập các số nguyên {C1,C2,,…,Ck} là bản mã để gửi đến ngƣời nhận B.

- Giải mã:

Ngƣời nhận B thực hiện các bƣớc sau:

Thực hiện giải mã lần lƣợt từng số nguyên Ci ^ Mi bằng cách:

Mi = D(Ci) = Cid (mod N) với 0 < Mi < N, (d là khoá bí mật của B).

Thực hiện phép biến đổi ngƣợc lại từ các số Mi thành các chuỗi ký tự tƣơng ứng để khôi phục lại nội dung thông điệp M ban đầu.

Bảng 1.3.2: Tóm tắt các bước tạo khoá, mã hoá, giải mã của Hệ RSA Tạo khoá: Tạo 2 số nguyên tố lớn pq

Tính N = p q và Tính (N) = (p 1) (q 1).

Chọn 1< e < (N): gcd( (N),e) = 1.

Tính d = e 1 mod (N) (dùng thuật toán Euclid mở rộng). Khóa công khai: (e, N) Khóa riêng: (d,N)

Mã hóa: Khối bản rõ M < N

Tính: C = Me mod N

Gửi khối bản mã (số nguyên) C đến ngƣời nhận

Giải mã: Khối bản mã C < N

Tính: M = C d mod N

Khôi phục lại khối bản rõ (số nguyên) M ban đầu

c, Tính đúng của quá trình giải mã

Từ: e d =1mod φ(N) φ(N) | (e d 1). (p q) | (e d 1)

(p) (q) | (e d 1) (do p, q là các số nguyên tố)

(p) | (e d 1) (1)

Từ (1) k Z: e d – 1 = k (p) = k(p 1) (p là số nguyên tố) (3) Xét trƣờng hợp tổng quát với mọi số M Zn, khi nâng lỹ thừa e d ta có: Me d = M(e d 1) +1 (mod p)

Me d = (M(e d – 1))M (mod p) (4) Từ (3) và (4) Me d (Mk (p 1)) M (mod p) (5) Vì p là số nguyên tố, vậy bất kỳ số M ZN có hai trƣờng hợp:

M nguyên tố cùng nhau với p (nghĩa là gcd(M, p) = 1) hoặc M là bội số của p (nghĩa là gcd(M, p) = p).

Trường hợp 1: gcd (M, p) = 1

Vậy Mp 1 1 (mod p) (định lý Fermat) Từ: (5) Me d = (1)kM (mod p)

Me d = M (mod p) (6)

Trường hợp 2: Nếu gcd(M, p) = p M 0 (mod p). Đồng thời lũy thừa

số M lên một số nguyên bất kỳ, thì cũng chia hết cho p. Nghĩa là Me d = 0 (mod p

). Vậy trƣờng hợp 2 cũng thỏa mãn phƣơng trình (6)

Với cách tính tƣơng tự với q, từ (2) Me d = M (mod q) (7) Từ (6) & (7) Me d = M (mod p q) = M (mod N).

- Thí dụ minh hoạ hệ mật mã RSA:

+1 Tạo khoá: Chọn pq là số nguyên tố nhỏ với mục đích minh hoạ Chọn hai số nguyên tố p = 59, q = 83;

Tính N = p q = 59 83 = 4897;

Tính φ(N) = (p 1) (q 1) = (59 1) (8 3 1) = 4756; Chọn e = 47, thoả mãn gcd(e, φ(N)) = gcd(47,4756) = 1

Tìm phần tử nghịch đảo d = 2631 (dùng thuật toán Euclid mở rộng)

Công bố khoá công khai là (e = 47, N = 4897), còn d = 2631 đƣợc giữ làm khoá riêng.

+2 Mã hoá: Giả sử có nội dung cần mã hoá là M = “HAI PHONG”

Biến đổi các ký tự của thông điệp thành các sô tƣơng ứng nhƣ sau:

H A I P H O N G

08 01 09 00 16 08 15 14 07

Chia thông điệp thành 9 khối, mỗi khối có 02 chữ số biểu diễn một số nguyên Mi , với Mi ={08,01,09,00,16,08,15,14,07}

Mã hoá lần lƣợt các số Mi: Ci= Mi 47

(mod 4897) (8) Mã hoá đầu tiên M1 = (08)47 (mod 4897) =3649

Tiếp tục tính các C2 ; … ; C4 theo các tính (8) ta có kết quả Ci

Khối 1 2 3 4 5 6 7 8 9 Mi 08 01 09 00 16 08 15 14 07 Ci 1132 01 2482 0 1339 1132 3947 224 204 +3 Giải mã: Thực hiện giải mã lần lƣợt từng cột Ci Mi = Dk d(Ci)= Ci2631 (mod 4897) (9) Giải mã C1 = 1132 theo cách tính (9) ta có: M1= C12631 (mod 4897) = 11322631 (mod 4897)=08 Tiếp tục tính các số M2 ; … ;M9từ các số C2 ; … ;C9 theo (9) ta có bảng minh hoạ các số Mi đƣợc giải mã từ các số Ci nhƣ sau:

Khối 1 2 3 4 5 6 7 8 9

Ci 1132 01 2482 0 1339 1132 3947 224 204

Mi 08 01 09 00 16 08 15 14 07 Thực hiện phép biến đổi ngƣợc từ các số Mi thành các chuỗi ký tự tƣơng ứng để khôi phục lại thông điệp gốc ban đầu M = "HAI PHONG".

Một phần của tài liệu Số học số lớn cho mật mã luận án thạc sĩ (Trang 30 - 33)