BTC
ETH
HTX
SOL
BNB
Xem thị trường
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Sự phát triển của thuật toán Bitcoin thành thuật toán chữ ký Schnorr có phải là một tiến trình không? |

抗量子ABC薄荷社区
特邀专栏作者
2021-01-18 01:30
Bài viết này có khoảng 6490 từ, đọc toàn bộ bài viết mất khoảng 10 phút
Từ quan điểm của mật mã: sử dụng chữ ký Schnorr là một"Cách tiếp cận táo bạo và thiếu thận trọng" đi chệch khỏi bản chất đầu tiên của "an ninh lâu dài".
Tóm tắt AI
Mở rộng
Từ quan điểm của mật mã: sử dụng chữ ký Schnorr là một"Cách tiếp cận táo bạo và thiếu thận trọng" đi chệch khỏi bản chất đầu tiên của "an ninh lâu dài".

Bánh xe lịch sử đang lăn về phía trước và sự tiến bộ của công nghệ chưa bao giờ dừng lại. Một giao thức Bitcoin quan trọng đã bắt đầu nâng cấp công nghệ. Các nâng cấp kỹ thuật trong giao thức của nó, Schnorr Signature (Chữ ký Schnorr) và Taproot (Rễ cái của cây) đã được tích hợp vào phiên bản Bitcoin Core 0.21.0.

Tương lai của Bitcoin dường như tươi sáng hơn bao giờ hết và giờ đây nó có cơ hội vượt qua tất cả các chuỗi khối khác không chỉ bởi năng lực mà còn bởi chức năng của nó.

Khi thuật toán chữ ký đường cong elip Bitcoin ECDSA được sử dụng, quy trình xác minh giao dịch đa chữ ký rất cồng kềnh. Giờ đây, có thể kết hợp tất cả các chữ ký và khóa công khai trong một giao dịch thành một chữ ký và khóa chung duy nhất. Điều gì sẽ xảy ra nếu nó là untraceable và đơn giản và nhanh chóng?

Trên thực tế, trước đó, khi Satoshi Nakamoto thiết kế giao thức Bitcoin, anh ấy cần xem xét nhiều điều kiện khác nhau như độ dài chữ ký của thuật toán chữ ký, liệu đó có phải là mã nguồn mở hay không, liệu nó có bằng sáng chế hay không, liệu nó đã vượt qua xác minh bảo mật trong thời gian dài hay chưa. đủ thời gian, và hiệu suất. Vào thời điểm đó, không chỉ có thuật toán chữ ký số ECDSA có thể đáp ứng các điều kiện trên, mà còn có Schnorr Signature, một thuật toán chữ ký số không thua gì ECDSA về mọi mặt. Tuy nhiên, vì nó đã ở trong tình trạng bảo hộ bằng sáng chế trước năm 2008 nên đây có thể là lý do tại sao Satoshi Nakamoto không sử dụng thuật toán chữ ký này khi thiết kế giao thức Bitcoin mà cuối cùng đã chọn Thuật toán chữ ký số Elliptic Curve (ECDSA). đường cong secp256k1 đã được chọn theo gợi ý của .

Sau 10 năm, vào tháng 7 năm 2018, nhà phát triển Bitcoin Pieter Wuille đã viết bip-schnorr và đề xuất thay đổi thuật toán chữ ký của bitcoin thành schnorr. Mặc dù Schnorr và ECDSA đều là các thuật toán mã hóa đường cong elip sử dụng đường cong secp236k1, nhưng do các ưu điểm của Chữ ký Schnorr trong các đặc điểm mã hóa, sẽ thuận tiện hơn khi xây dựng các giao dịch đa chữ ký trên cơ sở bảo mật gần như giống nhau.

