上級者用語を調べる
セッションキーとは
- 執筆
- CRYPTO PORT 編集部
- 公開日
- 更新日
- 読了目安
- 5 分
結論
セッションキーは、権限と期限を限定した一時的な署名鍵です。ゲームのように操作が連続する場面で、毎回の承認を省くために使われます。便利な一方、発行した時点でその範囲の操作は自動で通るため、範囲設定を誤ると気付かないうちに資産が動きます。
要点
- 権限と有効期限を絞った一時的な署名鍵
- 連続操作のたびの承認を省ける
- 範囲内の操作は確認なしで実行される
- 範囲の広い鍵はメイン鍵と同等の危険を持つ
定義
対象コントラクト・呼び出せる関数・上限額・有効期限などを限定したうえで、メインの鍵とは別に発行する署名用の鍵。コントラクト型アカウントで用いられる。
オンチェーンのゲームや取引アプリでは、操作のたびにウォレットの確認画面が出ると使い物になりません。かといって無条件に署名を委ねるわけにもいきません。そこで、できることを絞った鍵を一時的に発行し、その範囲内でだけ自動署名させる方法が使われます。
絞り方は複数の軸があります。呼び出せるコントラクトのアドレス、使える関数、1回あたりや合計の上限額、有効期限などです。これらが狭いほど、鍵が漏れたときの被害は限定されます。逆に「このコントラクトの全関数を無期限で」といった設定は、実質的にメイン鍵を渡すのと変わりません。
発行する行為そのものが署名であることも押さえておく必要があります。発行時の署名画面には、どのコントラクトに、どの範囲の権限を、いつまで与えるかが書かれています。ここを読まずに承認すると、その後の資産移動は一切確認なしに進みます。
注意点
- · 発行時の署名は資産を動かす許可の付与そのもの。範囲と期限を必ず読む
- · 上限額や期限の指定がない発行依頼は、その場で拒否する
- · 使い終わったセッションキーは、期限を待たずに失効させる