Bối cảnh và vấn đề nghiên cứu
Trong kỷ nguyên chuyển đổi số và sự phát triển mạnh mẽ của mạng Internet, các nguy cơ liên quan đến an toàn dữ liệu, tính riêng tư và bảo mật thông tin ngày càng gia tăng. Chữ ký số đóng vai trò là giải pháp công nghệ trọng yếu nhằm xác thực nguồn gốc, bảo đảm tính toàn vẹn của dữ liệu và chống chối bỏ trong các giao dịch điện tử. Trong số các chuẩn chữ ký số hiện đại, thuật toán chữ ký số dựa trên đường cong Elliptic (ECDSA - Elliptic Curve Digital Signature Algorithm), được Scott Vanstone đề xuất lần đầu vào năm 1992 và chuẩn hóa bởi ANSI năm 1999 (ANSI X9.62), đã trở thành chuẩn mực mật mã then chốt, đặc biệt là trong hạ tầng công nghệ chuỗi khối (Blockchain) như Bitcoin và Ethereum.
Đường cong SECP256K1 được sử dụng phổ biến trong các hệ thống Blockchain nhờ cấu trúc Koblitz đặc biệt, giúp tối ưu hóa hiệu năng tính toán cao hơn khoảng 30% so với các đường cong ngẫu nhiên thông thường. Tuy nhiên, tính an toàn của lược đồ ECDSA SECP256K1 phụ thuộc mật thiết vào việc sinh và quản lý giá trị ngẫu nhiên tạm thời (Nonce, ký hiệu là $k$) trong quá trình ký. Việc cài đặt sai lệch, rò rỉ hoặc tái sử dụng giá trị Nonce $k$ sẽ làm sụp đổ hoàn toàn cơ chế bảo mật, cho phép kẻ tấn công khôi phục trực tiếp khóa riêng (private key) của người dùng từ các chữ ký công khai. Xuất phát từ thực tiễn an toàn thông tin đó, đồ án tốt nghiệp tập trung nghiên cứu cơ chế tấn công và giải pháp khắc phục đối với lỗ hổng thực thi Nonce trong ECDSA SECP256K1.
Mục tiêu nghiên cứu của đề tài được xác định cụ thể gồm 3 nhiệm vụ:
- Tìm hiểu lược đồ ký số ECDSA trên đường cong SECP256K1.
- Nghiên cứu các dạng tấn công lên ECDSA SECP256K1 liên quan đến giá trị Nonce.
- Thực thi tấn công lên ECDSA SECP256K1 nhằm tìm khóa riêng liên quan đến giá trị Nonce và cài đặt giải pháp phòng chống.
Đối tượng nghiên cứu của đồ án là chuẩn ký số ECDSA trên đường cong SECP256K1, quy trình xử lý giá trị Nonce $k$, các kỹ thuật tấn công giải mã khóa riêng khi xảy ra lỗi Nonce và chuẩn tạo số ngẫu nhiên tất định RFC 6979. Phạm vi nghiên cứu giới hạn ở việc phân tích toán học các lược đồ chữ ký số, khảo sát lỗ hổng trên dữ liệu Blockchain và xây dựng ứng dụng mô phỏng quy trình tạo khóa, ký số, xác minh cùng các kịch bản tấn công khôi phục khóa riêng trên hệ điều hành Windows bằng ngôn ngữ lập trình C#.
Cơ sở lý thuyết và phương pháp
Đồ án xây dựng trên nền tảng lý thuyết mật mã học khóa công khai, lý thuyết nhóm và hình học đại số trên trường hữu hạn:
- Bài toán Logarithm rời rạc trên đường cong Elliptic (ECDLP - Elliptic Curve Discrete Logarithm Problem): Độ an toàn của ECDSA dựa trên độ khó của việc tìm số nguyên $k \in [0, n-1]$ sao cho $Q = kP$, với $P, Q$ là các điểm trên đường cong Elliptic $E(\mathbb{F}_p)$ bậc $n$. Thuật toán nhanh nhất hiện nay để giải bài toán này là thuật toán Pollard-rho.
- Tiêu chuẩn mật mã học: Đồ án viện dẫn các tiêu chuẩn quốc tế gồm ANSI X9.62, FIPS 186-2, IEEE 1363-2000, ISO/IEC 15946-2, tiêu chuẩn SEC 1 và SEC 2 của Standards for Efficient Cryptography Group (SECG), khuyến nghị của Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) năm 2020, và tiêu chuẩn kỹ thuật RFC 6979 về sinh chữ ký số tất định.
Tham số miền của đường cong SECP256K1 được biểu diễn qua bộ 6 thành phần $D = (p, a, b, G, n, h)$:
- Phương trình đường cong: $E: y^2 = x^3 + ax + b \pmod p$, với $a = 0$, $b = 7 \implies y^2 = x^3 + 7 \pmod p$.
- Số nguyên tố bậc trường: $p = 2^{256} - 2^{32} - 977 = \text{0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F}$.
- Điểm sinh (cơ sở) $G$: Tọa độ không nén gồm 65 octet bắt đầu bằng tiền tố
04, tọa độ nén gồm 33 octet với tiền tố 02 (khi $y$ chẵn) hoặc 03 (khi $y$ lẻ).
- Bậc của $G$: $n = 2^{256} - 432420386565659656852420866394968145599 = \text{0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141}$.
- Đồng thừa số: $h = 1$.
| Thuật toán |
Kích thước khóa |
Mức độ an toàn tương đương |
Thời gian khuyến nghị sử dụng (NIST) |
| RSA |
3072 bit |
128 bit |
Đến năm 2030 |
| ECDSA SECP256K1 |
256 bit |
128 bit |
Đến năm 2030 |
Phương pháp nghiên cứu kết hợp giữa:
- Phương pháp phân tích - tổng hợp lý thuyết: Thiết lập mô hình toán học giải hệ phương trình đồng dư modulo $n$ để tìm ẩn số khóa riêng $d$ và Nonce $k$.
- Phương pháp khảo sát thực chứng: Khảo sát các công bố khoa học về dữ liệu lịch sử giao dịch Bitcoin (giai đoạn 2009–2017) để đánh giá tác động thực tế của lỗ hổng Nonce.
- Phương pháp mô phỏng thực nghiệm: Thiết kế lưu đồ giải thuật, lập trình phần mềm mô phỏng hệ thống mật mã bằng C# trên môi trường .NET, thực nghiệm kiểm thử quy trình ký, xác minh và mô phỏng tấn công khôi phục khóa.
Nội dung chính theo từng chương
Chương 1: Tổng quan về chữ ký số
Chương 1 hệ thống hóa các khái niệm nền tảng về chữ ký số trong môi trường điện tử. Tác giả định nghĩa lược đồ chữ ký số là một bộ 5 thành phần $(\mathcal{R}, \mathcal{A}, \mathcal{K}, \mathcal{S}, \mathcal{V})$, trong đó $\mathcal{R}$ là tập thông báo, $\mathcal{A}$ là tập chữ ký, $\mathcal{K}$ là không gian khóa, $\mathcal{S}$ là tập thuật toán ký $Sig_K$, và $\mathcal{V}$ là tập thuật toán kiểm tra $Ver_K$. Quá trình ký số thực tế luôn kết hợp hàm băm mật mã $h$ để tạo bản tóm lược thông báo $z = h(R)$, giải quyết triệt để hạn chế về độ giãn tin và thời gian xử lý khi ký trên các tài liệu dung lượng lớn.
Chương này trình bày chi tiết hai lược đồ mật mã kinh điển:
- Lược đồ chữ ký số RSA: Dựa trên độ khó của bài toán phân tích số nguyên lớn $n = p \cdot q$ ra thừa số nguyên tố. Khóa công khai là $(e, n)$, khóa riêng là $d = e^{-1} \pmod{\phi(n)}$. Chữ ký tạo bởi $S = R^d \pmod n$ và kiểm tra bằng phương trình $R \equiv S^e \pmod n$.
- Lược đồ chữ ký số ElGamal: Lược đồ chữ ký không tất định xây dựng trên bài toán logarit rời rạc trong nhóm nhân $\mathbb{Z}_p^*$. Chữ ký gồm cặp hai thành phần $(u, v)$ với $u = g^k \pmod p$ và $v = (R - au)k^{-1} \pmod{p-1}$.
Chương 1 cũng phân tích ba chức năng then chốt của chữ ký số: xác thực nguồn gốc dữ liệu, đảm bảo tính toàn vẹn và chống chối bỏ, cùng các ứng dụng thực tiễn trong thương mại điện tử, dịch vụ công trực tuyến và thủ tục hành chính số.
Chương 2: Nghiên cứu một số tấn công lên ECDSA SECP256K1 liên quan giá trị Nonce
Chương 2 tập trung phân tích cấu trúc toán học của ECDSA SECP256K1 và các điểm yếu bảo mật bắt nguồn từ giá trị Nonce $k$. Quy trình chuẩn của ECDSA bao gồm:
- Sinh khóa: Chọn khóa riêng ngẫu nhiên $d \in [1, n-1]$, tính khóa công khai $Q = d \cdot G$.
- Ký số: Chọn số ngẫu nhiên $k \in [1, n-1]$, tính điểm $R = k \cdot G = (x_1, y_1)$, lấy $r = x_1 \pmod n$ (nếu $r=0$ chọn lại $k$). Tính giá trị băm thông báo $E = \text{OS2I}(H(m))$ và $s = k^{-1}(E + r \cdot d) \pmod n$ (nếu $s=0$ chọn lại $k$). Chữ ký là cặp $(r, s)$.
- Xác minh chữ ký: Kiểm tra $r, s \in [1, n-1]$. Tính $w = s^{-1} \pmod n$, $u_1 = E'w \pmod n$, $u_2 = rw \pmod n$. Xác định điểm $R' = u_1 G + u_2 Q = (x_1', y_1')$. Chữ ký hợp lệ khi và chỉ khi $r' = x_1' \pmod n$ trùng khớp với $r$.
Tác giả đi sâu phân tích ba kịch bản tấn công khôi phục khóa riêng liên quan đến giá trị Nonce $k$:
- Tấn công khi rò rỉ giá trị Nonce $k$: Nếu kẻ tấn công biết được giá trị $k$, khóa riêng $d$ được tính toán trực tiếp qua biến đổi đại số:
$$d = r^{-1}(s \cdot k - E) \pmod n$$
- Tấn công khi tái sử dụng Nonce bởi cùng một người dùng: Khi người dùng ký hai thông báo khác nhau $m_1, m_2$ (tương ứng giá trị băm $e_1, e_2$) bằng cùng một khóa riêng $d$ và cùng Nonce $k$, thành phần chữ ký $r$ sẽ giống nhau ($r_1 = r_2 = r$). Kẻ tấn công thiết lập hệ phương trình và tìm ra $k$:
$$k = (s_1 - s_2)^{-1}(e_1 - e_2) \pmod n$$
Sau khi có $k$, khóa riêng $d$ được khôi phục dễ dàng theo công thức rò rỉ Nonce.
- Tấn công khi tái sử dụng Nonce giữa hai người dùng khác nhau: Nếu người dùng A (khóa riêng $d_1$) và người dùng B (khóa riêng $d_2$) vô tình sử dụng cùng giá trị $k$ để ký hai thông báo $m_1, m_2$, giá trị $r$ tạo ra sẽ trùng nhau. Khi đó, người dùng A có thể tính toán khóa riêng của B:
$$d_2 = (s_2 e_1 - s_1 e_2 + s_2 r d_1)(s_1 r)^{-1} \pmod n$$
Và người dùng B cũng tính được khóa riêng của A:
$$d_1 = (s_1 e_2 - s_2 e_1 + s_1 r d_2)(s_2 r)^{-1} \pmod n$$
Dẫn chứng từ nghiên cứu của Ziyu Wang và cộng sự (2020) cho thấy, việc phân tích tập dữ liệu giao dịch Bitcoin từ tháng 01/2009 đến tháng 07/2017 đã phát hiện khoảng 0,48% giao dịch mắc phải lỗ hổng trùng lặp số ngẫu nhiên, dẫn tới 1.331 khóa riêng bị bẻ gãy hoàn toàn.
Để phòng chống, tác giả đề xuất giải pháp triển khai thuật toán sinh Nonce tất định theo RFC 6979 của Thomas Pornin (2013). Thuật toán loại bỏ sự phụ thuộc vào bộ sinh số ngẫu nhiên (RNG) không an toàn bằng cách tính toán $k$ dựa trên hàm băm xác thực HMAC kết hợp giữa khóa riêng $d$ và bản tóm lược thông báo $m$, đảm bảo $k$ luôn duy nhất cho mỗi thông báo và không thể dự đoán.
Chương 2 khép lại bằng việc mô tả ứng dụng của ECDSA SECP256K1 trong mạng Blockchain: cấu trúc khối, hàm băm gốc Merkle, cơ chế ký phát giao dịch, quy trình xác thực của các nút mạng và cơ chế dẫn xuất địa chỉ ví từ khóa công khai thông qua hàm băm mật mã.
Chương 3: Thực thi một số tấn công tìm khóa riêng liên quan giá trị Nonce trong ECDSA SECP256K1
Chương 3 trình bày việc lập trình cài đặt hệ thống thực nghiệm bao gồm xây dựng phần mềm mô phỏng lược đồ ký số ECDSA SECP256K1, mô phỏng các kịch bản tấn công khôi phục khóa riêng và cài đặt thuật toán phòng chống RFC 6979.
Chương trình được cấu trúc thành các giải thuật cốt lõi:
- Thuật toán sinh khóa: Tạo số nguyên ngẫu nhiên $d \in [1, n-1]$ kích thước 256 bit (32 octet), thực hiện phép nhân vô hướng trên đường cong Elliptic $Q = d \cdot G$ để tạo khóa công khai dạng nén (66 ký tự hex) hoặc không nén (130 ký tự hex).
- Thuật toán ký số và kiểm tra chữ ký: Xử lý dữ liệu đầu vào, băm thông báo qua hàm băm an toàn, chuyển đổi dữ liệu bằng hàm OS2I (Octet String to Integer) và tính toán các đại lượng $r, s, w, u_1, u_2$.
- Thuật toán tấn công giải mã: Lập trình hàm giải hệ phương trình đồng dư để tự động trích xuất khóa riêng $d$ khi phát hiện giá trị $r$ trùng nhau giữa hai chữ ký.
- Cài đặt cơ chế sinh $k$ theo RFC 6979: Sử dụng HMAC-SHA256 lặp để tạo giá trị Nonce tất định an toàn.
Thiết kế và triển khai
Hệ thống phần mềm thử nghiệm được xây dựng hoàn chỉnh với các thông số môi trường và kiến trúc như sau:
- Môi trường phát triển: Microsoft Visual Studio 2023.
- Ngôn ngữ lập trình: C# (.NET Framework), sử dụng cấu trúc
BigInteger để xử lý số học độ chính xác lớn 256-bit và lớp ECPoint để biểu diễn tọa độ trên đường cong Elliptic.
- Môi trường thử nghiệm: Hệ điều hành Windows 64-bit, phần cứng CPU @ 2.40GHz, bộ nhớ 4GB RAM.
Hệ thống được thiết kế thành 3 mô-đun chức năng chính:
- Mô-đun Sinh khóa: Giao diện cho phép sinh cặp khóa ngẫu nhiên đạt chuẩn 256-bit. Khóa riêng và khóa công khai (dạng hex nén) được hiển thị trực quan và hỗ trợ xuất lưu trữ thành các tệp tin văn bản định dạng
.txt.
- Mô-đun Tạo chữ ký: Tiếp nhận tệp tài liệu đầu vào bất kỳ (hỗ trợ nhiều định dạng như
.txt, .pdf) cùng khóa riêng của người ký, thực hiện băm dữ liệu và xuất cặp chữ ký số $(r, s)$.
- Mô-đun Xác minh chữ ký: Tiếp nhận tệp tài liệu cần kiểm tra, tệp chứa chữ ký $(r, s)$ và tệp khóa công khai của người ký. Chương trình tính toán tọa độ điểm $R'$ và đưa ra thông báo trạng thái "Chữ ký hợp lệ" hoặc "Chữ ký không hợp lệ".
Quy trình thử nghiệm được tiến hành trên tệp tin dữ liệu test.txt:
- Thử nghiệm tính đúng đắn: Khi giữ nguyên nội dung tệp tin
test.txt và xác thực cùng cặp chữ ký số ban đầu, hệ thống xác nhận chữ ký hợp lệ.
- Thử nghiệm tính toàn vẹn: Khi chỉnh sửa bất kỳ ký tự nào trong nội dung tệp
test.txt, hệ thống tính toán lại giá trị băm $E' \neq E$, dẫn đến $R' \neq R$ ($r' \neq r$) và lập tức cảnh báo chữ ký không hợp lệ.
- Thử nghiệm tấn công khôi phục khóa: Giao diện phần mềm mô phỏng thực thi thành công việc tính toán chính xác khóa bí mật $d$ trong cả 2 trường hợp: một người dùng ký 2 tệp tin với cùng giá trị $k$, và hai người dùng khác nhau ký các thông báo riêng biệt nhưng bị trùng lặp $k$.
Kết quả và đóng góp
Đồ án đã đạt được các kết quả nghiên cứu lý thuyết và thực nghiệm cụ thể:
| Kịch bản nghiên cứu |
Điều kiện đầu vào |
Phương pháp tính toán |
Kết quả khôi phục |
| Rò rỉ Nonce $k$ |
Biết $k$, chữ ký $(r, s)$, băm $E$ |
$d = r^{-1}(sk - E) \pmod n$ |
Khôi phục trực tiếp khóa riêng $d$ |
| Tái sử dụng $k$ (1 người dùng) |
2 chữ ký có $r_1 = r_2 = r$, $s_1 \neq s_2$, bản băm $e_1, e_2$ |
$k = (s_1 - s_2)^{-1}(e_1 - e_2) \pmod n$ $d = r^{-1}(s_1 k - e_1) \pmod n$ |
Khôi phục cả Nonce $k$ và khóa riêng $d$ |
| Tái sử dụng $k$ (2 người dùng) |
A và B dùng chung $k \implies r_1 = r_2 = r$, chữ ký $(r, s_1), (r, s_2)$ |
A tính: $d_2 = (s_2 e_1 - s_1 e_2 + s_2 r d_1)(s_1 r)^{-1} \pmod n$ B tính: $d_1 = (s_1 e_2 - s_2 e_1 + s_1 r d_2)(s_2 r)^{-1} \pmod n$ |
Người này tính được khóa riêng của người kia |
| Phòng chống (RFC 6979) |
Khóa riêng $d$, thông báo $m$ |
Thuật toán sinh $k$ xác định bằng HMAC-SHA256 |
Nonce $k$ duy nhất, loại trừ nguy cơ tái sử dụng |
Đóng góp chính của đồ án bao gồm:
- Hệ thống hóa toàn diện cơ sở toán học và cơ chế thực thi của chuẩn ký số ECDSA trên đường cong SECP256K1 trong hệ sinh thái Blockchain.
- Chứng minh và mô phỏng thực nghiệm thành công mức độ nguy hiểm của các lỗ hổng liên quan đến giá trị Nonce, cung cấp minh chứng rõ ràng về khả năng bẻ gãy khóa riêng mà không cần giải bài toán ECDLP.
- Cài đặt hoàn chỉnh giải pháp sinh Nonce tất định RFC 6979, cung cấp tài liệu tham khảo kỹ thuật hữu ích cho việc triển khai mật mã an toàn trong thực tế.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế: Thử nghiệm tấn công và mô phỏng hệ thống mới được tiến hành trong môi trường phần mềm cục bộ độc lập, chưa tích hợp trực tiếp việc quét và bóc tách dữ liệu giao dịch thời gian thực trên mạng lưới Blockchain thực tế. Đồ án cũng chưa mở rộng phân tích các kỹ thuật tấn công kênh kề (side-channel attacks) nhằm thu thập một phần bit của Nonce $k$ qua phân tích năng lượng tiêu thụ hoặc thời gian tính toán của phần cứng.
- Hướng nghiên cứu tiếp:
- Mở rộng xây dựng công cụ tự động quét, phân tích và cảnh báo sớm các giao dịch có nguy cơ trùng lặp Nonce trên các mạng lưới Blockchain công khai.
- Nghiên cứu sâu hơn về các tấn công rò rỉ từng phần Nonce (partial nonce leakage) sử dụng thuật toán LLL (Lenstra–Lenstra–Lovász) giải bài toán Hidden Number Problem (HNP).
- Nghiên cứu và thử nghiệm triển khai các chuẩn ký số tiên tiến khác như Schnorr Signatures hoặc chữ ký số kháng lượng tử trên nền tảng chuỗi khối.
Giá trị tham khảo
Đồ án là tài liệu tham khảo có giá trị học thuật và ứng dụng thực tiễn dành cho:
- Sinh viên, học viên ngành Công nghệ thông tin và An toàn thông tin: Nắm bắt kiến thức chuyên sâu về mật mã đường cong Elliptic, các bước toán học trong lược đồ ECDSA và phương pháp xây dựng phần mềm mật mã bằng C#.
- Kỹ sư phát triển hệ thống Blockchain và ví điện tử: Nhận diện các rủi ro chết người từ bộ sinh số ngẫu nhiên (RNG) trong ứng dụng thực tế, từ đó áp dụng triệt để chuẩn RFC 6979 để bảo vệ khóa riêng của người dùng.
- Nội dung tham khảo nổi bật: Toàn bộ công thức toán học và phân tích lỗ hổng Nonce tại Chương 2; hệ thống lưu đồ giải thuật sinh khóa, ký số, xác minh và mã nguồn xử lý toán học số lớn tại Chương 3.
Câu hỏi thường gặp
1. Vì sao đường cong SECP256K1 lại được lựa chọn phổ biến trong công nghệ Blockchain thay vì các đường cong elliptic khác?
Đường cong SECP256K1 thuộc lớp đường cong Koblitz, được cấu tạo đặc biệt với các tham số cố định ($y^2 = x^3 + 7$) thay vì cấu trúc giả ngẫu nhiên. Cấu trúc này cho phép tối ưu hóa các phép toán nhân điểm vô hướng trên đường cong, giúp tốc độ tính toán nhanh hơn khoảng 30% so với các đường cong ngẫu nhiên thông thường khi được cài đặt tối ưu.
2. Điểm yếu cốt tử của giá trị Nonce $k$ trong thuật toán ký số ECDSA là gì?
Giá trị Nonce $k$ bắt buộc phải thỏa mãn đồng thời hai điều kiện: phải được giữ bí mật tuyệt đối và chỉ được sử dụng duy nhất một lần cho một thông báo. Nếu $k$ bị rò rỉ hoặc bị tái sử dụng cho hai thông báo khác nhau, kẻ tấn công có thể giải hệ phương trình đại số tuyến tính trên trường modulo $n$ để tính ra khóa riêng $d$ ngay lập tức mà không cần giải bài toán logarit rời rạc ECDLP.
3. Khóa công khai của ECDSA SECP256K1 dạng nén và không nén khác nhau như thế nào?
Khóa công khai là tọa độ $(x, y)$ trên đường cong. Dạng không nén nối tiền tố 04 với chuỗi hex của cả $x$ và $y$ (độ dài 130 ký tự hex / 65 octet). Dạng nén chỉ lưu giá trị $x$ kèm tiền tố 02 (nếu $y$ chẵn) hoặc 03 (nếu $y$ lẻ) (độ dài 66 ký tự hex / 33 octet), giúp tiết kiệm đáng kể không gian lưu trữ và băng thông truyền tải trên mạng Blockchain.
4. Chuẩn RFC 6979 giải quyết triệt để lỗi tái sử dụng Nonce như thế nào?
RFC 6979 đưa ra quy trình sinh Nonce tất định (deterministic nonce generation). Thay vì lấy $k$ ngẫu nhiên từ phần cứng hay bộ sinh số ngẫu nhiên RNG, thuật toán tính toán $k$ thông qua hàm băm xác thực HMAC-SHA256 với đầu vào là sự kết hợp giữa khóa riêng $d$ và mã băm của chính thông báo $m$. Cơ chế này đảm bảo mỗi thông báo sẽ luôn tạo ra một giá trị $k$ duy nhất, không trùng lặp và không thể dự đoán.
5. Mức độ an toàn của thuật toán ECDSA SECP256K1 256-bit tương đương với kích thước khóa RSA bao nhiêu bit theo khuyến nghị của NIST?
Theo khuyến nghị của NIST năm 2020 được trích dẫn trong đồ án, khóa ECDSA SECP256K1 kích thước 256 bit cung cấp mức độ bảo mật 128 bit, tương đương với độ an toàn của khóa RSA kích thước 3072 bit, và được đánh giá là an toàn để sử dụng cho đến năm 2030.
Kết luận
Đồ án tốt nghiệp đã nghiên cứu toàn diện cơ chế hoạt động và đánh giá độ an toàn của chuẩn ký số ECDSA trên đường cong SECP256K1. Nghiên cứu đã làm rõ và thực nghiệm thành công các kịch bản tấn công khôi phục khóa riêng bắt nguồn từ việc rò rỉ hoặc tái sử dụng giá trị Nonce $k$. Thông qua việc xây dựng phần mềm mô phỏng bằng C# và triển khai thuật toán sinh Nonce tất định RFC 6979, đề tài khẳng định tầm quan trọng của việc tuân thủ các chuẩn mực triển khai mật mã an toàn trong các hệ thống thông tin và công nghệ Blockchain.