暗号を使う際には,鍵を知らない第三者によって解読される可能性はないかどうか調べることが重要になる.ここでいう「解読」とは,傍受した平文や暗号文のデータから暗号化に使われた鍵(あるいは等価な情報)を得ることも,別の暗号文に対する元の平文のどんな情報も得ることもできないという意味である.
暗号の安全性の観点からは,暗号の強度は次のように分類される.
最も安全な暗号は,攻撃者に適応的選択暗号文攻撃を許したとしても,強秘匿でありかつ頑強性を保持した方式である.
暗号の安全性評価には暗号文のランダム性や暗号の構造を調べるほか,これまでに知られている攻撃法に対する強度を調べる必要がある.
c = E (k, m)
と表される共通鍵暗号系を考える.∀c∈C, ∀m∈M; Pr(~M = m|~C = c) = Pr(~M = m)
が成り立つとき,暗号系(~K,~M,~C)は情報理論的に安全(完全秘匿)であると言う. これは,暗号文を入手したとき,その中に平文を解読するための情報が一切含まれていないことを意味している.すなわち,暗号文を見る前と後で情報量が同じである.情報理論的に安全 ⇔ |K|≧|M|
ここで,|K| は鍵の長さ,|M| は平文の長さある.D(c) ≠ m (∀k∈K)
となる. これは、Pr(~ C=c|~M=m)=0 であることを意味するが,これは定義 Pr(~M=m|~C=c) = Pr(~M=m) に矛盾する.ゆえに,|K|≧|M| となる.共通鍵暗号の安全性は,以下を前提に考えられている.
共通鍵暗号の安全性を確保するための対処には次の2つの観点がある.
共通鍵ブロック暗号の攻撃法は全ての鍵をしらみつぶしに探索するBrute-force Attackと暗号アルゴリズムを解析し,統計的特性を利用して鍵の探索範囲を限定するShort-cut Attackに分類できる.
現在のところ,ある共通鍵ブロック暗号が全ての攻撃に対して安全であると証明できる実用的な方法は知られていないので,これまで知られている暗号攻撃法に対して個別に,解読に必要な計算量を評価する必要がある.
DESの解読については,次のような例が報告されている.
RSA Security社が主催した DES解読コンテスト(1997~)の第4回(1999.1)に米国の非営利団体 EFF(Electronic Frontier Foundation)が全数探索により約22時間15分で解読した. 25万ドルで開発したDES解読器とインターネット上の約10万台のPCを用いて1秒間に鍵約2,450億個を検証したといわれている.
また,DES暗号に対し暗号攻撃にかけるコストと暗号の解読時間を計算した例を表に示す.ここで,計算機の処理能力は,Mooreの法則に従い1.5年で2倍 (10倍/5年)になると仮定している.
攻撃者 | 個人 | 企業 | 国家 |
予算 | 100万円 | 10億円 | 1兆円 |
解読時間 | PC1000台 | FPGA/ASIC | ASIC |
1995年 | 1.5年 | 6分 | 0.4秒 |
1998年 | 135日 | 90秒 | 0.1秒 |
2001年 | 34日 | 23秒 | 23m秒 |
2004年 | 8.4日 | 6.0秒 | 6.0m秒 |
2007年 | 2.1日 | 1.5秒 | 1.5m秒 |
2010年 | 12.6時間 | 0.4秒 | 0.4m秒 |
2013年 | 3.1時間 | 0.1秒 | 0.1m秒 |
2016年 | 47分 | 25m秒 | 25μ秒 |
2019年 | 12分 | 6.0m秒 | 6.0μ秒 |
2022年 | 3分 | 1.5m秒 | 1.5μ秒 |
このように,DESの56ビットの鍵に対しては,総当り攻撃法に対しても安全とは言えなくなってきている.現状,一般的なセキュリティに対する共通鍵暗号の鍵長は128ビットあれば十分と考えられている.
公開鍵暗号では,攻撃の難しさが素因数分解問題や離散対数問題といった数学上の問題を解く難しさに対応している.
暗号方式による解読計算量の相違を計算した例を表に示す.同じ解読計算量に相当する鍵長を比較したものである. 1024ビットの RSA暗号と 160ビットの楕円暗号が解読計算量的には同等であることを示している.同じ安全性を保つために必要な DSA/RSA暗号のビット長が急激に増大するのが分かる.(暗号化処理の性能が低下する).
セキュリティレベル (bits) | 共通鍵暗号 鍵サイズ(bits) | 楕円暗号 nサイズ(bits) | DSA/RSA 法サイズ(bits) |
56 | 56 | 112 | 512 |
80 | 80 | 160 | 1024 |
112 | 112 | 224 | 2048 |
128 | 128 | 256 | 3072 |
192 | 192 | 264 | 7680 |
256 | 256 | 512 | 15360 |
また,RSA暗号に対し,暗号攻撃にかけるコストと暗号の解読時間を以下の前提の基に計算した例を表に示す.
攻撃コスト | 100万円 | 10億円 | 1兆円 | |||
---|---|---|---|---|---|---|
RSA暗号 | 512 | 1024 | 512 | 1024 | 512 | 1024 |
1999年 | 30年 | 3 x 10 8年 | 11日 | 3 x 105年 | 16分 | 3 x 102年 |
2004年 | 3年 | 3 x 10 7年 | 1.1日 | 3 x 10 4年 | 1.6分 | 30年 |
2009年 | 110日 | 3 x 10 6年 | 2.6時間 | 3 x 10 3年 | 9.5秒 | 3年 |
2014年 | 11日 | 3 x 105年 | 16分 | 3 x 102年 | 0.95秒 | 110日 |
2019年 | 1.1日 | 3 x 104年 | 1.6分 | 30年 | 0.095秒 | 11日 |
2024年 | 2.6時間 | 3 x 103年 | 9.5秒 | 3年 | 0.0095秒 | 1.1日 |
512ビットのRSA暗号に対しては,2009年時点で企業レベルの攻撃者を想定すると数時間のオーダで解読される可能性があることを示している.1024ビットであれば,今後10年程度は企業レベルの攻撃者に対しても解読は困難である.
Brent[*1]は,1960 年代から現在までに素因数分解された合成数のサイズと年次推移を調査した結果,それらのサイズの年次増加曲線は,新アルゴリズムの開発とMoore の法則 (半導体素子の集積度が 18 か月ごとに2倍という経験則) の両方に依存していることを確認した.そこで,このような傾向が今後も継続するであろうという仮定のもとでこの曲線を外挿し,将来その時点で現実的に素因数分解可能な合成数(またはその合成数の最小素因数) のサイズを与える予想式(実験式) を導出している.
Y = 13.24 D1/3 + 1928.6
Y = 13.24(D + 6)1/3 + 1928.6
これによると,ビット数と素体離散対数問題が解かれる年の関係は次のようになる.
1024ビット: 2019年
2048ビット: 2042年
4096ビット: 2070年
&bnsp;[*1] R. P. Brent, "Recent progress and prospects for integer factorisation algorithms," Proc. COCOON 2000, LNCS 1858, Springer-Verlag, pp.3-22, 2000.
情報処理進行事業協会/通信・放送機構の暗号技術評価報告書(CRYPTREC Report) の評価によれば,RSAとDSAの評価は次のようになっている.
理想的なランダム関数を仮定することにより安全性の証明を行う.但し,理想的なランダム関数は現実的でないため,実際にはランダム関数を実用的な一方向性関数で置き換えることにより実用的な暗号を構成する.この暗号方式は安全性が証明されたものではないが,安全性が証明された暗号方式の近似版としてある種の安全性の保証があると考える(1993 Bellare and Rogaway).