Zap くださったみなさま、ありがとうございます!⚡
みなさまおつかれさまでした🤙 #nostrstudy
コンピュータの乱数は擬似乱数なので実装がアレだとまずいですね(こちらの理由の方が多そう)。
RSA が 2020 年時点で 829 bit まで解かれていて、 secp256k1 が RSA 3072 bits 相当ということなのでしばらく大丈夫なんではないでしょうか。(量子コンピュータが来るとわかりませんが)
NIP-07 ブラウザ拡張機能 nostr-keyx の v1.4.0 をリリースしました。
- YubiKey 対応.
- NIP-07 を許可する URL 設定を追加
https://github.com/susumuota/nostr-keyx
YubiKey やパスキー認証については、本日開催される Nostr勉強会 #1 (2023/03/10(金) 22:00-) にて「Nostr でパスキー認証」というタイトルで発表予定です。
https://428lab.connpass.com/event/276333/

自分も似たような経験があります。おそらく PONG というゲームかも。
明日の Nostr勉強会 #1 (2023/03/10(金) 22:00-) にて、以下タイトルで発表する予定です。
Nostr でパスキー認証 (NIP-07, nostr-keyx, YubiKey)
https://428lab.connpass.com/event/276333/
もしパスキーに興味がある方がおられましたら、以下のページが参考になるかもしれません(発表内でも簡単に説明します)。
#nostrstudy
存在は認知されている!
> Twitterからの移行先としては、つぶやきを重視する同種ソーシャルメディアとして、「Mastodon(マストドン)」や「Discord」、あるいは「Nostr」「Misskey」、さらには従来プラットフォームとして「mixi」などの名前があがるが、いずれも候補としては3%台にとどまる。
iOS/macOS 用の NIP-07 の Nostore は次のバージョンで Apple keychain に移行する予定だそうです。生体認証も調べているそうです。
昨日学校を休んだ子はバッジのこと知らないかも...
一度ログアウトしてからログインすると出ることもあったりなかったりしますが、結局謎です。
iOS/macOS Safari 用 NIP-07 の Nostore のソースを読んでみた。
- 秘密鍵は平文で browser.storage.local に保存 (nos2xと同じ)
多分 iCloud バックアップで平文のままコピーされると思います。
```
const storage = browser.storage.local;
(中略)
async function savePrivateKey([index, privKey]) {
if (privKey.startsWith('nsec')) {
privKey = nip19.decode(privKey).data;
}
let profiles = await get('profiles');
profiles[index].privKey = privKey;
await storage.set({ profiles });
return true;
}
```
TweetDeck は Adobe Air 版が終わってから使ってないな
自分が理解できた範囲ですが、NIP-07 ではその記事の
- 署名: signEvent (secp.schnorr.sign)
- 鍵共有: nip04.encrypt と nip04.decrypt ( secp.getSharedSecret)
に相当するのかなと思いました(間違っていたらすみません)。
YubiKey 対応出来た。YubuKey 側の OpenPGP の設定はデフォルトのままでいけました。
設定方法は以下です。nostr-keyx をインストールした後、gpg コマンドで Nostr の秘密鍵を暗号化しておく必要があります。
https://github.com/susumuota/nostr-keyx/blob/main/public/macos/yubikey.sh
上記コメントに書いてある設定をした後、ブラウザの nostr-keyx のポップアップの設定で `yubikey` というアカウントを作ってそれを選択しておきます。署名の度に YubiKey がピコピコ光れば OK。
ちなみに gpg を呼び出しているだけなので YubiKey がなくても動きます🤙
問題点は、PIN を入力する UI がまだないので、初回の PIN 入力はターミナルから別途 yubikey.sh を呼び出して一度 PIN を入力しておく必要があります。YubiKey を抜き差ししたり PC をスリープさせたりすると再度 PIN 入力が必要になるので yubikey.sh を実行してください。
上記をすると YubiKey と PIN 入力がないと署名出来ない状態にはなります。
ただし、Node.js のメモリ空間内に秘密鍵が平文で展開されますので Node.js のメモリが覗き見されたらアウトです(OS のキーチェーンを使う場合と同様)。
YubiKey 内で署名までやるというのが一番良いのですが、現状では簡単にやれる方法は見つかりませんでした。おそらく OpenPGP にパッチを当てれば出来るのかもしれません。
YubiKey 対応出来た。YubuKey 側の OpenPGP の設定はデフォルトのままでいけました。
設定方法は以下です。nostr-keyx をインストールした後、gpg コマンドで Nostr の秘密鍵を暗号化しておく必要があります。
https://github.com/susumuota/nostr-keyx/blob/main/public/macos/yubikey.sh
上記コメントに書いてある設定をした後、ブラウザの nostr-keyx のポップアップの設定で `yubikey` というアカウントを作ってそれを選択しておきます。署名の度に YubiKey がピコピコ光れば OK。
ちなみに gpg を呼び出しているだけなので YubiKey がなくても動きます🤙
問題点は、PIN を入力する UI がまだないので、初回の PIN 入力はターミナルから別途 yubikey.sh を呼び出して一度 PIN を入力しておく必要があります。YubiKey を抜き差ししたり PC をスリープさせたりすると再度 PIN 入力が必要になるので yubikey.sh を実行してください。
iOS Safari + Snort + Nostore が結構いい感じだったので Nostore のソースを読んでみる。