このエントリーをはてなブックマークに追加このエントリをつぶやく

暗号技術入門11 鍵

担当:千葉

目次

  • 鍵とは何か
  • さまざまな鍵
  • 鍵を管理する
  • Diffe-Hellman鍵交換
  • パスワードを元にした暗号(PBE)
  • 安全なパスワードを作るには
  • まとめ

鍵とは何か

鍵とは何か

  • 鍵とはとても大きな数
  • 鍵は平文と同じ価値を持つ
  • 暗号アルゴリズムと鍵

鍵とはとても大きな数

  • 対象暗号、公開鍵暗号、メッセージ認証コード、デジタル署名などの暗号技術を使うには必ず鍵(key)と呼ばれる大きな数が必要
  • 「鍵空間の大きさ」=「可能な鍵の総数」
  • 鍵空間の大きさは鍵のビット長で決まる

鍵の例

DESの鍵

実質56ビット長(7バイト長)
51 EC 4B 12 3D 42 03

トリプルDESの鍵

DES-EDE2の鍵は実質112ビット長(14バイト長)
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F
DES-EDE3の鍵は実質168ビット長(21バイト長)
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96

AESの鍵

AESの鍵は128,192,256の各ビット長から選択
以下は256ビット長(32バイト長)の場合の例
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96 B9 42 DC A0 AE F4 5D 60 51 F1

鍵は平文と同じ価値を持つ

暗号化の目的は「平文の秘密を守りたいから暗号化を行う」

[対象暗号の場合]
盗聴者に暗号文を盗まれても、盗聴者は平文の内容を知ることはできない
盗聴者に鍵が盗まれた場合、盗聴者は平文の内容を知ることが出来る

鍵は平文と同じ価値を持つと言える

暗号アルゴリズムと鍵

  • 暗号アルゴリズムそのものを秘密にすることで情報の機密性を守ろうとするのは危険
  • 情報の機密性は、鍵を秘密にすることで守るべき

さまざまな鍵

さまざまな鍵

  • 対象暗号の鍵と公開鍵暗号の鍵
  • メッセージ認証コードの鍵とデジタル署名の鍵
  • 機密性のための鍵と認証のための鍵
  • セッション鍵とマスター鍵
  • コンテンツを暗号化する鍵と、鍵を暗号化する鍵

対象鍵暗号の鍵と公開鍵暗号の鍵

対象鍵暗号

公開鍵暗号

メッセージ認証コードの鍵とデジタル署名の鍵

メッセージ認証コード

デジタル署名

機密性のための鍵と認証のための鍵

  • 機密性を守るための鍵
    • 対象暗号や公開鍵暗号で使われる鍵
  • 認証のための鍵
    • メッセージ認証コードやデジタル署名の鍵

セッション鍵とマスター鍵

  • セッション鍵
    • 通信ごとに1度しか使われない鍵
  • マスター鍵
    • セッション鍵に対して、繰り返し使われる鍵をマスター鍵と呼ぶことがある

コンテンツを暗号化する鍵と、鍵を暗号化する鍵

  • CEK(contents encrypting key)
    • ユーザが直接利用する情報(コンテンツ)を暗号化の対象とする
  • KEK(key encrypting key)
    • 鍵を暗号化する鍵

コンテンツを暗号化する鍵と、鍵を暗号化する鍵

さまざまな鍵

鍵を管理する

  • 鍵を作る
  • 鍵を配送する
  • 鍵を更新する
  • 鍵を保存する
  • 鍵を捨てる

鍵を作る

  • 乱数から鍵を作る
  • パスワードから鍵を作る – パスワードを元にした暗号(PBE) –

鍵を配送する

  • 鍵の事前共有
  • 鍵配布センター
  • 公開鍵暗号
  • Diffe-Hellman鍵交換

鍵を更新する

  • 鍵更新(key updating):通信の機密性を高めるテクニックの一つ
  • 鍵が盗聴された場合、鍵更新を行った時点よりも過去にさかのぼって通信を復号化することが出来ない
  • 一方向ハッシュ関数の性質によって逆算が困難であることを保証している
  • 過去にさかのぼった解読を防止することをバックワードセキュリティと呼ぶ

鍵を保存する

  • 鍵は記憶できないため、鍵の保存を考えなければならない
  • 鍵を盗まれた時から、その鍵を攻撃者が使うことが出来るまでの時間を稼ぐため、鍵を暗号化して保存するというテクニックが使われる

