CHAPTER 16
THREATS TO CRYP
TOSYSTEMS
暗号システムの脅威
1
ポイント
• 専門家が作った暗号ライブラリ・フレームワークを
使うこと
•
深い知識がない人が暗号アルゴリズムを作っても脆弱性を埋
め込むだけ!
• 暗号システムを適切に使うこと
•
鍵管理は重要。鍵をソースコートに埋め込まないこと
2
概要
• Cryptography( 暗号システム ) の原理とその脅威を説明
• 長い歴史がある
• 使う際のポイントを説明
• 本章は参照用。暗号システムについて詳しく知りた
かったら:
• Cryptography Engineering: Design Principles a
nd Practical Applications 、 Niels Ferguson, Br
uce Schneier, Tadayoshi Kohno
3
CRYPTOGRAPHY PRIMITIVES
• Basic Primitives
4
対称暗号
非対称暗号
( 公開鍵暗号 )
Pseudo-Random Number
Generators (PRNGs): 擬似乱数発生
器
暗号文
BASIC PRIMITIVES
•
Symmetric Cryptography (対称暗号システム)
• プライベート鍵、秘密鍵と言われるもの
• 鍵をどう共有するかが問題
• ブロック暗号とストリーム暗号がある
• AES を CBC もしくは CTR モードで使う
•
Asymmetric Cryptography (非対称暗号システム)
• 公開鍵システムと呼ばれている。暗号と複合を別々の鍵を使う
•
Hash
• 一方向の関数、メッセージダイジェスト、メッセージ指紋、メッセージ認 証符号( MAC )、パスワードの保存時に使われる
•
Random 性
• ハードウェアの乱数装置があるのならそちらを使う(データセンターの場 合)
• 通常は擬似乱数を使う。キーボード操作、マウス操作等から乱数を発生
5
PRIVACY PRIMITIVES
• ステガノグラフィー( steganography )
• データを他のデータ(写真等)に埋め込む技術
• 音楽やビデオの著作権保護のためにも使われる(透かし)
• ミックスネットワーク( Mix Network )
• 複数のユーザのメッセージをルーターなどで一旦集めてまとめて、ま とめて受信者に送る。
• 誰が誰に送ったかを隠す
• オニオンルーティング( Onion routing )
• ルーターで暗号を施して送信する。複数のネットワーク層で暗号化す ることからオニオン(玉ねぎ)と呼ばれる。
• Blinding: メッセージの中身を見ずに署名。 8 章で説明
6
MODERN CRYPTOGRAPHIC PRIMITIVES
• Perfect Forward Secrecy
• プロトコルに使った長期利用の鍵が漏れたとしても暗号化メッセージを 復号化出来ない
• Authenticated Key Exchange
• 研究中の暗号方式
• Random Oracles
• どんな問い合わせにも真にランダムな回答をする。 Hash 関数に使われ る
• Proven Cryptosystems
• 作りたいシステムが必ずしも証明された状況と一致しない
• たくさんの仮定が存在する。ニーズを踏まえる必要がある
• 証明は専門家でさえ追うのは難しい
• Certificates and PKI: 省略
7
参考: CLASSIC THREAT ACTORS
よく出る登場人物
• 通信者: Alice と Bob ( RSA の最初の論文で登場)
•
たまに裏切ることも
•
さらには、 Carol 、 Chunk や Dave ( ABC 順)
• 盗聴者: EVE (悪者)
• メッセージの破壊、変更する者: Malloy
• 信頼できる第三者: Trent, Victor (何かを証明し
てくれる)
8
ATTACKS AGAINST CRYPTOSYSTEMS
(1/3)
• Known ciphertext: よく知られた情報の暗号文を入手して鍵を割り 出す
• Chosen ciphertext: 暗号文を差し替えること。元の暗号文を復号 化する必要はない
• Chosen plain text: 平文を差し替える
• Adaptive chosen: 返答を見て何かを挿入する攻撃
• Man-in-the-middle (MITM) :中間者攻撃
• Relay, or chess master, attacks: 本当のやり取りを中継したア タック(2人のプロ騎士を中継して戦わせる) MITM と組み合わせ て使う
9
ATTACKS AGAINST CRYPTOSYSTEMS
(2/3)
• Replay :本物の応答を真似する。暗号化されて いても OK 。
• Reflection: 認証プロトコルを盗聴して認証の ための暗号文を入手
• Downgrade attacks: 古いバージョンに翻訳して 中間者攻撃
• Birthday attacks: 23 人いれば 50% の確立が同 じ誕生日がいる。 57 人いれば 99% の確立が同じ 誕生日がいる。同じ Hash 値をもつ異なるメッ セージを探し出して異なるメッセージに入れ替 える攻撃
10
Alice Malloy Bob
hell
o
“n”の暗号化を要 求
暗号化された“ n”
K
K
“n”の暗号化を要 暗号化された“ n”求
認証要求
Alice Malloy Bob
Ver.
2 Ver.
1
ATTACKS AGAINST CRYPTOSYSTEMS
(3/3)
• Traffic analysis: メッセージのサイズや送受信タイミングだけを見 て何をしているかを推測。例)” buy” ボタンが押されたことを盗聴
• Length extension attacks: メッセージを追加し、 Hash を計算し直す 攻撃。元のメッセージのことを知る必要はない。
• Timing attacks: 暗号操作(例外処理)によってメッセージの長さな どを推測する攻撃
• Side channel attacks: コンピュータの物理的現象(消費電力、音、 周波数など)から情報を推測する攻撃
• Rubber hose cryptanalysis (ゴムホースで解読) : 人への脅し、恐 喝など
11
BUILDING WITH CRYPTO
暗号システムを使ってシステムを構築するときのポイント
• Making Choices
• 専門的な知識無しで暗号システムを変更を加えないこと
• 暗号システムをできるだけシンプルに使う
• 複数の認証オプションがあれば、攻撃者はもっとも脆弱な部分をついてくる
• Preparing for Upgrades
• アップグレードの計画やテストスイートなしでは、将来安全を担保するのは不可能になる
• Key Management
• 共有鍵は Kerberos システムを使うこと
• 出来る限り公開鍵を使うこと
• TOFU (trust on first use): 最初の鍵交換を信頼して、それから変更されたらユーザに警告する。
• サービスごと、マシンごとに鍵を用意する
• PGP(Pretty Good Privacy) を使う:個人の公開鍵を Web で公開
• PKI ( public key infrastructures )を使う
• Authenticating before Decrypting :認証が一番先、一定期間ごとに相手を認証するこ と
12
THINGS TO REMEMBER ABOUT CRYPTO
• Assume It Will All Become Public
•
暗号方式は、秘密であることを必要としてはならず、敵の手
に落ちても不都合が無いようにできること(次ページを参
照)
• You Still Need to Manage Keys
•
鍵管理は難しい
•
適切に生成し、秘匿保存し、無効にすること
13
参考:ケルクホフスの原理
1. 暗号方式は、現実的に(数学的にではなく)逆変換不能であること 2. 暗号方式は、秘密であることを必要としてはならず、敵の手に落ちて
も不都合が無いようにできること
3. 鍵は伝達可能で、文書を見なくても維持することができ、通信員が変 更できること
4. 電気通信に適したものであること
5. 携帯可能であり、その利用や動作には大勢の人を必要としてはならな い
6. 最後に、利用状況のことを考えて、精神的緊張や長々とした注意書き を知っていることは不要など、取り扱い易いことが必要である
※1883 年に出版されたエッセイより
14
まとめ
• 適切な暗号ツールキットがある
• 対称(秘密)鍵、非対称(公開)鍵、 Hash 関数、ランダム関数の原理を 知って適切に使うこと
• 暗号システムの脅威はよく知られている
• 対処法が研究されている
• 自分で暗号システムを作成・変更して、将来のアップグレード
を不可能にしないこと
• 暗号システムはとても複雑
• 専門家が設計、テストしたシステムを使うこと
• 方式の秘密はそのうち公開となる