Chương 2 NGHIÊN CỨU HỆ MẬT VÀ CHỮ KÝ SỐ RSA
2.2.2 Quá trình mã hóa
Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob 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.
Lúc này Bob có m và biết n cũng nhƣ e do Alice gửi. Bob 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 toán bình phương và nhân) Cuối cùng Bob gửi c cho Alice.
2.2.3 Quá trình giải mã
Alice nhận c từ Bob và biết khóa bí mật d. Alice có thể tìm đƣợc m từ c theo công thức sau m = cd mod n
Biết m, Alice 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 Quốc, ta có:
med m(mod pq).
hay cd m (mod n).
2.2.4 Chuyển đổi văn bản rõ
Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ (chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không an toàn. Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề sau:
Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng
Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá trị me cũng nhận giá trị nhỏ (so với n). Nhƣ vậy phép môđun không có tác dụng và có thể dễ dàng tìm đƣợc m bằng cách khai căn bậc e của c (bỏ qua môđun).
RSA là phương pháp mã hóa xác định (không có thành phần ngẫu nhiên) nên kẻ tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra giữa bản rõ và bản mã. Khi gặp một bản mã, kẻ tấn công sử dụng bảng tra để tìm ra bản rõ tương ứng.
Trên thực tế, ta thường gặp 2 vấn đề đầu khi gửi các bản tin ASCII ngắn với m là nhóm vài ký tự ASCII. Một đoạn tin chỉ có 1 ký tự NUL sẽ đƣợc gán giá trị m = 0 và cho ra bản mã là 0 bất kể giá trị của e và N. Tương tự, một ký tự ASCII khác, SOH, có giá trị 1 sẽ luôn cho ra bản mã là 1. Với các hệ thống dùng giá trị e nhỏ thì tất cả ký tự ASCII đều cho kết quả mã hóa không an toàn vì giá trị lớn nhất của m chỉ là 255 và 2553 nhỏ hơn giá trị n chấp nhận đƣợc. Những bản mã này sẽ dễ dàng bị phá mã.
Để tránh gặp phải những vấn đề trên, trên thực tế RSA thường bao gồm một hình thức chuyển đổi ngẫu nhiên hóa m trước khi mã hóa. Quá trình chuyển đổi này phải đảm bảo rằng m không rơi vào các giá trị không an toàn. Sau khi chuyển đổi, mỗi bản rõ khi mã hóa sẽ cho ra một trong số khả năng trong tập hợp bản mã. Điều này làm giảm
tính khả thi của phương pháp tấn công lựa chọn bản rõ (một bản rõ sẽ có thể tương ứng với nhiều bản mã tuỳ thuộc vào cách chuyển đổi).
Một số tiêu chuẩn, chẳng hạn như PKCS, đã được thiết kế để chuyển đổi bản rõ trước khi mã hóa bằng RSA. Các phương pháp chuyển đổi này bổ sung thêm bít vào M. Các phương pháp chuyển đổi cần được thiết kế cẩn thận để tránh những dạng tấn công phức tạp tận dụng khả năng biết trước được cấu trúc của bản rõ. Phiên bản ban đầu của PKCS dùng một phương pháp đặc ứng (ad-hoc) mà về sau được biết là không an toàn trước tấn công lựa chọn bản rõ thích ứng (adaptive chosen ciphertext attack). Các phương pháp chuyển đổi hiện đại sử dụng các kỹ thuật như chuyển đổi mã hóa bất đối xứng tối ƣu (Optimal Asymmetric Encryption Padding - OAEP) để chống lại tấn công dạng này. Tiêu chuẩn PKCS còn đƣợc bổ sung các tính năng khác để đảm bảo an toàn cho chữ ký RSA (Probabilistic Signature Scheme for RSA - RSA-PSS).
2.2.5 Tính không an toàn của hệ mật RSA
Mục này khảo sát tính an toàn của thuật toán mã hoá RSA. Đối với trường hợp khoá ngẫu nhiên và thông điệp ngẫu nhiên, sự tồn tại của một CPA hiệu quả chống lại hệ mật RSA có nghĩa là giả thuyết RSA phải thất bại.
Định nghĩa 1: Hệ mật RSA là an toàn "all-or-nothing" chống lại CPA nếu và chỉ nếu giả thuyết RSA vững chắc.
Ở đây, ý nghĩa của "all-or-nothing" đã đƣợc giải thích ở phần 2.1 và CPA đã đƣợc nhắc đến ở mục 1.4
Đầu tiên chúng ta hãy tìm hiểu an toàn kiểu "all-or-nothing". Từ "all" ở đây có nghĩa là phải tìm toàn bộ khối bản rõ trong trường hợp thông thường: thông điệp có kích thước của modulo. Trong các ứng dụng thực tế, một bản rõ cụ thể chứa vài thông tin phụ không bí mật. Hệ mật RSA không che giấu vài thông tin phụ về một bản rõ. Ví dụ, nếu một bản rõ đƣợc biết nhƣ là một con số bé hơn 1.000.000 (ví dụ một cuộc đấu giá bí mật hoặc là số tiền lương), sau đó được cho một bản mã, một kẻ tấn công có thể tìm ra bản
rõ trong quá trình mã hoá trial-and-error.
Thông thường, cho một bản rõ m (< N), với một xác suất đáng kể, chỉ cần m lần thử để xác định m nếu bộ nhớ đáp ứng được kích thước m. Tính chất nhân của hàm RSA nhƣ sau:
e e
e m m
m
m1 2) 1 2
( c1c2(mod N)
Phân tích bản rõ thành thừa số có được các bản mã tương ứng. Thường một bài toán phân tích thừa số của bản mã RSA là khó do tính chất biến đổi hỗn hợp của hàm mã hoá sẽ là cách chung nhất làm cho một bản mã có kích thước của modulo đó. Tuy nhiên tính chất luỹ thừa cho thấy rằng nếu một bản rõ dễ dàng phân tích thành thừa số thì bản mã cũng dễ dàng nhƣ thế. Tính lỏng lẻo của sự phân tích thành thừa số nguyên tố dẫn đến một cuộc tấn công gặp ở giữa.[4]
Tấn công gặp ở giữa và tấn công tích cực vào hệ mã RSA Điều kiện:
Đặt c = me (mod N) mà Malice biết m < 2l. Với một xác suất đáng kể, m là một tích số thoả mãn
m =m1m2 với m1, m2< 22
l
(1)
Tính chất luỹ thừa của hàm RSA sinh ra c = m1e.me2 (mod N) (2) MALICE thực hiện nhƣ sau
1. Xây dựng bộ dữ liệu đƣợc sắp xếp {1e, 2e, 3e....(22
l
)e} (mod N) 2. Tìm kiếm trong bộ dữ liệu đƣợc sắp xếp để tìm e
i
c je(mod N) (
cho i =1, 2, ....22
l
) ) (3)
Từ (1), (2), một tấn công vào ở giữa, điều kiện ở (3) sẽ chỉ ra trước 22
l
bước tính toán ie(mod N). Như vậy thì Malice biết bản rõ i, j và anh ta khôi phục lại m = i.j.
Hãy làm một phép đo chi phí của Malice. Không gian lưu trữ cho cơ sở dữ liệu là 2 2
l
.log N bit. Chi phí thời gian: tạo các phân tử trong cơ sở dữ liệu chi phí OB(22
l
.log3N), sắp xếp dữ liệu mất OB( 2 l .22
l
), cuối cùng, tìm kiếm trong danh sách đƣợc sắp xếp để tìm je(mod N) chi phí OB(22
l
(2
l +log3N)), công thức cuối cùng bao gồm cả thời gian cho việc tìm kiếm nhị phân là hàm mũ của modulo. Vậy tổng thời gian phải trả có độ phức tạp là OB(221
l
.(2
l +log3N)). Nếu chi phí cho không gian lưu
trữ là 22
l
.log N bit, thì chi phí thời gian ít hơn chi phí về lưu trữ là 2l. Kiểu tấn công này có độ phức tạp thời gian giảm đi căn bậc hai lần.
Ví dụ 1 Một ví dụ về tấn công trong thực tế.
Bây giờ chúng ta hãy nghĩ đến một tình huống sử dụng một khoá RSA 1024 bit để mã hoá một khoá DES dài 56 bit. Đối với một khoá DES ngẫu nhiên, việc khôi phục khoá có thể thực hiện với một xác suất đáng kể (để phân tích khoá DES thành hai số nguyên 28 bit), sử dụng không gian lưu trữ 228.1024 = 238 bit =32 gigabit và tính toán đồng dư thức luỹ thừa 229. Chi phí không gian lưu trữ và thời gian có thể đáp ứng được bởi máy tính cá nhân có cấu hình tốt, trong khi tìm kiếm khóa DES trực tiếp từ quá trình mã hoá yêu cầu tính toán đồng dƣ thức luỹ thừa 256 có thể không thực hiện đƣợc thậm chí sử dụng một thiết bị tốt.
Bây giờ chúng ta biết rằng chúng ta không nên sử dụng hệ mật RSA để mã hoá một khoá hoặc mật khẩu ngắn hơn 264bit. Điều gì xảy ra nếu trong một ứng dụng chúng ta phải thực hiện mã hoá RSA cho các số nguyên bé, thậm chí là một thông điệp dài bằng
một bit. Như vậy chúng ta nên sử dụng các phương pháp mã hoá.được giới thiệu ở chương 3.
2.2 Hệ chữ ký số RSA