ブロックチェーンセキュリティレポート:
残存メモリデータ
暗号情報がメモリ等に残存する状況について
- 解放された後のヒープ自体。
- 再確保後、より長いヒープに移動した後に残る前のヒープ。
- スワップ領域。
これらの場所に秘密鍵の一部または秘密鍵全体が混入すると、秘密鍵漏洩のリスクがあります。そのため、状況に応じてメモリクリーニングやセキュアアロケータを使用します。メモリクリーニングは、最適化された状態でも内容が消去されるようにコードを挿入します。一方、セキュアアロケータは、内容が確実に消去されるだけでなく、スワップ領域へのオーバーフローを防ぐ機構も備えています。
したがって、SORA-QAIでは、以下のルールでメモリ周りのセキュリティに対応について
I. 秘密鍵を含む場合
この場合、セキュアアロケータを使用します
II. 秘密鍵は含まないが、秘密鍵を推測できる情報を含む場合
この場合、メモリクリーニングを使用します。
III. 秘密鍵を含み、取り出せるように待機させている場合
この場合、メモリロックを使用します。
ステーキングのコンセンサスについて
ステーキングのコンセンサスには、トランザクションに埋め込まれた追加の署名の検証が必要です。この署名を検証する際、署名を行った秘密鍵がアンロックされている必要があります。ステーキングのタイミングは予測できません。ステーキングはタイミングが合い、承認され、初めてブロックに取り込まれる性質があるため、ステーキングに備えるには、ステーキング対象のscriptPubKeyに対応する秘密鍵をアンロックしておく必要があります。そのため、ステーキングによる報酬を得る際には、ウォレットをステーキングのためにアンロックしますよね?ステーキングのためにアンロックしていても、秘密鍵はメモリ内でアンロックされた状態で存在します。そのため、ステーキングに対応するコインは、必要時以外には秘密鍵を読み出せないようにロックすべきです。このため、SORA-QAIでは、まず量子&AI耐性側にメモリロックの機構を設けており、必要時以外はメモリの読み出しができません。今後、ステーキング用に待機している秘密鍵に対してもメモリロックの処理を挿入します。
一方、ステーキングが付属しないマイニング専用のコインは、マイニング時に発生する特殊な「コインベーストランザクション」において署名の検証を必要としないため、メモリロックは必要ありません。これらは秘密鍵を暗号化されたまま運用可能です。
もちろん、ステーキングが付属するコインであっても、秘密鍵をロックしたままマイニングのみを稼働させている場合、ステーキングは発生しませんが、コインベーストランザクションは利用可能なので、メモリロックがなくても、マイニング専用のコインと同じ状態で運用することは可能です。