開発・設計者向け / 第12章 鍵の強さと確率

ページ 5 / 7

第12章セキュリティ

約5分で読む

鍵の強さと確率

「入口が誰にでも見えているなら、中にも入られてしまうの?」

入口への到達と鍵の確認を分け、推測されにくい鍵でも残るリスクを見てみましょう。

  1. 01思い込み

    入口が見えている!

    接続できるだけ

    誰でもここまで来られるなら、中も見られるの?

  2. 02予想外

    鍵が合わなかった

    照合は別

    入口には届いても、鍵が合わなければ開かないんだ。

  3. 03理由

    組み合わせが膨大

    推測を難しく

    長くランダムな鍵ほど、当てずっぽうで探すのが難しいね。

  4. 04捉え直し

    強さと漏洩は別

    漏洩は別に備える

    入口が見えるだけでは入れない。でも鍵が漏れたら失効と交換だ。

この章の合言葉

推測されにくい鍵を使う。漏れた鍵は失効・交換する。

※強い鍵は推測への備えです。公開された入口の安全性は、TLS・権限・脆弱性・漏洩への対策も合わせて判断します。

読みはじめる

接続できることと、操作できることはどう違うのか

クラウドのデータベースには、公開エンドポイントで接続できるものがあります。『そんな場所に会社のデータを置いて大丈夫?』という不安はもっともです。でも実は、扉の前まで誰でも来られることと、扉が開くことは、まったく別の話です。

長くランダムな鍵は推測への備えになります。ただし、漏洩・権限の渡しすぎ・実装の弱点は別の問題です。まず仮定を置いて推測の確率を考え、更新や失効の方針は資格情報の用途ごとに整理します。

接続はできても、照合で止まる

TLS で接続し、強い鍵を提示鍵を提示鍵を照合照合照合 OK の相手だけ中へ中へ通すデータを返す応答接続自体はできる(入口は公開)扉の前まで来る鍵を当てずっぽうで提示当てずっぽう照合失敗 — 中の様子は何も分からない門前払い失敗を繰り返す相手を絞る試行を制限
正規のアプリ強い鍵を持つ
公開の受付クラウド DB の入口
データベース守られる中身
攻撃者当てずっぽうの接続

各ステップ・参加者・分岐をクリックすると、その仕組みの説明がここに表示されます。

この図をテキストで読む

シーケンス図「“当てずっぽうの接続”に何が起きるか」。参加者4人、ステップ8個。 【参加者】(左から右) - 正規のアプリ: 強い鍵を持つ - 公開の受付: クラウド DB の入口 - データベース: 守られる中身 - 攻撃者: 当てずっぽうの接続 【流れ】(上から下へ) ── ① 正規のアプリの接続 ── 1. 正規のアプリ → 公開の受付: TLS で接続し、強い鍵を提示 2. 公開の受付(自身で処理): 鍵を照合 3. 公開の受付 → データベース: 照合 OK の相手だけ中へ 4. 公開の受付 → 正規のアプリ: データを返す(応答) ── ② 当てずっぽうの接続 ── 5. 攻撃者 → 公開の受付: 接続自体はできる(入口は公開) 6. 攻撃者 → 公開の受付: 鍵を当てずっぽうで提示 7. 公開の受付 → 攻撃者: 照合失敗 — 中の様子は何も分からない(応答) 8. 公開の受付(自身で処理): 失敗を繰り返す相手を絞る

正規の接続と当てずっぽうの接続をなぞって、壁がどこにあるかを確かめます。

鍵の推測を、明示した仮定で計算する

1 万通り
すぐ数え切れる
試行制限が重要
回数制限(3 回でロック)
1000 万通り
買い続ければ積み上がる
(比較のための物差し)
仮定:10の36乗通り
約119.6bit
鍵の強さそのもの+試行制限
空間はそのまま
等確率の鍵を仮定
空間が広すぎて“みんなで引いても”埋まらない

各セルをクリックすると、その意味や詳しい説明がここに表示されます。

この図をテキストで読む

