CHƯƠNG 3 : TẤN CÔNG RSA VÀ CÁC BIẾN THỂ CỦA RSA
3.2.2. Tấn công Multi-Prime RSA
3.2.2.1. Phân tích Modulus thành thừa số.
Tương tự như RSA, modulus của Multi-prime RSA vẫn có thể bị phân tích khi khi biết một số gợi ý. Tấn công được trình bày dưới đây là một trường hợp tổng quát của "tấn công phân tích thành thừa số với một số gợi ý" trong RSA (định lý 3.8).
Định lý 3.11:
Gọi N là một modulus r số nguyên tố của RSA với các số nguyên tố cân bằng. Với s 2,r , cho r-s số nguyên tố trong các thừa số của N, (s-1)/s số bít có ý nghĩa nhất hoặc ít ý nghĩa nhất của một trong các số nguyên tố không biết, (s-2)/(s-1) các bít có ý nghĩa nhất hoặc không có ý nghĩa nhất của một trong các số nguyên tố chưa biết khác,..., 2/3 số bít có ý nghĩa nhất hoặc ít ý nghĩa nhất của một trong các số nguyên tố chưa biết khác, 1/2 số bít có ý nghĩa nhất hoặc ít ý nghĩa nhất của một trong các số nguyên tố chưa biết của một trong hai các số
Nguyễn Thị Ngọc Anh – K16 – HTTT1
nguyên tố chưa biết còn lại, thì modulus N có thể được phân tích trong thời gian đa thức r và logN.
3.2.2.2. Tấn công khi số mũ bí mật nhỏ
Tấn công khi số mũ bí mật nhỏ trên Multi-Prime RSA là sự mở rộng của tấn công trên RSA nhưng tấn công này sẽ kém hiệu quả hơn khi tăng số các số nguyên tố trong modulus.
Hinek, Low và Tesk đã mở rộng tấn công của Wiener cho Multi-prime RSA như sau:
Định lý 3.12 [10]:
Cho số nguyên r ≥ 2. Gọi N là một modulus Multi-Prime RSA có r số nguyên tố (các số nguyên tố cân bằng), e là số mũ công khai và d là số mũ bí mật tương ứng. Cho khóa công khai, nếu số mũ bí mật thỏa mãn:
) N ) 1 r 2 ( s ), N ( N s ( ) 1 r 2 ( k 2 N ks 2 N d 1 1/r r / 1
Thì modulus có thể được phân tích trong thời gian đa thức logN.
Đặt e = Nα và d = Nδ , ràng buộc trên số mũ bí mật trong định lý trên có thể viết gọn là:
r
2 1 2
1 , (ε=logN(2(2r-1))) có thể là một giá trị nhỏ nào đó khi xét N đủ lớn).
Trong trường hợp điển hình, với số mũ bí mật của Multi-Prime RSA nhỏ, số mũ công khai sẽ có kích thước giống như kích thước của modulus (α ≈ 1) và ràng buộc cho tấn công này là:
r
2 1
Nhận xét:
Giống như trong RSA, tấn công có thể mạnh hay yếu khi sử dụng số mũ công khai lớn hay nhỏ tương ứng. Đặc biệt, chú ý rằng tấn cống mạnh nhất khi α≈(r-1)/r, với ràng buộc
r
1 , và tấn công không thể thực hiện khi α ≥1+ 1/r.
3.2.2.3. Tấn công khi biết các số nguyên tố
Theo Hinek khi biết một hoặc nhiều số nguyên tố của modulus và số mũ bí mật đủ nhỏ thì có thể phân tích modulus thành thừa số.
Định lý 3.13:
Với ε > 0 và r ≥ 3 tồn tại n0 để với mọi n > n0, ta gọi: N là modulus r-prime RSA n – bít với các số nguyên tố cân bằng, e là số mũ công khai và d = Nδ là số mũ bí mật tương ứng. Cho khóa công khai và 1≤ v ≤ r-2 số các số nguyên tố trong các thừa số của N, nếu
r v
thì modulus N có thể bị phân tích trong thời gian đa thức n.
Nhận xét:
Ràng buộc trên số mũ bí mật của tấn công này rộng hơn bất kỳ các tấn công với số mũ bí mật nhỏ nào trên Multi-prime RSA (với 3 hoặc nhiều các số nguyên tố hơn trong modulus). Thậm chí, chỉ biết một số nguyên tố, với số mũ bí mật < N1/r
cũng không an toàn.
3.2.3. Tấn công Multi-power RSA (lƣợc đồ Takagi) 3.2.3.1. Phân tích Modulus thành thừa số
Tương tự như RSA và Multi-prime RSA, modulus của Multi-power RSA có thể bị phân tích khi khi biết một số gợi ý. Cũng giống như Multi-prime RSA, tấn công được trình bày dưới đây cũng là một trường hợp được suy ra từ "tấn công phân tích thành thừa số với một số gợi ý" của RSA.
Định lý 3.14 [10]:
Cho N = pb-1q (b≥ 2, p và q là các số nguyên tố cân bằng). Nếu biết ít nhất 1/b bít có ý nghĩa nhất hoặc ít ý nghĩa nhất của p, hoặc biết (b-1)/b bít có ý nghĩa nhất hoặc ít ý nghĩa nhất của q, thì N có thể được phân tích trong thời gian đa thức log N
3.2.3.2. Tấn công khi biết một số thông tin về số mũ CRT
Khi số mũ công khai nhỏ hơn (b 1)/b2
N và biết được một số bít có ý nghĩa nhất hoặc không có ý nghĩa nhất của số mũ CRT thì modulus có thể được phân tích trong thời gian đa thức. Gốc của tấn công này là tấn công của May khi biết một số bít có ý nghĩa nhất của dp.
Định lý 3.15 [10]:
Gọi N= pb-1
q là một modulus n-bit với các số nguyên tố cân bằng ( b≥ 3),
2 / ) 1 (b b N N
e là số mũ công khai cho lược đồ Takagi, dp và dq là các số mũ CRT thỏa mãn edp≡1(mod p-1) và edq≡1(mod q-1). Cho dp để:
2 1 b b p p d N d ,
Nguyễn Thị Ngọc Anh – K16 – HTTT1 Hoặc dq để: 2 1 b q q d N d
Modulus có thể bị phân tích trong thời gian đa thức n.
Nhận xét:
Tấn công này là một tấn công được suy rộng ra từ tấn công khi biết một số thông tin về số mũ bí CRT (trong phần tấn công CRT-RSA). Tuy nhiên, không giống như tấn công trong CRT- RSA, số các bít cần biết trong tấn công này phụ thuộc vào các bít biết được là của dp hay dq.
CHƢƠNG 4: ĐÁNH GIÁ VÀ SO SÁNH HỆ MẬT MÃ RSA VỚI CÁC BIẾN THỂ CỦA NÓ
4.1. Đánh giá chi phí về thời gian của thuật toán
Để đánh giá chi phí về thời gian (độ phức tạp của thuật toán) của các thuật toán tạo khóa, mã hóa và giải mã trong RSA và các biến thể của nó, ta xét trên hai mặt sau:
- Thứ nhất là: các chi phí tính toán cho tạo số nguyên tố - Thứ hai là: các phép tính lũy thừa modular
vì chúng có ảnh hưởng lớn nhất trong thuật toán trên.
4.1.1 Kiểm tra số nguyên tố và phép tính lũy thừa modular 4.1.1.1. Kiểm tra số nguyên tố 4.1.1.1. Kiểm tra số nguyên tố
Sử dụng cách của Miller-Rabin, có thể kiểm tra được một số nguyên tố ngẫu nhiên n-bit với thời gian chạy O(n4/ log(n) + tn3) [14]. Phương pháp này có nhược điểm là: đưa ra một hợp số thay vì một số nguyên tố với xác suất tối đa 4-t
. Đối với các modulus càng lớn sẽ tính toán với chi phí càng cao.
Có rất nhiều các thuật toán kiểm tra số nguyên tố nhanh, nhưng không thuật toán nào có thể cải thiện đáng kể về sự ràng buộc này.
4.1.1.2. Tính Lũy thừa modular
Cho một số mũ B (b-bit) và một modulus N (n-bit), ta xét lũy thừa đồng dư: XB mod N, với X ZN.
Có nhiều thuật toán tính lũy thừa modular khác nhau, nhưng quan trọng là sự phức tạp của tính toán này có thể được giảm trong khi tính số lượng các phép nhân modular.
Giả sử, ta sử dụng phương pháp nhân và bình phương (Square – and – multiply) như sau:
Thuật toán 2.1: Square – and –multiply [8]:
- Input: N, x, B 1 b 0 i i i2 ) B B ( - Output: xB mod N - Thuật toán: 1. z=1 2. For i = b-1 downto 0 do
Nguyễn Thị Ngọc Anh – K16 – HTTT1
2.1. z = z2 mod N
2.2. If Bi = 1 then z = (z.x) mod N 3. Retun (z)
Ví dụ: Giả sử có N = 114113 và B = 3533. Để thực hiện mã hóa số 9726 ta cần tính: 97263533
mod 11413.
Sử dụng thuật toán Square – and – Multiply ở trên ta tính như sau:
i Bi z 11 11 12 = 9726 10 1 97262 * 9726 = 2659 9 0 26592 = 5634 8 1 56342 * 9726 = 9167 7 1 91672 * 9726 = 4958 6 1 49582 * 9726 = 7783 5 0 77832 = 6298 4 0 62982 = 4629 3 1 46292 * 9726 = 10185 2 1 101852 * 9726 = 105 1 0 1052 = 11025 0 1 110252 * 9726 = 5761 Trong thuật toán trên, ở bước lặp i thực hiện:
- 1 phép nhân
- 1 phép lũy thừa bình phương
Khi số bit 1 và số bit 0 trong dãy của B là tương đương thì có: - Trung bình có 1/2 phép nhân trong mỗi bước lặp (bước 2.2) - 1 phép bình phương trong mỗi bước lặp (trong bước 2.1) Do đó có khoảng b
2
3 phép nhân.
Nói chung, số phép nhân modulo cần tỉ lệ thuận với độ dài bit ( lenghtbit) của số mũ, trừ khi ta lấy một số mũ với các tính toán trước và lưu trữ các giá trị này.
Khi so sánh chi phí tính toán của các phép tính lũy thừa modular với các modulus khác nhau, tổng chi phí của phép nhân modular phải được xem xét. Gọi M(n) là độ phức tạp của một phép nhân modular với số bị nhân có độ lớn n-bit và một modulus n-bit. Ở đây, M(n) thể hiện tổng số bít của các hoạt động thực hiện một phép nhân modular. Chi phí tính toán XB
mod N sẽ là: ) ( 2 3 n bM
4.1.2.1. Thuật toán tạo khóa trong RSA chuẩn
Thuật toán sinh khóa trong RSA cần phải sử dụng 2 số nguyên tố ngẫu nhiên, có cùng một kích thước. Đối với một modulus N, mỗi số nguyên tố cần sử dụng có kích thước khoảng N1/2
.
4.1.2.2. Thuật toán khoá trong CRT-RSA
Thuật toán sinh khóa trong CRT-RSA giống hệt như trong RSA chuẩn. Vì vậy, thời gian sinh khóa cho CRT-RSA bằng thời gian sinh khóa trong RSA.
4.1.2.2. Thuật toán tạo khóa trong Multi-Prime RSA
Thuật toán sinh khóa cho Multi-Prime RSA cần phải tạo ra r số nguyên tố ngẫu nhiên, có cùng kích thước. Đối với một modulus N, mỗi số nguyên tố cần được tạo có kích thước khoảng N1/r
.
Vì các thuật toán kiểm tra tính nguyên tố là tỉ lệ thuận với kích thước của các số nguyên tố, nên độ phức tạp để tạo ra tất cả các số nguyên tố (n/r)-bit cho Multi-Prime RSA thấp hơn so với tạo ra hai số nguyên tố (n /2)-bit cho RSA. Sự khác biệt chính xác trong các lần sinh khóa sẽ phụ thuộc vào các thuật toán cụ thể được sử dụng để thực hiện các phép toán số học.
Nhìn chung, quá trình tạo khóa cho Multi-Prime RSA sẽ giảm với sự gia tăng số lượng các số nguyên tố so với RSA và CRT-RSA.
4.1.2.3. Thuật toán tạo khóa trong Takagi's Scheme
Đối với một modulus kích thước nhất định, Takagi'scheme chỉ cần sử dụng hai số nguyên tố ngẫu nhiên của kích thước N1/b thay vì hai số nguyên tố ngẫu nhiên kích thước N1/2 như ở RSA. Vì tạo các số nguyên tố ngẫu nhiên là tỉ lệ thuận với kích thước của các số nguyên tố, điều này đã làm giảm thời gian sinh khóa trong Takagi's Scheme. Chú ý rằng, điều kiện bổ sung về số mũ công khai gcd(e,p) = 1 là không quan trọng khi chọn một số mũ công khai nhỏ. Đặc biệt, sử dụng một số mũ công khai nhỏ hơn nhiều so với N1/b
sẽ luôn luôn đảm bảo rằng gcd (e, p) = 1. Như vậy, sự phức tạp của việc tạo một modulus n-bit cho Takagi's Scheme tương đương với tạo ra một modulus (2n / b)-bit cho RSA.
Do đó, quá trình tạo khóa trong Takagi's Scheme cũng giảm so với RSA và CRT-RSA.
4.1.3. Đánh giá thuật toán mã hóa
Thuật toán mã hóa trong RSA chuẩn và các biến thể của RSA là: CRT- RSA, Multi-Prime RSA và Takagi's scheme là giống nhau:
Nguyễn Thị Ngọc Anh – K16 – HTTT1
Do vậy, chi phí giải mã trong các hệ mật mã này là như nhau.
4.1.3. Đánh giá thuật toán giải mã
4.1.3.1. Thuật toán giải mã chuẩn trong RSA
Trong phần trình bày 4.1.1.2, ta gọi M(n) là độ phức tạp của một phép nhân modulo với số bị nhân có độ lớn n-bit và một modulus n-bit. Ở đây, M(n) thể hiện tổng số bít của các hoạt động thực hiện một phép nhân modulo. Ta xét RSA với một modulus n-bit và số mũ bí mật d N . Giả sử số mũ bí mật có số bít 1 và bit 0 trong dãy biểu diễn nhị phân là tương đương, thì độ phức tạp của giải mã chuẩn trong RSA là:
). n ( nM 2 3
4.1.3.1. Thuật toán giải mã trong CRT-RSA
Đối với giải mã CRT, độ phức tạp bị chi phối bởi hai lũy thừa modular cho các phần giải mã mp và mq. Giả định rằng, nghịch đảo p-1 mod q được tính toán trước khi sử dụng thuật toán của Garner. Các số mũ CRT xấp xỉ khoảng dp
N , với một số 0 < δp ≤ ½. Giả sử mỗi mũ CRT có số bít 0 và bít 1tương đương trong dãy biểu diễn nhị phân của nó, thì độ phức tạp của giải mã CRT sẽ là:
). 2 ( 2 3 2 pnM n
Vì vậy, việc giải mã trong CRT - RSA nhanh hơn so với giải mã chuẩn của RSA theo một tỉ số: . ) 2 ( ) ( 2 1 n M n M p
Vì sự phức tạp của M(n) có thể coi như là tuyến tính và bậc hai, do đó sự tăng tốc độ này nằm trong khoảng (δ/ δp, 2 δ/δp) [10]. Nếu các phần giải mã CRT có thể được thực hiện song song, thì hệ số này tăng lên gấp hai lần.
4.1.3.2. Thuật toán giải mã trong Multi-Prime RSA
Khi giải mã chuẩn được sử dụng:
Chi phí về thời gian giải mã tương đương với RSA chuẩn. Như vậy, lợi ích duy nhất của sử dụng Multi-Prime RSA với RSA chuẩn là giảm được các chi phí tạo khóa.
Chi phí giải mã cho Multi-Prime RSA thấp hơn chi phí giải mã với CRT- RSA. Các chi phí chủ yếu trong thuật toán giải mã là chi phí cho r phần giải mã. Dựa theo các lập luận trong phần 2.4, chi phí để giải mã sẽ khoảng:
) r n ( nM 2 3 r ' khi các số mũ CRT có kích thước '
N với một modulus n-bit. Ở đây, ta giả sử rằng số lượng các bit 1 và bit 0 trong dãy biểu diễn nhị phân của các số mũ CRT là tương đương nhau. Trong khi chi phí giải mã trong CRT-RSA là:
) 2 n ( nM 2 3 2 p
Điều này cho thấy, chi phí giải mã trong Multi- Prime RSA luôn thấp hơn so với chi phí giải mã trong CRT-RSA.
Ta xét hai trường hợp của Multi-Prime RSA một cách chi tiết như sau: - Trường hợp 1: khi một số mũ công khai bé được sử dụng
Khi số mũ công khai bé được sử dụng, các số mũ CRT sẽ có kích thước đủ lớn. Vì vậy, chúng ta có thể thay thế δ'
bằng 1/r cho Multi-Prime RSA và bằng 1/2 cho CRT-RSA. Trong trường hợp này, tỷ lệ chi phí giải mã của CRT-RSA trên Multi-Prime RSA là:
M(n/2) / M(n/r)
Vì sự phức tạp của M(n) biến đổi theo phương trình tuyến tính bậc hai, do đó tỉ lệ này nằm trong khoảng (r/2, r2
/4]. Như vậy, giải mã trong Multi-prime RSA sẽ nhanh hơn CRT-RSA ít nhất khoảng r/2 lần.
Trong thực tế, Boneh và Shacham so sánh tốc độ giải mã của Multi-Prime RSA (với r=3) và CRT-RSA với một modulus 1024-bit. Kết quả của cuộc thử nghiệm cho thấy giải mã trong Multil-Prime RSA nhanh hơn giải mã trong CRT-RSA 1.73 lần [6]. Tỉ lệ này nằm trong phạm vi dự đoán (r/2, r2/4]=(1.5, 2.25] (với r = 3).
- Trường hợp 2: khi số mũ CRT bé được sử dụng
Tỷ lệ chi phí giải mã cho CRT-RSA trên Multil-Prime RSA là: 2M(n/2) / (rM(n/r))
Vì M(n) biến đổi theo phương trình tuyến tính bậc hai, do đó tỷ lệ này nằm trong khoảng (1, r/2].
Nguyễn Thị Ngọc Anh – K16 – HTTT1
Trong thuật toán 2.3, ta thấy phần giải mã theo modulo p có thể được nâng lên thành phần giải mã theo modulo pb-1. Về cơ bản, các thuật toán giải mã tính toán phần giải mã mp và phần giải mã mq, sử dụng thuật toán 2.3 để tính toán