kakke18’s blog

ゆるふわ学生エンジニア

共通鍵暗号まとめ

暗号技術のすべて』の第3章を参考にしました。

古典暗号では、利用シーンが軍事や外交に限られていました。しかし、コンピュータやインターネットが発達した現代では、様々なシーンにおいて、顔を知らない相手とやり取りする必要があります。また、ディジタルデータは、インターネットを通じて即時的にやりとりをすることが可能です。つまり、現代においては、民間企業や個人も暗号を利用しなければなりません。

共通鍵暗号とは

  • 暗号化と復号を同一の秘密鍵によって行う暗号

  • 秘密鍵があれば誰でも復号できてしまう → 通信相手ごとに異なる秘密鍵が必要

  • 正当性:暗号文を復号すると元の平文に戻る

    → ちゃんと暗号化、復号できる

  • 秘匿性:暗号文から平文に関する情報を得られないこと

    → 他の人には見られない

共通鍵暗号の安全性指標

攻撃モデルを設定し、その仮定下で解読されるかを議論する

ラク

暗号理論の世界でよく登場する言葉の中にラクという言葉があります。『暗号技術のすべて』では、以下のように説明されてます。

ラクルとは、要求に応じて、データを返してくれる仮想的な存在のことです。例えば、関数fを実現するオラクルであれば、質問xをオラクルに送信するとf(x)を返してくれます。

なるほど、わからん…

例えば、平文に対する暗号文を入手するには、秘密鍵とその暗号化アルゴリズムを知る必要があります。しかし、暗号化オラクルにアクセスすることが可能であれば、平文をオラクルに送信するとそれに対する暗号文が返ってきます。つまり、暗号文を得るために秘密鍵アルゴリズムを知る必要がないということです。現実世界でいうと、暗号化装置を入手することなどに相当します。

5つの攻撃モデル

  • 暗号文単独攻撃(COA)

    盗聴などによって得た暗号文を利用した攻撃

  • 既知平文攻撃(KPA)

    過去の解析などによって得た平文と暗号文のペアを利用した攻撃

  • 選択平文攻撃(CPA

    任意のタイミングで、任意の平文に対する暗号文を入手できる(暗号化オラクルにアクセスできる)状況下での攻撃

  • 選択暗号文攻撃(CCA)

    解読対象の暗号文を入手する前に、任意の暗号文に対する平文を入手できる(復号オラクルにアクセスできる)状況下での攻撃

  • 適応的選択暗号文攻撃(CCA2)

    任意のタイミングで、任意の暗号文に対する平文を入手できる(復号オラクルにアクセスできる)状況下での攻撃

攻撃モデルの強弱

  • 共通鍵暗号の場合、CPAは誰でもできるわけではない(暗号化オラクルにアクセスできる状況なんて現実的にありえない)ので平文と暗号文は、それぞれ分けて考える
  • 下に行くほど強力(解読する力が強い)な攻撃モデル
  • 例えば、「この暗号は、CCAを満たす」という言葉の意味は、「CCAされても解読されない暗号であると同時にCCAよりも弱い攻撃モデルであるCPAも満たす」ということである。

(暗号化オラクルと復号オラクルにアクセスできても対象の暗号文を平文に戻すことが出来ないって最強過ぎないか...)

共通鍵暗号は安全 ≠ 解読できない

秘密鍵がkビットの場合、秘密鍵の候補は2k個あります。よって、2k回探索すれば必ず秘密鍵を特定することが出来ます。このような攻撃を鍵全数探索攻撃といいます。共通鍵暗号では、「鍵全数探索攻撃よりも効率的な秘密鍵を求めるアルゴリズムは存在しない」という条件が求められます。 つまり、共通鍵暗号が安全ということは、秘密鍵を求めるのに鍵全数探索攻撃よりも効率的なアルゴリズムは存在しないということであり、解読できないということではないのです。

共通鍵暗号の分類

  • ストリーム暗号:平文を小さい単位で逐次的に暗号化
  • ブロック暗号:平文を一定の大きさのブロックごとに暗号化
    • Feistel構造(DESに用いられる)
    • SPN構造(AESに用いられる)

まとめ

『暗号技術のすべて』には、このような記述があります。

共通鍵暗号アルゴリズムは、古典暗号のアルゴリズムに非常によく似ています。特に、暗号化アルゴリズムと復号アルゴリズムの入出力は同一です。

この記述の意図することは、「平文と秘密鍵 → 暗号文」や「暗号文と秘密鍵 → 平文」のような入出力に着目すると、現代暗号の一種である共通鍵暗号は、古典暗号をモチーフにしているということです。以前の記事で紹介したシーザー暗号も共通鍵(=3文字ずらすという共通の情報)を利用した暗号といえるでしょう。

次回以降で、バーナム暗号やDES、AESについて触れていきたいと思ってます!!