Hệ mật mã khoá công khai RSA được sử dụng phổ biến trong lĩnh vực đảm bảo tính riêng tư và cung cấp cơ chế xác thực của dữ liệu số. Ngày nay RSA được phát triển và ứng dụng rộng rãi trong thương mại điện tử, được sử dụng trong việc tạo khoá và xác thực của mail, trong truy cập từ xa, và đặc biệt nó là hạt nhân của hệ thống thanh toán điện tử. RSA được ứng dụng rộng rãi trong các lĩnh vực nơi mà an ninh an toàn thông tin được đòi hỏi. Chính vì lý do được sử dụng rộng rãi trong thương mại điện tử cũng như có độ an toàn cao mà đã có rất nhiều sự nhòm ngó cũng như các cuộc tấn công nhằm phá vỡ sự an toàn của hệ mật RSA. Ngay từ khi được công bố lần đầu, hệ RSA đã được phân tích hệ số an toàn bởi nhiều nhà nghiên cứu. Mặc dù trải qua nhiều năm nghiên cứu và đã có một số cuộc tấn công ấn tượng nhưng không mang lại kết quả là phá huỷ. Đa phần họ mới chỉ ra được những mối nguy hiểm tiềm ẩn của RSA. Để phục vụ cho việc phân tích các tính chật của hệ mật RSA, em đã trình bày các khái niệm cơ bản liên quan đến toán học, mật mã và thám mã, trình bày tổng quan về hệ mã hoá khoá công khai, các bài toán liên quan đến hệ mã hoá khoá công khai
Trang 1BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
ĐỀ TÀINGHIÊN CỨU CÁC TẤN CÔNG LÊN HỆ MẬT RSA
Học viên thực hiện:
Khóa: 09Chuyên ngành: An toàn thông tinNgười hướng dẫn: ThS Đinh Tiến Thành
Hà Nội, 2017
Trang 2em trong suốt thời gian học tập và thực hiện đề tài.
Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc đến thầy hướng dẫn ThS ĐinhTiến Thành, người đã tận tình hướng dẫn, giúp đỡ em trong suốt quá trình thựchiện đề tài
Xin trân trọng gửi đến gia đình, bạn bè và người thân những tình cảm tốtđẹp nhất đã giúp đỡ động viên em trong suốt quá trình học tập cũng như thựchiện và hoàn thành luận văn
Hà Nội, ngày tháng năm 2017
Học viên thực hiện
Trang 3LỜI CAM ĐOAN
Em xin cam đoan bản đồ án này do em tự nghiên cứu dưới sự hướng dẫncủa thầy giáo ThS Đinh Tiến Thành
Để hoàn thành đồ án này, em chỉ sử dụng những tài liệu đã ghi trong mụctài liệu tham khảo, ngoài ra không sử dụng bất cứ tài liệu nào khác mà khôngđược ghi
Nếu sai, em xin chịu mọi hình thức kỷ luật theo quy định của Học viện
Hà Nội, ngày tháng năm 2017
Học viên thực hiện
Trang 4MỤC LỤC
LỜI CẢM ƠN………
……… i
LỜI CAM ĐOAN……… ………ii
MỤC LỤC……….……… iii
.…….48
TÀI LIỆU THAM KHẢO……… 49
Trang 5MỞ ĐẦU
Hệ mật mã khoá công khai RSA được sử dụng phổ biến trong lĩnh vực đảm bảo tính riêng tư và cung cấp cơ chế xác thực của dữ liệu số Ngày nay RSA được phát triển và ứng dụng rộng rãi trong thương mại điện tử, được sử dụng trong việc tạo khoá
và xác thực của mail, trong truy cập từ xa, và đặc biệt nó là hạt nhân của hệ thống thanh toán điện tử RSA được ứng dụng rộng rãi trong các lĩnh vực nơi mà an ninh an toàn thông tin được đòi hỏi.
Chính vì lý do được sử dụng rộng rãi trong thương mại điện tử cũng như có độ
an toàn cao mà đã có rất nhiều sự nhòm ngó cũng như các cuộc tấn công nhằm phá vỡ
sự an toàn của hệ mật RSA Ngay từ khi được công bố lần đầu, hệ RSA đã được phân tích hệ số an toàn bởi nhiều nhà nghiên cứu Mặc dù trải qua nhiều năm nghiên cứu và
đã có một số cuộc tấn công ấn tượng nhưng không mang lại kết quả là phá huỷ Đa phần họ mới chỉ ra được những mối nguy hiểm tiềm ẩn của RSA.
Để phục vụ cho việc phân tích các tính chật của hệ mật RSA, em đã trình bày các khái niệm cơ bản liên quan đến toán học, mật mã và thám mã, trình bày tổng quan
về hệ mã hoá khoá công khai, các bài toán liên quan đến hệ mã hoá khoá công khai
Trang 6CHƯƠNG I: HỆ MẬT MÃ CÔNG KHAI
Số nguyên tố là số tự nhiên lớn hơn 1, chỉ có hai ước là 1 và chính nó
Số p là số nguyên tố nếu nó không chia hết cho số nào trong đoạn [2, 1]
Cho số nguyên dương n, 2 số nguyên a và b được gọi là đồng dư modulo
n nếu chúng có cùng số dư khi chia cho n Phép đồng dư là một quan hệ tươngđương (bao gồm các tính chất phản xạ, đối xứng, bắc cầu) Tập hợp các sốnguyên trong không gian modulo n tạo thành một vành với Abel với hai phéptoán cộng và nhân Nếu n là số nguyên tố thì tập hợp đó là một trường
Trang 8Các giá trị thặng dư bậc hai của một số modulo n
Các giá trị trong đoạn [1,n-1] không phải là thặng dư bậc 2 modulo n
được gọi là các số bất thặng dư bậc hai hay không thặng dư bậc hai modulo n.
Ký hiệu Legendre:
Nếu p là số nguyên tố lẻ và số a nguyên tố cùng nhau với p ta có ký hiệulegendre như sau:
Ký hiệu legengre có thể mang 1 trong 3 giá trị:
Trong đó ký hiệu legendre mang giá trị:
• 0 nếu
• 1 nếu a là thặng dư bậc 2 mod p và
• -1 nếu a không thặng dư bậc 2 mod p
Theo tiêu chuẩn Euler, ký hiệu Lengendre có thể được tính bằng công
thức:
Tính chất:
Trang 9Ký hiệu legendre có một số tính chất sau:
Ký hiệu Jacobi là khái niệm tổng quát của ký hiệu Legendre:
• Với các số nguyên tố lẻ p ký hiệu Jacobi cũng chính là ký hiệu Legendre
• Với các số hợp số lẻ n, ký hiệu Jacobi được định nghĩa bằng tích các kýhiệu Legendre tương ứng với các thừa số nguyên tố của n
Nếu
thì
Ký hiệu Jacobi có thể mang 1 trong 3 giá trị:
Trong đó ký hiệu Legendre mang giá trị:
• 0 nếu
• -1 nếu và a không thặng dư bậc hai modulo n
• 1 nếu và a có thể thặng dư bậc hai modulo n hoặc không thặng dư bậchai modulo n
Trang 10• nhưng 2 không thặng dư bậc hai modulo 15
• và 4 là thặng dư bậc hai modulo 15
Do đó, khi Ký hiệu Jacobi mang giá trị 1 ta chỉ có thể kết luậngcd(a, n) = 1, ngoài ra ta không thể kết luận được a có phải là thặng dư bậc haimodulo n hay không
• Tính giao hoán:
o
Ví dụ:
Trang 11Nhóm số nguyên hay tập hợp là một nhóm Abel với phép toán + Khicộng 2 số nguyên với nhau ta luôn thu được số nguyên, do đó () có tính đóng.Ngoài ra, ta còn có các tính chất:
• Tính giao hoán đối với phép toán nhân.
oMột vành được gọi là miền nguyên nếu nó là vành giao hoán và có thêmtính chất sau:
• Liên quan giữa phép nhân và phần tử đơn vị phép cộng:
o Nếu
Ví dụ:
Tập hợp các số nguyên là vành Abel với phép toán cộng và phép toánnhân Như đã bàn ở trên, tập hợp các số nguyên là một nhóm Abel với phéptoán cộng Ngoài ra, còn có các tính chất:
Tập hợp các số nguyên trong modulo N là vành Abel với phép toáncộng và nhân Với mọi số a,b,c thuộc thuộc ta có những tính chất sau:
• Tính đóng, khi cộng 2 số bất kỳ trong không gian modulo N, ta luônthu được 1 số trong không gian modulo N
• Tính kết hợp với phép cộng:
• Phần tử đơn vị:
• Tính nghịch đảo với phép cộng:
• Tính giao hoán của phép cộng:
• Phép nhân có tính phân phối với phép cộng:
Trang 12• F là một nhóm Abel với phép nhân
• Trên F, phép nhân phân phối với phép cộng
Ví dụ:
Tập hợp các số thực là một trường với 2 phép toán cộng và nhân Khicộng hoặc nhân 2 số thực với nhau ta luôn được một số thực, do đó (F,+,*) cótính đóng Ngoài ra, còn có các tính chất:
Ví dụ:
Tập hợp các số nguyên trong modulo số nguyên tố p , là một trường với
2 phép toán cộng và nhân.Ta có các tính chất sau:
• là một vành Abel với 2 phép toán cộng và nhân
• Phép nhân có phần tử nghịch đảo: với số p nguyên tố ta có nên vớimọi a thuộc đều tồn tại phần tử thuộc sao cho
độ phát triển của công nghệ, toán học hiện tại
Cho hai không gian S và T:
Hàm một chiều f được định nghĩa:
Với thì:
• Cho x, ta dễ dàng tính được y trong thời gian tuyến tính
• Hàm là hàm ngược của hàm f rất khó tính được hay cho y, rất khó đểtìm được x thỏa
Hàm một chiều có cửa sập: tương tự như hàm một chiều và có thêm mộttính chất:
• Hàm dễ dàng tính được khi chúng ta biết được một giá trị bí mật nào
đó (cửa sập)
Ví dụ:
Trang 13Hàm là hàm một chiều, hàm f có thể tính được dễ dàng trong thời giantuyến tính bằng cách áp dụng thuật toán bình phương và nhân Tuy nhiên, hàmrất khó tính được (bài toán logarit rời rạc)
Hàm là hàm một chiều, hàm f có thể tính được dễ dàng trong thời gian
đa thức với thuật toán bình phương và nhân Hàm được tính trong thời gian đathức, rất khó tính được trong thời gian tuyến tính Tuy nhiên, nếu ta biết được số
ta dễ dàng tính được hàm bởi vì:
và có thể tính được trong thời gian tuyến tính
1.2.2 Một số bài toán liên quan đến hệ mã công khai
Một số bài toán lý thuyết số liên quan tới hệ mã công khai
- Số học đồng dư
- Lũy thừa đồng dư với thuật
toán bình phương và nhân
- Tính ước chung lớn nhất với
giải thuật Euclid
- Tính nghịch đảo modulo với
giải thuật Euclid mở rộng
- Sàng nguyên tố Eratosthenes
- Định lý số dư Trung Hoa
- …
- Bài toán phân tích nhân tử
- Bài toán phân tích thừa số nguyên tố
- Bài toán thặng dư bậc hai
- Bài toán logarit rời rạc
- Bài toán Deffie-Hellman
- Bài toán căn bậc hai modulo n
- …
1.2.2.1 Thuật toán Euclid
Thuật toán Euclid là thuật toán vô cùng quan trọng và hiệu quả trong lýmật mã học Thuật toán Euclid được dung để tính ước chung lớn nhất của hai sốnguyên khác 0
Thuật toán có thể được mô tả như sau: Cho 2 số tự nhiên a và b khác 0,kiểm tra nếu b bằng 0 thì a là ước chung lớn nhất cần tìm Nếu không lặp lại xử
lý cho với cặp số là b và a mod b
Giả sử a=bq +r với a, b, q, r là các số nguyên ta có:
Mã giả theo phương pháp đệ quy:
Trang 14//thì trả về giá trị của hàm gcd (b,a mod b)return gcd(b, a%b)
1.2.2.2 Thuật toán Euclid mở rộng
Giải thuật Euclid không chỉ được dung để tính ước chung lớn nhất củahai số mà còn được dung để giải hệ phương trình nghiệm nguyên:
hoặc:
với d là ước chung lớn nhất của a và b
Xét hai số tự nhiên a, b thỏa , ta có:
return a, x0, y0
Trang 15Các liên phân số còn có thể được biểu diễn dưới dạng
Trong giải thuật Euclid mở rộng thì chuỗi q chính là giá trị liên phân số của phân
1.2.2.4 Thuật toán bình phương và nhân
Thuật toán bình phương và nhân là thuật toán tính nhanh lũy thừa tựnhiên của một số Thuật toán trở nên hiệu quả khi tính toán với số mũ tự nhiênlớn
Khi tính toán trong không gian modulo n, kết quả quá trình tính toán sẽkhông vượt quá
Thuật toán được xây dựng dựa trên tính chất:
Trang 16// vòng lặp để duyệt hết các bit của e
while e>0 //kiểm tra điều kiện dừng
{// kiểm tra bit cuối của e, nếu giá trị bằng 1 thì trả về kết quả//bằng x nhân với kết quả trước đó
If e%2==1 then
res=res*x (mod n)//e = e div 2, duyệt bit tiếp theo của e
e = e >>1//thay x bởi
x = x*x (mod n)}
1.2.2.5 Định lý số dư Trung Hoa
Định lý số dư Trung Hoa hay còn được gọi là bài toán Hàn Tín điểmbinh là một định lý để nói về cách giải hệ phương trình đồng dư bậc nhất
Trang 17Bài toán được định nghĩa như sau: cho số tự nhiên x và k số tự nhiên mđôi một nguyên tố cùng nhau, dễ dàng tính được phần dư khi chia x cho tíchcủa k số m nếu chúng ta biết được phần dư khi chia x cho từng số m nêu trên
Bài toán Hàn Tín điểm binh
Cho hệ phương trình đồng dư:
Ta có:
Từ đó tính được:
Ta thu được x hay x có dạng 68+105k ()
1.2.2.6 Bài toán phân tích nhân tử
Bài toán: cho số nguyên dương n lớn hơn 1, tìm một số a sao cho a làước của n
1.2.2.7 Bài toán phân tích thừa số nguyên tố
Bài toán: cho số nguyên dương n lớn hơn 1, tìm tất cả các ước số nguyên
tố của n
1.2.2.8 Bài toán logarit rời rạc
Bài toán: cho các số nguyên dương x, y, n, tìm số tự nhiên k sao cho
1.2.2.9 Bài toán RSA
Bài toán: cho các số nguyên dương x,y,n, tìm số tự nhiên x sao cho
1.2.2.10Bài toán thặng dư bậc hai
Bài toán: cho 2 số nguyên dương y và n, kiểm tra xem y có phải là thặng
dư bậc hai modulo n hay không
1.2.2.11Bài toán căn bậc hai modulo n
Bài toán: cho số y là thặng dư bậc 2 modulo n, tìm số tự nhiên x sao chohay
1.2.2.12Bài toán Deffie-Hellman
Trang 18Bài toán: cho số nguyên tố , phần tử sinh , hai giá trị , tính
1.2.3 Sơ lược về mã hóa RSA
1.2.3.1 Giới thiệu
RSA là thuật toán mã hóa công khai được phát minh bởi Ron Rivest, AdiShamir và Len Adlemen, công bố lần đầu vào tháng 8 năm 1977 và được sửdụng rộng rãi cho đến ngày nay Đây là thuật toán mã hóa khóa công khai đầutiên được đưa vào sử dụng để mã hóa cũng như tạo chữ kí điện tử
n được gọi là modulus là không gian của mã hóa, bản rõ và bản mã của
mã hóa sẽ nằm trong khoảng từ 1 đến n-1
Tính phi hàm Euler của n:
Do với p và q là 2 số nguyên tố nên:
Chọn số e trong khoảng từ 1 đến sao cho e và nguyên tố cùng nhau haygcd(e,)=1
e được gọi là số mũ công khai
Tính số d với hay với
d được gọi là số mũ bí mật
b. Khóa công khai
Khóa công khai bao gồm:
n được gọi là modulus
e được gọi là số mũ công khai hay số mũ mã hóa
c. Khóa bí mật
Khóa bí mật bao gồm:
n (n xuất hiện trong cả khóa công khai lẫn khóa bí mật)
d được gọi là số mũ bí mật hay số mũ giải mã
1.2.3.3 Mã hóa và giải mã
Mã hóa
Giả sử Alice muốn gửi cho Bob một văn bản, Alice cần phải:
• Biết khóa công khai của Bob: (n, e)
• Chuyển đoạn văn bản cần gửi thành 1 số nguyên m sao cho vàgcd(m, n) = 1 (Nếu không gcd(m, n) sẽ tiết lộ q và p dẫn đến mã hóahoàn toàn không an toàn)
• Sau đó, Alice sử dụng số mũ công khai để tính:
• Alice thu được bản mã c và gửi cho Bob
Trang 19Ta có bản rõ m cặp khóa công khai (e, n) và khóa bí mật (d, n)
Alice mã hóa bản rõ m thu được:
Bob nhận được bản mã c và giải mã:
Trang 20CHƯƠNG 2: MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG LÊN HỆ MẬT RSA
N: RSA modulus, là tích của hai số nguyên tố p, q
: phi hàm Euler của modulus N
Trang 21Hàm số là một hàm một chiều có cửa sập.
• Hàm f được tính dễ dàng thông qua thuật toán bình phương và nhân
• Hàm số rất khó tính trong thời gian tuyến tính
• Hàm số dễ dàng tính được khi chúng ta biết một trong các của sập
• Các cửa sập của hàm RSA bao gồm:
Quan hệ giữa các cửa sập:
Giả sử nếu chúng ta biết được 1 trong các cửa sập của hàm số RSA:
Đặt S = p + q vừa tìm được ta có phương trình:
Mà p và q chính là nghiệm của phương trình đó
Số mũ công khai d có thể được tính bằng giải thuật Euclid mở rộng với d
là nghiệm của phương trình:
Trang 22• , quay lại bước đầu tiên và chọn số x khác.
• , tính rồi tiếp tục cho đến khi tìm được p,q
Độ phức tạp của thuật toán , ở trường hợp đặc biệt, nếu p, q cùng độ lớn
về số bit và thì độ phức tạp của thuật toán là
Ví dụ:
Giả sử ta có:
Chọn m=53,
Ta thu được (p, q) = gcd() = (316798337, 568334519)
Các cửa sập có quan hệ mật thiết với nhau, nếu một trong các cửa sập bị
lộ thì tất cả các cửa sập có thể được tìm ra dễ dàng trong thời gian tuyến tính Và
từ đó ta có thể tính được hàm
2.2.3 Phân tích các số nguyên lớn
Độ an toàn của thuật toán RSA phụ thuộc rất lớn vào việc phân tích thừa
số nguyên tố của số modulus N Nếu việc phân tích N ra thừa số nguyên tố cóthể thực hiện trong thời gian ngắn thì hệ thống mã hóa RSA cũng sẽ không còngiá trị
Trang 23Như ta đã biết bài toán phân tích N thành nhân tử là 1 bài toán khó nếu p
và q đủ lớn Tuy nhiên nếu p, q được chọn quá gần nhau thì phương phápFermat có thể dung để phân tích N một cách hiệu quả
Không mất tính tổng quát, giả sử q>p
Nếu thì thuật toán Fermat có thể được dung để phân tích N hiệu quả
Trang 24Tính gcd() ta sẽ thu được p, đây chính là nguyên lý cơ bản của thuật toánPollard p-1.
Độ phức tạp của thuật toán
Số B ảnh hưởng lớn đến thuật toán, số B càng lớn thì sác xuất tìm đượcnhân tử của N càng lớn nhưng thuật toán chạy càng chậm
Trang 25Khi đó:
Với
Ta có:
chia hết cho p
Do p là số nguyên tố nên cũng chính là ký hiệu Legendre
Nếu = 1 thì thuật toán trở thành thuật toán Pollard “p-1”
Do đó, chúng ta cần = -1 hay D không phải là thặng dư bậc hai modulop
Để áp dụng thuật toán William p+1 để phân tích nhân tử số N, đầu tiên tachọn ngẫu nhiên số A>2 (do ta không biết giá trị nên bước này có thể lặp lại chođến khi tìm ra) Chọn số B rồi tính Tính gcd(N, -2 ), nếu giá trị tìm được khác
1 và N thì ta tìm được ước của N và kết thúc thuật toán Nếu gcd(N, ) = 1 hoặc
N thì ta quay lại và chọn số B hoặc A khác
của chuỗi V(A, 1) = của chuỗi V()
Ta tìm được p = 139 là một nghiệm của N Ta thấy:
Trong trường hợp này số n có ước là số nguyên tố p với p+1 là một số smooth nên chỉ cần với M=7! ta có thể tìm được ước của N
Để chọn được đường cong E và điểm P thỏa mãn điều kiện như vậy,
ta có thể chọn ngẫu nhiên 3 số a, x, y rồi tính
Trang 26Bước 2:
Chọn số B, tính Giống như trong thuật toán Pollard p-1, số B cànglớn thì xác suất tìm được nhân tử của N càng lớn nhưng thuật toán chạycàng chậm
Bước 3:
Tính kP
Ta có kP=P+P+P+…+P
Công thức tính phép cộng trong đường cong Elliptic:
Cho 2 điểm và Điểm được tính như sau:
Kiểm tra số d vừa tính được:
• Nếu 1<d<N thì d là ước của N trả về d và kết thúc thuật toán
• Ngược lại, chuyển tới bước 6
Phân tích nhân tử của N = 455839
Chọn đường cong E: và điểm
Trang 27Nếu ta có 2 số nguyên x, y sao cho:
Thì gcd(xy, N) là ước của N
Trang 28Phân tích các số ra thừa số nguyên tố, từ đó tạo ra k vector Trong
đó vector bao gồm các giá trị lũy thừa của các phần tử trong tập hợp Pmodulo 2
Ví dụ: thì
Bước 4:
Sử dụng đại số tuyến tính để tìm ra một tập cái vector sao cho tổngcác vector đó tạo thành một vector 0 Hay nói cách khác là tìm tập hợpcác số sao cho tích của các số đó là một số chính phương:
Gọi x là tích các số tương ứng với tập hợp ở trên, ta có:
Nếu đúng thì trả về p,q và kết thúc thuật toán
Ngược lại, quay về bước 3 và tìm x,y khác