比較表。3列 × 4行。 【列】 1. 組み合わせの数(空間の広さ) 2. 当たる見込み(現実的に?) 3. 守り方(何で防ぐ?) 【比較】(観点ごとに) ■ 4桁の暗証番号 - 組み合わせの数: 1 万通り / すぐ数え切れる - 当たる見込み: 試行制限が重要 - 守り方: 回数制限(3 回でロック) ■ 仮想のくじ - 組み合わせの数: 1000 万通り - 当たる見込み: 買い続ければ積み上がる - 守り方: (比較のための物差し) ■ 等確率で選ぶ鍵の例 - 組み合わせの数: 仮定:10の36乗通り / 約119.6bit - 当たる見込み: 推測で当てるのは非現実的 / 生成方法と試行モデルが前提 - 守り方: 鍵の強さそのもの+試行制限 ■ 多数の対象を狙う場合 - 組み合わせの数: 空間はそのまま / 等確率の鍵を仮定 - 当たる見込み: 100年間でも約317億分の1 - 守り方: 空間が広すぎて“みんなで引いても”埋まらない

候補数・生成確率・試行回数を決めて考えます。実サービスの保証値ではありません。

パスワードと機械用資格情報の更新方針

各セルをクリックすると、その意味や詳しい説明がここに表示されます。

この図をテキストで読む

比較表。2列 × 5行。 【列】 1. 人間のパスワード(利用者が選ぶ秘密) 2. 機械用の資格情報(APIキー・DB等) 【比較】(観点ごとに) ■ 守りの基本 - 人間のパスワード: 長さ・漏洩対策・MFA / 用途に応じて判断 - 機械用の資格情報: 短期資格情報を優先 / 用途に応じて判断 ■ 平時の更新 - 人間のパスワード: 不要な定期変更を強制しない / 用途に応じて判断 - 機械用の資格情報: 用途に応じ自動更新を設計 / 用途に応じて判断 ■ 漏洩の疑い - 人間のパスワード: 変更・関連セッションを確認 / 用途に応じて判断 - 機械用の資格情報: 速やかに失効・交換 / 用途に応じて判断 ■ 切替時の注意 - 人間のパスワード: 本人確認・復旧手段も保護 / 用途に応じて判断 - 機械用の資格情報: 発行元・金庫・利用側を連携 / 用途に応じて判断 ■ 判断の根拠 - 人間のパスワード: 人間向け認証の指針 / 用途に応じて判断 - 機械用の資格情報: 製品の推奨・規定・リスク / 用途に応じて判断

人間のパスワードと機械用の資格情報で方針を分け、漏洩の疑いには速やかに対応します。

長くて強い鍵でも、コピーされたら?

十分に長い乱数の鍵は、当てずっぽうで探す攻撃に強くなります。しかし、その鍵をソースコードやログからコピーされると、攻撃者は候補を探す必要がありません。「推測されにくさ」と「漏らさない扱い」は、別々に守る必要があります。

生成時には、暗号用途に適した乱数を使います。候補数が多く見えても、値が偏っていたり次の値を予測できたりすれば、想定した強さにはなりません。実装やサービスの生成方法を確認します。

運用では、本番と開発の資格情報を分け、取得権限を必要最小限にします。誤コミットを防ぎ、ログに秘密を出さず、更新と失効を自動化します。漏洩時は予定の交換日を待たずに対応できるようにします。

システム全体の安全とは別

公開の経路でも適切に設計できますが、強い鍵とTLSだけでは足りません。認可、脆弱性対策、漏洩対策、監視を組み合わせます。

押さえておきたい用語

接続文字列
接続先の住所と鍵(利用者名・パスワード)をひとまとめにした文字列。これ 1 本が金庫の鍵なので、漏らさない管理が本体。
エントロピー(鍵の強さ)
候補の多さと選ばれ方から表す不確実性の尺度。同じ候補数なら、偏りなく選ぶほど大きい。N通りを等確率に選ぶ場合はlog2(N) bitで、文字数だけでは決まらない。
総当たり攻撃(ブルートフォース)
候補を順に試す攻撃。十分に強いランダムな秘密では成功が現実的に難しいが、弱い秘密や生成の偏りには注意が必要。
レート制限
失敗を繰り返す相手の試行回数を絞る仕組み。総当たりから速度そのものを奪う。
誕生日のパラドックス
複数の値のどれか同士が一致する確率の話。特定の対象の秘密を推測する確率とは分けて計算する。
イベント駆動ローテーション
漏洩の疑い、端末紛失等をきっかけに資格情報を交換する対応。平時の自動更新や有効期限の設計と併用する。
ページ 5 / 7