Schnorr được sử dụng trên Bitcoin có thêm một số lợi thế đáng kể so với ECDSA:

  • An toàn hơn: Có thể dễ dàng chứng minh tính bảo mật của chữ ký Schnorr trong mô hình tiên tri ngẫu nhiên, nhưng không có bằng chứng nào như vậy đối với ECDSA.

  • Không có vấn đề về tính linh hoạt: Chữ ký ECDSA có thể linh hoạt, bên thứ ba có thể trực tiếp sửa đổi chữ ký hiện có mà không cần biết khóa riêng và vẫn giữ chữ ký hợp lệ cho giao dịch này. Luôn có một cuộc tấn công vào Bitcoin, điều này không được khắc phục cho đến khi SegWit được kích hoạt, với điều kiện là các giao dịch segwit được sử dụng thay vì các giao dịch truyền thống. BIP62 và BIP66 mô tả điều này một cách chi tiết.

  • Tuyến tính: Thuật toán chữ ký Schnorr là tuyến tính! Dựa trên tính năng này, một hệ thống blockchain riêng tư và hiệu quả hơn có thể được xây dựng. Các bên sử dụng chữ ký Schnorr có thể tạo tập hợp các khóa tương ứng đã ký của họ. Ví dụ: N khóa công khai được sử dụng để ký, nếu ECDSA được sử dụng, sẽ có N chữ ký và việc xác minh cũng cần được thực hiện N lần. Nếu Schnorr được sử dụng, do thuộc tính tuyến tính, chữ ký chồng chất có thể được thực hiện và chỉ chữ ký chồng chất cuối cùng được giữ lại. Ví dụ: bất kể số lượng đầu vào trong cùng một giao dịch, nó có thể được xếp chồng lên một chữ ký và một lần xác minh là đủ.

Thuật toán chữ ký Schnorr vượt trội so với thuật toán chữ ký ECDSA hiện tại của Bitcoin ở hầu hết mọi khía cạnh: hiệu suất, bảo mật, khối lượng, khả năng mở rộng, v.v. và Schnorr Sig có thể sử dụng cùng một đường cong elip như đường cong ECDSA: secp256k1, một thay đổi được nâng cấp rất nhỏ.

Tất nhiên, ngoài thuật toán chữ ký trong giao thức Bitcoin, ngôn ngữ kịch bản Taproot cũng được thiết kế để xác định cách sử dụng Bitcoin. Địa chỉ đa chữ ký bitcoin không cần tiết lộ danh tính "đa chữ ký" của chúng và cũng có thể hỗ trợ một số lượng lớn các kịch bản đa chữ ký (giao dịch trên chuỗi chỉ yêu cầu khóa công khai tổng hợp và chữ ký), giảm số lượng byte giao dịch, đặc biệt đối với các địa chỉ yêu cầu hoạt động với tần suất cao, việc giảm phí giao dịch trên chuỗi có thể tiết kiệm rất nhiều chi phí.
Dưới đây là một số câu hỏi và câu trả lời phổ biến hơn:

Q&A

Hỏi: Có thể sử dụng chữ ký Schnorr cho m trong số n chữ ký đa năng không?

A: Tất nhiên bạn có thể. Multisig chỉ là một mẫu m của n số chữ ký. Bất kể thuật toán chữ ký.

H: Tính năng chữ ký nhóm của Schnorr có thể tạo hoặc mô phỏng m trong số n chữ ký không?

Đáp: Không thể làm được. Nếu có N khóa công khai trong nhóm thì phải có N chữ ký tương ứng, tất cả đều không thể thiếu. Khi mọi người tạo chữ ký, tất cả họ đều thay thế khóa công khai của nhóm P trong hàm băm.

Q: Làm thế nào để đo lường tính bảo mật của cơ chế chữ ký?

Trả lời: Nó chủ yếu phụ thuộc vào hai: 1. Bản thân thuật toán chữ ký 2. Đường cong elip. Hiện tại, cả Schnorr và ECDSA đều sử dụng đường cong secp256k1, có cùng mức. Về tính bảo mật của thuật toán chữ ký, Schnorr hiện có chứng chỉ bảo mật, chứng chỉ này tốt hơn ECDSA.

Triển khai thử nghiệm thuật toán chữ ký Schnorr của BCH

