CHƯƠNG 2: VÍ ĐIỆN TỬ BLOCKCHAIN
2.3. Thực trạng vấn đề an toàn ví điện tử blockchain
2.3.3. Phân tích kịch bản đa chữ ký
2.3.3.2. Kịch bản chi tiêu giao dịch đa chữ ký
Để tạo giao dịch đa chữ ký, trước tiên cần tạo một giao dịch thô chưa ký có input là đầu ra chưa chi tiêu UTXO trước đó. Giao dịch này sẽ băm 2 lần với hàm băm SHA256 làm đầu vào sử dụng thuật toán chữ ký số ECDSA. Sơ đồ tạo chữ ký được mô tả như hình 2-12.
Unsigned TX
Bản tóm lược
Chữ ký A Khóa bí mật
A
Băm 2 lần SHA256
Hàm tạo chữ ký số ECDSA
Hình 2- 12. Tạo chữ ký cho giao dịch Các bước thực hiện:
1. Unsigned TX sẽ được băm 2 lần với SHA256 tạo ra bản tóm lược làm đầu vào để ký
2. Dùng khóa bí mật của A để ký lên đầu vào bản tóm lược với thuật toán ECDSA.
3. Kết quả sẽ là một giá trị chữ ký của A
Để kiểm tra chữ ký hợp lệ cần lấy Unsigned TX băm 2 lần với SHA256 để tạo ra bản tóm lược. Với giá trị chữ ký A sẽ được giả mã bằng khóa công khai A tạo ra bản tóm lược 1. So sánh hai giá trị này nếu giống nhau thì là chữ ký đúng. Ngược lại, nếu hai giá trị khác nhau nghĩa là chữ ký không đúng. Sơ đồ kiểm tra chữ ký được mô tả như hình 2-13.
Unsigned TX Chữ ký A
Unsigned TX Chữ ký A
Giải mã Băm 2 lần
SHA256
Bản tóm lược Bản tóm lược 1
Khóa công khai A
Giống nhau?
Chữ ký không đúng
Chữ ký đúng
Hình 2- 13. Quá trình kiểm tra chữ ký
Đối với kịch bản yêu cầu nhiều chữ ký, sẽ thực hiện ký lần lượt từng khóa bí mật để có đủ số lượng chữ ký cần dùng. Ví dụ giao dịch đa chữ ký 2 trong 3 chữ ký cần ký 2 lần với 2 khóa bí mật riêng biệt.
Sau khi có đủ số lượng chữ ký sẽ đưa giá trị chữ ký vào kịch bản giao dịch. Như đã nêu ở trên, kịch bản giao dịch gồm kịch bản khóa và kịch bản mở khóa. Ví dụ kịch bản giao dịch đa chữ ký 2 trong 3 khóa như sau:
<sig A><sig C><redeemScript> DUP HASH160 <redeemScript hash>
EQUALVERIFY CHECKMULTILSIG
Để xác thực chữ ký cũng như xác thực kịch bản giao dịch sẽ cần tiến hành thực thi kịch bản để xem quá trình xác thực kịch bản. Quá trình thực thi kịch bản được mô tả như hình 2-14 sau:
<sig A> <sig C> <redeemScript> DUP HASH160 <redeemScript hash> EQUALVERIFY CHECKMULTISIG SCRIPT
<sig A> <sig C> <redeemScript> DUP HASH160 <redeemScript hash> EQUALVERIFY CHECKMULTISIG SCRIPT
<sig A> <sig C> <redeemScript> DUP HASH160 <redeemScript hash> EQUALVERIFY CHECKMULTISIG SCRIPT
<sig A>
<sig C>
CON TRỎ THỰC THI
CON TRỎ THỰC THI
CON TRỎ THỰC THI
Con trỏ thực thi bắt đầu thực thi giá trị <sig A> được đẩy vào ngăn xếp
Tiếp tục thực thi, giá trị <sig C> được đẩy vào đỉnh ngăn xếp, phía trên <sig A>
Tiếp tục thực thi, giá trị <redeemScript> được đẩy vào đỉnh ngăn xếp, phía trên <sig C>
<sig A>
<sig C>
<sig A>
<redeems cript>
<sig A> <sig C> <redeemScript> DUP HASH160 <redeemScript hash> EQUALVERIFY CHECKMULTISIG
CON TRỎ THỰC THI
Toán tử DUP sao chép đối tượng trên cùng của ngăn xếp và đẩy giá trị kết quả vào đỉnh của ngăn xếp
<sig C>
<sig A>
<redeemSc ript>
<redeemSc ript>
<sig A> <sig C> <redeemScript> DUP HASH160 <redeemScript hash> EQUALVERIFY CHECKMULTISIG SCRIPT
CON TRỎ THỰC THI
Toán tử HASH160 băm đối tượng trên đỉnh ngăn xếp bằng hàm
RIPEMD160(SHA256(redeemScript)) và đẩy giá trị <redeemScript hash>
vào ngăn xếp
<sig C>
<sig A>
<redeemSc ript>
<redeemSc ript>
<redeemSc rit hash>
<sig A> <sig C> <redeemScript> DUP HASH160 <redeemScript hash> EQUALVERIFY CHECKMULTISIG SCRIPT
CON TRỎ THỰC THI
Đẩy giá trị <redeemScript hash> từ kịch bản lên trên giá trị
<redeemSript hash>
<sig C>
<sig A>
<redeemsc ript>
<redeemsc ript>
<redeemSc rit hash>
<redeemSc rit hash>
<sig A> <sig C> <redeemScript> DUP HASH160 <redeemScript hash> EQUALVERIFY CHECKMULTISIG SCRIPT
<sig A> <sig C> <redeemScript> DUP HASH160 <redeemScript hash> EQUALVERIFY CHECKMULTISIG SCRIPT
CON TRỎ THỰC THI
CON TRỎ THỰC THI
Toán tử EQUALVERIFY so sánh <redeemScript hash> đang cản trở giao dịch với <redeemScript hash>
được tính ra từ <redeemScript> của người dùng. Nếu khớp, xóa cả hai khỏi ngăn xếp và tiếp tục thực thi
Toán tử CHECKMULTISIG kiểm tra xem chữ ký <sig A><sig C> có khớp với khóa công khai trong redeemScript hay không và đẩy TRUE vào đỉnh ngăn xếp nếu đúng
<sig C>
<sig A>
<redeemS cript>
TRUE
Hình 2- 14. Quá trình thực thi kịch bản