鍵を捨てる

  • 今後使わない不要な鍵は確実に削除しなければならない
  • 盗聴者に鍵を盗まれた場合、過去の暗号文を復号化されてしまうため

Diffe-Hellman鍵交換

  • Diffe-Hellman鍵交換とは何か
  • Diffe-Helman鍵交換の手順
  • 盗聴者は鍵を計算できないのか
  • 生成元とは
  • 具体例

Diffe-Hellman鍵交換とは何か

  • 1976年にホイットフィールド・ディフィーとマーティン・ヘルマンによって発明されたアルゴリズム
  • 他人に知られても構わない情報を二人が交換するだけで、共通の秘密の数を作り出すという方法
  • 作り出した秘密の数を対象暗号の鍵として使う
  • IPsecではDiffe-Hellman鍵交換を改良した方法を使っている

Diffe-Helman鍵交換の手順

盗聴者は鍵を計算できないのか

  • 盗聴者が知りえる数は P,G,G^A mod P,G^B mod P
  • G^A mod P から数Aを簡単に計算するアルゴリズムは、まだ発見されていない
  • これを有限体上の離散対数問題と呼ばれ、これを解くことの難しさが, Diffe-Helman鍵交換 というアルゴリズムを支えている

生成元とは

Pが13としたときの各要素の累乗の表を見てみる(G^P mod P)

具体例

パスワードを元にした暗号(PBE)

  • パスワードを元にした暗号とは何か
  • PBEの暗号化
  • PBEの複合化
  • ソルトの役割
  • パスワードの役割
  • PBEの改良

パスワードを元にした暗号とは何か

  • パスワードを元にした暗号(password based encryption : PBE)とは,その名の通り,パスワードを元にして作った鍵で暗号化を行う方法
  • 暗号化と複合化の両方で同じパスワードが必要.

PBEの暗号化

PBEの復号化

ソルトの役割

  • ソルトは疑似乱数生成器で作られるランダムな数
  • ソルトは、辞書攻撃を防ぐためにある。辞書攻撃とは、前もって鍵の候補を計算して準備しておく方法
  • KEKを作る際にソルトを使うと、KEKの候補のバリエーションがソルトのビット長だけ増えることになるので、KEKの候補を前もって作ることが困難になる

パスワードの役割

  • PBEでは、パスワードで作った鍵(KEK)でセッション鍵(CEK)を暗号化する
  • パスワードで作った鍵(KEK)は、疑似乱数生成器で作ったセッション鍵(CEK)よりも弱い
  • そのため、パスワードを元にした暗号(PBE)を用いる場合には、ソルトと暗号化したCEKを物理的に守る方法を併用するべき

PBEの改良

  • KEKを作る際に、一方向ハッシュ関数を何度も通すようにすれば安全性を高めることができる
  • ユーザにとってはハッシュ関数を何度も繰り返すのはそれほど負担とはならない
  • 攻撃者にとっては、この小さな違いが大きな負担となる

安全なパスワードを作るには

  • 自分だけが知りえる情報を使うこと
    • 大事なものの名前を使ってはいけない
    • 自分に関する情報を使ってはいけない
    • 他人が目にする情報を使ってはいけない
  • 複数のパスワードを使い分けること
    • 忘れては困るからと安易なパスワードを選ぶよりも疑似乱数生成器で作ったランダムな文字列を安全な場所に保存する方が有効かもしれない
    • パスワードの一部のみをメモすることも有効
  • メモを有効に使うこと
    • パスワードが英数字8文字と想定した場合、
    • 英数字1文字は62文字のうちのどれかとなるため
    • 62^8 = 218340105584896
    • から、約218兆通りとなる
    • 大きな数字に見えるが、鍵のビット長でいえば48ビットに過ぎない
    • これは、ブルート・フォース・アタックが可能なサイズである
  • パスワードの限界を知ること
  • パスワード生成/管理ツールを使うこと
    • パスワード生成/管理ツールは乱数を使って推測が難しいパスワードを生成する
    • ただし、ツールとその開発元を信用できるかどうかが大事になる

まとめ

  • 暗号化アルゴリズムが平文を守り、平文の代わりに自分たちは鍵を守る
  • 鍵こそが暗号技術の「鍵」である

参考書籍

結城浩(2015)『暗号技術入門 第3版 秘密の国のアリス』SB Creative 446pp.
ISBN978-4-7973-8222-8
第11章 鍵(p282-p310)

カテゴリー: 勉強会   タグ: ,   この投稿のパーマリンク

コメントは受け付けていません。