Mật mã khóa công khai, còn được gọi là mật mã bất đối xứng, là một hệ thống sử dụng các cặp khóa để mã hóa và xác thực thông tin.. Sơ đồ của hệ mã công khai được cho ở hình sau : Hệ mã
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG I
- -
BÀI THI CUỐI KÌ MÔN
AN NINH MẠNG THÔNG TIN
ĐỀ TÀI: Thuật toán RSA và ứng dụng trong chữ ký
số
Trang 2I RSA 1
1 Giới thiệu về mã hóa khóa công khai 3
2 Mật mã khóa công khai là gì? 3
3 Chế độ hoạt động hệ mã hóa công khai 4
II.Tìm hiểu về thuật toán RSA 6
1 Giới thiệu chung về thuật toán RSA 6
2 Các quá trình thực hiện thuật toán RSA 7
3 Độ bảo mật của RSA 8
III Chữ ký số 9
1 Giới thiệu về chữ ký số 9
2 Khái niệm về chữ ký số 9
3 Phân loại chữ ký số 9
4 So sánh chữ ký số với chữ ký thông thường(chữ ký viết tay) trên văn bản 10
5 Hoạt động của chữ ký số 10
6 Mục đích của chữ ký số 12
7 Tầm quan trọng của chữ ký số 12
IV Ứng dụng của RSA trong việc tạo và thẩm định chữ ký số 12
1 Các bước tạo và kiểm tra chữ ký điện tử 12
2 Giải thuật và cài đặt giải thuật 14
3 Các điểm yếu của chữ ký số sử dụng giải thuật RSA 17
1.1 Chữ ký số nói chung 17
1.2 Chữ ký số sử dụng RSA 17
Kết luận 19
Nguồn tham khảo 20
Kết quả kiểm tra độ trùng lặp tài liệu 21
Lời cảm ơn 22
Trang 3I RSA
1 Giới thiệu về mã hóa khóa công khai
Việc giữ bí mật khóa private đồng nghĩa với việc giữ bảo mật thông tin Vì vậy việc trao đổi khóa chỉ được diễn ra trên kênh bí mật thì mới đảm bảo được, tuy nhiên việc trao đổi này cũng khá là phức tạp để đảm bảo độ an toàn cao Từ đây hình thành nên ý tưởng của mật mã bất đối xứng Tức là không cần phải trao đổi khóa bí mật qua kênh truyền nữa
Ý tưởng của hệ mật công khai mật mã được Diffie và Hellman đưa ra năm 1976 Còn việc thực hiện hệ mật công khai thì do Rivest, Shamir và Adleman đưa ra đầu tiên năm 1977, họ đề xuất một hệ mật mã RSA nổi tiếng Và kể từ đó có một số hệ mật mã khác được công bố, độ bảo mật của chúng dựa trên bài tính toán khác nhau,cũng như việc dựa trên độ khó của bài toán phân tích thành nhân tử như hệ mật RSA, dựa vào độ khó logarithm rời rạc như hệ mật ElGamal, hay dựa trên đường cong Ecliptic
2 Mật mã khóa công khai là gì?
Mật mã khóa công khai, còn được gọi là mật mã bất đối xứng, là một hệ thống sử
dụng các cặp khóa để mã hóa và xác thực thông tin Một khóa trong cặp là khóa công khai, có thể, như trên cho thấy, được phân phối rộng rãi mà không ảnh hưởng đến bảo mật Khóa thứ hai trong cặp là khóa riêng chỉ được chủ sở hữu biết Đây là một sự khởi đầu từ mật mã đối xứng, được sử dụng riêng cho đến những năm 1970 Trong mật mã đối xứng, tất cả các khóa là riêng tư, yêu cầu một kênh an toàn để truyền khóa và bảo mật bởi tất cả các bên về tất cả các khóa Cả hai yêu cầu này đều tỏ ra khó bảo trì Mặt khác, trong mật mã bất đối xứng, các khóa công khai có thể được phân phối tự do Phân phối công khai này cho phép liên lạc được mã hóa, xác thực giữa các bên chưa gặp hoặc trao đổi thông tin trước đó
Sơ đồ của hệ mã công khai được cho ở hình sau :
Hệ mã công khai sử dụng hai khóa bao gồm khóa bí mật và khóa công khai và nó được hoạt động như sau: Người muốn nhận bản mã (Alice) tạo ra một cặp khóa bao gồm khóa bí mật và khóa công khai Khóa công khai sẽ đưa đến cho người gửi bản tin (Bob) qua kênh công cộng Và bản tin được Bob mã hóa bằng khóa công khai của Alice Bản
mã truyền đến Alice, và nó được giải mã bằng khóa mật
Trang 4Sau đây ta có bảng so sánh giữa hệ mật khoá đối xứng và khoá công khai Để phân biệt chúng, người ta gọi khoá được sử dụng trong mã hoá đối xứng là khoá bí mật Hai khoá dùng trong mã hoá khoá công khai là khoá công khai và khoá riêng
3 Chế độ hoạt động hệ mã hóa công khai
Có hai chế độ làm việc :
• Chế độ bảo mật : Mã hóa bằng khóa công khai và giải mã bằng khóa cá nhân
• Chế độ xác thực : Mã hóa bằng hóa công khai và giải mã bằng khóa cá nhân
Trang 5Nguồn A đưa ra một thông báo rõ và bản rõ của thông báo là X A dự định gửi thông báo cho B, trước đó B sinh ra một cặp khóa là khóa công khai KUb và KRb Chỉ có bên phía B biết KRb, còn KUb được công bố công khai trên mạng, do vậy bên A có thể
dễ dàng lấy được khóa công khai này
Với đầu vào là bản rõ(thông báo) X và khoá mã KUb, bên phía A sẽ tạo ra bản mã hóa Y:
Y=EKUb(X)
Người nhận B thu được X, qua phép biến đổi ngược X= DKRb(Y)
Đối phương (có thể có được Y và KUb nhưng không có KRb hoặc X) phải tìm cách khôi phục lại X và/hoặc KRb, điều này là rất khó
Mật mã khóa công khai có thể dùng để thực hiện việc xác thực người dùng với sơ
đồ sau:
Trang 6Y=EKRa(X)
X=DKUa(Y)
Trong trường hợp này, bên A mã hoá thông báo và gửi cho bên B bằng khóa cá nhân của mình, bên B giải mã thông báo bằng khóa công khai của bên A Thông báo được mã hoá bằng khóa bí mật của bên A nên có thể xác định chỉ có A là người tạo ra thông báo Do đó, toàn bộ thông báo mã hoá được dùng như một chữ ký số Không thể sửa đổi thông báo đã được xác thực cả nguồn gốc và tính toàn vẹn dữ liệu
Ta có thể kết hợp cả tính bí mật và xác thực theo lược đồ sau:
Z=EKUb[EKRa(X) ]
X=DKUa[DKRb(Z) ]
Trước hết A mã thông báo bằng khoá riêng của mình (chữ ký số) sau đó dùng khoá công khai của B mã tiếp và gửi cho B, B dùng khóa riêng để giải mã và dùng khóa công khai của A để xác thực Khó khăn của phương pháp này là ta thực hiện thuật toán khóa công khai 4 lần cho mỗi cuộc truyền thông, tốc độ mã hoá dùng thuật toán này khá chậm
II Tìm hiểu về thuật toán RSA
1 Giới thiệu chung về thuật toán RSA
Trong mật mã, RSA là thuật toán mật mã khóa công khai đầu tiên thích hợp để tạo chữ ký điện tử cùng lúc với mã hóa Nó đánh dấu một bước tiến lớn trong lĩnh vực mật
mã trong việc sử dụng các khóa công khai RSA được sử dụng rộng rãi trong thương mại điện tử và được cho là an toàn miễn là độ dài khóa đủ lớn
Thuật toán RSA có hai khóa: khóa công khai (public key) và khóa cá nhân (private key) Mỗi khóa là một số cố định được sử dụng trong quá trình mã hóa và giải mã Khóa công khai có sẵn công khai đến mọi người và được sử dụng để mã hóa Thông tin được
mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa riêng tương ứng Nói cách khác, bất kỳ ai cũng có thể mã hóa, nhưng chỉ người biết khóa riêng (bí mật) mới
có thể giải mã được
Trang 7Hình 1: Mã hóa RSA
Hệ mã hóa khóa công khai được thực hiện bởi đầu vào là một khối số nguyên < n Thủ tục thực hiện gồm 3 bước : tạo khóa, tạo bản mã và giải mã
2 Các quá trình thực hiện thuật toán RSA
o Quá trình tạo khóa trong RSA :
Một cặp khóa công khai – khóa riêng được thực hiện theo các bước sau :
1 Chọn hai số nguyên tố lớn p và q (trong thực tế là càng lớn càng tốt)
2 Tính n = pq Chọn p,q sao cho với i là kích thước khối
3 Tính (n) = (p - 1)(q - 1)
4 Tìm một số e sao cho e nguyên tố cùng nhau với (n)
5 Tính số d sao cho e.d1 mod (n) (d là nghịch đảo của e trong phép modulo (n))
6 Khóa công khai KU là cặp (e, n), khóa riêng KR là cặp (d, n)
o Quá trình mã hóa :
- Theo phương án 1, mã hóa bảo mật 𝐶 = 𝐸(𝑀, 𝐾𝑈) = 𝑀𝑒𝑚𝑜𝑑 𝑛
- Theo phương án 2, mã hóa chứng thực 𝐶 = 𝐸(𝑀, 𝐾𝑅) = 𝑀𝑑𝑚𝑜𝑑 𝑛
o Quá trình giải mã :
- Theo phương án 1, mã hóa bảo mật 𝑀 = 𝐷(𝐶, 𝐾𝑅) = 𝐶𝑑𝑚𝑜𝑑 𝑛
- Theo phương án 2, mã hóa chứng thực 𝑀 = 𝐷(𝐶, 𝐾𝑈) = 𝐶𝑒𝑚𝑜𝑑 𝑛
Trang 8Hình 2: Ví dụ RSA
o Chọn tham số RSA
- Cần chọn p và q đủ lớn
- Thường chọn e nhỏ
- - Thông thường có thể chọn cùng một giá trị của e cho tất cả người dùng
- - Giá trị khuyến nghị trước đây của e là 3, nhưng bây giờ được coi là quá nhỏ
- - Thường chọn e = 216 - 1 = 65535
- - Giá trị của d sẽ lớn và không thể đoán trước được
3 Độ bảo mật của RSA
o Độ an toàn của RSA
Tính bảo mật của hệ thống RSA dựa trên hai bài toán toán học: bài toán tính thừa
số nguyên tố của số nguyên lớn và bài toán RSA Đối với thừa số nguyên tố, giả sử khóa 128 bit là một số từ 1 đến một số rất lớn:
Trang 9
340.282.366.920.938.000.000.000.000.000.000.000.000.000.000.000 vậy nên có khoảng ≈ n / ln (n) = 2128 / ln (2128)
≈ 3.835.341.275.459.350.000.000.000.000.000.000.000.000 số nguyên tố từ 1 đến
số này Giả sử nếu có thể tính được 1012 con số mỗi giây vì vậy sẽ mất hơn 121.617.874.031.562.000 năm (khoảng 10 triệu lần tuổi vũ trụ) để tìm ra chìa khóa
o Phá mã RSA :
- Phương pháp vét cạn : điều này phụ thuộc vào độ dài của khóa
- Phương pháp phân tích toán học : Phân tích n thành 2 thừa số nguyên tố p và q.Việc phân tích để tính ra một thừa số nguyên tố là rất khó khăn kể cả dựa vào tốc độ của máy tính hiện nay cũng không thể đáp ứng được việc phân tích số nguyên tố lớn trong thời gian ngắn nếu các số p, q được chọn là rất lớn
- Xác định (n) trực tiếp không thông qua 2 số p và q
- Xác định d trực tiếp không thông qua (n)
- Phương pháp phân tích thời gian: Dựa trên việc đo thời gian giải mã Đây là một cách giải mã dựa trên thời gian Phương pháp phân tích thời gian có thể loại bỏ nhiễu bằng cách giữ cho thời gian giải mã của bất kỳ thông báo nào gần như không đổi
III Chữ ký số
1 Giới thiệu về chữ ký số
Ngày nay cùng với sự phát triển của CNTT, giao dịch điện tử ngày càng trở nên phổ biến và phát triển, trong tương lai gần, đây sẽ là hình thức giao dịch chính của khách hàng cá nhân và khách hàng doanh nghiệp Chữ ký số được coi như là phương tiện đảm bảo xác thực cho giao dịch điện tử Vì vậy, nó được các cá nhân, tổ chức doanh nghiệp dùng để tiến hành giao dịch trên mạng Internet
2 Khái niệm về chữ ký số
Chữ ký số (còn được gọi là chữ ký điện tử) là một kỹ thuật xác thực cho phép chủ
sở hữu nội dung của tin nhắn đính kèm một phần dữ liệu kỹ thuật số là chữ ký của chủ
sở hữu vào nội dung đã tạo Về cơ bản, một chữ ký số sẽ được tạo ra bằng cách băm nội dung tin nhắn và sau đó mã hóa băm bằng khóa riêng của chủ sở hữu nội dung
Chữ ký số là một dạng mật mã hóa nguyên thủy được sử dụng rất nhiều trong nền tảng công nghệ blockchain, chữ ký điện tử và hàm băm là nền tảng cơ bản mà công nghệ blockchain sử dụng
3 Phân loại chữ ký số
Ta có thể chia chữ ký điện tử thành 2 loại: Một kỹ thuật ký mà chữ ký điện tử là một phần đính kèm với thông điệp được gửi, cả hai đều là đầu vào cho quá trình xác minh chữ ký và chữ ký mà từ nó có thể được khôi phục trên thông điệp bắt đầu trước
kí, thông báo ban đầu này không phải là một khởi đầu cho quá trình xác minh chữ ký
Trang 10Hình 3: Phân loại chữ ký số
Dựa vào tính thực tế về chữ ký điện tử nên tiểu luận chủ yếu tập trung vào kỹ thuật thứ hai là chữ ký điện tử như một phần đính kèm trong quy trình thông điệp xác minh Điểm cơ bản của chữ ký này là:
- Chữ ký số đi kèm với thông điệp gốc
- Tin nhắn (bản gốc) là bắt buộc để xác minh chữ ký số
- Sử dụng hàm băm mật mã Ví dụ: RSA, DSA, ElGamal, Schnorr…
- Dựa trên thuật toán mã hóa Ví dụ như: RSA-PSS dựa trên thuật toán mã hóa RSA, chữ ký số DSA dựa trên thuật toán DSA
4 So sánh chữ ký số với chữ ký thông thường(chữ ký viết tay) trên văn bản
Chữ ký số và chữ ký truyền thống thường có nhiều điểm khác biệt:
- Về văn bản đã ký: Với văn bản thông thường, nó là một bộ phận vật lí của văn bản Ngược lại, chữ ký điện tử không phải theo kiểu vật lí được gắn vào tin nhắn nên
nó không hiển thị trên tin nhắn
- Về vấn đề kiểm tra chữ ký: Chữ ký thông thường được kiểm tra bằng cách đối chiếu với các chữ ký xác thực khác (chữ ký mẫu) Điểm yếu của chữ ký truyền thống là không an toàn và có thể bị giả mạo dễ dàng Ngược lại, chữ ký điện tử được xác minh bằng thuật toán kiểm tra công khai, bất kỳ ai cũng có thể xác minh được Sử dụng lược
đồ chữ ký an toàn có thể ngăn chặn việc giả mạo
5 Hoạt động của chữ ký số
Hoạt động tạo ra chữ ký số cần phải có 1 cặp khóa công khai và khóa cá nhân Người kí sẽ giữ khóa cá nhân và dùng để mã hoá thông tin tạo ra chữ kí số, người nhận phải có khóa công khai của người kí tương ứng cặp với khóa cá nhân để giải mã chữ kí
số nhằm đối chiếu thông tin
Chiến lược chữ ký
Khôi phục thông điệp
Đính kèm
Trang 11Bạn có thể hình dung một cách dễ hiểu hơn như sau: bạn có 1 văn bản word hợp đồng và cần gửi cho luật sư Thứ quan trọng nhất là làm thế nào để luật sư biết chắc chắn rằng văn bản hợp đồng này là chính chủ, được viết hay đã được phê duyệt bởi chính bạn
Quá trình kí (Signing)
Quá trình kí (Signing) sẽ diễn ra như sau:
1 Bạn có văn bản hợp đồng word (data)
2 Bạn sử dụng thuật toán băm (MD5 hoặc SHA), từ văn bản được băm ra sẽ được duy nhất một chuỗi ký tự với một độ dài cố định Ta gọi là chuỗi H: (phần mềm) -> tệp băm word -> chuỗi H
- Thuật toán băm phải được thống nhất giữa hai bên để có kết quả chính xác khi kiểm tra
3.Sau đó, bạn sử dụng khóa riêng của mình để mã hóa và tạo ra chuỗi băm từ văn bản Chúng ta sẽ được một chuỗi ký tự đã mã hóa được gọi là mã hóa băm Có thể gọi
nó là chuỗi C: string H khóa riêng của người kí -> mật mã băm A
4 Bây giờ mật mã băm A là chữ ký điện tử của người đã ký nó (mật mã băm A = chữ ký số) Nhiệm vụ của chúng ta bây giờ là thêm nó vào nội dung file word ở cuối văn bản, để bên kia nhận được nội dung văn bản và chữ ký số
Quy trình kiểm tra thông tin chữ ký số (Xác minh)
Quá trình kiểm tra chữ ký số (Xác minh) sẽ diễn ra như sau:
1 Người nhận sẽ nhận được một hợp đồng bằng văn bản bao gồm: nội dung chính,chữ ký số mã băm A Sau đó, người nhận sẽ tách nội dung của văn bản hợp đồng
và chữ ký số để xử lý độc lập
Trang 122 Trong nội dung của văn bản hợp đồng, người nhận thực hiện công việc tương tự như người ký, đó là chúng ta sử dụng cùng một chương trình thuật toán băm (MD5 hoặc SHA) với người ký, băm văn bản sẽ được một chuỗi ký tự duy nhất có độ dài cố định
Ta gọi nó là chuỗi H2 chẳng hạn, chuỗi H2 sẽ đại diện cho chuỗi băm của người nhận: (phần mềm) -> tệp word băm -> chuỗi H2
3 Người nhận sử dụng khóa công khai của người ký để giải mã chuỗi mật mã băm
A được đính kèm trong tài liệu hợp đồng để lấy được chuỗi H: mã băm A khóa công khai của người ký -> chuỗi H
4 So sánh thông tin trùng lặp giữa chuỗi H và chuỗi H2 Nếu khớp có nghĩa là nội dung đúng, không bị thay đổi, chính xác nội dung của người tạo ra văn bản và hoàn thành quá trình kiểm tra (xác minh)
6 Mục đích của chữ ký số
Chống chối bỏ: giúp người nhận khi xác minh nội dung đã được kí với một chữ ký
số sẽ biết được người kí, không thể phủ nhận những gì được tạo ra khi bắt khởi tạo chữ
kí số
Tính toàn vẹn: chữ ký điện tử giúp kiểm tra tính toàn vẹn dữ liệu của nội dung được gửi không bị thay đổi hoặc sửa đổi kể từ thời điểm chữ ký số được tạo và ký vào văn bản
Tính xác thực: Các chữ số cũng được sử dụng để xác thực nguồn của thư gửi đi Thông thường, thông tin về chủ nhân của chữ ký sẽ được thêm vào phần nội dung để giúp người nhận xác minh ai đã gửi tin nhắn
Tính xác thực Miễn là khóa riêng của Alice được giữ bí mật, Bob có thể sử dụng khóa công khai của mình để xác nhận rằng chữ ký điện tử được tạo bởi Alice chứ không phải một ai khác
Chống thoái thác Khi chữ ký đã được tạo, Alice sẽ không thể phủ nhận việc mình
đã ký nó, trừ khi khóa riêng của cô ấy bị xâm phạm
IV Ứng dụng của RSA trong việc tạo và thẩm định chữ ký số
1 Các bước tạo và kiểm tra chữ ký điện tử
Người gửi A băm thông điệp cần gửi bằng hàm băm H, sau đó mã hóa giá trị băm này bằng mật mã khóa công khai với khóa cá nhân 𝐾𝑅𝑎 của bên A, thông tin này là chữ
ký xác thực của bên người dùng A đối với thông điệp M đã gửi đi