- yoshi
- Feb 23, 2018
- Tags
暗号備忘録①
ネットワークセキュリティ入門
はじめに
ネットワークセキュリティを勉強する機会があったので
特に、「暗号」についてざっくりまとめてみました
4つの問題
ネットワークセキュリティを考えるときに、以下の4つの問題を考えることが大切です
- 秘匿性:secrecy [機密性:confidentialityともいう]
⇨情報が第三者に渡らないようにすること - 認証:authentication
⇨通信相手が誰かを確認するために用いる - 否認防止:nonrepudiation
⇨署名を扱う、あとから主張を変更されることを防ぐ - 完全性:integrity
⇨受けとったメッセージが通信相手からのもので、改ざんされていないことを確かめること
いろいろな暗号
- 対称暗号symmetric cryptography :暗号化と復号化の鍵が同じ
- 公開鍵暗号public key cryptgraphy :暗号化と復号化の鍵が違う
- ハイブリッド暗号システム :対称暗号と公開鍵暗号の組み合わせ
- 一方向ハッシュ関数one way hash function :書き換え防止、ハッシュ値の一致で「完全性」を提供する
- メッセージ認証コードmessage anthetication code :期待する送信者かどうか確かめる、「完全性」だけでなく「認証」も提供する
- デジタル署名digital signature :「否認防止」のために文書などに施される。受信側はデジタル署名を検証verifyする
- 疑似乱数生成器psesdo random number generator(PRNG) :鍵の生成に必要
- ステガノグラフィsteganography :縦読みのようにメッセージの存在を隠す技法。暗号ではなく一度埋め込みが解明されると、すぐ内容がわかってしまう。電子透かしはこれに属する。
- 使い捨てパッドone time pad :1917バーナムG.S Vernumによって考案される。平文とランダムなビット列とのXORをとる。単純な暗号だが復号化の際候補がいくつかありどれが正しい平文かわからない。1947にシャノンが数学的に'無条件に安全unconditionally secure'で'理論的に解読不能theoretically unbreakly'と証明。しかし平文とおなじビット長と安全な鍵が必要なため莫大なお金がかかり現実的ではない。だが大国同士のホットラインに使われることがあり、その際、鍵はエージェントが運ぶのだろう。アイデアはストリーム暗号に生きている。
- 量子暗号 :1980Bennet,Brassardによって考案された。盗聴が不可能な仕組みである。(1)光子の偏光方向の正確な測定が原理的に不可能 (2)測定することで光子の状態が変化してしまう (1)(2)を利用して受信側が盗聴の有無を検出できる。
対称暗号(共通鍵暗号):DES
- DES (Data Encryption Standard)1977アメリカ連邦情報処理標準規格(FIPS)に採用される。
- 鍵のビット長は64ビット(7ビットおきに1ビットエラー検出が入る実質56ビット)、平文64ビットを暗号文64ビットにする。それ以上は暗号化を繰り返す(これをモードmodeという)
- 暗号化の構造:ファイステル(Horst Feistel)が作ったファイステルネットワークと呼ばれる、これをDESは使う。ワンステップをラウンドroundという。やり方は32ビットずつに分け、一方はそのまま、『もう一方』と『ラウンド関数と各ラウンドで生成されるサブ鍵とでつくるビット列』のXORをとり暗号化これを16回繰り返すのがDES。
- ファイステルネットワーク XORで暗号化しているのでラウンド関数にどんな関数でも使える。ラウンドが多くなっても問題がない。暗号化と復号化がサブ鍵が同じであれば全く同じ構造で実現できる。
- トリプルDES DESの3ラウンド分を1ラウンドにしたもの(鍵1,2,3がある)。3つとも違う鍵を使う、暗号化→復号化→暗号化の順、3つとも同じ鍵を使えば、DESとしても使える。鍵1,2が同じで鍵3だけ違うものをDES-EDE2という。鍵1,2,3が違うものをDES-EDE3という。現在でもICカードの標準規格のEMVでつかわれている。
- AES DESに変わる新たな対称暗号の標準規格。2000年NISTによりRijndaelラインダール(ベルギーの二人の研究者が考案)が選ばれた。
- 日本で暗号技術の評価をしてるのは暗号技術評価プロジェクト(CRYPTREC)
公開鍵暗号
- 対称暗号より遅い
- 鍵配送問題key distribution problemを解決するのは以下の4つ
- 公開鍵暗号
- 鍵配布センター
- 事前共有鍵
- Diffei Hellman鍵交換→11章
- 歴史 1976DiffieとHellmanがアイデアを発表。1978RivestとShamirとAdlemanが公開鍵暗号アルゴリズムのRSAを発表。現在の標準規格を作った。
- 離散対数 例 7^□mod13=8 のような累乗の□を求めるのが離散対数。特に大きな数の離散対数を求めるアルゴリズムは見つかっていない。
- 離散対数はDiffie Hellman鍵交換や公開鍵アルゴリズムの一つのElGamal方式で使われている。
- RSAの構造
- 暗号文 = 平文^E mod N 平文 = 暗号文^D mod N この簡単な形で求まる。
- N = p*q p,qは素数
- L = lcm( p-1 , q-1 ) lcmは()内の最小公倍数を求める
- 1 < E < L , gcd( E , L ) = 1 EとLは互いに素(EとLは最大公約数が1)
- 1 < D < L , E*D mod L = 1
- 解読のためにはp,qが必要。だが今のところ大きな数Nの素因数分解を高速にするアルゴリズムは見つかっていない。
- 弱点 公開鍵の証明書がないと本当の公開鍵かわからない。
- 他の公開鍵暗号アルゴリズム
- ElGamal方式
- Rabin
- 楕円曲線暗号eliptic curve cryptosystems:ECC
一方向ハッシュ関数
- メッセージの改竄を検出するのが目的。メッセージからメッセージより短いハッシュ値を計算する。送信者のハッシュ値と受信者の計算した値の比較でわかる。
- 2つの異なるメッセージが同じハッシュ値をもつ(衝突collision)が、これを見つけるのが事実上困難である耐性を衝突耐性collision resistanceという。
- ハッシュ値から元のメッセージは復元できない。一方向ハッシュ関数は暗号ではないから復号化はできない。ハッシュ値を求めるときは一方向性が重要である。
- 一方向ハッシュ関数はpassword based encryption PBEという暗号化に使われる。
- メッセージ認証コードに一方向ハッシュ関数はつかわれる。メッセージ認証コードはSST/TLSでも使われる。
- デジタル署名に一方向ハッシュ関数は使われる。(ハッシュ値のデジタル署名なら短くて済む)→
- 疑似乱数生成器で一方向ハッシュ関数は使われる。一方向性を利用して過去の乱数からの類推をできないようにしている。
- ワンタイムパスワードに一方向ハッシュ関数は使われる。
- 具体的なアルゴリズム
- 1990 MD4,1991 MD5 128ビットのハッシュ値
- 1993 SHA-1 160ビットのハッシュ値 2^64ビットのメッセージまで計算できる
- 2002 SHA-2(256,384,512ビットで選択できる) 256では2^64未満まで384,512では2^128未満までのメッセージを計算できる。
- 誕生日攻撃 N人のうち少なくとも2人の誕生日が一致する確率が1/2以上になるには、Nは何人?→N=23
- 改竄はわかっても、なりすましはわからない。
Comments
Add your comment