luận văn: nghiên cứu sự an toàn của một số hệ mật mã hiện đại trường đh quốc gia hà nộiluận văn: nghiên cứu sự an toàn của một số hệ mật mã hiện đại trường đh quốc gia hà nộiluận văn: nghiên cứu sự an toàn của một số hệ mật mã hiện đại trường đh quốc gia hà nội
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LUẬN VĂN THẠC SĨ KỸ THUẬT PHẦN MỀM
Người hướng dẫn khoa học: TS Lê Phê Đô
Hà Nội – 2014
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan kết quả đạt được trong luận văn là sản phẩm của riêng của cá nhân tôi, nếu trích dẫn thì có ghi chú rõ ràng Trong toàn bộ nội dung của luận văn, những điều được trình bày hoặc là của cá nhân hoặc là được tổng hợp từ nhiều nguồn tài liệu Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và được trích dẫn hợp pháp
Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan của mình
Hà Nội, ngày 02 tháng 12 năm 2014
Phạm Thị Lương
Trang 3MỤC LỤC
LỜI CAM ĐOAN 1
DANH MỤC CÁC TỪ VIẾT TẮT 4
DANH MỤC HÌNH VẼ 4
MỞ ĐẦU 5
Lý do chọn đề tài: 5
Đối tượng và phạm vi nghiên cứu: 5
Mục đích nghiên cứu của luận văn: 5
Bố cục luận văn: 5
CHƯƠNG I CƠ SỞ TOÁN HỌC CỦA MẬT MÃ HIỆN ĐẠI 7
I.1 Tổng quan về số nguyên tố: 7
1.1 Số nguyên tố 7
1.2 Một số định lý cơ bản 11
1.3 Thuật toán kiểm định số nguyên tố Miller – Selfridge – Rabin (MSR) 12
1.4 Các tiêu chuẩn đường cong Elliptic 13
1.5 Thuật toán AKS 15
I.2 Các phương pháp phân tích nhân tử số nguyên 16
2.1 Các phương pháp phân tích nhân tử cổ điển 16
2.2 Phương pháp phân số liên tục 17
2.3 Thuật toán Pollard 19
2.4 Sàng bậc 2 21
2.5 Phương pháp đường cong Elliptic 23
I.3 Logarit rời rạc 25
3.1 Các khái niệm cơ sở 25
3.2 Thuật toán bước Baby và bước Giant của Shank 25
3.3 Thuật toán Pollig – Hellman 26
CHƯƠNG 2: NGHIÊN CỨU SỰ AN TOÀN CỦA MỘT SỐ HỆ MẬT MÃ HIỆN ĐẠI 30 II.1 Mật mã RSA 30
Trang 42.1 Các cuộc tấn công vào RSA 30
2.1.1 Factoring RSA-768 31
2.1.2 Tấn công Fault-Base : 41
II.2 Mật mã Elgamal 51
2.2 Các cuộc tấn công vào hệ mật mã Elgamal : 51
2.2.1 Phương pháp phân rã số nguyên: 51
2.2.2 Tấn công gặp nhau ở giữa( MEET-IN-THE-MIDDLE ATTACK) 56
2.2.3 Tấn công hai bảng 58
II.3 Mật mã đường cong Elliptic 59
2.3 Các cuộc tấn công vào mật mã dựa trên đường cong Elliptic 60
2.3.1 Tấn công ECC2K-130 61
2.3.2 Tấn công logarit rời rạc trên đường cong 66
2.3.3 Tấn công dựa vào nguồn điện đơn giản- Simple power attacks (SPA): 70
2.3.4 Tấn công phân tích nguồn điện vi phân DPA: 71
2.3.5 Tấn công không điểm(Zero-point attacks): 72
2.3.7 Đánh giá sự an toàn của mật mã dựa trên đường cong Elliptic thông qua các cuộc tấn công : 76
CHƯƠNG 3: CÀI ĐẶT 78
Một số hình ảnh 79
TỔNG KẾT 80
KẾT LUẬN 80
HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 81
TÀI LIỆU THAM KHẢO 82
Trang 5DANH MỤC CÁC TỪ VIẾT TẮT
Mật mã đường cong Elliptic ECC Elliptic Curve Cryptography Định lý đồng dư Trung Hoa CRT Chinese Remainder Theorem Bài toán logarit rời rạc DLP Discrete Logarithm Problem Mảng cổng lập trình được dạng trường FPGA Field Programmable Gate Array
Tầng các ổ cắm bảo mật SSL Secure Sockets Layer
ECDBL Elliptic curve dou-bling ECADD Elliptic curve addition
Phân tích nguồn điện vi phân DPA Differential Power Analysis Phân tích nguồn điện đơn giản SPA Simply Power Analysis
DANH MỤC HÌNH VẼ
Hình 2.1 Lược đồ tấn công Fault-Base
Hình 2.2 Ví dụ về khôi phục khóa theo các bit của cửa sổ
Hình 2.3 Tỷ lệ bit lỗi thu được trong OpenSSL khi điều chỉnh điện thế Hình 2.4 Phần trăm tích lũy các bits của khóa bí mật khi khôi phục Hình 3.1 Chọn số cần phân tích
Hình 3.2 Kết quả phân tích
Bảng 2.1 Độ dài của khóa giữa RSA và ECC khi ở cùng mức an toàn
Trang 6Trong luận văn tôi đã tổng hợp các kết quả nghiên cứu mới nhất ở Việt Nam và trên thế giới về ba hệ mật mã trên Từ đó người sử dụng có thể đảm bảo an toàn cho dữ liệu của mình
Tôi xin chân thành cảm ơn thầy Lê Phê Đô đã tận tình hướng dẫn tôi hoàn thành luận văn này
Đối tượng và phạm vi nghiên cứu:
Đối tượng nghiên cứu:
Các khái niệm, thuật toán và độ phức tạp của các thuật toán liên quan
Độ phức tạp và hiệu quả của một số phương pháp tấn công
Xây dựng và cài đặt một phương pháp tấn công RSA
Phạm vi nghiên cứu của luận văn:
Các khái niệm và thuật toán từ cổ điển đến hiện đại liên quan đến các hệ mật
mã RSA, Elgamal, và các hệ mật trên đường cong Elliptic
Các vấn đề mới xuất hiện liên quan đến độ an toàn của các hệ mật mã hiện đại
Những kết quả mới trong các lĩnh vực liên quan
Mục đích nghiên cứu của luận văn:
Dựa trên kết quả tổng hợp được đề xuất những phương án sử dụng các hệ mật
mã RSA, Elgamal và hệ mật trên đường cong Elliptic một cách an toàn trong điều kiện hiện nay
Bố cục luận văn:
Luận văn gồm 3 chương cùng với phần mở đầu, kết luận và các danh mục
Chương 1: Cơ sở toán học của mật mã hiện đại
Trình bày các khái niệm cơ bản của đại số và số học, các thuật toán và bài toán liên quan đến các hệ mật mã
Chương 2: Nghiên cứu sự an toàn của một sô hệ mật mã hiện đại
Chương này trình bày tổng quan về các hệ mật mã RSA, Elgemal, mật mã dựa trên đường cong Elliptic Nội dung chính của chương là trình bày các tấn công và đánh giá sự an toàn thông qua các tấn công đó
Chương 3: Cài đặt
Trang 7Cài đặt một tấn công vào RSA sử dụng phương pháp phân tích Fermat số N
Trang 8CHƯƠNG I CƠ SỞ TOÁN HỌC CỦA MẬT MÃ HIỆN ĐẠI
I.1 Tổng quan về số nguyên tố:
1.1 Số nguyên tố
a, Số lượng số nguyên tố
Số nguyên tố là số nguyên dương chỉ chia hết cho 1 và chính nó
Ví dụ, 2, 3, 7 là ba số nguyên tố đầu tiên
Ba số nguyên tố lớn nhất được tìm ra cho đến nay là
STT Số nguyên tố Số chữ số Ngày tìm ra Người/Tổ
năm 2013
GIMPS / Curtis
Coope
Các số nguyên tố lớn đóng vai trò cốt yếu trong việc xây dựng các hệ mật mã hiện đại, như hệ mật RSA, ElGamal và hệ mật trên đường cong Eliptic Vì vậy, việc tìm ra các số nguyên tố lớn luôn giành được sự quan tâm đặc biệt của cộng đồng toán học và công nghệ thông tin
Câu hỏi đặt ra là số các số nguyên tố có đủ nhiều cho các ứng dụng của chúng
ta hay không? Hơn 2.000 năm trước Euclid đã chứng minh được tính vô hạn của các
số nguyên tố Cụ thể hơn, các nhà toán học sau đó đã tìm ra được phân bố của các số nguyên tố trong định lý sau:
Định lý 1.1 Định lý về số các số nguyên tố
Giả sử ( )x là số các số nguyên tố nhỏ hơn hoặc bằng x, khi đó ( )
ln
x x
x
theo nghĩa ( ) / ( / ln )x x x 1 khi x
Tôi không đưa ra chứng minh định lý này ở đây vì ra ngoài nội dung của luận văn, mà tôi đưa ra bảng sau để chứng tỏ số nguyên tố quả thực là đủ dùng cho các ứng dụng của chúng ta
Trang 9Một số nguyên dương n > 1 bất kỳ luôn có biểu diễn duy nhất dưới dạng:
b, Mười số nguyên tố lớn nhất thuộc lớp Mersenne:
rank prime Digits who when Reference
Trang 10Các số nguyên tố không thuộc lớp Mersenne
Số nguyên tố lớn nhất không thuộc dạng số Mersenne được phát hiện là số 19.249x213.018.586+1, gồm 3.918.990 chữa số Ngày được kiểm định là 26 tháng 3 năm
2007
c, Số nguyên tố dạng n!+1
Số nguyên tố lớn nhất dạng n!+1 là số 150.209!+1 gồm 712.355 chữ số, được chứng minh vào tháng 10 năm 2011 Mười số nguyên tố lớn nhất dạng n!+1
rank prime Digits Who When reference
Trang 11e, Cặp số nguyên tố sinh đôi n±1:
Cặp số nguyên tố sinh đôi lớn nhất là cặp 3756801695685x2666669±1, được tìm ra vào tháng 12 năm 2011 Mười số nguyên tố dạng sinh đôi lớn nhất:
g, Các số nguyên tố dạng Sophie German:
Số nguyên tố p được gọi là số nguyên tố dạng Sophie German nếu 2p+1 cũng là số nguyên tố Mười số nguyên tố dạng Sophie German lớn nhất là:
Trang 12Giả sử a Z và nn Phần tử nghịch đảo của số nguyên a theo modulo n là
số nguyên x thỏa mãn ax ≡ 1(modn) Nếu x là số nguyên dương nhỏ nhất thỏa mãn là phần tử nghịch đảo của a, ta ký hiệu x=a-1
Ngoài ra, ta nhận thấy a=a-1 nếu và chỉ nếu a=1 hoặc a=p-1, do đó tích của các
số a-1 với 2≤ a-1 ≤p-2 cũng chính là tích của các số a=2, 3, …, p-2 được săp theo 1 thứ
tự nào đó Bới vậy, sau khi hoán vị các phần tử một cách thích hợp, ta có :
Trang 13Định lý 1 6 Tổng quát hóa Định lý nhỏ Fermat
Nếu n thuộc N và m thuộc Z sao cho gcd(m, n) = 1, khi đó
mФ(n)≡1(modn)
1.3 Thuật toán kiểm định số nguyên tố Miller – Selfridge – Rabin (MSR)
Bài toán là kiểm định số n>1 lẻ xem có phải là số nguyên tố hay không
Chúng ta giả sử n-1=2tm, ở đây m là số nguyên lẻ thuộc N và t thuộc N
Số n được sử dụng trong các bước tính toán sau, trong đó ta sử dụng “thuật toán bình phương và nhân”
Bước 1: Chọn ngẫu nhiên số a thỏa 2≤a≤n-2
Bước 2 : Tính x0≡am(modn)
Nếu x0 1(mod )n
Khi đó ta kết thúc thuật toán và kết luận n có thể là số nguyên tố
Nếu x0 1(mod )n và t=1, ta cũng kết thúc thuật toán và kết luận n là hợp số
Nếu khác, ta đặt j=1 và đi đến bước (3)
Bước 3: Tính 2
(mod )
j
m j
x a n Nếu xj≡1(modn) thì ta kết thúc thuật toán và kết luận “n là hợp số”
Nếu xj≡ -1(modn), ta kết thúc thuật toán với kết luận “n có thể là số nguyên tố”
Nếu khác, đặt j=j+1 và đi đến bước (4)
Bước 4: Nếu j=t-1, khi đó đi tới bước (5) Nếu khác, quay lại bước (3)
Bước 5: Tính x t1a2t1m(mod )n
Nếu xt-1≠-1(modn), khi đó kết thúc thuật toán với kết luận “n là hợp số”
Nếu xt-1≡-1(modn), khi đó kết thúc thuật toán với kết luận “n có thể là số nguyên tố”
Trang 14theo cơ sở a Khi n là hợp số nhưng thuật toán lại tuyên bố n là số nguyên tố với xác suất sai nhiều nhất là 25%
1.4 Các tiêu chuẩn đường cong Elliptic
Trước hết, chúng ta giới thiệu một số kiến thức cơ sở
Định nghĩa 6.1 Đường cong Elliptic
Giả sử F là trường hữu hạn với các chỉ số đặc trưng không bằng 2 và 3 Nếu a
và b thuộc F được cho sao cho 4a3+27b2≠0 trong F, khi đó đường cong Elliptic E được cho trên F được xác định bởi phương trình y2=x3+ax+b thuộc F[x] Tập tất cả các nghiệm (x, y) thuộc F của phương trình y2=x3+ax+b cùng với 1 điểm O, được gọi là điểm vô hạn, được ký hiệu là E(F), được gọi là tập các điểm =-hữu tỷ trên E
Các tính chất của đường cong Elliptic
Chúng ta giả sử E(Q) là là đường cong elliptic trên Q được cho bởi y2=x3+ax+b,
ở đây a và b thuộc Z, và O được ký hiểu là điểm vô hạn
P+O=P, O+Q=Q với mọi P, Q
Nếu P=-Q, khi đó P+Q=O
Quy về theo modulo n :
GS n>1 đã được chọn và cố định với gcd(n, 6)=1 và gcd(4a3+27b2, n)=1 Khi đó ta nói rằng E được quy về modulo n nếu các hệ số a, b được quy về modulo n và mỗi điểm P trên E được quy về modulo n theo cách như sau:
Nếu P=(r1/r2; s1/s2) ở đây
gcd(r1;r2)=gcd(s1;s2)=gcd(r2s2;n)=1; khi đó
P=(t1, t2), ở đây
Trang 15Sau đây ta giới thiệu thuật toán phân tích nhân tử theo phương pháp đường cong Elliptic :
Giả sử n là hợp số, nguyên tố cùng nhau với 6 và không là lũy thừa của số nguyên tố nào
Chọn đường cong Elliptic
Chọn ngẫu nhiên cặp (E, P), ở đây E=E(Zn) là một đường cong Elliptic
Nếu pjP≠O (modn) khi đó đặt P= pjP và lặp lại với k bằng k+1
Nếu k≤apj, thì quay lại bước 3
Nếu k>apj thay j bởi j+1, và đặt k=1 Nếu j≤l, ta quay lại (3) Nếu khác, ta đi đến (5) Khi pjP=O(modn), ta tính gcd(m2, n) Nếu n>g, thuật toán hoàn thành Nếu g=n ta cũng đến (5)
Chọn cặp ( E, P) mới
Thay r=r-1 Nếu r>0 ta quay lại (1)
Nếu khác ta kết luận thuật toán thất bại
Ví dụ, giả sử n=923, và ta chọn (E, P)=(y2=x3+2x+9 ; (0,3))
Kiểm tra
gcd(4*23+27*92, 923)=1,
Trang 16Chọn B=4, A=3, M=6=2.3
Tính p1P=2(0, 3)=(718; 373);
Thay P ban đầu bởi (718; 373) và tính
p2P=3P=2P+P=(505; 124) + (718; 373)≡O(modn), do vậy n không phải là số nguyên
tố
Thực vậy , n=13.71
Nhận xét: Thời gian chạy của thuật toán phụ thuộc nhiều vào ước nguyên tố nhỏ nhất của n Thuật toán có hiệu quả nhất khi n có ước nguyên tố nhỏ Người ta đã chứng minh được rằng, nếu p là ước nguyên tố nhỏ nhất của n, khi đó thời gian chạy trung bình là:
2 (exp( (2 (1)) ln (ln ln ) ).ln )
1.5 Thuật toán AKS
Năm 2002, ba nhà khoa học là Manindra Agrawal, Neeraj Kayal và Nitin Saxena đã giới thiệu thuật toán AKS chạy trong thời gian đã thức để kiểm định xem một số tự nhiên lớn hơn 1 có phải là số nguyên tố hay không
Định lý 1.7 ([2] trang 30)
Nếu thuật toán kết luận n là số nguyên tố thì n thực sự là số nguyên tố
Thuật toán AKS
Input: n≥1;
STEP 1 If a b, 1and a b, such that n = ab, then Output COMPOSITE; STEP 2 Find the minimal r such that Or(n)>log2(n);
STEP 3 For a=1 to r do
If 1<(a, n)<n, then Output COMPOSITE;
STEP 4 If r≥n, then Output PRIME;
STEP 5 For a=1 to ( ) logr n do
If (xa)n x namod(x r1, )n then Output COMPOSITE STEP 6 Output PRIME
Ở đây, Or(n) là bậc của n theo modulo n, hàm log tính theo cơ số 2, và (r) làm phi – Euler của r
Trong thuật toán AKS ta đã sử dụng bổ đề sau:
Trang 17Bổ đề Giả sử a là 1 số nguyên, khi đó n là số nguyên tố nếu và chỉ nếu”
Xét số nguyên tố q là một nhân tử của n và qk là ước của n còn qk+1 thì không Khi đó,
qk không phải là ước của q
n
C và gcd(an-q, qk)=1, do đó hệ số của Xq không bằng 0 theo modulo n
Đây chính là điều phải chứng minh
Số nguyên tố lớn nhất được tìm ra bằng AKS cho đến nay là số
Thời gian chạy của thuật toán ([2] trang 35)
Thuật toán chạy trong thời gian đa thức, cụ thể như sau
STEP 1 Chạy nhiều nhất O(log3n) phép toán;
STEP 2 Cần O(log7n) phép toán;
I.2 Các phương pháp phân tích nhân tử số nguyên
2.1 Các phương pháp phân tích nhân tử cổ điển ([1], trang 207-209)
a) Bài toán phân tích nhân tử số nguyên
Bài toán
Cho n thuộc N, hãy tìm các số pj với j=1, 2, …, r thuộc N với p1<p2< …<pr và các
ej, với j thuộc N, với j=1, 2, …,r thuộc N sao cho :
1
j
r e j j
Phương pháp thử chia:
Đây là phương pháp lâu đời nhất để phân tích 1 số nguyên, để tiến hành ta chia n với
tất cả các số nguyên tố nhỏ hơn hoặc bằng n
Phương pháp phân tích nhân tử Ferma
Chỉ được ứng dụng với các số nguyên dạng
n= x2+ay2=z2+aw2,
Trang 18ở đây x≠z và y≠w
Nghĩa là n có thể biểu diễn bằng 2 cách với điều kiện a≠0 và a thuộc Z
Khi đó n có 1 nhân tử không tầm thường là gcd( w x yz n , )
b) Phương pháp phân tích Legendre
Phương pháp này còn được gọi là phương pháp phân số liên tục
Và ta có nhân tử không tầm thường của n là x w pzy (mod ) n
c) Phương pháp phân tích nhân tử lũy thừa phổ dụng
Giả sử e là lũy thừa phổ dụng của n thuộc N và e=2bm, ở đây b≥0 và m lẻ Khi đó ta thực hiện các bước sau :
(1) Chọn ngẫu nhiên 1 số a thỏa 1<a<n-1
Nếu gcd(a, n)>1, khi đó ta có 1 nhân tử của n và có thể kết thúc thuật toán
Nếu khác, ta đi đến bước 2
(2) Tính x0≡am(modn) Nếu x0≡1(modn), ta quay lại bước 1 Nếu khác, tính
2
x x n với mọi j=1, 2, …, b
Nếu xj≡-1(modn), ta quay lại bước (1)
Nếu xj≡1(modn), nhưng xj-1 không đồng dư với +-1(modn), khi đó gcd(xj-1-1,n) là 1 nhân tử không tầm thường của n
Ví dụ, Cho n= 15841, e=25.405 GS chọn a=2, khi đó 2405≡1(modn) Bởi vậy ta quay lại bước 1
2.2 Phương pháp phân số liên tục ([1], trang 211-213):
Giả sử chúng ta cần phân tích n thuộc N và cận trơn B đã được chọn Khi đó chúng ta thực hiện các bước sau:
(1) Chọn một nhân tử cơ sở từ tập các số nguyên tố
A={p1; p2; …; pk}
Trang 19Với k thuộc n nào đó được xđ bởi B và chỉ số J
Từ các kiến thức hiện nay, chúng ta biết k tối ưu là
exp( log( ) log log( ))
(2) Tập Q0=1; P0=0; A-2=0; A-1=1; A0= n =P1
Với mỗi số tự nhiên j≤J, ta dùng công thức đệ quy sau:
2 1
j j j j
j i i
(3) Với mỗi tập S các chỉ số của j, với các véc tơ vj xây dựng được ở bước (2),
Do n 77 , khi đó chúng ta tính bảng sau:
Trang 202.3 Thuật toán Pollard ([1], trang 214-215)
Năm 1974, Pollard công bố sơ đồ phân tích nhân tử Ông ta suy luận rằng, nếu (p-1)|n,
ở đây p là số nguyên tố thì p|(tn-1) khi p không phải là ước của t (theo định lý nhỏ Fermat)
Thuật toán Pollard p-1:
Gỉa sử ta mong muốn phân tích n , và cận trơn B đã được chọn Khi đó ta thực hiện các bước sau:
(1) Chọn số cơ sở a , ở đây 2≤a<n và tính g=gcd(a, n) Nếu g>1, khi đó ta có
nhân tử của n Nếu khác, ta đi đến bước (2)
Trang 21(2) Với tất cả số nguyên tố p≤B, tính ln( )
ln( )
n m p
(3) Tính g=gcd(a-1, n) Nếu g>1, khi đó chúng ta có nhân tử của n, và thuật toán
thành công Nếu khác, thuật toán thất bại
Phân tích thuật toán Đặt
1
j
t j j
al≡1(modp), theo định lý nhỏ Fermat
Bởi vậy, nếu g=gcd(al-1, n), khi đó p|g Nếu g=n thì thuật toán thất bại Nếu ngược lại thuật toán thành công
Ví dụ Lấy n=44717, và chọn B- trơn là 13, và lấy a=2
Chúng ta biết a là nguyên tố cùng nhau với n theo kết quả ở bước (1) Bảng sau cho kết cục ở bước (2):
Ta đi đến bước (3), và kiểm tra gcd(a-1, n)=gcd(4171, 44717)=97
Từ đây ta có phân tích n=97.461 Nhận thấy rằng, p=97 là B-trơn do 1=25.3, nhưng q=461 không phải là B-trơn do q-1=22.5.23
p-Pollard’s đã phát triển phương pháp khác để phân tích vào năm 1975, được gọi là Phương pháp phân tích Monte Carlo cũng được gọi là Phương pháp Pollard rho
Cho n thuộc N là 1 hợp số, và p là một ước nguyên tố của n (nhưng ta không biết), ta tiến hành các bước sau:
(1) Chọn một đa thức f với deg(f)≥2 – thường lấy f(x)=x2+1 cho đơn
Trang 22(3) Sàng qua tất cả các hiệu xi-xjmodulon cho đến khi xác định được
xB≠xj(modn), Nhưng xB≡xj(modn) với số tự nhiên B>j>1 Khi đó, gcd(xB-xj, n)
là ước số không tầm thường của n
(2) Với mỗi số nguyên không âm j, đặt t=±j Tính y t ( nt)2n
Cho đến khi tìm được k+2 giá trị là pk-trơn Với mỗi t,
Chúng ta tính với tất cả các p mà n không phải là thặng dư bậc 2 theo modulop
Trang 23Ví dụ, Lấy n=60377 Từ phương trình xác định k tối ưu ta có
exp( log( ) log log( ))
Trang 242.5 Phương pháp đường cong Elliptic ([1], trang 220-221)
Trước hết, chúng ta giới thiệu một số kiến thức cơ sở
Định nghĩa 6.1 Đường cong Elliptic
Giả sử F là trường hữu hạn với các chỉ số đặc trưng không bằng 2 và 3 Nếu a
và b thuộc F được cho sao cho 4a3+27b2≠0 trong F, khi đó đường cong Elliptic E được cho trên F được xác định bởi phương trình y2=x3+ax+b thuộc F[x] Tập tất cả các nghiệm (x, y) thuộc F của phương trình y2=x3+ax+b cùng với 1 điểm O, được gọi là điểm vô hạn, được ký hiệu là E(F), được gọi là tập các điểm =-hữu tỷ trên E
Các tính chất của đường cong Elliptic
Chúng ta giả sử E(Q) là là đường cong elliptic trên Q được cho bởi y2=x3+ax+b, ở đây
a và b thuộc Z, và O được ký hiểu là điểm vô hạn
(1) Tính chất cộng:
Với 2 điểm P(x1, y1) , Q(x2, y2) bất kỳ trên E, với P, Q khác O và P≠-Q,
ta xác định:
P+Q=(x3, y3) Với x3=m2-x1-x2
Nếu P=-Q, khi đó P+Q=O
(2) Quy về theo modulo n :
GS n>1 đã được chọn và cố định với gcd(n, 6)=1 và gcd(4a3+27b2, n)=1 Khi đó ta nói rằng E được quy về modulo n nếu các hệ số a, b được quy
về modulo n và mỗi điểm P trên E được quy về modulo n theo cách như sau:
Nếu P=(r1/r2; s1/s2) ở đây
Trang 25gcd(r1;r2)=gcd(s1;s2)=gcd(r2s2;n)=1; khi đó P=(t1, t2), ở đây
t1=r1(r2)-1(modn),
t2=s1(s2)-1(modn) (3) Luật nhóm modulo
GS rằng P1 và P2 là các điểm trên E(Q) với P1+P2≠O và có mẫu số nguyên tố cùng nhau với n Trong đó, P1+P2 được gọi là có mẫu số nguyên tố cùng nhau với n nếu và chỉ nếu không tồn tại số nguyên tố p|n sao cho P1+P2 = O trên đường cong elliptic E(Zp)
Sau đây ta giới thiệu thuật toán phân tích nhân tử theo phương pháp đường cong Elliptic :
GS n là hợp số, nguyên tố cùng nhau với 6 và không là lũy thừa của số nguyên tố nào
(1) Chọn đường cong Elliptic
Chọn ngẫu nhiên cặp (E, P), ở đây E=E(Zn) là một đường cong Elliptic
1
p j
l a j j
M p
và lũy thừa của các số nguyên tố trong
khai triển của M nhỏ hơn hoặc bằng phần nguyên dưới của ln(A)/ln(pj):
(a) Nếu pjP≠O (modn) khi đó đặt P= pjP và lặp lại với k bằng k+1
(i) Nếu k≤apj, thì quay lại bước 3
(ii) Nếu k>apj thay j bởi j+1, và đặt k=1 Nếu j≤l, ta quay lại (3) Nếu
khác, ta đi đến (5)
(b) Khi pjP=O(modn), ta tính gcd(m2, n) Nếu n>g, thuật toán hoàn thành Nếu g=n
ta cũng đến (5)
(5) Chọn cặp mới
Trang 26Thay r=r-1 Nếu r>0 ta quay lại (1) Nếu khác ta kết luận thuật toán thất bại
I.3 Logarit rời rạc
3.1 Các khái niệm cơ sở
Bài toán logarithm rời rạc:
Giả sử G là một nhóm cyclic có phần tử sinh là g, cho h là một phần tử của G, hãy tìm logarithm cơ số g của h trong G: loggh(mod|G|)
Nghĩa là ta phải tìm phần tử x trong G thỏa mãn h≡gx(mod|G|)
Bài toán logarithm rời rạc có vai trò rất lớn trong ứng dụng của mật mã Đặc biệt quan trọng trong trường hợp G F (q)*, với q p l, p là số nguyên tố, l N, tức là trong trường Galois, cũng như trong trường hợp G là một nhóm điểm của đường cong Elliptic trong trường hữu hạn
Ví dụ, G=Z5*, và phần tử sinh là 2, khi đó logarithm rời rạc của 1 là 4 bởi vì
24 ≡ 1 mod 5
3.2 Thuật toán bước Baby và bước Giant của Shank
Cho p là một số nguyên tố, thuật toán bước Baby bước Giant của Shank là một thuật toán tính logarithm rời rạc của số nguyên h thuộc *
p
Z với cơ số g và theo modulo
p Thuật toán này nhanh hơn thuật toán vét cạn với số phép toán trung bình là ( log )
h(g-m)q=gr(modp)
Với phân tích như vậy, chúng ta có chiến lược như sau,
Trang 27- Tính tất cả các lũy thừa của g theo modulo p: g0, g1, …, gm-1(modp),
- Trước hết, tính g-m(modp), tiếp theo, ta tính h(g-m)q(modp) với q=0, 1, 2, … cho đến khi xuất hiện q thỏa mãn h(g-m)q≡qr(modp) với 0 r m nào đó
Khi đó, logarithm rời rạc của h trong *
Các bước thực hiện như sau:
Vậy logarithm rời rạc của h=6 là 25
3.3 Thuật toán Pollig – Hellman ([3], trang 241-243):
Giả sử rằng
1
i
k c i i
Trang 28n q
(I.3.1) Dùng hệ thức (I 3 1) ta có thể dễ dàng tính được a0 bằng cách như sau :
/
, Với i≤q-1 nào đó Khi điều này xảy ra, chúng ta biết ngay a0=i
Như vậy, với c=1 ta đã làm xong Bây giờ ta xét với c>1, chúng ta tiến hành xác định
a1, a2, …, ac-1 Quá trình này tương tự như khi xác định a0 Đặt 0= và xác định
n q j
(I 3 2) Khi j=0 thì từ (I 3 2) trở thành (I 3 1)
Khi đã biết j, ta dễ dàng tính aj từ hệ thức (I 3 2)
Bằng công thức truy hồi khi biết aj và j ta có thể tính j+1 :
1
j j
a q
(I 3 3)
Do đó ta có thể tính a0, 1, , a1 2, , c1, ac1 bằng cách áp dụng (I.3.1) và (I.3.2)
Sau đây là trình bày dưới dạng giả mã của thuật toán Pohlig – Hellman
Thuật toán Pohlig – Hellman(G, n, , , q, c)
Trang 29n q j
in q j
Xác định x 2
hoặc 1 Chúng ta xác định các hệ số này như sau
Trang 31CHƯƠNG 2: NGHIÊN CỨU SỰ AN TOÀN CỦA MỘT SỐ HỆ MẬT MÃ HIỆN ĐẠI Các hệ mật RSA, Elgamal và hệ mật trên đường cong Elliptic hiện đang là ba
hệ mật hiện đại được sử dụng rộng rãi trong thực tế Trên thế giới, đã có nhiều công trình nghiên cứu về sự an toàn của ba hệ mật này Trong đó phải kể đến các công trình nghiên cứu về thám mã từ đó đưa ra các giải pháp nhằm nâng cao việc bảo mật khi sử dụng các hệ mật trên
Đối với RSA, sự an toàn của nó phụ thuộc vào độ khó của bài toán phân tích n thành thừa số nguyên tố p, q Hiện nay có nhiều thuật toán để giải bài toán này Trong
đó chạy nhanh nhất phải kế đến thuật toán sàng trường số của Pollard Như vậy phải luôn cải tiến song song với việc đánh giá sự an toàn của RSA để đảm bảo an toàn cho việc sử dụng dữ liệu của mình
Đối với mật mã Elgamal và mật mã trên đường cong Elliptic, tuy còn non trẻ so với RSA nhưng đang ngày càng có nhiều ứng dụng thực tiễn vì kích thước khóa nhỏ hơn rất nhiều so với RSA khi có cùng mức độ an toàn Sự an toàn của hai hệ mật mã này phụ thuộc vào bài toán logarit rời rạc Bài toán Logarit rời rạc hiện là đối tượng trong nhiều công trình nghiên cứu và được xem là bài toán khó nếu p được chọn cẩn thận Hiện nay không có thuật toán thời gian đa thức nào để giải bài toán logarit rời rạcViệc lựa chọn các tham số phù hợp sao cho bài toán logarit rời rạc trở nên khó giải
đã đảm bảo an toàn cho các hệ mật mã này
Ở Việt Nam các hệ mật mã RSA, Elgamal và mật mã trên đường cong Elliptic
đã được sử dụng trong nhiều ứng dụng bảo mật trên máy tính Tuy nhiên chưa có nhiều công trình nghiên cứu được công bố về sự an toàn của ba hệ mật mã này Do vậy đánh giá sự an toàn của ba hệ mật này là vấn đề cần thiết Việc nghiên cứu các vấn đề liên quan đến sự an toàn của các hệ mật trên có bài báo: “Sai phạm trong sử dụng mật
mã khóa công khai” đăng trên tạp chí an toàn thông tin 4/2012 Trong Bài báo này giới thiệu những số liệu khảo sát liên quan tới các modulus RSA là yếu tố ảnh hưởng nhiều tới tính an toàn của các khóa công khai
II.1 Mật mã RSA
2.1 Các cuộc tấn công vào RSA
Nếu các cuộc tấn công được biết tới trước đây tập trung chủ yếu vào việc khai thác những sơ hở do việc sử dụng RSA không đúng cách, tức là không nhằm mục đích phá vỡ cấu trúc của RSA mà chủ yếu đi phân tích các sơ hở có thể tạo ra lỗi, từ đó tấn công vào nó Khoảng 4 năm trở lại đây, giới công nghệ đã được chứng kiến những kết quả vĩ đại trong việc phá mã RSA Đó là kết quả của việc phá vỡ RSA với độ dài khóa
768 bit và mới đây nhất là 1024 bit Những kết quả vĩ đại đó cũng cho thấy một điều
Trang 32rằng, để đảm bảo an toàn cho dữ liệu thì việc chọn khóa có độ dài đủ lớn là vô cùng quan trọng
2.1.1 Factoring RSA-768([13], trang 6-19)
Vào 02/2010, các nhà khoa học Thorsten Kleinjung cùng các cộng sự là: Kazumaro Aoki , Jens Franke, Arjen K Lenstra, Emmanuel Thomé, Joppe W Bos, Pierrick Gaudry, Alexander Kruppa, Peter L Montgomery, Dag Arne Osvik, Herman
te Riele, Andrey Timofeev, Và Paul Zimmermann đã công bố phương pháp phá vỡ được RSA- 768-bit, tương đương 232 chữ số thập phân bằng phương pháp sàng trường số- Number field sieve (NFS)
Đây là kết quả kỷ lục đối với phân tích nhân tử số nguyên nói chung Tại thời điểm đó người ta tin rằng việc phá vỡ RSA-1024 bits khó hơn việc phá RSA-768 bits
1000 lần và phá RSA-768 bits khó hơn 1000 lần so với RSA-512 bits được phá vỡ từ thập kỷ trước
Để thực hiện phá vỡ được modulos này, các nhà khoa học đã tốn khoảng nửa năm và chạy trên 80 bộ vi xử lý khác nhau để thực hiện việc chọn đa thức Việc sàng
là bước quan trọng nhất và thực hiện trên hàng trăm chiếc máy tính và mất gần hai năm
Nếu việc này làm trên một bộ vi xử lý 2,2 GHz AMD Opteron có 1 lõi với 2
GB RAM thì sẽ mất 1.500 năm Chuẩn bị dữ liệu sàng cho bước ma trận mất một vài
tuần trên một vài bộ vi xử lý
Ở đây sử dụng số N lấy từ danh sách thách đố của RSA Laboratories được treo giải 50.000 USD
2.1.1.1 Lý thuyết liên quan đến cuộc tấn công
Phương pháp đồng dư bình phương
Số nguyên n có thể phân tích thành tích của hai số x, y bằng cách tính x 2 y 2 mod n, và mong muốn n có thể phân tích thành gcd(x- y, n) gcd(x+ y, n)
Phương pháp tiếp cận Morrison-Brillhart:
Sử dụng kết hợp với đồng dư bình phương để giải phương trình x 2 y 2 mod n
Khái niệm mịn:
Ta gọi một số nguyên là ‘mịn’ nếu như nó phân tích được thành tích của các số nguyên tố nhỏ
2.1.2.2 Các bước của thuật toán
a/ Lựa chọn đa thức:
Cho n là số nguyên Trong NFS, mối quan hệ được xác định bởi cặp nguyên tố
của số nguyên (a, b) với b> 0 sao cho hai giá trị v 1 (a,b) và v 2 (a, b) phụ thuộc vào số a,
b mịn v 1 (a,b) với ràng buộc b 1 và v 2 (a,b) với ràng buộc b 2
Trang 33Giá trị v 1 (a,b), v 2 (a,b) định nghĩa như sau:
Cho f 1 (X) , f 2 (X) Z[X] là hai đa thức rút gọn của d 1 và d 2 Sao cho
f 1 (m) f 2 (m) … 0 mod n
Cho Q( k ) = Q[X]/ (f k (X)) với k = 1, 2 là hai trường đại số Phần tử a- b k
thuộc Z[ k ] có dạng vk(a, b) và Q( k)
Mục đích chính trong Q( k ) là ánh xạ đến cặp (p, r mod p) với p là số nguyên tố
và f k (r) 0 mod p Loại trừ các phân tích của f k có dạng p được tạo bởi p và r- k
Bởi vì f k (m) 0 mod n nên Z[ k] Z/nZ với k= 1, 2
Từ i (với a i Z) nên i mod n và 1 (a- b 1 ) 2 (a- b 2 ) mod n
Tìm hai vecto v 1 (a, b) và v 2 (a, b) sao cho b 1 -mịn, b 2 -mịn
Một tập con s được xây dựng sao cho là σk trong Q( k)
với k = 1 và k= 2
Với 1 (σ 1 ) 2 (σ 2 ) mod n sau đó tính τ k = Q( k ) với k = 1,2 để tìm giá trị x=
1 (τ 1 ) và y = 2 (τ 2 ) với x 2 y 2 mod n
Từ đó có thể dễ dàng tìm được đa thức f 1 , f 2
Cho n Với d 1 N có bậc ( )1/3 và d 2 = 1, cho m là số nguyên nhỏ hơn
và Cho n= m i với 0 n i < m là cơ số m của n
b/ Sàng
Sàng bằng vector:
Cho v k (a, b) = b d k f k (a/b) Thực hiện lại ý tưởng của phương pháp sàng bằng
thuật toán của Pollard làm tăng trọng số của v 1 (a, b) bởi cặp (a,b) với a, b chia hết cho q(q là số nguyên tố lớn) cho s mod q sao cho a sb mod q, xây dựng một cơ sở giảm (u,v) của ma trận sao cho (a,b) Z 2 thì a sb mod q Vấn đề là ta phải tìm tất cả các cặp (I, j) mà - I/2 i< I/2, 0 < j < J với các phép chia phổ biến như v 1 (a, b)/q và
v 2 (a, b) là mịn Với (a, b)= iu+ jv
Sử dụng phương pháp Pollard, với mỗi cặp (prime, root) với p có cận bk mịn
Trang 34cơ sở giảm của mạng Γp các cặp (i, j) mà vk(a, b) cho tương ứng cặp(a, b) là chia hết
cho p Sử dụng cho p lớn để xác định một cơ sở B = (α, β), (γ, δ) của Γp với những
thuộc tính sau đây
β và δ là không âm
-I <α ≤ 0 ≤ γ <I và γ - α ≥ I
Giả sử rằng Γp bao gồm tất cả cặp (i, j) mà i ≡ ρj mod p, trong đó 0 <ρ <p trường hợp ρ = 0 và trường hợp Γp bao gồm tất cả (i, j) mà p không chia hết cho j, bởi
vì (0, 1) và (1, 0), tương ứng, là các cặp nguyên tố cùng nhau
Với p> I, ta có : (i 0 , j 0 )= (-p, 0), (i 1 , j 1 ) = (ρ, 1) và cho (i l+1 , j l+1 )= (i l-1 , j l-1 )+ r(i l , j l ) với r= với r không âm và j l tăng Quá trình này được dừng lại trước l với | i l | <I
Nếu l là số lẻ, đặt (α, β) = (i l+1 , j l+1 )= (i l-1 , j l-1 )+ r(i l , j l ) r là số nguyên nhỏ nhất trong
đó α> -I Đặt (γ, δ)= (i l+1 , j l+1 )= (i l-1 , j l-1 )+ r(i l , j l ) r là số nguyên nhỏ nhất trong đó γ < I
Trong cả hai trường hợp, các phần tử của B = (α, β), (γ, δ) chưa được mô tả là cho bởi
(i 1 , j 1 )
Để giải thích làm thế nào để sử dụng sàng hiệu quả với các đặc tính này cho (i,
j) ∈ Γp sao cho -I / 2 ≤ i <I / 2 tìm (i l , j l ) ∈ Γp Sao cho -I / 2 ≤ i l <I / 2, j l > J, và j l là
rất nhỏ Khi B là một cơ sở của Γp, Có số nguyên d và e với (i l , c)− (i, j ) = d(α, β) + e(γ, δ)
Nếu d, e #0, sau đó điều kiện b trên B sẽ kéo theo các thành phần đầu tiên của phía bên
tay phải có giá trị tuyệt đối ≥ I
Với j l - j, β, và δ là không âm, chúng ta có d ≥ 0 và e ≥ 0 Do vậy
(d, e)=
Với RSA- 768 bits sử dụng I= 2 16 và J= 2 15 điều đó có nghĩa rằng đã sàng trên
một khu vực có kích thước khoảng 2 31 2 10 9 Với b 1 = 11 10 8 Việc sàng là bước quan trọng nhất và thực hiện trên hàng trăm chiếc máy tính và mất gần hai năm Nếu việc này làm trên một bộ vi xử lý 2,2 GHz AMD Opteron có 1 lõi với 2 GB RAM thì
Trang 35Sử dụng một ma trận vuông để biểu diễn các quan hệ tìm được sau bước sàng Cụ thể, cho một ma trận M kích thước d d định nghĩa trên F2 và b sao cho Mx = b Các đa thức tối giản F của M trên không gian vector mở rộng ra bởi b, Mb, M2b có cận trên d, do đó F(M)b= iMib = 0
Từ F 0 = 1 có x= i M i-1 b , vì vậy có thể tìm F i ’s Biểu diễn m i,j bởi dòng j của vecto M i b Sau đó từ phương trình trên với các giá trị của j 1 j d thỏa mãn
là một quan hệ tuyến tính của d định nghĩa bởi F i Cho t bất kỳ t 0 và 1 j
d ta có
Sử dụng thuật toán khối Weidemann cho bước xử lý ma trận :
Mô tả việc sử dụng thuật toán khối cho bước xử lý ma trận như sau :
Cho M là một ma trận kích thước d d trên F2, với các điều kiện: m n, x k , 1
Mục tiêu của Thuật toán Berlekamp-Massey là tìm đa thức của ma trận F Mat n,m [X]
và G Mat n,m [X] thỏa mãn deg(F) + O(1),deg (G) + O(1) và FA G (mod
(M b x h ) = 0 với 1 h m, 0 b < + O(1) với v j = M i y k
Thuật toán của Coppersmith tạo ra một chuỗi các ma trận (m+ n) hàng F t
F t A G t (mod X t ) Cấp của F t và G t là t Trong bước t 0 và cần chọn để thỏa
mãn điều kiện như vậy Cụ thể deg( )= O(1) và deg( )= O(1)
Để đi từ t đến t + 1 một đa thức bậc 1 của ma trận P t Mat m+n,m+n [X] được sinh ra
Trang 36Đặt F t+1 = P t F t và G t+1 = P t G t Việc sinh ra này được thực hiện như sau:
Chúng ta có F t A G t + E t X t (mod X t+1 ) cho các ma trận E t Thực hiện phép khử
Gaussian trên E t ta được t sao cho t E t = sau đó đặt
p t t
Bằng cách này, mức độ nhiều nhất là hàng m được tăng lên khi chuyển từ G t
đến G t + 1 (do những hạn chế nêu trên t không làm tăng cấp), vì vậy tổng số hàng 0
trong các hệ số được tăng lên bởi n Do hạn chế đề cập ở trên cấp của các hàng của F t
và G t phát triển gần như thống nhất, tức là, chúng tăng trung bình khi đi từ t đến t + 1
Sau bước t= + + O(1) thì tổng số các hàng 0 của G t là d+ O(1) Như
vậy có thể chọn m hàng sinh ra ít nhất d hàng 0 Đó là m hàng của F và G
Bây giờ chúng ta xem xét độ dài chuỗi không cân bằng Gọi l j là độ dài của chuỗi j
nghĩa là có thể tính được với tất cả các giá trị của k và 0 I l j
Không mất tính tổng quát chúng ta có thể giả định : l 1 l 2 … l n = l Tổng
số chiều dài của chuỗi d (1+ )+ O(1) Hơn nữa chúng ta có thể giả định rằng
l 1 Mục tiêu cần đạt là FA G (mod ) với d F = def(F) l- , def(G) l-
và |F.,k (Ký hiệu này là biểu thị cột thứ k của F) Các điều kiện sau sẽ bù vào
các hàng thiếu của A
Thật vậy, thiết lập d F = l - , vecto v j = M i y k thỏa mãn 1
h m, 0 b
Nếu i+b > l k ta có d F – i< d F + b - l k l- l k , như vậy = 0 và tính tổng
Ở bước thứ t ta có F t A G t + E t X t (mod X t+1 ) Cho a n là ma trận thỏa mãn
) mt (a sẽ tăng lên trong thời gian tính toán)
Trong thuật toán Gausian việc loại bỏ của E t không sử dụng n- a dòng đầu tiên
Như một hệ quả, t sẽ có dạng
Trang 37t =
Do đó tổng bậc của F t sẽ tăng m+ n- a và số hàng 0 trong G t sẽ tăng bởi a khi
thay đổi từ t đến t+ 1 Với một số cố định a, bước sẽ tăng bậc của
dòng m+ a từ l- đến l- Ở đây điểm a sẽ tăng lên
Để hiểu tại sao | F.,k ta mô tả việc chọn của và t0 Cho c là số lượng
tối đa l j tức là l n-c < l n-c+1 = l n khi đó sẽ có dạng :
=
Hàng m cuối cùng sẽ được chọn, điều này sẽ dẫn đến một giá trị của t0 gần thay vì giá trị thấp hơn gần trong thuật toán ban đầu
Cho k sao cho l k < l và xem xét các cột thứ k của F t Khi n- a k cột này sẽ chỉ
có điểm 0 ở hàng k trong X t Với n- a k sao cho t l- cột này sẽ chia hết cho
với mọi t l-
Đối với RSA-768 các nhà khoa học đã sử dụng thuật toán với các bước mô tả như trên, Tuy nhiên, một biến thể của thuật toán có thể có ích trong những tình huống nhất định.(ví dụ nếu một trong những chuỗi dài hơn nhiều so với những chuỗi khác) Sau đây là mô tả ngắn gọn biến thể đó Giả sử rằng < khi đó t <
Phần chính của việc tính toán đã được thực hiện song song tại hai địa điểm trên
4 cụm máy tính Sử dụng thuật toán khối Weidemann cho bước xử lý ma trận nên tiếp theo sẽ thực hiện 2 dãy liên tiếp nhau của các phép nhân ma trận với vecto
Trang 38F(x, y) = 173x2 – 70xy- 63y2 , G(x, y) = x – 172y
f(x)= F(x, 1) và g(x) = G(x, 1) có root chung là = 172 mod n
Ở đây sử dụng đa thức tuyến tính g(x) f(x) được gọi là phần phụ đại số với d là bậc của f(x) g(x) được gọi là phần phụ tuyến tính
Bước 2 : Sàng
F(x, y) = 173x2 – 70xy- 63y2 , G(x, y) = x – 172y
Phải tìm F(a, b) và G(a, b) là mịn để a, b nguyên tố cùng nhau
Xây dựng ma trận vecto chứa mỗi quan hệ, sử dụng thuật toán khối Wiedemann Ma
trận vecto Mx với M là ma trận ban đầu, trong ví dụ với số nhỏ này chỉ cần nhân với 8
quan hệ :
= (-1)2.26.310.520.72.232.374.434 = (-1)8.28.72.118.132.172.192.312.372.412.472Phần phụ tuyến tính : phép tính nhân chung a- b với mỗi a, b là phụ thuộc, là root của f(x) và g(x) mod n
– b = u2 với u = 15218777599577552 Phần phụ đại số : Thực hiện phép tính a- xb mod f(x) :
Trang 39g(x)= 34661003550492501851445829X−129118745658002122316354779157481081 Bước 2: sàng:
Cặp (a, b) sao cho F(a, b) = 0 mod q giảm đến a/b = ρ mod q
Mạng tinh thể cho bởi (q, 0) và (ρ, 1)
= u + v
Sẽ giảm xuống thành mạng nghiêng( với s là độ nghiêng)
Ví dụ với s= 44205, tìm mạng tinh thể giảm:
Do đó mạng của cặp (a, b)sao cho q chia hết cho F(a, b) là:
Cần gcd(a, b)= 1 vậy làm sao để nó liên quan đến gcd(i,j)?
gcd(a, b) chia hết cho q
gcd(i, j) : gcd(i, j) = 1 => gcd(a, b) = 1 hoặc q
Viết lại F(a, b)/ q là F’(i, j):
F’(i, j) = 15161303256584676004767144614478527114997725475 i6
- 851354685226959013191256908958430909537139447150 i5j
- 1160865422044679275000842279069374339393281708219 i4j2
Trang 40+ 31401533065035430877729182304741709354795306270110 i3j3+ 23170460860723950600905984337555229255316340470000 i2j4
- 50317384600166516120833406579130302039250187402616 ij5
- 7807280760059800102689268443930905909245906201960 j6Tiếp theo cần sàng các giá trị(ở đây 0 < , j< I/2)
Với RSA- 768 ta dùng I= 216 tức là cần sàng 231 điểm trên (q, ) cặp
Cần sàng khoảng 480M cặp (q, ) tức là khoảng 1018 cặp (a, b) (trong đó có khoảng 60% các số là nguyên tố cùng nhau)
Với mỗi cặp (q, ) cố định, cần tìm (i, j) nguyên tố cùng nhau sao cho F’(i, j) là mịn Với mỗi số nguyên tố p, vị trí –I/2< i< I/2, 0< j< I/2 là chia hết cho p
- Với p nhỏ: sử dụng sàng trường số: p chia hết cho I = i0(j) + p
- Với p là số nguyên tố lớn(p ) có 0 hoặc 1 giá trị trên mỗi dòng
Ví dụ với p = 46625959 711I
F có hai root modun p là: 41898922 và 38600568
Giả sử root R = 41898922
Cần chuyển nó thành (i, j): r = với r = 25345641
Từ (p, r)= (46625959, 25345641) ta tìm ( ) sử dụng luật 1 của bổ đề sau:
Bổ đề 2.1:
Nếu p I chia hết tại các vị trí (i, j), các vị trí tiếp theo được cho bởi: