| English | 意味 |
|---|---|
| symmetric/sɪˈmetrɪk/ | 対称 |
| encryption/enˈkrɪpʃn/ | 暗号化 |
| asymmetric/ˌeɪsɪˈmetrɪk/ | 非対称 |
| plaintext/ˈpleɪntekst/ | 平文 |
| ciphertext/ˈsaɪfətekst/ | 暗号文 |
| decrypt/dɪˈkrɪpt/ | 復号化 |
| key pair/kiː peə/ | 鍵ペア |
| public key/ˈpʌblɪk kiː/ | 公開鍵 |
| private key/ˈpraɪvət kiː/ | 秘密鍵 |
| session key/ˈseʃn kiː/ | セッションキー |
| cryptographic hash/ˌkrɪptəˈɡræfɪk hæʃ/ | 暗号ハッシュ |
| digest/ˈdaɪdʒest/ | ダイジェスト |
公共の場で面識のない二人が秘密を合意する
- ここには不可能そうに聞こえる問題があります。あなたと店は一度も会ったことがなく、何も共有していません。互いに交わす言動は誰にも盗聴されます。秘密鍵を合意してください。
- 1976年まで、答えは「不可能だ」でした:対称暗号では、事前にキーを宅配便や対面で届ける必要があります。そのため戦時中の暗号帳は印刷されて輸送されました。
- その後ディフィー、ヘルマン、そしてリヴェスト、シャミル、アドレマンによって、それができることが示されました。それは、施錠只能用のキーと、解錠只能用の別のキーを用いることで実現できます。あなたがオンラインで行ってきたすべての購入はこの仕組みの上に成り立っています。
- このレッスンは、対称暗号と非対称暗号、なぜ現実のシステムで両方を使用するのか、そしてハッシュ関数と呼ばれる一方向関数について解説します。
語彙
- 暗号化は、キーを使って読み可能な平文を読み取れない暗号文に変換することです。復号とは、適切なキーを使ってその逆を行うことです。
- 暗号化は機密性を守ります:盗聴されたコピーでも内容を読み取ることはできません。ただし、データが盗聴されたり、遅延させられたり、削除されたりすることを防ぐものではありません。
- 強みはアルゴリズムの秘匿ではなく、キーにあります。アルゴリズムは公開されており、弱点が敵ではなく味方の研究者によって見つけられるよう、あえて研究対象となっています。
対称暗号
- 対称暗号は、暗号化にも復号にも同じキーを使います。AESが標準的な例です。
- 高速であるため、大量データに適しています:ハードディスク全体、動画ストリーム、大きなファイルなど。
- 弱点はキー配分です:キーが盗聴されることなく相手元へ届く必要がありますが、もし盗聴されればシステム全体が破綻します。$n$人の全員がペアごとに秘密通信をしたい場合、必要なキーの数は$n$の二乗に増えます。
シフト暗号(対称鍵)
凯撒暗号は、すべての文字を固定された鍵分だけ前方へシフトさせる。同じ鍵で暗号化も復号も行う — これが対称性である。シフト量知らずに暗号文を読む試みをしてみよ。
対称暗号化で用いられるのは:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
対称暗号化は共通の秘密鍵を共有する — 高速だが、安全に配送する必要がある。
非対称暗号
- 非対称暗号では、各ユーザーにキーペアが割り当てられます:世界中に公開する公開鍵と、絶対に開示しない秘密鍵です。
- 公開鍵で暗号化したものは、対応する秘密鍵でのみ復号できます。したがって、エリスに機密メッセージを送る場合は、エリスの公開鍵で暗号化し、エリスだけがそれを読むことができます。
- 事前のキー交換は不要であり、これが本レッスンで提起した問題を解決します。その代償として非常に遅いため、大量のデータには使用されません。

一方のキーで施錠し、もう一方で解錠する。そのうち一つだけが秘密である
各暗号化ツールとその使用要素を対応させなさい。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
対称は高速だが鍵共有が必要;非対称は鍵ペアでこれを解決;ハッシュは一方向性;HTTPS はこれらを組み合わせる。
非対称暗号化を用いてアリスに機密メッセージを送信する場合、どの鍵で暗号化するか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
受信者の公開鍵で暗号化することは、対応する彼女の秘密鍵のみで復号可能であることを意味する。
各種類の暗号化とその主な欠点を対応させなさい。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
ハイブリッド方式では、それぞれの欠点を補い合うために用いる:鍵の配送には非対称、データ伝送には対称を用いる。
演習例:機密メッセージを送信する
- 非対称暗号がボブからエリスへの機密メッセージ送信を可能にする仕組みを説明してください。ただし、彼らは一度も会ったことがありません。 [3]
- エリスは公開鍵を公開します。これは誰でも取得でき、盗聴者を含みます。
- ボブはメッセージをエリスの公開鍵で暗号化します。この暗号文は、対応する秘密鍵でのみ復号可能です。
- エリスは自分が決して共有していない秘密鍵で復号します。公開鍵と暗号文を持っている盗聴者はメッセージを復号できません。
- 最も一般的な誤答は、「ボブは自分の鍵で暗号化する」と言うことです。各段階でどの鍵が使われているかを追跡してください。
ボブがアリスに非対称暗号化を用いて機密メッセージを送信する。彼はいずれの鍵で暗号化するか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
アリスの公開鍵が行った操作を Undo できるのはアリスの秘密鍵のみであり、彼女だけがそれを保有している。ボブはアリスの秘密鍵を一度も見ることはない。
ハイブリッドアプローチ、これが実際に行われていること
- 対称暗号は高速だがキーを共有できない;非対称暗号はキーを共有できるが低速です。現実のシステムでは、それぞれの特性を活かした使い分けを行います。
- クライアントはランダムなセッションキーを生成し、その小さな鍵をサーバーの公開鍵で暗号化して送信します。サーバーは自身の秘密鍵で復号し、これにより両端が同じセッションキーを保持することになります。
- その後の実際の会話の全バイトは、そのセッションキーを使って対称的に暗号化されます:高速で、遅い非対称ステップは数バイトのみに対して一度だけ行われます。
- これがHTTPSとSSHの動作原理そのものです。

