Tải bản đầy đủ (.pdf) (14 trang)

Báo Cáo Tiểu Luận Cuối Kì Mm Và Atttchương Trình Thực Hiện Sơ Đồ Chữ Ký Trên Đường Cong Elliptic -Ecdsa.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.98 MB, 14 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CƠNG NGHỆ</b>

<b>Họ và tên: Đỗ Hồng HàMã sinh viên: 20021341</b>

<b>CHƯƠNG TRÌNH THỰC HIỆN SƠ ĐỒ CHỮ KÝTRÊN ĐƯỜNG CONG ELLIPTIC</b>

<b>-ECDSA-BÁO CÁO TIỂU LUẬN CUỐI KÌ MƠN MẬT MÃ VÀ AN TỒN THƠNG TIN</b>

<b>Lớp: INT3230E 40Giảng viên: Lê Phê Đô</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>HÀ NỘI - 2022</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>Mục lục</b>

<b><small>1.ECDSA là gì?...4</small></b>

<b><small>2.Thế mạnh của ECDSA...6</small></b>

<b><small>3.Thuật tốn chữ ký số trên đường cong Elliptic...7</small></b>

<small>a.Tạo cặp khóa dùng trong ECDSA...8</small>

<small>b.Tạo chữ ký bằng ECDSA...8</small>

<small>c.Xác thực chữ ký bằng ECDSA...8</small>

<b><small>4.Tính an tồn của ECDSA...8</small></b>

<b><small>6.Chương trình thực hiện sơ đồ chữ ký ECDSA...9</small></b>

<b><small>7.Kết luận...13</small></b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>Mở đầu</b>

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 q 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, 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 tồ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 tồ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 tố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 tốn chữ ký số nhằm đảm bảo an tồ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 tồn hơn nhiều so với các thuật tố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.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>1. ECDSA là gì?</b>

Thuật tố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 tố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.

<b>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</b>

đ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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Hình 2: Ảnh minh họa phép cộng trên đường cong Elliptic

<b>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</b>

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

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Do cách tính tốn trên, ta có thể dễ dàng tính tốn được phép nhân khi đã biết 3 và P như trên hình vẽ, nhưng hồn tồn khơng thể tính tố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.

<b>2. Thế mạnh của ECDSA</b>

Trong lĩnh vực chữ ký số, thuật toán ECDSA được đánh giá là một trong những thuật tố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 tố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 ngun 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 tốn ECDSA lại nhỏ hơn rất nhiều so với khóa sử dụng thuật tố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 tốn ECDSA, q 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 tố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 tốn ECDSA, chứng

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

chỉ an tồ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ự đốn là sốn ngơi của RSA.

<b>3. Thuật tốn chữ ký số trên đường cong Elliptic</b>

ECDSA thực hiện theo 3 giai đoạn:

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ố<small>p</small>

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. <small>p </small>

Hình 4: Hình ảnh mơ tả q trình ký ECDSA

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

a. 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).<small>p</small>

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.<small>-1</small>

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].

Chữ ký cho tin nhắn M chỉ được xác minh nếu r’ = r.

<b>4. Tính an tồn của ECDSA</b>

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ố ngun tố n, sau đó tính tốn d từ dG và G sẽ mất khoảng 2<small>2n + 2</small> 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ếu<small>p</small> <sup>296</sup>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Eve 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 tố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.

<b>5. Ứng dụng của ECDSA</b>

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 tồ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ỷ ngun cơng nghệ thơng tin và truyền thơng hiện nay, nhu cầu đảm bảo an tồ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.

<b>6. Chương trình thực hiện sơ đồ chữ ký ECDSA</b>

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. Ngồ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 tố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.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>Một số hàm</b>

Tính số điểm của đường cong

Tạo cặp khóa:

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Kí:

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Xá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.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Trong màn hình Console nhập python main.py để chạy chương trình.

<b>7. Kết luận</b>

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 tốn có thể cho mức an tồn cao như thuật tốn khác có kích thước khóa lớn hơn. Ví dụ như thuật tốn elliptic sử dụng khóa có độ dài là 160 bit thì có thể tương đương với thuật tốn RSA sử dụng khóa có độ dài 1024 bit.

</div>

×