Ngay từ ngày 16 tháng 5 năm 2019, BCH đã bắt đầu nâng cấp hard fork. Nội dung chính của bản nâng cấp là thuật toán chữ ký Schnorr và khôi phục Segregated Witness, chức năng được mong đợi nhất trong bản nâng cấp chữ ký Schnorr và nguyên tắc khôi phục Segregated Witness là công nghệ sửa chữa để lấy lại BCH đã gửi nhầm đến địa chỉ Segregated Witness.

Nhà phát triển Mark Lundeberg Người dùng không phải tạo địa chỉ mới để bắt đầu sử dụng chữ ký Schnorr. Những lợi thế mang lại cho BCH bằng cách nâng cấp này như sau:

  • 1. Cải thiện tính hợp lệ của dữ liệu chữ ký: Vì chữ ký là 64 byte dữ liệu, so với 70 byte thông thường, giao dịch có thể giảm 4% số byte. và băng thông ít nhất 25%, giúp mạng BCH nhanh hơn và hiệu quả hơn). Và sau khi nâng cấp, chữ ký Schnorr mang đến cho BCH khả năng ẩn các kênh thanh toán thông thường.

  • 2. Cải thiện quyền riêng tư: Trước khi nâng cấp, nhiều người dùng cố tình sử dụng nhiều chữ ký để gửi giao dịch nhằm cải thiện quyền riêng tư và chữ ký Schnorr sẽ làm cho tất cả chữ ký của người dùng trông giống như bất kỳ chữ ký nào khác. Cấu trúc này dẫn đến sự gia tăng đáng kể về quyền riêng tư trong giao dịch. Các thuộc tính do Schnorr cung cấp và một số tiện ích mở rộng được thêm bởi các nhà phát triển BCH và nhà cung cấp cơ sở hạ tầng như ví sẽ nâng cao hơn nữa quyền riêng tư và khả năng mở rộng.

  • 3. Chống lại các cuộc tấn công giao dịch rác: Trước đây đã từng xảy ra một cuộc tấn công giao dịch rác. Những kẻ tấn công hy vọng sẽ làm tắc nghẽn Bitcoin thông qua càng nhiều không gian giao dịch càng tốt. Một trong những phương pháp của chúng là thực hiện giao dịch này bằng cách thường xuyên gửi các giao dịch từ nhiều nguồn. bao gồm hàng chục chữ ký, chiếm rất nhiều không gian. Đây là mối nguy hiểm tiềm ẩn do chữ ký ECDSA để lại. Schnorr có thể tránh các cuộc tấn công thư rác như vậy. Nếu mỗi giao dịch chỉ có một chữ ký, thì khối đó có thể chứa nhiều giao dịch hơn và những kẻ gửi thư rác phải gửi nhiều giao dịch hơn nếu họ muốn tạo một cuộc tấn công và cạnh tranh với nhiều người hơn, do đó chi phí cho cuộc tấn công sẽ tương đối cao hơn. Không gian bị chiếm giữ bởi chữ ký thường là phần lớn nhất của giao dịch, vì vậy kẻ tấn công không có lợi thế.

Tất nhiên, chúng ta không thể chỉ nhìn thấy mặt tốt, mọi thứ sẽ thiếu sót, và những điều cực đoan sẽ bị đảo ngược. Đặc biệt, sự phát triển của máy tính lượng tử đã thôi thúc một số người có tầm nhìn phải tìm ra giải pháp càng sớm càng tốt, để đối phó với sự tấn công của máy tính lượng tử vào một số thuật toán, năm 2017, NIST đã bắt đầu quá trình chuẩn hóa hậu mật mã lượng tử. -Đề xuất sơ đồ chữ ký lượng tử, một trong những thuật toán chống lượng tử được hỗ trợ bởi nền tảng mã hóa sau lượng tử và sơ đồ chữ ký chống lượng tử có độ dài chữ ký ngắn nhất-chữ ký Rainbow là hứa hẹn nhất.

