-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance: 署名アルゴリズムの変更 / 鍵のサイズの変更 (Change of signature algorithm/cryptographic key size) #11129
Comments
RSA 2048bitにするか |
とりあえずここを書き換えると新規ユーザーだけ2048bitにできますが、私の見た限りでは、鍵の長さが違うユーザーが混在していても特に問題なく動くみたいです。
|
ECDSA (NIST P-256) とEdDSAなら後者の方が高速かと思ったけどそうでもない? |
とりあえず新規ユーザーだけでも2048bitにしとくか |
せっかく変えるならnistp256かed25519にしてほしい感ある |
が大変そう |
セキュリティ強度が128bitの暗号でも2050年末には置き換える必要がありますが、25年以上先のことなので今から移行するなら全く問題ないと思います。なので、RSAのままにするにしても、2030年末には置き換えることになるRSA-2048にするのではなく、RSA-3072にする方が良いと思いますし、少なくともRSA-4096よりはパフォーマンスが向上するはずです。 |
正しい https://datatracker.ietf.org/doc/draft-ietf-httpbis-message-signatures の実装が先かも ちなみにマストドンはrsa-256とhs2019だけをサポートしてる |
既にリプライがありますが、 |
up (ioの配送が大変) |
→ https://datatracker.ietf.org/doc/rfc9421/ になった HTTPシグネチャで複数の方式で署名できるのはいいとして、"https://www.w3.org/ns/activitystreams" / "https://w3id.org/security/v1" においてユーザーの公開鍵を複数(種類)含めることはできないような…(そういう運用は想定されてないか) |
「publicKeyには今まで通りのRSA4096公開鍵」「拡張したプロパティ( |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
nodeinfoに解釈できる署名関数の種類が入っていてそれに基づいて署名を渡すのが望ましい? |
名称はともかく多分そんな感じ
「署名を渡す」がなんなのかわからないけど、Activityに署名する際に、相手が何を解釈出来るか (例えばnodeinfo等で) 提供する必要があるわね。 |
= ヘッダのSignatureを作る |
実データで検証したのがあったのだわ 用語 考察 どのアルゴリズムがいい? ECDSA vs EdDSA |
上記検証コード あと、現状の |
Summary
配送ジョブにおける署名処理が重いので、暗号鍵の方式を変更して軽くしたい。
Details
Misskeyの鍵長がRSA4096bitと、MastodonのRSA2048bitとくらべセキュリティの高い設定になっているため、連合におけるノートの配送のボトルネックとなっている署名処理の計算コストが(7倍程度)大きい。
RSA2048bitで妥協するか、ECDSAやEdDSAなどの安全性を保ちつつ効率の良い署名アルゴリズムを使うことで、計算の負荷を減少させることができる。ECDSAやEdDSAを使うことにする場合、既存のサーバーは対応していないので、ユーザーの鍵はRSAとECDSAの保存しておいて、連合先サーバーとのネゴシエーションによって、渡す公開鍵を決める必要があると思われる。
参考までに各アルゴリズムのOpenSSLによる速度測定例を置いておきます。
(AMD EPYC 7B12: 1CPU当たりの性能)
Additional Info
署名用の暗号鍵はアカウント作成時に生成され、サーバー内に保管される。既存のユーザーの鍵を更新する場合、すべての連合先(一度だけメンションを送ったサーバーなども含む)に新しい鍵になったことを伝えるメッセージを、古い鍵で署名して伝える必要がある。実用的には、古い鍵を破棄せず、新しい鍵と両方持っておく必要があると思われる。
The text was updated successfully, but these errors were encountered: