I. Giới thiệu
Chữ ký số đảm bảo tính xác thực của người ký. Bất kỳ thay đổi nào trong các tài liệu sau khi nó đã được ký là vô hiệu, do đó nó bảo vệ, chống lại sự giả mạo chữ ký và thông tin giả mạo. Như vậy, chữ ký số giúp các tổ chức duy trì ký xác thực, trách nhiệm giải trình, tính toàn vẹn dữ liệu và không thoái thác tài liệu điện tử và các hình thức ký kết. Tiêu chuẩn Chữ ký số ban đầu được phát hành vào năm 1994 và trong một thời gian dài xác thực ECDSA chủ yếu là một chủ đề của nghiên cứu lý thuyết.
Thuật toán chữ ký số dựa trên đường cong Elliptic (ECDSA – Elliptic Curve Digital Signature Algorithm), lần đầu tiên được đề xuất vào năm 1992 bởi Scott Vanstone để đáp ứng yêu cầu của NIST (Viện Tiêu chuẩn và Công nghệ Quốc gia). ECDSA được chấp nhận là một tiêu chuẩn ISO vào năm 1998 (Tổ chức tiêu chuẩn quốc tế) (ISO 14888-3), được chấp nhận là một tiêu chuẩn ANSI vào năm 1999 (Viện tiêu chuẩn quốc gia Hoa Kỳ) (ANSI X9.62), và được tổ chức IEEE chấp nhận vào năm 2000 (Viện tiêu chuẩn của Kỹ sư Điện và Điện tử) (IEEE 1363-2000) và tiêu chuẩn Trin (Trin 186-2).
Thuật toán mã hóa đường cong Elliptic (ECC) hoặc Thuật toán chữ ký số đường cong Elliptic (ECDSA) đã được biết đến và nghiên cứu trong thế giới toán học trong 150 năm trước khi được áp dụng vào mật mã học; Neal Koblitz và Victor S. Miller ban đầu đề xuất nó vào năm 1985. Tuy nhiên, vào năm 2005, NSA đã phát hành một bộ thuật toán bảo mật mới được chính phủ Hoa Kỳ chứng nhận cũng bao gồm ECC, trong một bản phát hành có tên là Suite B.
Mật mã đường cong Elliptic là một thuật toán mã hóa mới đã được phát triển để ong tính bảo mật và hiệu suất mạng mạnh mẽ hơn. Một số nhà nghiên cứu đã tuyên bố rằng mật mã ECC có thể cung cấp bảo mật mạnh mẽ với khóa 164 bit như các hệ thống khác đạt được với khóa 1024 bit. Với sự ra đời của các thiết bị di động được sử dụng cho các giao dịch riêng tư cao, các chương trình mã hóa chi phí thấp, an toàn hơn đang trở nên đáng mong đợi. Mật mã ECC giúp thiết lập bảo mật cấp bằng hoặc lớn hơn RSA hoặc DSA, hai phương thức mã hóa được áp dụng rộng rãi nhất – và nó thực hiện với chi phí tính toán ít hơn, yêu cầu ít năng lực xử lý hơn và di chuyển tốt hơn phạm vi di động khi triển khai.
ECDSA (Thuật toán Chữ ký số Elliptic Curve) dựa trên DSA, nhưng sử dụng một cách tiếp cận toán học khác để tạo khóa. ECC là một phương trình toán học tự thực hiện, nhưng ECDSA là thuật toán được áp dụng cho ECC để làm onge phù hợp với mã hóa bảo mật. Giống như RSA và DSA, nó là một sơ đồ mã hóa bất đối xứng khác, nhưng trong ECC, phương trình xác định cặp khóa công khai / riêng bằng các phép toán trên các điểm của các đường onge lip, thay vì mô tả nó là sản phẩm của các số nguyên tố rất lớn.
II. Đặc điểm của Thuật toán chữ ký số dựa trên đường cong Elliptic
Bảo mật xác thực khóa công khai đường cong Elliptic thực hiện ECC bằng cách sử dụng đường cong giả ngẫu nhiên trên trường nguyên tố theo phương trình toán học y² = x³ + ax + b bằng cách sử dụng các tham số miền của đường cong. ECDSA có thể tự tính toán, cài đặt và khóa cặp khóa riêng / chung mà không cần bất kỳ sự giúp đỡ bên ngoài. Không gian bộ nhớ riêng được đặt sang một bên để lưu trữ và dùng chứng chỉ khóa chung. Bảo mật xác thực khóa công khai đường cong Elliptic cũng có bộ đếm giảm tốc 17-bit có thể thiết lập một lần, không biến đổi. Sự đơn giản về giao diện của ECDSA tạo điều kiện cho việc sử dụng Bảo mật xác thực khóa công khai đường cong Elliptic trong một loạt các ứng dụng.
Thuật toán chữ ký số dựa trên đường cong Elliptic gồm các bước như sau:
* Tạo khóa ECDSA. Bên A thực hiện như sau:
1. Chọn một đường onge lip E được xác định trên ℤp.
Số lượng điểm trong E (ℤp) nên chia hết cho một số nguyên tố r lớn.
2. Chọn một điểm cơ bản G ∈ E (p) của thứ tự r (có nghĩa là rG = 𝒪).
3. Chọn một số nguyên s ngẫu nhiên trong khoảng [1, r – 1].
4. Tính W = sG. Khóa chung là (E, G, r, W), khóa riêng là s.
* Tính toán chữ ký ECDSA. Để ký một tin nhắn m, A thực hiện như sau:
1. Tính toán đại diện tin nhắn f = H (m), sử dụng hàm băm mật mã. Lưu ý rằng f có thể lớn hơn r nhưng không dài hơn (bit đo).
2. Chọn một số nguyên u ngẫu nhiên trong khoảng [1, r – 1].
3. Tính V = uG = (xV, yV) và c ≡ xV mod r (goto (2) nếu c = 0).
4. Tính d ≡ u-1*(f + s*Pc) mod r (2) nếu d = 0). Chữ ký cho tin nhắn m là cặp số nguyên (c, d).
* Xác minh chữ ký ECDSA. Để xác minh chữ ký của A, B nên làm như sau:
1. Lấy bản sao xác thực của khóa công khai của A (E, G, r, W). Xác minh rằng c và d là các số nguyên trong khoảng [1, r – 1].
2. Tính f = H (m) và h ≡ d-1 mod r.
3. Tính h1 f *h mod r và h2 c*h mod r.
4. Tính h1G + h2W = (x1, y1) và c1 ≡ x1 mod r. Chấp nhận chữ ký khi và chỉ khi c1 = c.
Để có ích về mặt mật mã, tham số r nên có ít nhất 250 bit. Cơ sở cho tính bảo mật của các hệ thống mật mã đường cong elliptic là bài toán logarit rời rạc đường cong elliptic (ECDLP): cho hai điểm G, W E (ℤp), trong đó W nằm trong nhóm con của thứ tự r được tạo bởi G, xác định một số nguyên k sao cho W = k*G và 0 < k <r.
DSA [Trin-186-4] và ECDSA [X9.62] là hai sơ đồ chữ ký số tiêu chuẩn. Chúng cung cấp tính toàn vẹn dữ liệu và tính xác thực có thể kiểm chứng trong các giao thức khác nhau.
Một đặc điểm của DSA và ECDSA là chúng cần tạo ra, cho mỗi thế hệ chữ ký, một giá trị ngẫu nhiên mới (sau đây được chỉ định là k). Để bảo mật hiệu quả, k phải được chọn ngẫu nhiên và thống nhất từ một tập hợp các số nguyên mô-đun, sử dụng quy trình bảo mật bằng mật mã. Ngay cả những vấn đề phát sinh nhỏ trong quá trình đó cũng có thể bị biến thành các cuộc tấn công vào các sơ đồ chữ ký. Bản chất ngẫu nhiên của DSA và ECDSA cũng làm cho việc triển khai khó kiểm tra hơn. Kiểm tra tự động không thể phát hiện một cách đáng tin cậy liệu việc triển khai có sử dụng nguồn ngẫu nhiên có chất lượng đủ cao hay không. Có thể biến DSA và ECDSA thành các sơ đồ xác định bằng cách sử dụng quy trình xác định để tạo giá trị “ngẫu nhiên” k. Quá trình đó phải đáp ứng một số đặc điểm về mật mã để duy trì các thuộc tính có thể kiểm chứng và được mong đợi từ các sơ đồ chữ ký; cụ thể, đối với bất kỳ ai không biết khóa riêng của chữ ký, ánh xạ từ các thông điệp đầu vào đến các giá trị k tương ứng phải được phân biệt về mặt tính toán với chức năng được chọn ngẫu nhiên và thống nhất (từ bộ thông báo đến tập hợp các giá trị k có thể) sẽ trả về . Các tính năng cần đáp ứng như sau:
* Chữ ký phải tương thích hoàn toàn với DSA và ECDSA đơn giản. Các thực thể xác minh chữ ký không cần phải thay đổi hoặc thậm chí nhận thức được quá trình được sử dụng để tạo k.
* Tạo cặp khóa không bị thay đổi. Các khóa riêng hiện có có thể được sử dụng với DSA và ECDSA xác định.
* Sử dụng DSA và ECDSA xác định không yêu cầu lưu trữ hem bất kỳ giá trị bí mật hoặc công khai nào.
* DSA và ECDSA có thể được áp dụng trên cùng các đầu vào như là DSA và ECDSA đơn giản, cụ thể là giá trị băm được tính trên thông điệp sẽ được ký với hàm băm bảo mật bằng mật mã.
Một vài khái niệm liên quan đến ECDSA:
Khóa riêng: Một số bí mật, chỉ được biết đến với người tạo ang. Khóa riêng về cơ bản là một số được tạo ngẫu nhiên.
Khóa chung: Một số tương ứng với khóa riêng, nhưng không cần giữ bí mật. Khóa công khai có thể được tính từ khóa riêng, nhưng không phải ngược lại. Khóa công khai có thể được sử dụng để xác định xem chữ ký có phải là chính ang hay không (nói cách khác, được tạo bằng khóa thích hợp) mà không yêu cầu khóa riêng phải được tiết lộ.
Chữ ký: Một số chứng minh rằng một hoạt động ký kết đã diễn ra. Một chữ ký được tạo ra từ hàm băm cộng với một khóa riêng. Chữ ký chính là hai số được gọi là r và s. Với khóa chung, thuật toán ECDSA được sử dụng trên chữ ký để xác định rằng nó ban đầu được tạo ra từ hàm băm và khóa riêng mà không cần biết khóa riêng. Chữ ký kết quả có độ dài 73, 72 hoặc 71 byte (với xác suất xấp xỉ lần lượt là 25%, 50% và 25% - mặc dù kích thước thậm chí nhỏ hơn mức có thể với xác suất giảm theo cấp số nhân).
Tiêu chuẩn thuật toán tạo chữ ký số
Để ứng dụng thuật toán tạo chữ ký số cần đáp ứng một số yêu cầu sau: Tối ưu thuật toán ký số; tối ưu kích thước dữ liệu (tối ưu các trường dữ liệu trong chứng thư số) được lưu trên thiết bị di động và dữ liệu được truyền trên mạng di động; tối ưu hóa giao thức quản lý chứng thư số; tối ưu lược đồ kiểm tra chứng thư số. Với dịch vụ chứng thực chữ ký số, việc tính toán tạo cặp khóa công khai – bí mật, ký số và xác thực chữ ký số trên thiết bị di động là không thể thiếu.Thuật toán mã hóa khóa công khai dựa vào thuật toán RSA được lựa chọn cho thuật toán ký số. Tuy nhiên, việc tạo cặp khóa dựa trên thuật toán RSA trên thiết bị di động tốn nhiều thời gian hoặc không thể xảy ra do thiếu bộ nhớ và hiệu suất CPU nhỏ. Do đó, cần có một thuật toán phù hợp để tính toán tạo ra cặp khóa sử dụng cho thiết bị được ứng dụng.
Thuật toán ECDSA: Thuật toán tạo chữ ký số này có ưu điểm là kích thước khóa nhỏ dựa vào độ khó của bài toán logarit rời rạc trên đường cong elliptic (ECDLP). ECDSA cần ít thời gian để tạo cặp khóa công khai trong thiết bị di động hơn thuật toán RSA. Vì kích thước khóa ECDSA 256 bit, nhỏ hơn RSA 2048-bit nên kích thước chứng thư số cũng giảm. So với RSA, việc triển khai ECDSA có những hiệu quả sau: ang tốc độ, yêu cầu khả năng tính toán thấp hơn, tiết kiệm bộ nhớ, tiết kiệm ang thông đường truyền, ang hiệu quả lưu trữ, tiết kiệm năng lượng. Như vậy, với ECDSA, độ dài khóa là 256-bit, tương đương với RSA độ dài 2048-bit, tốn ít thời gian hơn để sinh ra cặp khóa công khai trên thiết bị di động so với sử dụng RSA. Hơn nữa, với việc sử dụng khóa ECDSA 256-bit, kích cỡ của chứng thư số cũng được giảm đi.
III. Ứng dụng
Thuật toán Chữ ký số Elliptic Curve (ECDSA), một trong những biến thể của Mã hóa Elliptic Curve (ECC) được đề xuất thay thế cho các hệ thống khóa công khai được thiết lập như Thuật toán Chữ ký số (DSA) và Rivest Shamir Adeld (RSA), gần đây đã đạt được một rất nhiều sự chú ý trong ngành công nghiệp.
Lý do chính cho sự hấp dẫn của ECDSA là do không có thuật toán hàm mũ phụ nào được biết để giải bài toán logarit rời rạc đường ang lip trên đường ang lip được chọn đúng. Do đó, phải mất toàn bộ thời gian theo cấp số mũ để giải quyết trong khi thuật toán tốt nhất được biết để giải quyết hệ số nguyên cơ bản cho RSA và bài toán logarit rời rạc trong DSA đều mất thời gian theo cấp số nhân. Khóa được tạo bởi việc triển khai được bảo mật cao và nó tiêu thụ ang thông ít hơn do kích thước khóa nhỏ được sử dụng bởi các đường ang lip. Các tham số nhỏ hơn đáng kể có thể được sử dụng trong ECDSA so với các hệ thống cạnh tranh khác như RSA và DSA nhưng với mức độ bảo mật tương đương.
Một số lợi ích của việc kích thước khóa nhỏ hơn bao gồm thời gian tính toán nhanh hơn và hiệu quả xử lý tốt hơn, không gian lưu trữ và ang thông. Điều này làm cho ECDSA trở nên lý tưởng cho các môi trường bị hạn chế như máy nhắn tin, máy PDA, điện thoại di động và thẻ thông minh. Những ưu điểm này đặc biệt quan trọng trong các môi trường khác, nơi thiếu sức mạnh xử lý, không gian lưu trữ, ang thông hoặc tiêu thụ điện năng.
Trong Thông tư số 39/2017/TT-BTTTT ngày 15/12/2017 của Bộ trưởng Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp dụng tiêu chuẩn ECDSA - Elliptic Curve Digital Signature Algorithm và được xếp vào nhóm Tiêu chuẩn về an toàn thông tin.
Tài liệu tham khảo
1. http://tools.ietf.org/html/rfc6979
2. http://www.cs.miami.edu/home/burt/learning/Csc609.142/ecdsa-cert.pdf
3. Implementation of Elliptic Curve Digital Signature Algorithm, International Journal of Computer Applications, May 2010.
Nguyễn Thị Thu Trang