CΠ»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΉ ΠΎΡ€Π°ΠΊΡƒΠ» Π½Π° основС Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅

ΠžΡ‚ ΠΈΠ΄Π΅ΠΈ Π΄ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ схСму Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи Π½Π° эллиптичСской ΠΊΡ€ΠΈΠ²ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ, ΠΈ прСдоставляСм Π½Π° Π΅Ρ‘ основС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ получСния провСряСмых Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° псСвдослучайных чисСл.

CΠ»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΉ ΠΎΡ€Π°ΠΊΡƒΠ» Π½Π° основС Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅

ИдСя

ОсСнью 2018 Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅ Waves Π±Ρ‹Π»ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹, Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊ вопрос ΠΎ возмоТности получСния псСвдослучайных чисСл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ.

Ломая Π³ΠΎΠ»ΠΎΠ²Ρƒ Π½Π°Π΄ этим вопросом, ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡˆΡ‘Π» ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ: любой Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ β€” это ΠΊΠ»Π΅Ρ‚ΠΊΠ°, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ источник энтропии Π² Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ΠΎΠΉ систСмС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Но ΠΎΠ΄Π½Π° идСя ΠΌΠ½Π΅ всё ΠΆΠ΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ: Ссли случайный ΠΎΡ€Π°ΠΊΡƒΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ подпись ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ всСгда смоТСт ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ подпись ΠΏΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ. ΠžΡ€Π°ΠΊΡƒΠ» ΠΏΡ€ΠΈ всём ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π½Π΅ Π² силах Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. По сути, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ фиксируСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ Π΅Π³ΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΡ€Π°ΠΊΡƒΠ» Π΅Π³ΠΎ Π½Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π΄ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΡ€Π°ΠΊΡƒΠ»Ρƒ, Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ΠΎΠ³Π΄Π°, Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‚Π°ΠΊΡƒΡŽ подпись ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ источником энтропии для псСвдослучайного числа.

Π’ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Waves ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ схСма подписи EdDSA Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ed25519. Π’ Π΄Π°Π½Π½ΠΎΠΉ схСмС подпись состоит ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ R ΠΈ S, Π³Π΄Π΅ R зависит ΠΎΡ‚ случайного значСния, Π° S вычисляСтся Π½Π° основС подписываСмого сообщСния, Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ случайного числа, Ρ‡Ρ‚ΠΎ ΠΈ R. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠΉ зависимости Π½Π΅Ρ‚, для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ сообщСния сущСствуСт мноТСство Π²Π°Π»ΠΈΠ΄Π½Ρ‹Ρ… подписСй.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² чистом Π²ΠΈΠ΄Π΅ Ρ‚Π°ΠΊΡƒΡŽ подпись Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС источника псСвдослучайных чисСл, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° являСтся Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π° манипуляциям со стороны ΠΎΡ€Π°ΠΊΡƒΠ»Π°.

Но, ΠΊΠ°ΠΊ Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‘ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° самом Π΄Π΅Π»Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ Π½Π°Π΄Π΅ΠΆΠ΄Ρ‹ Ρƒ мСня Π±Ρ‹Π»ΠΈ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌΡƒΡŽ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (VRF), Π½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΠ² ΠΌΠ°Ρ‚Ρ‡Π°ΡΡ‚ΡŒ, ΠΎΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ. Π₯отя VRF ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ подписи ΠΈ Π΅Ρ‘ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°, Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ присутствуСт странноС мСсто, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‡Ρ‘Ρ€Π½ΡƒΡŽ Π΄Ρ‹Ρ€Ρƒ для манипуляций ΠΎΡ€Π°ΠΊΡƒΠ»ΠΎΠΌ. А ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΏΡ€ΠΈ расчётС значСния k (Ρ€Π°Π·Π΄Π΅Π» 5.1) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ остаётся нСизвСстным ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ вычислСния k, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΡ€Π°ΠΊΡƒΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любоС Π½ΡƒΠΆΠ½ΠΎΠ΅ Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ k ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ вСсти Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… соотвСтствий k ΠΈ подписываСмых Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всСгда ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния VRF Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π£Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€ΠΎΠ·Ρ‹Π³Ρ€Ρ‹Ρˆ Π½Π° основС VRF Π±Π΅Π· раскрытия Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡƒΠΌΠ½ΠΈΡ‡Π°Ρ‚ΡŒ: ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡, ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· расчёта k, Ρ‚ΠΎΠ³Π΄Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ автоматичСски сам раскроСтся ΠΏΡ€ΠΈ появлСнии ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΆΠ΅ подписи. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, странная схСма для случайного ΠΎΡ€Π°ΠΊΡƒΠ»Π°.

НСмного поразмыслив ΠΈ Π·Π°Ρ€ΡƒΡ‡ΠΈΠ²ΡˆΠΈΡΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ мСстных Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ², Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ VECRO.

VECRO β€” Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΎΡ‚ Verifiable Elliptic Curve Random Oracle, Ρ‡Ρ‚ΠΎ ΠΏΠΎ-русски ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ провСряСмый случайный ΠΎΡ€Π°ΠΊΡƒΠ» Π½Π° эллиптичСских ΠΊΡ€ΠΈΠ²Ρ‹Ρ….

Всё оказалось довольно просто, для достиТСния дСтСрминированности трСбуСтся Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ R Π΄ΠΎ появлСния подписываСмого сообщСния. Если R зафиксировано ΠΈ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ подписываСмого сообщСния, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ R Π² самом подписываСмом сообщСнии, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ S ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ дСтСрминируСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ сообщСниСм ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Π² качСствС источника для псСвдослучайных чисСл.

Π’ Ρ‚Π°ΠΊΠΎΠΉ схСмС Π½Π΅Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ фиксируСтся R, это остаётся Π² Π·ΠΎΠ½Π΅ отвСтствСнности ΠΎΡ€Π°ΠΊΡƒΠ»Π°. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ S ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ опрСдСляСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π½ΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нСизвСстно ΠΏΠΎΠΊΠ° ΠΎΡ€Π°ΠΊΡƒΠ» Π΅Π³ΠΎ Π½Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚. Всё ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ!

Говоря ΠΎ фиксированном R, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ использованноС R ΠΏΡ€ΠΈ подписи Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сообщСний ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ раскрываСт Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² схСмС EdDSA. Для Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° ΠΎΡ€Π°ΠΊΡƒΠ»Π° становится ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования R для подписи Ρ€Π°Π·Π½Ρ‹Ρ… сообщСний ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… манипуляциях ΠΈΠ»ΠΈ сговорС ΠΎΡ€Π°ΠΊΡƒΠ» всСгда Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΠΈΡΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ своСго Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°.

Π˜Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ€Π°ΠΊΡƒΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, которая фиксируСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ R, ΠΈ подпись, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ S. ΠŸΡ€ΠΈ этом ΠΏΠ°Ρ€Π° R, S являСтся ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ провСряСмой подписью ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ сообщСния содСрТащСго фиксированноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ R ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

МоТно Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ данная схСма для Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° Π½ΠΈΡ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ обычная схСма ΠΊΠΎΠΌΠΌΠΈΡ‚-раскрытиС. По сути, Π΄Π°, это ΠΎΠ½Π°. Но Π΅ΡΡ‚ΡŒ нСсколько нюансов. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΡ€Π°ΠΊΡƒΠ» всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π²ΠΎ всСх опСрациях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°Ρ…. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, сущСствуСт риск ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΎΡ€Π°ΠΊΡƒΠ»ΠΎΠΌ ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ€Π°ΠΊΡƒΠ» позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ρ‚ΠΎΠ³Π΄Π° достаточно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всСго Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ ΠΊΠΎΡˆΠ΅Π»ΡŒΠΊΡƒ. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ провСряСмая Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅ подпись, которая являСтся источником случайности β€” это красиво.

Полгода идСя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π΅ΠΏΠ»ΠΈΠ»Π°ΡΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π΅, ΠΏΠΎΠΊΠ° Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π½Π΅ появилась мотивация Π² Π²ΠΈΠ΄Π΅ Π³Ρ€Π°Π½Ρ‚Π° ΠΎΡ‚ Waves Labs. Π‘ большим Π³Ρ€Π°Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ большая ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π±Ρ‹Ρ‚ΡŒ!

РСализация

Π˜Ρ‚Π°ΠΊ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ VECRO Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅ Waves Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ запрос-ΠΎΡ‚Π²Π΅Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ трансфСра ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ ΠΎΡ€Π°ΠΊΡƒΠ»ΠΎΠΌ. ΠŸΡ€ΠΈ этом Π½Π° Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π΅ ΠΎΡ€Π°ΠΊΡƒΠ»Π° установлСн скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ строго Π² соотвСтствиС с описанной Π²Ρ‹ΡˆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΡ€Π°ΠΊΡƒΠ»Π° проходят ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ с восстановлСниСм всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π°Π½ΠΈΠ·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… Π½Π° ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΡƒΡŽ Π½ΠΈΡ‚ΡŒ, шаг Π·Π° шагом провСряя всС значСния ΠΈ Π½Π΅ оставляя мСста для ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ манипуляций.

Π•Ρ‰Ρ‘ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΎΠΆΠΈΠ»ΠΎΡΡŒ ΠΈ Π±Ρ‹Π»ΠΎ понятнСС. ΠžΡ€Π°ΠΊΡƒΠ» Π½Π΅ просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ схСмС. Π•Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ контролируСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° установлСнным Π½Π°ΠΌΠ΅Ρ€Ρ‚Π²ΠΎ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠΌ. Π¨Π°Π³ Π²Π»Π΅Π²ΠΎ, ΠΈ транзакция просто Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли транзакция ΠΏΠΎΠΏΠ°Π»Π° Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ, Π·Π° Π½Π΅Π³ΠΎ всё ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ сотни ΡƒΠ·Π»ΠΎΠ² сСти.

На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² основной сСти Waves Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΎΠ΄ΠΈΠ½ VECRO (Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ свой, это Π½Π΅ слоТно, просто заглянитС Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ). Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° PHP (Π½Π° WavesKit, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я рассказывал Ρ€Π°Π½Π΅Π΅).

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ сСрвисом ΠΎΡ€Π°ΠΊΡƒΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

  • Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ R;
    • ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 0.005 Waves Π½Π° алиас ΠΎΡ€Π°ΠΊΡƒΠ»Π° init@vecr;
    • ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ R-code Π² ΠΏΠΎΠ»Π΅ attachment Π² трансфСрС 1 R-vecr Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΎΡ‚ ΠΎΡ€Π°ΠΊΡƒΠ»Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ;
  • ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ подпись;
    • ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 0.005 Waves Π½Π° алиас ΠΎΡ€Π°ΠΊΡƒΠ»Π° random@vecr, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠžΠ‘Π―Π—ΠΠ’Π•Π›Π¬ΠΠž ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ attachment ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ R-code ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅;
    • ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ S-code Π² ΠΏΠΎΠ»Π΅ attachment Π² трансфСрС 1 S-vecr Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΎΡ‚ ΠΎΡ€Π°ΠΊΡƒΠ»Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ;
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ S-code Π² качСствС источника псСвдослучайного числа.

ΠΡŽΠ°Π½ΡΡ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΡ€Π°ΠΊΡƒΠ»Ρƒ Waves ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС комиссии для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… 1 Waves;
  • R-code β€” это конкатСнация Π±Π°ΠΉΡ‚Π° символа β€˜R’ ΠΈ 32-Π±Π°ΠΉΡ‚ значСния R Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ base58;
  • R-code Π² attachment Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ΄ΡƒΡ‚ послС R-code;
  • S-code β€” это конкатСнация Π±Π°ΠΉΡ‚Π° символа β€˜S’ ΠΈ 32-Π±Π°ΠΉΡ‚ значСния S Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ base58;
  • S являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ дСлСния ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, поэтому нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ S ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ 256-Π±ΠΈΡ‚Π½ΠΎΠ΅ псСвдослучайноС число (Π΄Π°Π½Π½ΠΎΠ΅ число ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ максимум 252-Π±ΠΈΡ‚Π½Ρ‹ΠΌ псСвдослучайным числом);
  • НаиболСС простой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС псСвдослучайного числа Ρ…ΡΡˆ ΠΎΡ‚ S-code.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ получСния S-code:

Π‘ тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, ΠΎΡ€Π°ΠΊΡƒΠ» ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π³ΠΎΡ‚ΠΎΠ² ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ смСло ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния использования рядовым ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ графичСского интСрфСйса, этого придётся ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ.

Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопросы ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ замСчания, спасибо.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com