【セキュリティ】 暗号化アルゴリズム ~ 共通鍵暗号アルゴリズム編 ~

■ DES (デス。Data Encryption Standard)

 * 64ビットのキーを利用(8ビットはパリティとして使うため、実際は、56ビット)

注意点

 * 脆弱性(総当たり攻撃、差分解読法、線形解読法)が見つかっているため、
   現在使用すべきではない

参考文献

http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.des.aspx
http://www.atmarkit.co.jp/ait/articles/1505/21/news030.html
http://www.atmarkit.co.jp/ait/articles/0401/01/news076.html

■ Triple DES(トリプルデス。トリプルDES)

 * 暗号化→復号→暗号化の順に三回施す暗号アルゴリズム
 * 128 ビットから 192 ビットのキー長を 64 ビット単位でサポート

注意点

 * IPA独立行政法人 情報処理推進機構)では、2030年までにするように勧告
 * 資料は、以下のサイトを参照。

参考文献

http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.tripledes.aspx
http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%AA%E3%83%97%E3%83%ABDES
http://www.ipa.go.jp/security/vuln/ssl_crypt_config.html
http://www.ipa.go.jp/files/000045645.pdf


■ Twofish(トゥーフィッシュ)

 * Blowfish の発展型

■ RC6 (Rivest's Cipher 6)

RC2/RC4/RC5もある
 * Ronald Rivest(ロナルド・リベスト)が設計したブロック暗号
 * 「コリレーションアタック」と呼ぶ統計的手法による攻撃法が有効であることが発見
 * 米国商務省標準技術局(NIST)によって認定される次世代暗号化標準規格(AES)の候補として
   最終選考まで残ったものの結局、採用されなかった

参考文献

http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.rc2.aspx
http://ja.wikipedia.org/wiki/RC2
http://www.maitou.gr.jp/rsa/rsa06.php
http://www.weblio.jp/content/RC6

■ AES (Advanced Encryption Standard)

Rijndaell(ラインダール)共通鍵暗号
 * DESの後継として米国の国立標準技術研究所(NIST)によって制定
  => DESはもちろんトリプルDESより強度が高い
  => 暗号化/復号化処理にかかる時間は、DESと同じか短い
   => つまり安全でかつ早い、「DES < Triple DES < AES」
 * 高度暗号化標準対称暗号化アルゴリズム
 * 128 ビット、192 ビット、256 ビットのキー長をサポート

参考文献

http://itpro.nikkeibp.co.jp/article/Keyword/20070202/260555/?rt=nocnt
http://www.atmarkit.co.jp/ait/articles/1506/18/news019.html
http://type74.org/edman5-1.php

■ Camellia

カメリア(意味は「つばき」)
 * AESを同等もしくは上回る安全性(らしい)

参考文献

http://www.atmarkit.co.jp/ait/articles/0605/20/news011_2.html
http://info.isl.ntt.co.jp/crypt/camellia/dl/CamelliausersguideV1.0_070704.pdf

補足:用語について

 * 長くなったので、以下にまとめた
https://blogs.yahoo.co.jp/dk521123/37269757.html

関連記事

Java

暗号化/複合化する ~Apache Commonsを使用した場合~
http://blogs.yahoo.co.jp/dk521123/32780473.html
Java で暗号化/複合化する ~Java1.8 標準を使用した場合~
http://blogs.yahoo.co.jp/dk521123/34330480.html
Java で暗号化/複合化する ~Java1.8 標準を使用した場合 / IV使用編~
http://blogs.yahoo.co.jp/dk521123/36419973.html
BouncyCastleライブラリ ~Java暗号ライブラリ~
http://blogs.yahoo.co.jp/dk521123/33256866.html
セキュアなランダム文字列生成を考える
http://blogs.yahoo.co.jp/dk521123/36415526.html

C#

共有キー暗号方式 ~暗号化編~
http://blogs.yahoo.co.jp/dk521123/30818470.html

その他

【セキュリティ】 暗号に関わる用語
https://blogs.yahoo.co.jp/dk521123/37269757.html