Sự ra đời của các hệ mật mã hóa chính là nhằm đảm bảo an toàn thông tin trong quá trình trao đổi, nhất là sự ra đời của các hệ mật mã hóa công khai đã tạo ra bước đột phá trong việc xác
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Họ và tên: Đỗ Hoàng Hà
Mã sinh viên: 20021341
CHƯƠNG TRÌNH THỰC HIỆN SƠ ĐỒ CHỮ KÝ
TRÊN ĐƯỜNG CONG ELLIPTIC
-ECDSA-BÁO CÁO TIỂU LUẬN CUỐI KÌ
MÔN MẬT MÃ VÀ AN TOÀN THÔNG TIN
Lớp: INT3230E 40 Giảng viên: Lê Phê Đô
Trang 2HÀ NỘI - 2022
Trang 3Mục lục
1 ECDSA là gì? 4
2 Thế mạnh của ECDSA 6
3 Thuật toán chữ ký số trên đường cong Elliptic 7
a Tạo cặp khóa dùng trong ECDSA 8
b Tạo chữ ký bằng ECDSA 8
c Xác thực chữ ký bằng ECDSA 8
4 Tính an toàn của ECDSA 8
6 Chương trình thực hiện sơ đồ chữ ký ECDSA 9
7 Kết luận 13
Trang 4Mở đầu
Ngày nay, sự phát triển của khoa học công nghệ thông tin và truyền thông đã làm cho việc trao đổi, học hỏi thông tin trở nên không còn bị ảnh hưởng quá nhiều bởi khoảng cách về địa lý nữa Nhưng khi việc trao đổi thông tin trong một môi trường mở như thế lại là điều kiện thuận lợi cho các kẻ phá hoại có thể dễ dàng đánh cắp và thay đổi thông tin Chính vì vậy, yêu cầu đặt ra khi trao đổi thông tin trong môi trường mở như thế đó là phải có tính an toàn và xác thực
Sự ra đời của các hệ mật mã hóa chính là nhằm đảm bảo an toàn thông tin trong quá trình trao đổi, nhất là sự ra đời của các hệ mật mã hóa công khai đã tạo ra bước đột phá trong việc xác thực thông tin Diffie và Hellman chính là những người đi tiên phong trong lĩnh vực mật mã khóa công khai với sự ra đời của thuật toán trao đổi khóa Sau đó là sự ra đời của hàng loạt các hệ mật mã hóa khác như RSA, Elgamal, ECC Và các hệ mật này đóng vai trò quan trọng trong thuật toán chữ ký số nhằm đảm bảo an toàn và tính xác thực của thông tin
Trong các hệ mật mã hóa khóa công khai thì hệ mật đường cong Elliptic (ECC) được cho
là một hệ mật có độ bảo mật cao và an toàn hơn nhiều so với các thuật toán mật mã hóa khác Nó được ứng dụng trong rất nhiều lĩnh vực và được sử dụng nhiều nơi trên thế giới
Trang 51 ECDSA là gì?
Thuật toán chữ ký số Elliptic Curve lần đầu tiên được đề xuất vào năm 1992 bởi Scott Vanstone trong phản hồi đề xuất của NIST về DSS Sau đó, nó đã được chấp nhận vào năm 1998 như là một tiêu chuẩn ISO (ISO 14888-3), và như là một tiêu chuẩn ANSI (ANSI X9.62) vào năm 1999, và như là một tiêu chuẩn của IEEE (IEEE 1363-2000) và như một tiêu chuẩn NIST (Trin 186- 2) vào năm 2000
ECDSA là viết tắt của Elliptic Curve Digital Signature Algorithm - thuật toán sinh chữ ký
số dựa trên đường cong Elliptic, với công thức toán học là:
Hình 1: Ảnh minh họa đường cong Elliptic
Trên đường cong Elliptic tồn tại 2 phép toán đó là phép cộng và phép nhân
Phép cộng: Ta có 2 điểm P và Q như hình bên dưới, kẻ P với Q và cắt đường cong được
điểm R lấy đối xứng của R qua trục Ox ta được kết quả của phép cộng
Trang 6Hình 2: Ảnh minh họa phép cộng trên đường cong Elliptic
Phép nhân: Bản chất của phép nhân là đi thực hiện phép cộng nhiều lần Như hình bên
dưới, đầu tiên có điểm P lấy tiếp tuyến cắt đường cong tại -2P đối xứng qua Ox ta được 2P, tiếp tục thực hiện 1 lần nữa nối P và 2P và lấy đối xứng ta sẽ được 3P
Hình 3: Ảnh minh họa phép nhân trên đường cong Elliptic
Trang 7Do cách tính toán trên, ta có thể dễ dàng tính toán được phép nhân khi đã biết 3 và P như trên hình vẽ, nhưng hoàn toàn không thể tính toán được theo chiều ngược lại Điều này giúp cho khóa bí mật được an toàn hơn khi áp dụng phép nhân để tạo cặp khóa ECDSA
2 Thế mạnh của ECDSA
Trong lĩnh vực chữ ký số, thuật toán ECDSA được đánh giá là một trong những thuật toán mã hóa mạnh nhất, dù sinh sau đẻ muộn nhưng ECDSA được dự đoán có thể thay thế cho RSA – thuật toán phổ biến hiện nay
Độ dài lưu khóa ngắn
- Mức độ bảo mật ở đây được định lượng bởi số bit khóa tiêu chuẩn trên lý thuyết cần sử dụng để đảm bảo độ bảo mật của ‘n’ bit
- Độ dài khóa công khai cũng được đo bằng bit, nhưng nó là một khái niệm hoàn toàn khác, đề cập đến độ dài vật lý của chìa khóa
Tiêu tốn ít tài nguyên trên hệ thống
Như bảng trên, có thể thấy được mặc dù cùng một mức độ bảo mật nhưng độ dài của khóa sử dụng thuật toán ECDSA lại nhỏ hơn rất nhiều so với khóa sử dụng thuật toán RSA Đối với các doanh nghiệp lớn, họ cần lưu trữ lại rất nhiều khóa, khi đó đòi hỏi doanh nghiệp cần có đủ nguồn lực về hạ tầng để đáp ứng nhu cầu lưu trữ trên Giả dụ, có
1 thiết bị lưu trữ với dung lượng 2048bit, nếu sử dụng RSA, ta chỉ có thể lưu trữ được 1 khóa duy nhất, còn đối với ECDSA, ta có thể lưu tới 9 khóa cùng mức độ bảo mật, mở rộng không gian lưu trữ gấp 9 lần và còn tiết kiệm được chi phí
Rút ngắn thời gian ký số
Đối với thuật toán ECDSA, quá trình mã hóa và giải mã được rút ngắn, đồng thời cũng giảm bớt năng lượng cần sử dụng trong quá trình, hơn hẳn so với việc sử dụng thuật toán RSA Cụ thể, khóa của ECDSA nhỏ, nên việc tạo chữ ký số sẽ nhanh hơn, giảm tải chu
kỳ xử lý của CPU, không chỉ vậy, với việc sử dụng khóa của thuật toán ECDSA, chứng
Trang 8chỉ an toàn sẽ nhỏ và ít dữ liệu hơn, điều này hỗ trợ đẩy nhanh quá trình kết nối, cải thiện tốc độ internet
Tăng cường độ bảo mật
ECDSA sử dụng các thuật toán phức tạp trên đường cong elliptic vào các quá trình tạo khóa, mã hóa và giải mã, giúp cho thông tin được tăng tính bảo mật, làm hacker khó khăn khi đánh cắp thông tin và hầu như là không thể hack được Điều này làm cho ECDSA trở thành thuật toán bảo mật mạnh mẽ
Dễ dàng thấy được thuật toán ECDSA đáp ứng được các vấn đề mà RSA còn chưa được tối ưu như độ dài khóa, hiệu suất Và không có gì ngạc nhiên khi ECDSA được dự đoán
là soán ngôi của RSA
3 Thuật toán chữ ký số trên đường cong Elliptic
ECDSA thực hiện theo 3 giai đoạn:
1 Tạo khóa
2 Tạo chữ ký
3 Xác minh chữ ký
Một giai đoạn thiết lập phải thực hiện trước giai đoạn tạo khóa để tạo miền tham số của
hệ mật
Miền tham số của một đường cong elliptic mô tả một tả đường cong Elliptic E được xác định trên một trường hữu hạn Fp, một điểm cơ sở g ∈ E (F ) có cấp là n Các các tham sốp
nên được chọn cẩn thận để ECDLP chống lại tất cả các cuộc tấn công đã biết
Các đường cong Elliptic được chọn bằng cách chọn (a, b) thuộc Zp* và thay vào trong phương trình Vì vậy, miền các tham số có thể được định nghĩa là p, E (a, b), g, n p
Hình 4: Hình ảnh mô tả quá trình ký ECDSA
Trang 9a Tạo cặp khóa dùng trong ECDSA
Giả sử A là người ký trên bản rõ M Khi đó A thực hiện các bước 6 sau để tạo ra cặp khóa công khai và khóa riêng:
Chọn ngẫu nhiên 1 số nguyên d nằm trong khoảng [1, n-1]
Tính Q = dG
Khóa riêng của người gửi là d
Khóa công khai của người gửi là tổ hợp (E (a, b), g, n, Q).p
b Tạo chữ ký bằng ECDSA
A sử dụng khóa riêng của mình để tạo chữ ký trên bản tin M bằng các bước sau: Chọn ngẫu nhiên một số nguyên k thuộc [1, n-1]
Tính kg = (x1, y1), trong đó x1 là số nguyên
Tính r = x1 mod n Nếu r = 0, thì quay lại bước 1
Tính h = H (M), trong đó H là SHA-512
Tính s = (k * (h + d * r)) mod n Nếu s = 0, thì quay lại bước 1.-1
Chữ ký của A trên bản tin M là cặp số nguyên (r, s)
c Xác thực chữ ký bằng ECDSA
Người nhận B có thể xác minh tính xác thực của chữ ký của A là (r, s) trên bản tin M bằng cách thực hiện tiếp theo:
Nhận được chữ ký trên Khóa công khai (E, g, n, Q) của A
Xác minh rằng các giá trị r và s nằm trong khoảng [1, n-1]
Tính w = s mod n.-1
Tính h = H (M), trong đó H là thuật toán băm an toàn tương tự được sử dụng bởi A
Tính u1 = hw mod n
Tính u2 = rw mod n
Tính u1g + u2Q = (x , y0 0)
Tính r' = x mod n.0
Chữ ký cho tin nhắn M chỉ được xác minh nếu r’ = r
4 Tính an toàn của ECDSA
Khóa công khai được tạo bằng cách tính điểm Q, trong đó Q = dG Để phá vỡ khóa đường cong elip elliptic, Eve (người thám mã) có thể khám phá ra khóa bí mật d khi Q và
G được công bố Bậc của đường cong Elliptic, E là số nguyên tố n, sau đó tính toán d từ
dG và G sẽ mất khoảng 22n + 2 phép tính
Ví dụ: Nếu độ dài khóa n là 192 bit (khóa nhỏ nhất kích thước mà NIST đề xuất cho các đường cong được xác định trên G(F ), khi đó Eve sẽ thực hiện khoảng 2 phép tính Nếup 296
Trang 10Eve có một siêu máy tính và có thể thực hiện một tỷ phép tính mỗi giây, anh ta sẽ mất khoảng 13 hai nghìn tỷ năm để tìm ra khóa bí mật
Có được điều này do độ khó của bài toán logarithm rời rạc ở phía sau ECDSA Các tham
số của đường cong nên được chọn rất cẩn thận để bảo đảm đường cong Elliptic tránh khỏi các cuộc tấn công như Pollard rho và PohligHellman
5 Ứng dụng của ECDSA
ECC hiện đang được sử dụng trong một loạt các ứng dụng: chính phủ Mỹ sử dụng để bảo
vệ thông tin liên lạc nội bộ, các dự án Tor sử dụng để giúp đảm bảo ẩn danh, đây cũng là
cơ chế được sử dụng để chứng minh quyền sở hữu trong Bitcoins, cung cấp chữ ký số trong dịch vụ iMessage của Apple, để mã hóa thông tin DNS với DNSCurve, và là phương pháp tốt để xác thực cho các trình duyệt web an toàn qua SSL/TLS Thế hệ đầu tiên của thuật toán mã hóa khóa công khai như RSA và Diffie-Hellman vẫn được duy trì trong hầu hết các lĩnh vực, nhưng ECC đang nhanh chóng trở thành giải pháp thay thế cho RSA
Cụ thể hơn nếu truy cập vào phiên bản HTTPS của các trang web phổ biến, như Google.com, Amazon.com, Facebook.com… từ một trình duyệt như Chrome hoặc Firefox, trình duyệt sẽ sử dụng ECC – như là sử dụng ECDHE_ECDSA ECDHE là viết tắt của Elliptic Curve Diffie Hellman Ephemeral và là một cơ chế trao đổi khóa dựa trên đường cong Elliptic ECDSA là Elliptic Curve Digital Signature Algorithm là cơ chế tạo chữ ký số để xác thực kết nối với máy chủ
Sự cải thiện hiệu suất của ECDSA hơn RSA là rất rõ ràng Ngay cả với một phiên bản cũ của OpenSSL không có tối ưu cho ECC, tạo một chữ ký ECDSA với khóa 256-bit là nhanh hơn 20 lần so với một chữ ký RSA với khóa 2048-bit
Trong kỷ nguyên công nghệ thông tin và truyền thông hiện nay, nhu cầu đảm bảo an toàn thông tin là không thể thiếu Với việc khóa mã hóa có độ dài ngày tăng dần theo thời gian, ECC đang là ứng viên phù hợp để thay thế RSA trong việc tạo ra các khóa mã ngắn hơn mà vẫn đảm bảo an toàn, từ đó có thể triển khai trên nhiều nền tảng thiết bị từ các mạch điện tử đơn giản đến máy tính lớn, dễ dàng tạo ra hệ thống mạng đáng tin cậy phục
vụ tốt hơn cho xã hội
6 Chương trình thực hiện sơ đồ chữ ký ECDSA
Chương trình được viết bằng Python với hai file chính là ecc.py đại diện cho class EllipticCurve và ECDSA.py đại diện cho class ECDSA File thực thi sẽ là main.py Ngoài ra chương trình còn sử dụng một số thư viện được dựng sẵn như phục vụ mục đích tính toán, hàm băm SHA512 của thư viện hashlib và thuật toán kiểm tra số nguyên tố AKS
Trang 11Một số hàm
Tính số điểm của đường cong
Tạo cặp khóa:
Trang 12Kí:
Trang 13Xác thực chữ kí:
(*) Cách chạy chương trình
Mở thư mục code và nhấn chuột phải chọn Open in Terminal
Trang 14Trong màn hình Console nhập python main.py để chạy chương trình.
7 Kết luận
Trong bài tiểu luận này em đã giới thiệu sơ đồ chữ ký trên đường cong elliptic, về cách thức thực hiện, ứng dụng của nó trong thực tế cũng như một chương trình đơn giản được viết bằng Python để mô phỏng các giai đoạn của thuật toán chữ số trên đường cong elliptic ECDSA được cho là giải pháp hiệu quả và an toàn, với kích thước khóa nhỏ hơn nhưng thuật toán có thể cho mức an toàn cao như thuật toán khác có kích thước khóa lớn hơn Ví dụ như thuật toán elliptic sử dụng khóa có độ dài là 160 bit thì có thể tương đương với thuật toán RSA sử dụng khóa có độ dài 1024 bit