Vào tháng 8 năm 2017, Jin Liu và nhà toán học Giáo sư Jintai Ding chuẩn bị thành lập ABCMint và đăng ký tại Encryption Valley gần Zurich, Thụy Sĩ. Chữ ký cơ bản của đồng tiền kỹ thuật số ABC là chữ ký cầu vồng Rainbow. Tầm nhìn của họ là hỗ trợ nghiên cứu và ứng dụng các thuật toán bẻ khóa máy tính chống lượng tử trên toàn cầu. Nghiên cứu bao gồm hỗ trợ các nhà toán học trong việc khám phá, bẻ khóa và cải tiến các thuật toán trên toàn thế giới .Thuật toán được áp dụng cho các loại tiền kỹ thuật số chính thống.

Họ tin rằng đề xuất BIP340 của Bitcoin, sử dụng chữ ký Schnorr từ chữ ký ECDSA đến chữ ký Schnorr, là một sự thụt lùi lớn của Bitcoin. Chúng tôi không lạc quan về việc lựa chọn và cải tiến thuật toán do các chuyên gia bảo mật máy tính đề xuất. Chúng tôi thích lựa chọn và cải tiến thuật toán do các nhà toán học đề xuất. Chữ ký Schnorr có một vấn đề lớn và nó nên được sử dụng trong Litecoin và những thứ tương tự trong một thời gian dài thử nghiệm chạy.

Cách tiếp cận táo bạo và thiếu thận trọng" đi chệch khỏi bản chất đầu tiên của "an ninh lâu dài".
Từ quan điểm của mật mã: sử dụng chữ ký Schnorr là một"Cách tiếp cận táo bạo và thiếu thận trọng" đi chệch khỏi bản chất đầu tiên của "an ninh lâu dài".
Từ góc độ mật mã học, chữ ký Schnorr chủ yếu dành cho đa chữ ký và các kịch bản phù hợp cho đa chữ ký phải là: kịch bản tập trung và cực kỳ quan trọng, và các kịch bản cực kỳ quan trọng của nó tương tự như hàng chục quy trình có thể xác minh được do bom hạt nhân phóng ra. Hay những cánh cổng như Căn cứ vũ khí hạt nhân núi Cheyenne. Nó không phải là một kịch bản phi tập trung hoặc một kịch bản chẳng hạn như việc gửi Bitcoin.

Nói một cách đơn giản: Bản thân việc phân quyền đã khác với đa chữ ký.

Dưới đây là một vài thuật toán đơn giản:

1 Thuật toán Chữ ký số Đường cong Elliptic (ECDSA)

Thuật toán Chữ ký số Đường cong Elliptic (ECDSA, Thuật toán Chữ ký số Đường cong Elliptic) là một mô phỏng của Thuật toán Chữ ký số (DSA) sử dụng Mật mã Đường cong Elliptic (ECC). (Mật mã đường cong Elliptic (ECC) được phát minh bởi Neal Koblitz và Victor Miller vào năm 1985), ECDSA lần đầu tiên được đề xuất bởi Scott và Vanstone vào năm 1992 để đáp ứng yêu cầu của NIST về Tiêu chuẩn chữ ký số (DSS).

Bitcoin hiện đang sử dụng thuật toán chữ ký số đường cong elip ECDSA. Để ký một tin nhắn m, chúng ta cần băm nó và coi hàm băm này là một số: z = hash(m). Chúng tôi cũng cần một số tra cứu ngẫu nhiên hoặc ngẫu nhiên k. Chúng tôi không muốn tin tưởng vào các trình tạo số ngẫu nhiên (có quá nhiều lỗi, nhiều lỗi liên quan đến RGN xấu), vì vậy chúng tôi thường sử dụng RFC6979 và tính toán giá trị K xác định dựa trên bí mật của chúng tôi và thông điệp mà chúng tôi muốn ký.

Sử dụng khóa riêng pk, chúng ta có thể tạo chữ ký cho thông báo m bao gồm hai số: r (tọa độ x của điểm ngẫu nhiên R = k×G) và s = ​​(z+r⋅pk)/k. Sau đó, sử dụng khóa công khai P = pk×G của chúng tôi, bất kỳ ai cũng có thể xác minh chữ ký của chúng tôi bằng cách kiểm tra xem tọa độ x của điểm (z/s)×G+(r/s)×P có bằng r hay không.

Xác minh chữ ký bao gồm phép đảo ngược (1/s) và phép nhân hai điểm và các thao tác này rất tốn kém về mặt tính toán. Trong Bitcoin, mọi nút phải xác minh tất cả các giao dịch. Điều này có nghĩa là khi bạn phát một giao dịch, hàng ngàn máy tính sẽ phải xác minh chữ ký của bạn. Và việc đơn giản hóa quy trình xác minh sẽ rất có lợi, ngay cả khi quy trình ký sẽ khó khăn hơn.

Thứ hai, mỗi nút phải xác minh từng chữ ký riêng lẻ. Nếu đó là nút giao dịch có nhiều chữ ký m-of-n, thì có thể cần phải xác minh cùng một chữ ký nhiều lần. Ví dụ: một giao dịch có đầu vào đa chữ ký 7/11 sẽ chứa 7 chữ ký và yêu cầu xác minh 7-11 chữ ký cho mọi nút trong mạng. Ngoài ra, các giao dịch như vậy chiếm rất nhiều dung lượng và bạn phải trả nhiều tiền cho nó.

chữ ký Schnorr

Thuật toán chữ ký Schnorr được đề xuất bởi nhà toán học và mật mã học người Đức Claus Schnorr. Và đã nộp đơn xin cấp bằng sáng chế vào năm 1990, US Patent 4.995.082, hết hạn vào tháng 2 năm 2008. Thuật toán hiện có sẵn miễn phí.

Chữ ký Schnorr được tạo hơi khác một chút, chúng tôi sử dụng một điểm R và một đại lượng vô hướng s thay vì hai đại lượng vô hướng (r, s). Tương tự như ECDSA, R là một điểm ngẫu nhiên trên đường cong elip (R=K×G). Phần thứ hai của chữ ký được tính hơi khác:

s = k + hash(P,R,m) ⋅ pk. Ở đây pk là khóa riêng của bạn và P = pk×G là khóa chung của bạn và m là thông báo. Chữ ký này sau đó có thể được xác minh bằng cách kiểm tra s×G = R + hash(P,R,m)×P.

  • Phương trình này là tuyến tính, vì vậy các phương trình có thể cộng và trừ lẫn nhau mà vẫn hợp lệ, điều này mang lại cho chúng ta một số lợi ích lớn về chữ ký Schnorr.

3 Xác minh hàng loạt chữ ký Schnorr

Để xác minh một khối trong chuỗi khối Bitcoin, chúng tôi cần đảm bảo rằng tất cả các chữ ký trong khối đều hợp lệ.

Đối với thuật toán chữ ký ECDSA, mỗi chữ ký phải được xác minh riêng lẻ. Nghĩa là, nếu có 1000 chữ ký trong khối, chúng ta cần tính toán 1000 phép nghịch đảo và 2000 phép nhân chấm, với tổng số khoảng 3000 nhiệm vụ tính toán nặng.

Và bằng cách sử dụng chữ ký Schnorr, chúng tôi có thể cộng tất cả các phương trình xác minh chữ ký, tiết kiệm một số năng lực tính toán. Đối với một khối có 1000 chữ ký, chúng tôi cần xác minh:

(s1+s2+…+s1000)×G=(R1+…+R1000)+(hash(P1,R1,m1)×P1+hash(P2,R2,m2)×P2+…+hash(P1000,R1000,m1000)×P1000)

Ở đây chúng tôi có một loạt các bổ sung (gần như miễn phí về sức mạnh tính toán) và phép nhân 1001 điểm. Chúng ta cần tính toán khoảng một phép tính nặng cho mỗi chữ ký.

4 tập hợp khóa cho chữ ký Schnorr

