9f
9fe72c76
9fe72c76ced19360f2e62d89b8b54f80fdea877a1f334b58b1e4bdf1e3a5f902

Test 06 もしこのノート読めてたらふぁぼってくれると嬉しいです。

うーん。少なくとも署名は正しくできていると思う。

あれ、やっぱり通らないかな

お、Shnorr署名が通るようになった

普段は深夜まで働いているので数学っぽいことする余力が残らないです

I have been fine and just was busy for my work recently. Thanks.

個人のお勉強としては乱数とハッシュ計算の部分はBIP340の実相を使って満足しないといけないね。でないといくらでも時間がかかる。次のこと勉強したいし。

ゼロ知識署名の原理から、乱数やハッシュ生成が適当でもとりあえず署名はできてしまう。署名時の乱数生成の拙さやハッシュ関数の不連続性に課題がある場合、それは常に指摘されなければならない。つまりゼロ知識署名のソースコードは常にオープンソースである必要がある。バックドアの無い健全な運営のためにはオープンソースであることが本質的に重要である。

Bitcoinとか金融取引の署名は暗号が強力であると同時に1msecでも早く、1バイトでも容量節約するように心血が注がれている。tweaksの塊で私みたいな素人がコード読んでも見落としてることいっぱいある。

付け焼き刃のお勉強じゃ太刀打ちできないわ…。

乱数生成で楕円曲線上に均等に分布するような工夫したり、ハッキングに備えてメモリ内に秘密鍵を推測できてしまうような余計な情報が残らないようにアルゴリズム組んだり…奥が深いのね。暗号技術って…。

楕円曲線暗号の部分抑えておけばあとはコーディングするだけだと思ってたけど、割と難しい。BIP340の部分…。

https://bips.xyz/340

ビットコインの署名、楕円曲線の部分より乱数とハッシュ生成のほうがはるかに難しい。

Nostr 辞めました

こんにちは!Nostr 始めてみました!

これ私には残念ながら役にも立たないけど、数学とプログラミングに興味ある学生さんや、暗号技術学んでいる人たちにとって物凄くいい練習問題になる気がする。

Nostr のNoteをSchnorr署名するまでに必要な事項、進捗状況。

- [x] 素数 p を法とする多倍超整数の四則演算

- [x] 乗法逆元の高速演算 ☆

- [x] 多倍長整数の累乗の高速演算 ☆

- [x] 平方剰余を高速計算する方法実装 (secp256k1限定)☆

- [x] 楕円曲線secp256k1 上の加法群演算の実装

- [ ] secp256k1 のスカラー倍を高速に計算する方法 O(n*long(n)) ☆

- [ ] キーペア生成実装

- [x] Nostr のNoteシリアライゼーション

- [ ] Pubkeyの圧縮形式から楕円曲線上の座標を復元する

- [ ] Noteに対するSchnorr 署名

- [ ] Schnorr署名の検証

ぐらいできればようやくNostrのNoteに署名できそう。☆印がSchnorr署名を現実的な計算コストで実装するために本質的に重要な箇所。

楕円曲線上の有理点の部分集合が件の加法演算に対して有限群を成すような条件っていままでどうやって見つけてたんだろうな…。不思議でならない。宇宙人が教えてくれたのかな…。

予備知識ないから魔法みたいに見えちゃうんだよね。もう少しこのへん眺める。とりあえず面白くはある。