このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

  • 追加された行はこの色です。
  • 削除された行はこの色です。
*目次 [#t3a0db01]

#contents

*宣伝 [#f26adcce]

 当サイトにおける暗号に関するページでは、説明が足りなかったり、誤った記述をしていたりするところがあります。今後、少しずつ修正する予定です。~

 暗号理論の『暗号技術のすべて』が発売されています。初心者向けの暗号本です。これまで暗号本に何度か挑戦しつつも挫折してしまった方、学校の課題で悩んでいる方、資格試験にて暗号の問題が苦手な方などにお勧めです。

[[&ref(http://s-akademeia.sakura.ne.jp/main/books/cipher/img/cover_mini.jpg,nolink,『暗号技術のすべて』宣伝サイト);>http://s-akademeia.sakura.ne.jp/main/books/cipher/]]

 興味がある方は[[宣伝サイト:http://s-akademeia.sakura.ne.jp/main/books/cipher/]]を参照してください。[[Amazon:https://www.amazon.co.jp/dp/4798148814/securityakade-22]]でも発売中です。


*敵のモデル [#t1bbd465]

 敵は何らかの方法で(平文,暗号文)の組(mSUB{1};,cSUB{1};),…,(mSUB{q};,cSUB{q};)を入手したとする。この情報をもとに、鍵Kを求める攻撃を考える。

 暗号攻撃にはあらゆるアプローチがあります。まずブルートフォースタック、サイドチャネルアタック、ショートカット方式に分類できる。


*ブルートフォースアタック [#k35fdc0a]

**ブルートフォースアタック(全数探索攻撃) [#dea3d4f2]

 これは考えられる鍵をすべて総当り式に調べていくという方法です。このアタックはすべての暗号において用いることができます。これはアタックの方法の中でも一番時間がかかるもので、そのため通常このアタックで解読されてしまう可能性のあるものは暗号として使えません。

**誕生日攻撃(バースデーアタック)=暗号文一致攻撃 [#yd40053a]

 バースデーパラドックスと呼ばれる「ランダムに23人を集めると誕生日が同じ人間が2人以上いる確率が高い」という理論に基づいている攻撃方法です。一般化すると、Nビットの出力がある場合は、2SUP{N/2};個程度の出力を集めると、その中に同じデータが存在する可能性が高いという確率性をもとにして解析を進めます。

**辞書攻撃(ディクショナリーアタック) [#h09e14cb]

 事前に、できる限り平文と暗号文のペアを管理しておいて、解析対象の文章と一致するものを探し出す方法です。


*サイドチャネルアタック [#z77f8b3a]

 実装するハードウェアの特性を狙う方法です。

**SPA攻撃(Simple Power Analysis attack:単純電力解析攻撃) [#v2d63953]

**DPA攻撃(Differential Power Analysis attack:電力差分解析) [#qaec869c]

 SPA攻撃とDPA攻撃は、計算中に消費電力が増えることに注目したアタックです。

**タイミング攻撃 [#i6cd1e1d]

 計算している時間に注目したアタックです。

**キャッシュ攻撃 [#pf36059c]

 自動的に鍵が変化していく暗号に対して、キャッシュメモリ内にデータにヒットしたかどうかで計算時間が変化することに注目したアタックです。

**DFA攻撃(Differential Fault Analysis attack) [#j068875b]

 外部から強力な光(レーザー光)などを照射することにより、意図的にエラーを発生させて、それをもとに解読の手がかりを得るアタックです。


*ショートカット方式 [#tbe812f0]

 数学的に解を求める方式である。

**暗号文攻撃(cipertext-only attack) [#db778b57]

 暗号文のみを使った攻撃のこと。つまり、敵が知っているのは暗号文のみで、その暗号文からそれに対応する平文あるい
は鍵を解読しようとする方法である。

 盗聴が自由にできるという現実的な世界の状況と対応できる。総当り攻撃、平文言語の確率的性質を利用する攻撃が含まれる。

 これは暗号のアルゴリズムも非公開になっているときの攻撃モデルである。よって、古典暗号における最も標準的な攻撃モデルといえる。


**既知平文攻撃(known-plaintext attack) [#v8ab5669]

 敵は平文と暗号文のペアを知っている場合における攻撃。ただし、敵はそのペアを自由に選択することはできない。つまり、敵に平文と暗号文のペアである(mSUB{1};,cSUB{1};)、…、(mSUB{q};,cSUB{q};)がランダムに与えられ、そこから鍵Kを解読する方法である。

#img(http://s-akademeia.sakura.ne.jp/main/image8/attacker1.jpg)
#img(,clear)

 通信した後で不用になった平文をゴミ箱から敵が得られるというような現実的な世界の状況と対応できる。また、例えば「敬具」「草々」などの結びの言葉が常に平文に含まれていることを敵が知っていた場合も、このアタックの状況といえる。

 現代暗号の場合は、暗号化アルゴリズムも公開されているので、既知平文攻撃以上である選択平文攻撃が実行できる。あくまで古典暗号における攻撃モデルである。暗号文攻撃よりも有益な(と思われる)情報を敵が得られるので、この攻撃に対しても耐性があるように古典暗号は作るべきである。


**選択平文攻撃(chosen-plaintext attack) [#j33ecdef]

 敵は平文mSUB{1};,…,mSUB{q};を自由に選び、それに対応する暗号文を入手できるときに、鍵Kを解読する方法である。

#img(http://s-akademeia.sakura.ne.jp/main/image8/attacker2.jpg)
#img(,clear)

 この攻撃は現代暗号における[[公開鍵暗号スキーム]]では常に可能である。よって、現代暗号における一番低いレベルの攻撃モデルである。現代暗号は最低でもこの攻撃モデル以上を持っていなければ意味がない。


**選択暗号文攻撃(chosen-cipertext attack) [#d439f363]

 敵は選択平文攻撃に加えて、暗号文cSUB{1};,…,cSUB{q};を自由に選び、それに対応する平
文を入手することができる。そういった状況で鍵Kを解読する方法である。

#img(http://s-akademeia.sakura.ne.jp/main/image8/attacker3.jpg)
#img(,clear)

 また対応する平文を得た後に、また別の暗号文を選んでその平文を聞けるかどうかなどの条件によって、攻撃名に1,2という数値が付く。もちろん自由に何回でもたずねられる方が敵が得するので、強い攻撃と言える。

 自分で選択した暗号文を復号アルゴリズム(鍵を使わずに)を実行できる。これは公開鍵暗号スキームにおける攻撃モデルの最も強い攻撃である。この攻撃に対しても安全な暗号を作れたら一番嬉しいことになる。


*鍵を求めるのか、平文を求めるのか [#iecf0158]

 上記の説明では敵の目標は鍵を見つけることであった。しかしながら、安全性の証明において、敵は鍵を求めるというよりも、暗号文とその平文を求めるというように考えることが多い。しかし注意すべき点がある。例えば、選択暗号文攻撃においては、復号オラクルを使えてしまうので、自由に暗号文と平文のペアは知ることができる。そこで、最終的に求める暗号文と平文のペアは、あくまで復号オラクルで利用したもの以外でなければならない。この条件がなければ、自明に敵が勝ってしまうからである。
 上記の説明では敵の目標は鍵を見つけることであった。しかしながら、安全性の証明において、敵は鍵を求める攻撃よりも、与えれた暗号文(ターゲット暗号文という)に対応する平文を求める(完全あるいは部分的に)攻撃を考えることが多い。というのも敵は鍵を完全に知ることができれば、平文を自明に求めることはできるからである。一方、うまくやれば鍵を使わずに平文を解析することができるかもしれない。つまり、敵にとって鍵よりも平文のほうが解析しやすい可能性があるのである。
 暗号はより強力な攻撃をする敵に対して、安全である方が嬉しい。つまり、より強い攻撃、即ち敵にとってやりやすい仕事の状況である、平文を求めるという敵の攻撃パターンを使うことが多いのである。

 まとめると、「敵は公開鍵などを入力として、復号オラクルなどを利用して、最終的に暗号文とそれに対応する平文のペアが出力できれば、敵の勝ちである(攻撃成功である)。ただし、敵の出力の暗号文は復号オラクルに投げることができない」ということになる。