Chúng tôi muốn giữ an toàn cho bitcoin của mình, vì vậy chúng tôi có thể muốn sử dụng ít nhất 2 khóa riêng tư khác nhau để kiểm soát bitcoin của mình. Giả sử một cái ở trên máy tính xách tay hoặc điện thoại và cái kia ở trên ví phần cứng/ví lạnh. Vì vậy, khi một trong số chúng bị xâm phạm, chúng tôi vẫn có thể kiểm soát bitcoin của mình.

Hiện tại, nó thực hiện điều này thông qua tập lệnh đa chữ ký 2 trên 2, yêu cầu phải có hai chữ ký riêng biệt trong giao dịch. Trong khi với chữ ký schnorr, chúng ta có thể sử dụng một cặp khóa riêng (pk1,pk2) và tạo chữ ký dùng chung tương ứng với khóa chung dùng chung P=P1+P2=pk1×G+pk2×G. Để tạo chữ ký này, chúng ta cần chọn một số ngẫu nhiên (k1,k2) trên mỗi thiết bị, tạo một điểm ngẫu nhiên Ri=ki×G, thêm chúng để tính hàm băm công khai (P,R1+R2,m) , sau đó nhận s1 và s2 từ mỗi thiết bị (si = ki + hash(P,R,m) ⋅ pki). Sau đó, chúng ta có thể tính tổng các chữ ký này và sử dụng cặp (R, s) = (R1+R2, s1+s2) làm chữ ký của chúng ta trên khóa chung p. Những người khác không thể biết đó có phải là chữ ký tổng hợp hay không, nó trông giống hệt chữ ký schnorr bình thường.

Có 3 vấn đề với cách xây dựng này, thứ nhất, từ quan điểm giao diện người dùng, để thực hiện giao dịch, chúng ta cần thực hiện nhiều vòng giao tiếp, tính R công khai, sau đó - ký. Với hai khóa riêng tư, điều này có thể được thực hiện với một lần truy cập duy nhất vào ví lạnh: chúng tôi chuẩn bị một giao dịch chưa ký trên ví trực tuyến, chọn k1 và viết ra R1=K1×G cùng với giao dịch chưa ký. Sau đó, chúng tôi chuyển dữ liệu này vào ví lạnh và ký tên. Vì chúng tôi đã có R1, chúng tôi có thể ký các giao dịch trên ví lạnh trong một lần. Từ ví lạnh, chúng tôi nhận được R2 và s2 và chuyển chúng trở lại ví trực tuyến. Ví trực tuyến ký giao dịch với (k1, R1) đã chọn trước đó, kết hợp các chữ ký và phát giao dịch đã ký. Điều này rất giống với vị trí của chúng ta hiện nay, nhưng khi bạn thêm khóa riêng thứ ba, mọi thứ sẽ trở nên phức tạp hơn. Giả sử bạn có một tài sản, được kiểm soát bởi 10 khóa riêng tư, được lưu trữ ở các địa điểm an toàn khác nhau trên khắp thế giới, sau đó, bạn cần thực hiện một giao dịch. Hiện tại, bạn chỉ cần đi qua tất cả các vị trí này một lần, nhưng nếu đang sử dụng tính năng tổng hợp khóa, bạn cần thực hiện hai lần, để tập hợp tất cả các RI, rồi ký. Trong trường hợp này, tốt hơn là giữ các chữ ký riêng lẻ mà không tổng hợp, sau đó chúng ta cần 3 vòng giao tiếp:

  • Chọn một số ki ngẫu nhiên và Ri=ki×G tương ứng và chỉ cho mọi người biết hàm băm ti=hash(Ri) của nó, để mọi người có thể chắc chắn rằng bạn sẽ không thay đổi ý định sau khi biết các số ngẫu nhiên khác;

  • Đặt tất cả các số lại với nhau và tính R chung;

  • dấu hiệu;

