ECDSA là gì?
ECDSA là viết tắt của Elliptic Curve Digital Signature Algorithm (Thuật toán chữ ký số đường cong elliptic).Đây là thuật toán mật mã khóa công khai dùng để tạo và xác minh chữ ký số bằng toán học đường cong elliptic.Ví tiền mã hóa sử dụng ECDSA để chứng minh giao dịch được chủ sở hữu một khóa riêng tư cụ thể cho phép.Khóa riêng tư tạo chữ ký, trong khi khóa công khai tương ứng cho phép các node blockchain xác minh chữ ký đó.Không cần tiết lộ khóa riêng tư trong quá trình xác minh.Chữ ký ECDSA hợp lệ cũng cho thấy dữ liệu giao dịch đã ký không bị thay đổi kể từ khi chữ ký được tạo.Tiêu chuẩn chữ ký số của NIST hiện hành có đưa ECDSA vào danh sách kỹ thuật chữ ký số được phê duyệt cho các ứng dụng mật mã liên bang được hỗ trợ.
ECDSA là một thuật toán, không phải blockchain, ví, tiền mã hóa, phương pháp mã hóa hay đường cong elliptic.Một bản triển khai hoàn chỉnh còn cần đường cong được chọn, tham số miền, hàm băm, phương thức tạo khóa riêng tư, định dạng chữ ký và quy tắc định dạng thông điệp.Tại sao tiền mã hóa sử dụng ECDSA?
Mạng tiền mã hóa phi tập trung phải xác minh quyền cho phép sử dụng tài sản mà không phụ thuộc vào một cơ sở dữ liệu tài khoản tập trung.ECDSA cho phép mỗi người dùng kiểm soát tài khoản hoặc đầu ra có thể sử dụng thông qua khóa riêng tư bí mật.Khi muốn chuyển tài sản crypto, ví tạo giao dịch và ký dữ liệu giao dịch cần thiết.Những người tham gia mạng khác xác minh chữ ký bằng khóa công khai và các quy tắc xác thực của giao thức.Theo các giả định hiện tại về máy tính cổ điển, việc giả mạo chữ ký được tạo đúng cách là cực kỳ khó nếu không có khóa riêng tư.Điều này cho phép node blockchain từ chối giao dịch trái phép, đồng thời giúp giao dịch hợp lệ lưu chuyển trên mạng công khai.So với một số hệ thống khóa công khai cũ hơn có mức bảo mật cổ điển tương đương, ECDSA cũng tạo ra khóa và chữ ký tương đối gọn.Chữ ký gọn rất quan trọng vì mỗi byte bổ sung có thể làm tăng băng thông mạng, dung lượng lưu trữ blockchain và chi phí giao dịch.ECDSA là thuật toán chữ ký, không phải mã hóa
ECDSA chứng minh quyền cho phép và tính toàn vẹn của thông điệp, nhưng không che giấu dữ liệu đã ký.Phần lớn giao dịch tiền mã hóa công khai vẫn hiển thị với người tham gia blockchain dù có chữ ký ECDSA.Chữ ký không mã hóa địa chỉ đích, số lượng tài sản được chuyển, phí giao dịch hay chỉ thị hợp đồng thông minh.Mã hóa biến thông tin có thể đọc thành bản mã cần có khóa giải mã để đọc lại.Ngược lại, ECDSA tạo ra bằng chứng toán học cho thấy khóa riêng tư đã cho phép một thông điệp cụ thể.Muốn có quyền riêng tư cần sử dụng kỹ thuật mật mã, thiết kế giao thức hoặc biện pháp kiểm soát ứng dụng riêng.Nền tảng đường cong elliptic
ECDSA hoạt động trong một nhóm toán học được hình thành từ các điểm trên đường cong elliptic trong một trường hữu hạn.Một dạng đường cong thường được sử dụng viết là
Điểm sinh thường được ký hiệu là
Cấp của điểm sinh thường được ký hiệu là
Khuyến nghị của NIST về tham số miền đường cong elliptic ghi lại các đường cong được phê duyệt cho những ứng dụng thuộc phạm vi tiêu chuẩn đó.
Khóa riêng tư và khóa công khai
Khóa riêng tư ECDSA là một số nguyên bí mật, thường được ký hiệu là
Giá trị này phải được chọn trong phạm vi hợp lệ từ 1 đến
Mối quan hệ này thường được viết là
Việc tính
Với đường cong an toàn và khóa được tạo đúng cách, người ta cho rằng việc khôi phục
secp256k1 là gì?
secp256k1 là đường cong elliptic gắn liền với ECDSA trong tiền mã hóa nhiều nhất.Đường cong này được dùng cho chữ ký giao dịch Bitcoin truyền thống và chữ ký của tài khoản sở hữu bên ngoài trên Ethereum.Phương trình đường cong là
Dự án libsecp256k1 được duy trì cung cấp các hàm tối ưu hóa để ký, xác minh ECDSA, tạo khóa, phân tích và khôi phục khóa công khai cho secp256k1.
Cách tạo chữ ký ECDSA
Quá trình ký bắt đầu với khóa riêng tư, thông điệp, hàm băm mật mã và các tham số đường cong đã chọn.Thông điệp được xử lý theo chính xác quy tắc tuần tự hóa của giao thức tiền mã hóa.Thông điệp đã tuần tự hóa được băm để tạo ra digest, thường ký hiệu là
Người ký chọn một giá trị bí mật dùng cho mỗi chữ ký, thường gọi là nonce và ký hiệu là
Người ký tính điểm trên đường cong
Giá trị chữ ký thứ nhất,
Nếu
Giá trị chữ ký thứ hai được tính theo công thức
Nếu
Chữ ký ECDSA thu được là cặp
Cách xác minh chữ ký ECDSA
Bên xác minh bắt đầu với thông điệp, chữ ký, khóa công khai, tham số đường cong và quy tắc băm cần thiết.Bên xác minh từ chối chữ ký nếu
Bên xác minh tính
Sau đó, tính
Bên xác minh tính điểm trên đường cong
Chữ ký không hợp lệ nếu
Chữ ký hợp lệ khi tọa độ x của
Chữ ký ECDSA chứng minh điều gì?
Chữ ký ECDSA hợp lệ chứng minh rằng người kiểm soát khóa riêng tư tương ứng đã ký dữ liệu được chỉ định.Chữ ký cũng cho phép bên xác minh phát hiện thay đổi trong thông điệp đã ký.Bản thân chữ ký không chứng minh danh tính pháp lý của người ký.Khóa công khai chỉ được liên kết với một cá nhân hoặc tổ chức thông qua bằng chứng, đăng ký, trao đổi thông tin hoặc lịch sử giao dịch bổ sung.Chữ ký tạo bằng khóa riêng tư bị đánh cắp không thể phân biệt về mặt toán học với chữ ký do chủ sở hữu ban đầu tạo ra.Node blockchain xác minh mật mã, chứ không quyết định người ký có hành động tự nguyện hay không.Người dùng ký một giao dịch độc hại vẫn tạo ra chữ ký hợp lệ.Vai trò then chốt của nonce ECDSA
Nonce ký
ECDSA xác định
ECDSA xác định tạo nonce ký từ khóa riêng tư và digest của thông điệp, thay vì yêu cầu một giá trị ngẫu nhiên mới cho mỗi chữ ký.Quy trình ký xác định RFC 6979 quy định một phương pháp được sử dụng rộng rãi dựa trên cấu trúc hàm băm có khóa.
Thông thường, cùng một khóa riêng tư và thông điệp sẽ tạo ra cùng nonce và chữ ký theo cùng một quy trình xác định.Điều này giảm sự phụ thuộc vào chất lượng của một bộ tạo số ngẫu nhiên riêng trong mỗi lần ký.Ký xác định không khiến việc tạo khóa riêng tư yếu trở nên an toàn.Khóa riêng tư ban đầu vẫn cần entropy mạnh.Bản triển khai xác định cũng phải chống lại tấn công thời gian, tấn công gây lỗi, rò rỉ bộ nhớ và xử lý thông điệp sai.Một số bản triển khai bổ sung yếu tố ngẫu nhiên vào quá trình tạo nonce xác định để phòng vệ trước một số điều kiện gây lỗi hoặc kênh kề được chọn.Tại sao việc băm quan trọng?
ECDSA thường ký một digest mật mã thay vì trực tiếp xử lý thông điệp có kích thước tùy ý.Giao thức blockchain xác định chính xác các trường giao dịch được đưa vào và cách tuần tự hóa trước khi băm.Thay đổi một trường đã ký sẽ tạo ra digest khác và làm chữ ký cũ mất hiệu lực.Các loại tiền mã hóa khác nhau có thể sử dụng hàm băm và quy tắc cam kết giao dịch khác nhau dù dùng cùng đường cong ECDSA.Do đó, cùng một thông điệp dễ đọc có thể tạo ra chữ ký khác nhau trong các ứng dụng khác nhau.Nhà phát triển không nên tự tạo quy tắc tuần tự hóa không chính thức vì cách mã hóa mơ hồ có thể khiến hai hệ thống diễn giải cùng một chuỗi byte theo cách khác nhau.Giao thức an toàn cũng sử dụng phân tách miền để ngăn chữ ký tạo cho mục đích này được dùng để cho phép một mục đích khác.Mã hóa chữ ký ECDSA
Về mặt toán học, chữ ký ECDSA gồm hai số nguyên là
Các hệ thống tiền mã hóa khác sử dụng định dạng gọn có độ dài cố định, gồm 32 byte cho
Bitcoin và ECDSA
Bitcoin theo truyền thống sử dụng ECDSA trên secp256k1 để cho phép sử dụng nhiều đầu ra giao dịch.Ví ký một digest riêng cho giao dịch, được xác định theo các quy tắc script và chữ ký-hash áp dụng.Node Bitcoin xác minh khóa công khai, chữ ký, điều kiện script và mọi yêu cầu đồng thuận khác.Bản thân chữ ký không chứng minh đầu vào có đủ giá trị hoặc giao dịch đáp ứng mọi quy tắc giao thức.Đặc tả BIP 66 của Bitcoin đưa mã hóa DER nghiêm ngặt thành yêu cầu đồng thuận đối với chữ ký ECDSA được các thao tác script thuộc phạm vi quy định kiểm tra.
Thay đổi này giảm khác biệt giữa các trình phân tích và ngăn hành vi đồng thuận phụ thuộc vào quy tắc phân tích thay đổi của bên thứ ba.Đường ký mới của Taproot trên Bitcoin sử dụng chữ ký Schnorr theo BIP 340 thay vì ECDSA.Các loại đầu ra truyền thống dựa trên ECDSA vẫn tồn tại và có thể tiếp tục được sử dụng.Tại sao việc phân tích chữ ký nghiêm ngặt lại quan trọng?
Phần mềm đồng thuận không chỉ phải thống nhất về phương trình chữ ký mà còn phải thống nhất chuỗi byte nào được xem là chữ ký hợp lệ.Nếu một node chấp nhận cách mã hóa bất thường còn node khác từ chối, các node có thể bất đồng về tính hợp lệ của giao dịch hoặc block.Sự bất đồng này có thể khiến các node có cách nhìn khác nhau về blockchain.Phân tích nghiêm ngặt loại bỏ các cách mã hóa thay thế biểu diễn cùng giá trị toán học.Bản triển khai tiền mã hóa cần quy định chính xác dấu số nguyên, số 0 ở đầu, độ dài, phạm vi và dữ liệu ở cuối.Mật mã học quan trọng đối với đồng thuận đòi hỏi sự thống nhất ở cấp byte giữa các phiên bản phần mềm và ngôn ngữ lập trình.Ethereum và ECDSA
Tài khoản sở hữu bên ngoài của Ethereum sử dụng ECDSA trên secp256k1 để cho phép giao dịch.Người gửi ký digest giao dịch chứa các trường như nonce, địa chỉ đích, giá trị, dữ liệu, thông số phí và loại giao dịch.Chữ ký Ethereum có các giá trị
Các mô tả cũ thường gọi giá trị khôi phục là
Thay đổi giao thức EIP-2 từ chối chữ ký giao dịch thông thường có giá trị
Chống phát lại trên Ethereum
Chữ ký hợp lệ có thể trở nên nguy hiểm nếu cùng một giao dịch đã ký được chấp nhận trong nhiều môi trường blockchain.Thiết kế chống phát lại EIP-155 của Ethereum đưa mã định danh chuỗi vào quy trình ký giao dịch.
Điều này ràng buộc quyền cho phép với một ngữ cảnh chuỗi cụ thể.Các giao dịch Ethereum có kiểu mới cũng cam kết với kiểu giao dịch và các trường riêng của chuỗi.Ứng dụng yêu cầu chữ ký off-chain vẫn cần có phân tách miền, nonce, quy tắc hết hạn và mã định danh hợp đồng riêng.Không nên xem chữ ký ECDSA hợp lệ là an toàn nếu chưa hiểu chính xác thông điệp và miền mà chữ ký đó bao phủ.Khôi phục khóa công khai
Xác minh ECDSA tiêu chuẩn giả định bên xác minh đã biết khóa công khai.ECDSA có thể khôi phục bổ sung một lượng nhỏ thông tin giúp xác định khóa công khai gắn với chữ ký và thông điệp.Có thể có nhiều điểm trên đường cong thỏa mãn một phần phương trình chữ ký, vì vậy mã định danh khôi phục cho biết điểm ứng viên dự kiến.Tính năng này có thể giảm nhu cầu truyền toàn bộ khóa công khai trong một số định dạng giao dịch.Khôi phục khóa công khai không tiết lộ khóa riêng tư.Mô-đun khôi phục tùy chọn trong libsecp256k1 hỗ trợ chữ ký secp256k1 có thể khôi phục cho các ứng dụng phù hợp.
Ứng dụng vẫn phải xác thực khóa được khôi phục, phạm vi chữ ký, định dạng thông điệp và miền.Tính linh hoạt của chữ ký ECDSA
ECDSA có một dạng tính linh hoạt chữ ký vốn có về mặt toán học.Nếu
Giao thức giảm vấn đề này bằng cách chỉ chấp nhận một dạng chuẩn tắc, thường là chữ ký có giá trị
Chữ ký low-S
Quy tắc low-
Nếu người ký tính ra giá trị cao hơn, có thể thay bằng
Phần mềm Bitcoin thường tạo chữ ký ECDSA đã chuẩn hóa low-
ECDSA và chữ ký Schnorr
ECDSA và Schnorr là hai thuật toán chữ ký khác nhau có thể sử dụng cùng đường cong elliptic secp256k1.Chữ ký Schnorr có cấu trúc tuyến tính đơn giản hơn, hỗ trợ các phương pháp tổng hợp và đa chữ ký hiệu quả.ECDSA cơ bản không có cùng tính chất tổng hợp tuyến tính rõ ràng như vậy.Đặc tả BIP 340 của Bitcoin quy định chữ ký Schnorr secp256k1 có độ dài cố định 64 byte.
BIP 340 cũng giải thích tính linh hoạt vốn có của ECDSA và các giả định bảo mật phức tạp hơn được sử dụng trong phân tích ECDSA chính thức.Việc đưa Schnorr vào sử dụng không có nghĩa chữ ký ECDSA hiện có mất hiệu lực hoặc có thể bị giả mạo trên thực tế.Schnorr cung cấp một thiết kế chữ ký khác với các đặc tính hữu ích cho tính năng giao thức mới.ECDSA và EdDSA
EdDSA là một họ thuật toán chữ ký riêng dựa trên toán học đường cong Edwards.Ed25519 là một dạng EdDSA phổ biến.EdDSA được thiết kế với mục tiêu quan trọng là ký xác định và đơn giản hóa hành vi triển khai.Không thể dùng khóa Ed25519 làm khóa ECDSA secp256k1 nếu không có thiết kế chuyển đổi riêng; chuyển đổi tùy tiện là không an toàn.Kích thước chữ ký, định dạng khóa công khai, phép tính đường cong, quy trình băm và quy tắc xác thực đều khác nhau.Hệ thống hỗ trợ cả hai thuật toán phải xác định rõ sơ đồ nào áp dụng cho từng khóa và chữ ký.ECDSA và chữ ký BLS
Chữ ký BLS sử dụng đường cong elliptic hỗ trợ pairing và có các đặc tính toán học khác với ECDSA.Với các quy tắc bảo mật xác định, BLS có thể hỗ trợ tổng hợp gọn nhiều chữ ký.Validator Ethereum dùng chữ ký BLS cho nhiệm vụ đồng thuận Proof of Stake, trong khi tài khoản sở hữu bên ngoài thông thường của Ethereum dùng ECDSA secp256k1.Do đó, khóa validator không thể thay thế cho khóa tài khoản thực thi.Tổng hợp BLS có thể giảm lượng dữ liệu khi nhiều người tham gia ký các thông điệp liên quan, nhưng đòi hỏi phép toán pairing và yêu cầu xác thực khác.ECDSA và ví đa chữ ký
Script blockchain có thể yêu cầu nhiều chữ ký ECDSA riêng biệt trước khi tài sản được sử dụng.Đây là thiết kế đa chữ ký truyền thống vì mỗi bên ký bắt buộc tạo một chữ ký riêng.ECDSA ngưỡng sử dụng một giao thức tương tác phức tạp hơn, trong đó nhiều bên cùng tạo một chữ ký ECDSA thông thường.Nếu hoạt động đúng, không bên nào cần khôi phục toàn bộ khóa riêng tư.ECDSA ngưỡng khó thiết kế vì các bên phải phối hợp tạo nonce và chống lại hành vi độc hại.Giao thức ngưỡng có lỗi có thể làm lộ khóa riêng tư dùng chung ngay cả khi thuật toán ECDSA cơ bản an toàn.Hệ thống triển khai thực tế nên sử dụng giao thức được đánh giá kỹ thay vì tự tạo phương trình ký đa bên.Ví phần cứng và ECDSA
Ví phần cứng có thể tạo và lưu trữ khóa riêng tư ECDSA trong một thiết bị chuyên dụng.Thiết bị tiếp nhận dữ liệu giao dịch, hiển thị thông tin có thể xem và tạo chữ ký bên trong sau khi người dùng phê duyệt.Khóa riêng tư được thiết kế để nằm trong môi trường được bảo vệ.Việc cách ly này giảm mức độ tiếp xúc trực tiếp với phần mềm độc hại trên điện thoại hoặc máy tính kết nối.Ví phần cứng không thể khiến giao dịch độc hại trở nên an toàn nếu người dùng phê duyệt thông tin gây hiểu lầm.Việc hiển thị giao dịch an toàn, tính toàn vẹn của firmware, bảo vệ cụm từ khôi phục và an ninh chuỗi cung ứng vẫn thiết yếu.Khả năng chống kênh kề và chống lỗi cũng rất quan trọng vì phép đo vật lý hoặc lỗi được cố ý tạo ra có thể làm lộ giá trị ký bí mật.Tấn công kênh kề
Tấn công kênh kề trích xuất thông tin từ hoạt động vật lý của bản triển khai ECDSA.Tín hiệu có thể gồm thời gian thực thi, mức tiêu thụ điện năng, bức xạ điện từ, truy cập bộ nhớ đệm và mẫu truy cập bộ nhớ.Nhánh lệnh hoặc tra cứu bảng phụ thuộc vào giá trị bí mật có thể làm lộ thông tin về khóa riêng tư hoặc nonce.Bản triển khai thời gian cố định cố gắng khiến mẫu hoạt động có thể quan sát không phụ thuộc vào giá trị bí mật.Dự án libsecp256k1 hiện tại ghi nhận hành vi thời gian cố định và truy cập bộ nhớ cố định khi ký và tạo khóa công khai.Mã thời gian cố định giảm các rủi ro quan trọng nhưng không xử lý mọi cuộc tấn công vật lý, trình biên dịch, phần cứng hoặc hệ điều hành.Tấn công gây lỗi
Tấn công gây lỗi cố ý tạo lỗi trong lúc thiết bị tạo chữ ký ECDSA.Kẻ tấn công có thể tác động đến điện áp, thời gian xung nhịp, nhiệt độ, bộ nhớ hoặc luồng tính toán.Trong một số bản triển khai, chữ ký lỗi có thể tiết lộ đủ thông tin toán học để khôi phục khóa riêng tư.Thiết bị ký bảo mật cao có thể tự xác minh chữ ký vừa tạo trước khi xuất chữ ký ra ngoài.Thiết bị cũng có thể sử dụng phép tính dư thừa, cảm biến phát hiện lỗi, chip gia cố và thông báo lỗi bị hạn chế.Luôn nên xem việc thiết bị ký bị chiếm quyền vật lý là một sự kiện bảo mật đáng kể.Khóa công khai và điểm đường cong không hợp lệ
Bên xác minh ECDSA không nên chấp nhận mù quáng mọi chuỗi byte làm khóa công khai.Bản triển khai có thể cần xác nhận định dạng hợp lệ và điểm nằm trên đường cong dự kiến.Bản triển khai nên từ chối điểm vô cực và thực hiện mọi bước kiểm tra nhóm con cần thiết.Sử dụng điểm không hợp lệ do kẻ tấn công kiểm soát trong các phép toán với khóa bí mật có thể tạo điều kiện cho tấn công đường cong không hợp lệ hoặc nhóm con nhỏ.Yêu cầu xác thực chính xác phụ thuộc vào đường cong, giao thức và phép toán.Thư viện mật mã đã được đánh giá xử lý các chi tiết này an toàn hơn bản triển khai tùy tiện.Tạo khóa riêng tư
Khóa riêng tư ECDSA phải được tạo từ nguồn entropy an toàn về mặt mật mã.Cụm từ do con người tự chọn, ngày sinh, câu trích dẫn, chữ số lặp và hàm tạo số ngẫu nhiên thông thường đều không an toàn.Khóa cũng phải nằm trong phạm vi vô hướng hợp lệ của đường cong đã chọn.Giá trị trông như có độ dài 256 bit không tự động trở thành khóa riêng tư được tạo an toàn.Ví thường suy ra nhiều khóa ECDSA từ seed chính thông qua quy trình suy dẫn phân cấp xác định.Bất kỳ ai có được seed chính có thể tái tạo mọi tài khoản được suy dẫn.ECSDA không thể bù đắp cho cụm từ khôi phục bị lộ hoặc có thể dự đoán.ECDSA và địa chỉ ví
Khóa công khai không phải lúc nào cũng giống địa chỉ tiền mã hóa.Địa chỉ Bitcoin thường mã hóa một hash hoặc điều kiện script liên quan đến thông tin khóa công khai.Địa chỉ Ethereum được suy ra từ một phần hash của khóa công khai secp256k1 không nén.Định dạng địa chỉ có thể bổ sung mã nhận diện mạng và thông tin phát hiện lỗi.Ví có thể hiển thị nhiều địa chỉ được suy ra từ một seed chính thông qua các đường dẫn suy dẫn khác nhau.Không nên giả định biết địa chỉ sẽ làm lộ toàn bộ khóa công khai trong mọi trạng thái của giao thức.Ngay cả khi biết khóa công khai, việc khôi phục khóa riêng tư bằng máy tính cổ điển vẫn không khả thi nếu khóa và đường cong an toàn.Ký giao dịch và ký thông điệp
Chữ ký giao dịch cho phép thực hiện một hoạt động blockchain theo quy tắc của giao thức.Chữ ký thông điệp có thể chứng minh quyền kiểm soát khóa mà không trực tiếp gửi giao dịch blockchain.Yêu cầu đăng nhập ví, phê duyệt token, lệnh, bỏ phiếu quản trị và thông điệp permit đều có thể sử dụng chữ ký ECDSA.Chữ ký off-chain vẫn có thể cho phép thực hiện hành động có giá trị khi hợp đồng thông minh hoặc dịch vụ gửi chữ ký đó lên sau này.Yêu cầu được mô tả là đăng nhập có thể nguy hiểm nếu dữ liệu thực tế được ký cấp quyền chuyển tài sản.Khi có thể, ví nên hiển thị miền ký, hợp đồng, chuỗi, nonce, thời hạn và hành động bằng ngôn ngữ dễ hiểu.Người dùng nên từ chối chữ ký có dữ liệu không giải thích được hoặc quyền hạn ngoài dự kiến.Tấn công phát lại
Tấn công phát lại sử dụng lại chữ ký hợp lệ trong một ngữ cảnh khác mà người ký không định áp dụng.Kẻ tấn công không giả mạo chữ ký.Kẻ tấn công lợi dụng việc ràng buộc thông điệp chưa đầy đủ.Thông điệp ký an toàn có các giá trị như mã định danh chuỗi, nonce tài khoản, địa chỉ hợp đồng, miền ứng dụng, loại hoạt động và thời hạn.Nonce dùng một lần ngăn việc sử dụng lặp lại cùng một quyền cho phép trong một ứng dụng.Nhà phát triển nên xác minh nonce chỉ được tiêu thụ sau khi hành động được cho phép thực hiện thành công.Lỗi triển khai
Lỗi ECDSA thường xuất phát từ sai sót trong triển khai hoặc quản lý khóa chứ không phải do trực tiếp giải được bài toán logarit rời rạc trên đường cong elliptic.Các lỗi phổ biến gồm tái sử dụng nonce, số ngẫu nhiên bị lệch, chấp nhận khóa không hợp lệ, băm sai, tuần tự hóa mơ hồ, thiếu kiểm tra phạm vi và phân tích chữ ký không an toàn.Các lỗi khác gồm kênh kề, tấn công gây lỗi, nhật ký gỡ lỗi bị lộ, thành phần phụ thuộc bị xâm phạm và bộ nhớ bị rò rỉ.Nhà phát triển nên sử dụng thư viện được duy trì, kiểm thử rộng rãi và có mô hình bảo mật rõ ràng.Cần đánh giá mã mật mã riêng với mã ứng dụng thông thường vì sai sót nhỏ có thể khiến toàn bộ tài sản được bảo vệ bởi khóa bị lộ.Tại sao tự viết mã ECDSA lại nguy hiểm?
Các công thức ECDSA có vẻ đủ đơn giản để viết thành một chương trình ngắn.Bảo mật trong môi trường thực tế đòi hỏi nhiều hơn việc tái tạo công thức ký và xác minh.Bản triển khai phải thực hiện phép toán vô hướng thời gian cố định, phép nghịch đảo an toàn, phép rút gọn modulo chính xác, phân tích nghiêm ngặt, xác thực điểm và xử lý bộ nhớ an toàn.Bản triển khai cũng phải xử lý đúng các trường hợp hiếm như giá trị bằng 0 và điểm không hợp lệ.Chương trình vượt qua một số kiểm thử chữ ký thông thường vẫn có thể làm lộ khóa riêng tư qua thời gian thực thi hoặc nonce bị lệch.Nhà phát triển nên dùng thư viện đã được công nhận và vector kiểm thử chính thức thay vì chỉnh sửa mã hướng dẫn cho hoạt động lưu ký tiền mã hóa.Mức độ bảo mật của ECDSA
Độ bảo mật của ECDSA phụ thuộc vào độ mạnh của đường cong, hàm băm, entropy khóa riêng tư, việc tạo nonce và bản triển khai.Đường cong elliptic 256 bit an toàn thường tương ứng với khoảng 128 bit bảo mật cổ điển.Điều này không có nghĩa kẻ tấn công có xác suất 1/128 đoán đúng khóa.Con số này mô tả mức công việc tính toán gần đúng theo các mô hình tấn công liên quan.Hàm băm cũng phải có khả năng chống va chạm và chống tìm tiền ảnh phù hợp với mục tiêu bảo mật của giao thức.Kiểm soát vận hành yếu có thể làm giảm mức bảo mật thực tế xuống thấp hơn nhiều so với mức toán học.ECDSA và máy tính lượng tử
ECDSA không được xem là an toàn trước một máy tính lượng tử chịu lỗi đủ mạnh.Thuật toán Shor có thể giải bài toán logarit rời rạc trên đường cong elliptic và khôi phục khóa riêng tư từ khóa công khai.Hiện chưa có máy tính lượng tử nào được công bố có thể phá ECDSA secp256k1 đầy đủ ở quy mô tiền mã hóa thực tế.Hệ thống blockchain có vòng đời dài vẫn cần kế hoạch chuyển đổi vì nâng cấp giao thức, thay đổi ví và di chuyển tài sản không hoạt động có thể mất nhiều năm.Nếu phần cứng lượng tử có ý nghĩa về mặt mật mã được phát triển, khóa công khai đã lộ trên chuỗi có thể trở thành mục tiêu ưu tiên cao hơn.Nên thận trọng với các tuyên bố không có căn cứ cho rằng ECDSA hiện đã bị phá vỡ.Các lựa chọn chữ ký hậu lượng tử
Chữ ký số hậu lượng tử dựa trên các bài toán toán học được cho là có thể chống lại cả máy tính cổ điển lẫn máy tính lượng tử quy mô lớn.NIST đã hoàn tất FIPS 204 cho ML-DSA và FIPS 205 cho SLH-DSA vào tháng 8 năm 2024.
Các hệ thống chữ ký này có kích thước khóa, kích thước chữ ký, chi phí tính toán và yêu cầu triển khai khác ECDSA.Thay ECDSA trên blockchain không đơn giản như thay một thư viện ví.Quá trình chuyển đổi có thể ảnh hưởng đến định dạng địa chỉ, kích thước giao dịch, ví phần cứng, hợp đồng thông minh, xác thực mạng, khôi phục tài khoản và tài sản không hoạt động.Một số giao thức có thể dùng cơ chế cho phép kết hợp trong giai đoạn chuyển đổi, yêu cầu cả chữ ký ECDSA hiện có và chữ ký hậu lượng tử.Cách nhà phát triển sử dụng ECDSA an toàn
Nhà phát triển nên dùng chính xác đường cong, hàm băm, định dạng thông điệp và cách mã hóa chữ ký mà giao thức mục tiêu yêu cầu.Khóa riêng tư phải được tạo hoặc suy dẫn bằng quy trình an toàn về mặt mật mã.Nonce ký nên dùng phương pháp xác định đã được đánh giá hoặc thiết kế tạo số ngẫu nhiên an toàn với mức bảo vệ tương đương.Thư viện cần thực hiện phân tích chữ ký nghiêm ngặt, kiểm tra phạm vi vô hướng, xác thực khóa công khai và chuẩn hóa theo yêu cầu của giao thức.Phép toán với khóa bí mật cần sử dụng bản triển khai thời gian cố định.Ứng dụng phải có phân tách miền, chống phát lại, hiển thị giao dịch rõ ràng và quản lý nonce phù hợp.Bộ kiểm thử cần bao gồm chữ ký không hợp lệ, dạng high-
Cách người dùng crypto bảo vệ khóa ECDSA
Người dùng nên tạo ví bằng phần mềm uy tín hoặc thiết bị ký chuyên dụng.Cụm từ khôi phục và khóa riêng tư phải được giữ offline, tuyệt đối không chia sẻ với nhân viên hỗ trợ hoặc website.Cần kiểm tra chi tiết giao dịch trên màn hình đáng tin cậy trước khi ký.Người dùng nên xác minh địa chỉ nhận, mạng, số tiền, phí, hợp đồng và phạm vi quyền hạn.Tài sản giá trị cao có thể được bảo vệ bằng chính sách đa chữ ký, bản sao lưu phân tán, cách ly phần cứng và ví chi tiêu riêng biệt.Không nên nhập một cụm từ khôi phục vào những ứng dụng không cần thiết.Trong nhiều hệ thống blockchain, chữ ký hợp lệ là bằng chứng cho phép không thể đảo ngược, vì vậy phòng ngừa đáng tin cậy hơn khôi phục.Các lỗi thường gặp với ECDSA
Một lỗi phổ biến là cho rằng ECDSA mã hóa giao dịch tiền mã hóa.Lỗi khác là xem khóa công khai luôn giống hệt địa chỉ ví.Lỗi thứ ba là tái sử dụng cùng nonce ký cho hai thông điệp.Lỗi thứ tư là tạo khóa riêng tư hoặc nonce bằng hàm tạo số ngẫu nhiên thông thường.Lỗi thứ năm là chấp nhận chữ ký không chuẩn tắc hoặc sai định dạng mà không phân tích nghiêm ngặt.Lỗi thứ sáu là quên rằng cả
Câu hỏi thường gặp
ECDSA là viết tắt của cụm từ nào?
ECDSA là viết tắt của Elliptic Curve Digital Signature Algorithm (Thuật toán chữ ký số đường cong elliptic).ECDSA được sử dụng để làm gì trong tiền mã hóa?
ECDSA được sử dụng để tạo và xác minh chữ ký cho phép giao dịch blockchain và các hành động khác của ví.ECDSA có mã hóa giao dịch không?
Không. ECDSA chứng minh quyền cho phép và tính toàn vẹn, nhưng không che giấu dữ liệu thông thường trên blockchain công khai.Khóa riêng tư ECDSA là gì?
Đó là số nguyên bí mật dùng để tạo chữ ký và suy ra khóa công khai tương ứng.Khóa công khai ECDSA là gì?
Đó là một điểm trên đường cong elliptic được suy ra từ khóa riêng tư và dùng để xác minh chữ ký.Bitcoin sử dụng đường cong nào cho ECDSA?
Bitcoin sử dụng đường cong elliptic secp256k1 cho các chữ ký giao dịch ECDSA truyền thống.Ethereum sử dụng đường cong nào cho chữ ký tài khoản?
Tài khoản sở hữu bên ngoài của Ethereum sử dụng ECDSA trên secp256k1.r và s trong ECDSA là gì?
Đây là hai thành phần số nguyên của chữ ký ECDSA.Nonce ECDSA là gì?
Đó là vô hướng bí mật được dùng cho từng chữ ký trong quá trình tạo chữ ký.Tại sao không bao giờ được tái sử dụng nonce ECDSA?
Tái sử dụng nonce cho các thông điệp khác nhau có thể cho phép người quan sát tính ra khóa riêng tư.ECDSA xác định là gì?
Đây là phương pháp ký suy ra nonce từ khóa riêng tư và digest thông điệp thông qua quy trình xác định như RFC 6979.ECDSA xác định có loại bỏ nhu cầu sử dụng số ngẫu nhiên không?
Không. Khóa riêng tư ban đầu vẫn cần entropy mạnh và bản triển khai vẫn phải được bảo vệ khỏi lỗi cũng như tấn công kênh kề.Tính linh hoạt của chữ ký ECDSA là gì?
Đó là đặc tính cho phép cả
Chữ ký low-s là gì?
Đó là chữ ký ECDSA chuẩn tắc có giá trị
Mã hóa DER là gì?
DER là định dạng mã hóa nhị phân có cấu trúc, thường dùng để biểu diễn hai số nguyên
Chữ ký ECDSA có thể làm lộ khóa riêng tư không?
Chữ ký tạo đúng cách không nên làm lộ khóa, nhưng tái sử dụng nonce, nonce bị lệch, tấn công kênh kề và lỗi triển khai có thể khiến khóa bị lộ.ECDSA có thể khôi phục khóa riêng tư bị mất không?
Không. Chữ ký và khóa công khai không cung cấp phương pháp thực tế để khôi phục khóa riêng tư bị mất nếu khóa được tạo an toàn.Có thể giả mạo chữ ký ECDSA không?
Việc giả mạo được xem là không khả thi về mặt tính toán nếu sử dụng tham số, khóa, nonce, hàm băm và bản triển khai an toàn.ECDSA có giống ECC không?
Không. ECC là họ mật mã đường cong elliptic nói chung, còn ECDSA là một thuật toán chữ ký số thuộc họ này.ECDSA có giống Schnorr không?
Không. Đây là hai thuật toán chữ ký khác nhau ngay cả khi cả hai cùng hoạt động trên secp256k1.Taproot có sử dụng ECDSA không?
Đường chữ ký mới của Taproot sử dụng chữ ký Schnorr BIP 340 thay vì ECDSA.Hợp đồng thông minh có thể xác minh chữ ký ECDSA không?
Có. Nhiều môi trường blockchain cung cấp thao tác gốc hoặc thư viện để xác minh chữ ký ECDSA secp256k1.Chữ ký ECDSA hợp lệ có chứng minh danh tính pháp lý không?
Không. Chữ ký chứng minh quyền kiểm soát khóa riêng tư, trừ khi có bằng chứng riêng liên kết khóa đó với danh tính pháp lý.Chữ ký hợp lệ có đảm bảo giao dịch an toàn không?
Không. Người dùng có thể ký hợp lệ một giao dịch chuyển tiền độc hại, quyền phê duyệt không giới hạn, lệnh gây hiểu lầm hoặc thao tác hợp đồng thông minh không an toàn.Máy tính lượng tử có thể phá ECDSA không?
Một máy tính lượng tử chịu lỗi đủ mạnh có thể phá ECDSA, nhưng hiện chưa có hệ thống nào được công bố có thể làm điều đó ở quy mô tiền mã hóa.ECDSA hiện vẫn an toàn không?
ECDSA được triển khai đúng cách, với khóa và nonce an toàn, vẫn chống được các cuộc tấn công thực tế đã biết bằng máy tính cổ điển.Kết luận
ECDSA là thuật toán chữ ký số nền tảng được dùng để cho phép giao dịch tiền mã hóa mà không tiết lộ khóa riêng tư.Thuật toán kết hợp vô hướng riêng tư, khóa công khai trên đường cong elliptic, digest thông điệp và nonce ký bí mật để tạo ra các giá trị chữ ký
Mã hóa nghiêm ngặt, quy tắc low-
Có thể bạn cũng thích
ZK-Rollup
ZK-Rollup-as-a-Service
zk-SNARK
HOT
Tiền mã hoá thịnh hành hiện nay đang thu hút sự chú ý đáng kể của thị trường
TOP KL
Tiền mã hoá có khối lượng giao dịch cao nhất
Mới được thêm vào
Tiền mã hoá được niêm yết gần đây có thể giao dịch