キーの合意には非対称暗号、データの送信には対称暗号
HTTPS で用いられるハイブリッド方式において、非対称暗号化は次のように用いられる:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
スローな非対称暗号はセッションキーのみを共有し、その後の大量データには高速な対称暗号を使用します。
HTTPSで用いられるハイブリッド方式の手順を正しい順序に並べ替えてください。
難易度 3/5 · 200 コイン + 今日初回完了時に小ボーナス付与
スローな非対称処理は数バイト分のみ一度行われ、それ以降の処理はすべて高速な対称暗号となります。
ハッシュ
- 暗号ハッシュは、任意サイズの入力を固定サイズのダイジェストに変換します。同じ入力は常に同じダイジェストを与え、入力にわずかな変化を加えるとダイジェストは完全に変わります。
- 一方向性があります:ダイジェストから入力を復元することはできません。これが目的そのものであり、復号を前提とした暗号化とは異なる点です。
- 用途:パスワードの保存(システムはダイジェストのみを保持し、ログイン時にダイジェストを比較するため、データベースが盗まれてもパスワードは漏洩しない)、および整合性の確認(ファイルのダイジェストを再計算して比較し、変更を検知する)。
暗号ハッシュ関数は、任意のサイズの入力から固定長の____を生成します。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
同じ入力は常に同じダイジェストを出力し、わずかな変化でも全く異なるダイジェストが得られ、入力から元の値を復元することはできません。
演習例:なぜ暗号化ではなくハッシュでパスワードを扱うのか
- あるウェブサイトが、暗号化されたテキストではなくハッシュとしてユーザーのパスワードを保存している理由を説明してください。
- 暗号化は可逆的です:どこかに、保存値を元のパスワードに戻すキーが存在し、攻撃者がデータベースを取得すれば、そのキーも手に入る可能性があります。
- ハッシュは一方向性があるため、ダイジェストの盗まれたデータベースからはパスワードが得られず、サイト側Staff自身もそれらを読むことができません。
- ログインは機能します。システムはユーザーが入力したものをハッシュしてダイジェスト同士を比較し、パスワードそのものを直接比較することはありません。
ハッシングと雪崩効果
ハッシュは一方向性である:計算は容易だが、逆算は事実上不可能である。入力のわずかな変化が、出力の大きく予測不能な部分を変化させる — ハッシュがパスワードに適している理由である雪崩効果。
暗号ハッシュ関数は一方向性(ダイジェストから入力を復元できない)を持ち、またアバランチ効果(入力への微小な変化が出力の不確実な大部分を反転させる現象)を示します。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
一方向性とアバランチ効果が、パスワードの保存や整合性チェックにハッシュが適している理由です。
なぜパスワードを暗号化ではなくハッシュとして保存するのか?すべて該当するものを選択してください。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
固定長ダイジェストは確かに短くなるが、それがセキュリティ上の理由ではない。不逆算性が真の理由である。
見落としやすいポイント
- 他人に機密メッセージを送る際は、相手の公開鍵を使い、自身の鍵は使いません。各段階でどの鍵を使うかを明記してください。
- 対称暗号の弱点は鍵の配布であり、非対称暗号の弱点は速度です。ハイブリッド方式はそれぞれの欠点を互いに補完するために利用します。
- ハッシュ関数は一方向性を持ち、暗号化ではありません。鍵が存在せず、復号すべき内容もありません。
- 暗号化は機密性を保護するのみです。盗聴、削除、または検知不可能な改ざんを阻止することはできません。それにはハッシュ関数が必要です。
理解できましたか
- 暗号化は平文を鍵を使って暗号文に変換し、機密性のみを保護します。強さはアルゴリズムの秘匿にあり、鍵にあります。
- 対称: 共有される1つの鍵、高速、大量データに適応、鍵の配布において弱い · 非対称: 暗号化用の公開鍵と復号用の秘密鍵、事前交換不要だが、低速
- HTTPSやSSHで使われるハイブリッド方式は、非対称暗号でランダムに生成されたセッション鍵を送信し、その後は対称暗号でデータを転送します。
- 暗号ハッシュ関数は固定長のダイジェストを作成し、一方向性を持ち、パスワード検証や完全性チェックに使用されます。