Chƣơng 2 : CƠ SỞ LÝ THUYẾT
2.3. Hàm băm và chữ ký điện tử
2.3.2.4. Mơ hình chữ ký điện tử theo RSA
a. Giới thiệu RSA
RSA đƣợc Rivest, Shamir và Adleman phát triển, là một thuật tốn
mật mã hóa khóa cơng khai. Nó đánh dấu một sự tiến hóa vƣợt bậc của lĩnh vực mật mã học trong việc sử dụng khóa cơng khai. RSA đang đƣợc sử dụng phổ biến trong thƣơng mại điện tử và đƣợc cho là đảm bảo an tồn với điều kiện độ dài khóa đủ lớn. Thuật tốn đƣợc Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện
Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả.
Trƣớc đó, vào năm 1973, Clifford Cocks, một nhà toán học ngƣời Anh làm việc tại GCHQ (Cơ quan Truyền thơng Chính phủ Anh quốc: Government Communications Headquarter – GCHQ), đã mơ tả một thuật tốn tƣơng tự. Với khả năng tính tốn tại thời điểm đó thì thuật tốn này khơng khả thi và chƣa bao giờ đƣợc thực nghiệm. Tuy nhiên, phát minh này chỉ đƣợc cơng bố vào năm 1997 vì đƣợc xếp vào loại tuyệt mật.
RSA là một thí dụ điển hình về một đề tài tốn học trừu tƣợng lại có thể áp dụng thực tiễn vào đời sống thƣờng nhật. Khi nghiên cứu về các số ngun tố, ít có ai nghĩ rằng khái niệm số nguyên tố lại có thể hữu dụng vào lãnh vực truyền thơng.
b. Tạo khóa
Hệ mã hóa RSA cần tạo ra một cặp khóa lập mã và giải mã theo phƣơng pháp sau:
Bƣớc 1: Tạo hai số nguyên tố lớn ngẫu nhiên p và q (p ≠ q). Bƣớc 2: Tính: n = p * q.
Bƣớc 3: Tính giá trị hàm số Ơle (n) = (p-1) * (q-1).
Bƣớc 4: Chọn một số ngẫu nhiên e sao cho 1< e < (n) và là số nguyên tố cùng nhau với (n).
Bƣớc 5: Tính d sao cho d x e =1 mod ((n)).
Bƣớc 6: Công bố n và e trong danh bạ làm khố cơng khai (public key), cịn d làm khố bí mật (private key).
c. Thuật toán mã hoá và giải mã + Mã hoá:
Giả sử A muốn gửi đoạn thông tin M cho B. Đầu tiên A chuyển M thành một số m < n theo một hàm có thể đảo ngƣợc (từ m có thể xác định lại M) đƣợc thỏa thuận trƣớc. Quá trình này đƣợc mô tả ở phần chuyển đổi văn bản rõ.
Lúc này A có m và biết n cũng nhƣ e do B gửi. A sẽ tính c là bản mã hóa của m theo cơng thức:
c = me mod n
Hàm trên có thể tính dễ dàng sử dụng phƣơng pháp tính hàm mũ (theo mơđun) bằng (thuật tốn bình phƣơng và nhân), cuối cùng A gửi c cho B.
+ Giải mã:
B nhận c từ A và biết khóa bí mật d. B có thể tìm đƣợc m từ c theo công thức sau:
m = cd mod n
Biết m, B tìm lại M theo phƣơng pháp đã thỏa thuận trƣớc. Quá trình giải mã hoạt động vì ta có
cd ≡ (me)d ≡ med (mod n)
Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nên: med ≡ m (mod p)
và
med ≡ m (mod q)
Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý số dƣ Trung hoa, ta có:
med ≡ m (mod p*q). hay:
cd ≡ m (mod n).
d. Độ an tồn của hệ mật RSA
Trên thực tế có nhiều cách tấn cơng khác nhau đối với mã công khai RSA nhƣ sau: Tìm kiếm khố bằng phƣơng pháp vét cạn, phƣơng pháp này khơng khả thi với kích thƣớc đủ lớn của các số hoặc tấn công bằng tốn học dựa vào độ khó việc tính Ф(n) bằng cách phân tích n thành hai số nguyên tố p và q hoặc tìm cách tính trực tiếp Ф(n). Trong quá trình nghiên cứu việc thám mã ngƣời ta đề xuất kiểu tấn công thời gian trong khi giải mã, tức là căn cứ vào tốc độ mã hoá và giải mã các mẩu tin cho trƣớc mà phán đốn các thơng tin về khố. Cuối cùng có những nghiên
cứu tấn cơng RSA với điều kiện biết trƣớc bản mã cho trƣớc. Cụ thể nhƣ sau:
Bài tốn phân tích
Tấn cơng tốn học có 3 dạng:
o Phân tích N = p*q, sau đó tính Ф(N) và dTìm n trực tiếp Ф(N) và tính d.
o Tìm d trực tiếpHiện tại tin rằng tất cả đều tƣơng đƣơng với bài tốn phân tích.
o Có các bƣớc tiến chậm theo thời gian.
o Hiện tại cho rằng RSA 1024 hoặc 2048 là an tồn. Tấn cơng thời gian.
o Phát triển vào giữa năm 1990.
o Paul Kocher chỉ ra rằng kẻ thám mã có thể xác định đƣợc khố riêng nếu theo dõi thời gian máy tính cần để giải mã các bản tin.
o Tấn công thời gian không chỉ áp dụng cho RSA, mà cả với các hệ mã công khai khác.
Tấn công bản mã chọn trƣớc.
o RSA có điểm yếu với tấn cơng bản mã chọn trƣớc.
o Kẻ tấn công chọn bản mã và đoán bản rõ đƣợc giải mã.
o Chọn bản mã để khám phá RSA cung cấp thông tin để thám mã.
o Có thể tính với bộ đệm ngẫu nhiên của bản rõ.