バックアップTweet追加された行はこの色です。削除された行はこの色です。当サイトにおける暗号に関するページでは、説明が足りなかったり、誤った記述をしていたりするところがあります。今後、少しずつ修正する予定です。暗号理論の『暗号技術のすべて』が発売されています。初心者向けの暗号本です。これまで暗号本に何度か挑戦しつつも挫折してしまった方、学校の課題で悩んでいる方、資格試験にて暗号の問題が苦手な方などにお勧めです。興味がある方は[[宣伝サイト:http://s-akademeia.sakura.ne.jp/main/books/cipher/]]を参照してください。[[Amazon:https://www.amazon.co.jp/dp/4798148814/securityakade-22]]でも発売中です。fucntion)''という。圧縮した後の値を''ハッシュ値(ダイジェスト、メッセージダイジェスト)''といい、その値のビット長のことを''ハッシュサイズ(ハッシュ長)''という。圧縮するだけならば長い分を単に切ればよいが、それでは暗号学的に意味がない。そのためハッシュ関数は単に圧縮するだけでなく、SR/PR/CRなどの性質を満たす必要がある。(鍵付き)ハッシュ関数にはいくつかの安全性がある。ここで、H={hSUB{k};}SUB{k∈N};をハッシュ関数族、hSUB{k};をハッシュ関数とする。衝突は、''弱い意味での衝突''と''強い意味での衝突''に分けられる。''弱い意味での衝突なし''とは、同じハッシュ値が出現しやすい、もしくはハッシュ値を予測しやすい(周期性がある)などの特徴がないことである。入力値が1ビットでも変われば、出力値は大きく変動することがいえる。''強い意味での衝突なし''とは、逆演算がNP完全問題に帰着されることである。向性を満たし、逆計算は非効率ということである。Resistance:原像計算困難性)''とは、ランダムに与えられた出力yについて、hSUB{k};(x)=yを満たす入力xを計算することが困難という性質である。通常の一方向性と同じである。x'");を満たす入力x'を計算するのが困難という性質である。2ndPRとも呼ばれる。x'");を満たす(x,x')を計算するのが困難であるという性質である。[補講]CRを計算量理論に基づいて扱うときは、関数の集合で考える。単純なアタック(目的の結果が得られるまで、入力を選択して出力の計算を繰り返す方法。ハッシュ関数の内部構造を利用しない攻撃)の場合、各性質の問題を解くためには次の計算量が必要になる。lはハッシュ関数の出力長である。|''PR''|&mimetex("O(2^l)");||''SR''|&mimetex("O(2^l)");||''CR''|&mimetex("O(2^{\frac{l}{2}})");|例:[[MD4]]の場合、出力長は128ビットなので、PRとSRを解くためには&mimetex("O(2^{128})");、CRを解くためには&mimetex("O(2^{64})");の計算量が必要になる。よって、各性質は「PR>SR>CR」の関係にある(不等号は問題の強さの大小を意味する)。直観的には、SRはAが指定された値に対して生じる衝突ペアのもう片方の値を求めることであり、CRはAが何でもよい衝突ペアを求めることである。明らかにAにとってはCRの方が計算が簡単なので、SRはCRより難しい問題である。「UOW>CR」の関係にある。直観的に考えると、CRではハッシュの衝突のあるようなペアをひとつでも出力できればよいだけである。UOWの場合はAが最初にチャレンジャーにxを投げる。その後でチャレンジャーがAにkを投げている。CRよりチャレンジャーにとって有利な状況である。よって、UOWはCRより難しい問題である。PR/SR/CR/UOWの各性質を問題として捉えると次のようになる(チャレンジャーが与える情報から、敵Aが問題の解を求めるという構図)。簡単な問題が解けないという仮定は、難しい問題が解けないという仮定より、仮定が強い。Aにとって容易な問題に対して、耐性を持つようなハッシュ関数の存在を仮定するということは、仮定が強いことになる。よって、CRHFの存在仮定とUOWHFの存在仮定を比較した場合、UOWHFの存在仮定の方が弱い仮定になる。以上の考察より、仮定の強弱は次のようになる(不等号は仮定の大きさを意味する)。実際に最初にCRHFの存在仮定で安全性証明が付けられてから、後でより弱い仮定であるUOWHFの存在仮定で安全性証明を付けられる例が多い。[補講]例えば、「CRHFの存在仮定」を「CR仮定」などと省略されることも多い。[[ブロック暗号]]の場合は鍵をXORすると、出力値をでたらめにできる。ハッシュ関数の場合は入力を鍵とすると出力値をでたらめにできるわけだ。[#v3082db4]-ゼミノート-『現代暗号の基礎数理』-『最新暗号技術』-暗号講座資料[[「ハッシュ関数の証明可能安全性」:http://www.ieice.org/~isec/event/isec05051707.pdf]]。