Vấn đề thứ hai là các cuộc tấn công khóa độc hại đã biết. Nó được mô tả tốt, cả trong bài báo và bài báo này, vì vậy tôi không muốn đi vào chi tiết. Ý tưởng là nếu một trong các thiết bị của bạn bị tấn công (ví dụ: ví trực tuyến của bạn) và giả mạo khóa công khai của thiết bị đó là (p1-p2), thì thiết bị đó có thể kiểm soát số tiền được chia sẻ bằng khóa riêng pk1. Một giải pháp đơn giản là khi thiết lập thiết bị, khóa chung cần được ký với khóa riêng tương ứng.

Có một câu hỏi quan trọng thứ ba. Nó không thể được ký với k xác định. Có một cách dễ dàng để tấn công, nếu bạn sử dụng K xác định, nó cho phép tin tặc lấy khóa riêng của chúng tôi. Một cuộc tấn công sẽ giống như thế này: Ai đó đã xâm nhập vào máy tính xách tay của chúng tôi và kiểm soát hoàn toàn một trong hai khóa riêng tư (ví dụ: pk1). Chúng tôi có thể cảm thấy an toàn vì bitcoin của chúng tôi yêu cầu chữ ký tổng hợp từ pk1 và pk2. Vì vậy, chúng tôi cố gắng thực hiện giao dịch như bình thường, chuẩn bị một giao dịch chưa ký và giá trị R1, chuyển chúng vào ví phần cứng của chúng tôi và ký vào đó. Sau đó quay lại (r2, s2) và ... đã xảy ra sự cố với ví trực tuyến của chúng tôi, nó không thể ký và phát. Chúng tôi thử lại, nhưng lần này máy tính bị tấn công của chúng tôi sử dụng một giá trị ngẫu nhiên khác là R1'. Chúng tôi ký lại giao dịch tương tự với ví phần cứng của mình và mang giá trị (r2, s2) trở lại máy tính bị tấn công của chúng tôi. Sau đó, một điều tồi tệ đã xảy ra và bitcoin của chúng tôi đã bị mất.

Trong cuộc tấn công này, tin tặc có được một cặp chữ ký hợp lệ cho cùng một giao dịch: (R1, s1, R2, s2) và (R1', s1', R2, s2'), trong đó R2 giống nhau, nhưng R = R1 +R2 và R'=R1'+R2 khác nhau, có nghĩa là tin tặc có thể tính toán khóa riêng thứ hai của chúng ta: s2-s2'=(hash(P,R1+R2,m)-hash(P,R1 '+R2, m))⋅pk2 và pk2=(s2-s2')/(hash(P,R1+R2,m)-hash(P,R1'+R2,m)). Tôi thấy đây là tính năng bất tiện nhất của tổng hợp khóa: chúng tôi cần một trình tạo số ngẫu nhiên tốt ở mọi nơi để sử dụng tổng hợp khóa.

# Rainbow #


Cầu vồng là một sơ đồ chữ ký đa biến có cấu trúc phân lớp dựa trên sơ đồ chữ ký Quả lý gai dầu không cân bằng (UOV). Cấu trúc bổ sung được áp đặt bởi lớp Cầu vồng khiến sơ đồ có nhiều kỹ thuật phân tích mật mã hơn, nhưng làm tăng hiệu quả của sơ đồ. Rainbow cung cấp khả năng ký và xác minh nhanh chóng và chữ ký rất ngắn, nhưng với các khóa công khai rất lớn.
Việc chọn Rainbow làm tăng tính đa dạng của các sơ đồ chữ ký trong danh sách rút gọn; tuy nhiên, do kích thước khóa rất lớn, Rainbow không phù hợp làm thuật toán chữ ký có mục đích chung để thay thế các thuật toán hiện đang xuất hiện trong FIPS 186-4. Đặc biệt, các khóa công khai lớn làm cho chuỗi chứng chỉ trở nên rất lớn. Tuy nhiên, một số ứng dụng không cần gửi khóa thường xuyên. Đối với những ứng dụng như vậy, Rainbow cung cấp chữ ký nhỏ và nhanh.




BCH
BTC
Chương trình tuyển chọn ngôi sao nướng
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Nhóm trò chuyện
https://t.me/Odaily_GoldenApe
Tài khoản chính thức
https://twitter.com/OdailyChina
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk