Develop with pleasure!

福岡でCloudとかBlockchainとか。

ECDSA

GG18/20で発見された脆弱性CVE-2023-33241

GG18のプロトコルについて、ざっと確認したので↓ techmedia-think.hatenablog.com 秘密鍵を抽出できるという脆弱性CVE-2023-33241の内容について見ていく。ペーパーは↓ https://eprint.iacr.org/2023/1234.pdf 攻撃を成功するためには、攻撃者は署名プロセス…

閾値ECDSA署名プロトコルGG18

GG18/GG20の脆弱性CVE-2023-33241が今年の夏くらいに公開されていた模様↓ www.fireblocks.com GG18/GG20は閾値ECDSA署名をサポートするMPCプロトコルで、ブロックチェーン界隈のMPC系のウォレット実装でよく利用されているらしい。CVE-2023-33241は、この2つ…

SafegcdによるECDSA署名検証の高速化

2019年に発表された拡張ユークリッド互除法の新しいアルゴリズムを使った、ECDSA署名の生成/検証の高速化について↓ medium.com libsecp256k1にもマージされたので、どういった内容か見てみる。 ユークリッド互除法 まず基本的なユークリッド互除法について。…

署名データを利用したコミットメントスキームSign to contract

ブロックチェーンでよく使われる技術要素の1つとしてコミットメントスキームが挙げられる。シンプルなコミットメントスキームのユースケースとしては、OpenTimestampなど。BitcoinであればOP_RETURN opcodeを使ってファイルのハッシュを記録することで、そ…

2P-ECDSAを必要とせずHTLCを代替する半Scriptlessプロトコル

LNのマルチホップ決済で使われるHTLCの仕組みを代替する仕組みとしてPoint Time Locked Contracts (PTLCs)が提案されている。 既存のHTLCを使ったマルチホップ決済は、支払い経路で同じハッシュのプリイメージが使われるため、プライバシーの懸念や中間者の…

自称サトシになる方法

最近また自称サトシが登場してるみたいだったので、自称サトシになるために必要なことを調べてみた。 ecdsa - If someone wanted to pretend to be Satoshi by posting a fake signature to defraud people how could they? - Bitcoin Stack Exchange 自称サ…

Bitcoin CoreはなぜECDSA署名にLOW Rを適用するようになったのか?

Bitcoinでは、送金時にトランザクションにセットする署名に、現在ECDSA署名を採用している。 秘密鍵をx、対応する公開鍵をP = xGとした場合、メッセージにmに対するECDSA署名は以下のように作成する。 署名の作成 ランダムな値kを選択する。 点R = kGを計算…

2P-ECDSA: Fungible 2-of-2 MultiSigs for Today's Bitcoin at Scaling Bitcoin 2018

Scaling Bitcoin 2018 復習シリーズ。今回はLightning LabsのConner Fromknechtによる「2P-ECDSA: Fungible 2-of-2 MultiSigs for Today's Bitcoin」の発表↓ youtu.be 書き起こしは↓ scriptless-ecdsa 前半はLindellベースの2者間のECDSA署名プロトコル↓の解…

ECDSAベースのScriptlessな「Multi-Hop Locks」の実現方法

Scaling Bitcoin 2018のセッションの1つでもある、LNなどで利用されているペイメントチャネルネットワークの新しいプリミティブである「Multi-Hop Locks」について、以前一方向準同型関数を使った実装方法について書いたが↓ techmedia-think.hatenablog.com…

ECDSAベースのScriptless Lightning Network

少し時間が空いたけど、Scriptless Scripts with ECDSAのホワイトペーパーについて techmedia-think.hatenablog.com techmedia-think.hatenablog.com と見てきたので、最後のLightning Networkへの適用について見てみる。 Lightning Networkのベースとなるの…

Schnorrの代わりにECDSAを使って実現するTaproot

techmedia-think.hatenablog.com のECDSAの署名スキームを利用すると、 techmedia-think.hatenablog.com コインのアンロック条件が、2-of-2のマルチシグ or その他の条件で構成されるTaprootをSchnorrを使わずにECDSAで実現できるのでは?と思い、プロトコル…

ECDSA版Adaptor Signatureを書いてみた

ECDSA版 Scriptless ScriptsのベースになっているECDSAの署名スキーム techmedia-think.hatenablog.com と、それを利用したマルチシグの実装方法 techmedia-think.hatenablog.com について理解したので、続いてECDSAをベースにしたAdaptor Signatureの作り方…

Bitcoinスクリプトを使わないマルチシグを書いてみた

先日書いたECDSA版Scriptless Scriptsのベースとなっている署名スキームについて↓ techmedia-think.hatenablog.com 実際に2-of-2のマルチシグをScriptless Scriptsで実現するためのRubyのコードを書いてみた(仕組みについては↑の記事参照)。 事前準備とし…

効率的な二者間のECDSAプロトコル

以前、Andrew PoelstraがBitcoinスクリプトを書くことなくスマートコントラクトを実現するScriptless Scriptsについて紹介されていたが、これはいずれもSchnorr署名を必要とする仕組みだった。現在のBitcoinのプロトコルでサポートしているのはECDSAのみであ…

どうしてECDSA署名から公開鍵が復元できるのか?

ECDSAの署名からどうして公開鍵が取得できるの?という聞かれて何でだろうねって話になったので調べてみた。 署名から公開鍵のセットを復元 Rubyではecdsaのgemを使えば以下のように署名と署名対象のメッセージから公開鍵を取得できる。(署名対象のメッセー…

ECDSA署名のエンコーディング関連のmalleabilityを解消するルールを追加するBIP-146

Segwitのトランザクションで署名が入力から分離されたことで、署名スクリプトに細工してtxidを変更することはできなくなったけど、witnessに移動した署名データの改変自体は可能。依然として可能なECDSA署名のエンコーディング関連の改変を解消するためにト…

ECDSAの脆弱性を利用した未承認トランザクションの二重使用を防止する仕組み

Bitcoinのトランザクションは10分に一度作成されるブロックに取り込まれる。最近のメモリプールの状況では10分後に取り込まれればラッキーな方で、まだ時間がかかることもよくあると思う。 その一方でECサイトや実店舗でのBitcoin決済の導入は進んでいる。リ…

署名に厳密なDERエンコーディングを適用したBIP-066

techmedia-think.hatenablog.com でECDSAの署名データの改竄に遭遇したのもあり、関連して現在のBitcoinプロトコルに適用されている署名のエンコーディングルールについて定義したBIP-066の内容もおさえておく。 bips/bip-0066.mediawiki at master · bitcoi…