おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

共通鍵暗号(セキリュティを理解するために(2))

参考文献を文末に記載しています。

単語の確認

ブロック暗号

DES、AESとか、ヨクワカラン。特にS関数、F関数の特徴抽出に関しては下記の参考文献を参考にしてください。

  • ブロック暗号の構造

平文をブロック(64~128bit)と言う単位に区切って暗号化する共通鍵暗号方式である。構造は、鍵スケジューラ部とデータ撹拌部からなる。暗号鍵を使い鍵スケジューラ部より拡大鍵を得た後、その拡大鍵を使って平文から暗号文を作成する。

  • ブロック暗号のモード
    1. ECB(Electronic Code Book)モード:各ブロックを独立に暗号化/復号化する。欠点:同じ平文は同じ暗号文になる。
    2. CBC(Cipher Block Chaining)モード:暗号化したブロックの一部を次のブロックの暗号化に使用。
    3. OFB(Output FeedBack)モード:平文した一部と暗号化乱数を使い、次のブロックを暗号化する。以下のサイトの説明が非常に分かりやすい。(http://www.triplefalcon.com/Lexicon/Encryption-Block-Mode-1.htm)
    4. CFB(Cipher FeedBack)モード:暗号化された一部と暗号化乱数を使い、次のブロックを暗号化する。以下のサイトの説明が非常に分かりやすい。
  • Triple-DES:米国連邦政府情報処理標準で定められた。DES(Data Encryption Standard)と呼ばれるブロック暗号を元に作られている。DESは鍵長が56bitしかないため、現在では安全でないとされている。違う鍵用いて、DESを暗号化→復号化→暗号化する方式をTriple-DESという。
    • DES:DESは1ブロック、64ビットからなり、8ビットをパリティ(誤り検出符号)に残りの56ビットを鍵長とする。この56ビットを転置して、16回のFeistel関数で処理する。
      • Feistel関数:
        1. 平文を半分にした32bitを拡大転置することで48bitにする。
        2. ラウンド鍵と上記の結果をXOR操作で結合する。
        3. 上記の結果を、6bitずつに区切り8個にわけてSボックスに入力する。
        4. Sボックスの出力である32bitに並び替えを施す。
  • AES:平文を行列形式にして、以下の方法を使うことによって暗号化する。
    1. AddRoundkey:行列表示された拡大鍵をバイトごとに排他的論理和する操作
    2. SubBytes:バイトごとに独立に置換表を参照して変換する操作
    3. ShiftRows:各行をバイト単位で回転シフトさせる操作
    4. MixColumns:定数行列をこの行列に左から掛ける操作
強度評価
  • 暗号攻撃法の分類
    1. 選択暗号文攻撃:攻撃者が任意に選んだ暗号文に対して平文を入手できる。
    2. 選択平文攻撃:攻撃者が任意に選んだ平文に対して暗号文を入手できる。
    3. 既知平文攻撃:攻撃者は平文と暗号文の対を入手できる。
    4. 暗号文攻撃:攻撃者は暗号文のみを入手できる。
  • 差分解読法:ある条件をもった2つの平文をとり、影響を及ぼす鍵のビット数を小さくする。平分ペアの条件は
    1. SBOXの差分特性の抽出
    2. F関数の差分特性の抽出
    3. 暗号系の差分特性の抽出
  • 差分特性の具体例
    • S関数の性質
    • F関数の性質
    • 暗号系の性質
    • 鍵候補の絞り込み
  • 線形解読法
ストリーム暗号
  • ストリーム暗号の構造:送信者と受信者が共通の乱数生成メカニズムをもち、平文と排他論理和することによって暗号文を生成する方式である。
  • バナーム暗号:平文と同じ長さの真性乱数を用いて暗号化を行うストリーム暗号を指す。
  • シフトレジスタを用いたストリーム暗号

情報セキュリティ (IT Text)

情報セキュリティ (IT Text)