SorachanCoin

AI-NFT

ウォレット内部にあるECDSA鍵をSchnorr署名集約クラスのXOnlyPubKeysにpushしていくだけで検証できるようになりました。本実装ではY座標偶数の制約はありませんので、ECDSAの代わりにSchnorr署名を使うことができます。

この方向性で、75個のECDSA鍵を集約して実稼働できる見通しが立ちました。Y座標偶数の制約がないため、ウォレット内部から自由に選んでpushして集約することができます。便利です。
AI-NFT

効率的なマルチシグ: 鍵の集約、便利です。お試しの100個の鍵によるECDSA-Schnorr署名マルチシグであっても瞬時に生成です。そこで、マルチシグの集約をサポートするためOP_CHECKSIGADDは不要で、この集約で常に署名するOP_CHECKSIGAGGを新規で投入します。

100個の鍵によるマルチシグ。非線形性のECDSAでは100個の公開鍵と署名が必要になるため、そのサイズは約10KBになります。サイズが大きくなるのに加え、OP_CHECKSIG同等の処理が100回必要となるため、検証側の負担が大きくなりま...
AI-NFT

最終考察(その7)の前に……「Schnorr署名」が完成しました。BIP340にある公開鍵Y座標に対する制約解除(ウォレット内部の鍵を制限なくそのまま利用可能)、nonceは乱数、Verifyは完全一致(X座標だけではなくY座標も一致)、集約により100個のマルチシグであっても公開鍵32バイト固定、署名64バイト固定になります。

OpenSSLとlibsecp256k1で検証を重ねていた「Schnorr署名」が完成しました。テストも、計算上も問題ありません。これで自信を持って実装できます。魅力的なのは、集約により100個のマルチシグであっても公開鍵32バイト固定、署...
bitcoin-SignatureHash

コールドウォレットに手を出すようなハッカーに対抗にするには、コインの送付過程について、論理的に詳しくみていく必要があります。

コールドウォレットに手を出すようなハッカーに対抗にするには、コインの送付過程について、論理的に詳しくみていく必要があります。そこでわかりやすい例を用いて工夫してみます。1, アドレスアドレスとは「ここにコインを送ってください」と、相手に渡す...
bitcoin-SignatureHash

ここで、コイン流出を深く考察(その1)です。コールドウォレットはネットワークに接続されていないから絶対に安心という概念はなく、コールドでもネットワークに接続されています。

コールドウォレットは物理的にウォレットをネットワークから外しているため、どうやってもアクセスする方法はなく絶対に安心という概念がありますが、それは違います。ブロックチェーンの仕組み上、コールドウォレットでもネットワークに接続されています。表...
AI-NFT

[libsecp256k1で確認完了] invert(e) * privの場所です。オーバーフローが原因だったため、格納できない分をあらかじめ引き、差を取ってから、引いた分を戻す(加える)操作で確認完了です。

libsecp256k1で動かない理由がオーバーフローにある点を突き止めました。どうやら位数だとオーバーフローする仕様で、その位数から1を引いた数は格納できる内容でした。まさか、楕円曲線の定数がオーバフローするとは考えておらず、overfl...
AI-NFT

negの一部はOpenSSLで確実を取りました。そこは引くだけなので、使い方が違うのかな。

schnorr署名の導入のうち、eに対するnegの過程で、libsecp256k1のnegが上手く作用しないため、暫定的な処置としてその部分だけOpenSSLで代用する内容となりました。計算の内容はシンプルで、単に値を入れてnegしてから加...
AI-NFT

決まった数(定数)に対するnegなので、直接、バイナリで操作することで引くことにしました。

昨日の続きです。libsecp256k1のnegが期待通りに作用しないため、BIGNUMに変換後、OpenSSLの関数で引いて、その結果をbe32でlibsecp256k1のスカラーに戻す手法があります。ただ、これはちょっと厳しいため、直接...
AI-NFT

あと少し。公開鍵の偶奇を問わずSignとVerifyの動作確認が取れたOpenSSLによるschnorr署名を、libsecp256k1で動かせれば完了です。ただ、一部のnegで苦戦中です。

今日もタイトル通りです。OpenSSLで動作の確認が取れたのですが、これをlibsecp256k1で動かせるかどうか、です。ただ一か所、negが思った通りに動かず、引くことができない状況です。OpenSSLでは正常動作しているため、書いた実...
AI-NFT

検証中のschnorr署名で、Rの計算手法を少し変え、X座標とY座標の両方一致(つまり点の一致)で有効とする方法の確認が取れました。

検証中のschnorr署名で、Rの計算手法を少し変え、X座標とY座標の両方一致(つまり点の一致)で有効とする方法の確認が取れました。X座標の一致でも十分な気はしますが、Y座標まで検証可能なら、これで楕円曲線の点を完全に捉えてた形で、署名の有...
AI-NFT

schnorr署名、検証を完了しました。そこで、実装に手を加えて再検証です。Rを利用する計算手法の部分です。

やはりschnorr署名では、署名の際に無作為に決めたRのY座標が偶数で、そのX座標がハッシュから得たX座標と等しくなるという性質でした。そこで、Rを利用する計算手法を少し変えると、X座標とY座標の両方が一致する場合もあり、今、その両方が一...
AI-NFT

ブロックチェーンに最適化されたschnorr署名について、検証を完了しました。まずOpenSSLでschnorrを再現し、署名&検証をじっくり検証しました。そして、公開鍵のY座標が偶数という点が大事でした。

題名の通りで、うまくいきました。OpenSSLでschnorr署名の細部を再現し、検証と同時に内部の構造等も掌握しました。検証プロセスが安定しない症状が出たので、調べていたらBIP-340に当たりました。公開鍵のY座標に、偶数という制限があ...
AI-NFT

公開鍵は32バイトでX座標のみ、そして署名は64バイトの固定長になってました。

schnorr署名の検証作業、順調で、本日完了の見通しです。実際のロジックをOpenSSL等で実際に組んでみて、その署名までの流れをみております。 公開鍵は32バイトでX座標のみ、そして署名は64バイトの固定長になってました。そこでちょっと...
blockchain-report

ブロックチェーンセキュリティレポート:標準トランザクションと非標準トランザクション

ブロックチェーンセキュリティレポートについて:標準トランザクションと非標準トランザクションブロックチェーンのスクリプトには、標準トランザクションと非標準トランザクションがあります。これらは、scriptSig、scriptPubKey、また...
blockchain-report

ブロックチェーンセキュリティレポート:残存メモリデータ

暗号情報がメモリ等に残存する状況について解放された後のヒープ自体再確保後、より長いヒープに移動した後に残る前のヒープスワップ領域これらの場所に秘密鍵の一部または秘密鍵全体が混入すると、秘密鍵漏洩のリスクがあります。そのため、状況に応じてメモ...