暗号化アルゴリズムの種類


暗号化のアルゴリズムの種類を紹介します。

アルゴリズム / 戻る / トップページ


暗号化アルゴリズムの種類

暗号化アルゴリズムにはどのようなものがあるのか調べる必要があったため、 その時にまとめたものを公開します。 私はこの分野には門外漢なので、勘違いをしている可能性もあります。 ご了承ください。 詳細は、 共通鍵暗号方式(秘密鍵暗号方式) のページが参考になります。
 
rot13
 
メッセージ内の文字をアルファベットの 13 文字分ずらす単純な方法です。 簡単に暗号化解除できるため安全とは言えませんが、 メッセージをスクランブル化する方法として広く普及しているそうです。
 
ワンタイムパッド
 
数学的に証明されているただ一つの絶対破られない究極の暗号です。 暗号化する対象と同じ長さの鍵を用意して、 1 バイト毎に鍵と暗号化の対象を演算して暗号化します。 鍵は規則性の無い乱数列で、一度使った鍵は二度とつかってはいけません。 つまり、実用性は全くない方法でもあります。
 
DES 暗号化アルゴリズム
 
70 年代前半ころから使われている、 世界で最もよく使われていて歴史のある暗号化アルゴリズムです。 つまり、ありふれたアルゴリズムであるとも言えますし、 それなりの安全性があるとも言えます。
 
64 ビット単位のブロック暗号化を行います。詳しくは dW - Security - DES に代わる Rijndael (ラインダール) のページが参考になります。
 
crypt 関数 (POSIX crypt) も DES をベースとしています (パスワードを暗号鍵として使用する DES の修正版を使って、 2 バイトの salt (若しくはゼロの文字列) を暗号化しています)。
 
メジャーな実装として libdes というライブラリが良いようです (OpenSSL, glibc などにもインポートされており、 商用・非商用を問わず自由な使用が認められています)。
 
MD4, MD5
 
RSA 社の暗号化アルゴリズムです。 128 ビットのハッシュを鍵としています (一方向ハッシュ関数)。 MD4 は任意長の文字列を 128bit のハッシュ値に変換し、 MD5 はブロック長は任意です。
 
MD4 アルゴリズムは最近では十分な信頼性を持っているとは言えなく なってきているため、さらに対衝突性を高めた MD5 アルゴリズムが 主に使用されています。 しかし、MD5 は MD4 に比べて冗長な実装なので、速度を求める場面では 依然として MD4 を使用することが勧められています (MD4 は 32bit マシンでの実装を前提にしたアルゴリズムです)。
 
MD2、MD4、MD5の仕様およびソースコードは、 それぞれ IETF (Internet Engineering Task Force) の RFC1319、RFC1320、RFC1321 にあります。
 
Rijndael 暗号化アルゴリズム (ラインダール)
 
2000 年末に AES (Advanced Encryption Standard) として選定された アルゴリズムで、 これからの世代の標準的な暗号化アルゴリズムとして 注目されているもののようです。
 
鍵の長さとして 128, 192, 256 bit を選択できるようになっており、 コードブロック長もこの 3 つの長さのうちのいずれかになります。 任意の長さのデータを暗号化するには、元データをブロック長でスライスし、 それぞれのブロックに対して個別に暗号化処理を適用することになります。 詳しくは 数学と計算 の「暗号の話」のページが参考になります。
 
The Rijndael Pagerijndael.c にソースコードが公開されています。
 
SHA (Secure Hashing Algorithm)
 
米国標準技術局 (National Institute of Standards and Technology, NIST) が国家安全保障局 (National Security Agency, NSA) との関連で設計した アルゴリズムです。
 
デジタル署名アルゴリズム (digital signature algorithm, DSA) で使われる 160 ビットのハッシュを生成 (一方向ハッシュ関数) します。
 
SHA-1
 
1994 年に発表された改訂版の SHA です。 SHA と SHA-1 は Secure Hash Standard (SHS) の一部であり、 MD4 関数ファミリーと似た特性を持っているそうです。 ブロック長は任意です。

戻る