暗号化とは文字列に対して、なんらかの暗号アルゴリズムを用いて、
他の文字列に変換することです。
また、暗号化された文字列を元の文字列に戻すことを復号といいます。
暗号化には様々な方式や方法があります。
共通鍵暗号方式
共通鍵暗号方式の特徴
暗号化と復号に同じ鍵を用いる方式で、暗号鍵と復号鍵をいずれも秘密にするため、
秘密鍵暗号方式とも呼ばれます。
仕組みとしては、
1. 暗号鍵を用いてデータを暗号化
2. なんらかの手段で相手に安全に暗号鍵を送る
3. 入手した暗号鍵を使って復号する
といった感じです。
シンプルな方式なので簡単に使用可能ですが、
安全に鍵を送ることが難しく、複数個の鍵を管理する必要があります。
共通鍵暗号の方法
・ストリーム暗号
平文をビットや、バイト、文字ごとに処理する暗号方式です。
「RC4」が有名で、SSLや無線LAN暗号化方式のWEPで使用されます。
・ブロック暗号
平文を一定のサイズ(ブロック)に分割し、ブロックごとに暗号化を行う方式です。
DES・・・1977年以降米国政府の標準として採用されました。ブロック長は64ビットでブロックに分解し56ビットの鍵を使用します。
しかし、これはすでに解読方法が発見されたため、使用してはいけません。
3DES・・・DESを三重に適用することによって強度を高めたものです。
AES・・・ブロック長は128ビットで、使用する鍵の長さは128/192/256ビットの中から選択できます。
3DESより計算処理の効率に優れているため、DESや3DESの後継として広く利用されています。
といったものが有名です。
公開鍵暗号方式
公開鍵暗号方式の特徴
暗号化と復号に別々の鍵を用いる方式です。
1.発信者から公開鍵を受け取る
2.公開鍵を使ってデータを暗号化し、相手へ送る
3.受信者は自分の秘密鍵を用いて受け取ったデータを復号する
ロジックが複雑になるため、処理が遅くなりますが、
自分の秘密鍵一個だけの安全な管理でよく、相手に鍵を送る必要がありません。
公開鍵暗号の方法
・RSA(Rivest Shamir Adleman)
・・・Rivest, Shamir, Adlemanの三人によって開発された公開鍵暗号方式です。
桁数の大きな整数の素因数分解が困難である戸言うことを安全性の根拠としています。
1024ビットの鍵長が標準でしたが、2048ビット以上へ以降が進んでいます。
・楕円曲線暗号(Elliptic Curve Cryptography)
・・・楕円曲線上の離散対数問題(ECDLP)の難しさを安全の根拠とする公開鍵暗号方式です。
基本的にRSAよりも短い鍵長で同程度の暗号強度を実現できますが、条件の選び方によっては逆に脆弱になってしまう可能性もあります。
ハッシュ関数
データをもとに固定長のビット列を出力する関数のことを指します。
ハッシュ関数から求められた値をハッシュ値といいます。
主に、メッセージ認証、ワンタイムパスワードの生成、ディジタル署名などに使われています。
例えば、インターネット上に置かれた大容量のファイルの
ダウンロード前のハッシュ値とダウンロード後のハッシュ値を比べることで、
ダウンロード時にファイルの破損がないか確認することができます。
ハッシュ関数には以下の特徴があります。
・データの大きさに関わらず、ハッシュ値は必ず固定長
・データが同じであれば、ハッシュ値も必ず同一となる
・ハッシュ値から入力データを求めることはできない
また、主なハッシュ関数として以下が挙げられます。
・MD4
・・・Ron Rivest氏が開発したハッシュ関数で、128ビットのハッシュ値を出力します。
・MD5
・・・Ron Rivest氏が開発したハッシュ関数で、128ビットのハッシュ値を出力します。
MD4からアルゴリズムが複雑化し、広く使われています。
・SHA-1
・・・NIST(米国国立標準技術研究所)がMD4を改良して開発したハッシュ関数です。
160ビットのハッシュ値を出力します。
・SHA-2
・・・SHA-224, SHA-256, SHA-384, SHA-512の総称で、「-」以後の数字が出力するハッシュ値を示します。
・SHA-3
・・・NISTにより、2012年10月に「Keccak」が選出されました。
コメント