皆さん、利用できる暗号はたくさんありますが、今日使用するのに最も安全な暗号はどれですか?
7 に答える
不明な場合は、128ビットキーでAES(「Rijndael」とも呼ばれます)を使用してください。キーサイズについて何らかのフェチを開発した場合は、192ビットや256ビットなどのより大きなキーを選択することで、不合理な問題を解決できます。追加コストは高くありません(AES-128と比較してAES-256のワークロードは+ 40%であり、実際にその違いを観察するには非常に高速なネットワークが必要です)。
選択したキーサイズに関係なく、AESの正しいmcrypt暗号は常にであることに注意してくださいMCRYPT_RIJNDAEL_128。これは、AES標準が128ビットのブロックサイズのRijndael暗号のフレーバーを参照しているためです。AES-256が必要な場合はMCRYPT_RIJNDAEL_128、ではなく256ビット(32バイト)のキーを使用する必要がありますMCRYPT_RIJNDAEL_256。
AESは1998年に発行され、2001年に連邦標準として米国政府によって採用されましたが、現在は弱さの兆候は見られません。いくつかの数学的特性は後で見つかりましたが、実際のセキュリティには影響しません。ほとんどの場合、AESが安全である理由について比較的正確な知識があることを強調しています。(何千人もの才能のある暗号学者が)AESほど注目を集めている対称暗号化アルゴリズムは他にありません。
ほとんどのセキュリティ問題は、アルゴリズム自体ではなく、暗号化アルゴリズムの使用方法に起因します。適切なチェーンモードを使用し、MACを追加し、パディングを管理し、そして何よりもキーを安全に処理します。このすべてを正しく理解した場合(これは見た目よりもはるかにトリッキーです)、Rijndael、Twofishなどを選択することを心配する時期になります。
Thomas Porninのすばらしい答えに加えて、「セキュリティ」(機密性/整合性/信頼性/可用性)の観点から達成しようとしていることも考慮する必要があります。
いずれの場合も、次のようないくつかの質問に対処する必要があります...これは誰に適用されますか?どこで、なぜ使用されているのですか(何を保護していますか)?それはどのくらい続くのですか?等
たとえば、データが実際には20〜30分間しか持続しない場合、256ビット演算の本格的な連続でセッションデータを実際に暗号化しても意味がありません。安全な128ビットアルゴリズムは、2倍近く高速であるか、少なくともクロックサイクルの少ない負荷を使用し、(それ以上ではないにしても)同じくらい安全です。
また、弱くて短いキーの方法で、長期間続くことを意図したもの(機密文書やファイル、秘密キーなど)を暗号化しても意味がありません。ある種の認証とパディングの適切な使用を備えた複数のアルゴリズムが必要になる場合があります。複数のアルゴリズム(主にtwofish、AES、RSA)を使用するクライアントの要求に応じて、コンテンツを定期的に暗号化して署名しました。
また、(Thomasが指摘したように)どちらかを忘れないでください。安全なメソッド(または複数のメソッド)を安全でない方法で実装できます。各式などのバリエーションが膨大なため、「安全」なものを実際に実装するのは難しい場合があります。
一般的に、鍵はロックを解除することと同じくらい安全です。車のロックを解除した状態で車のキーを車の中に置いたままにすると、キーは安全ではなく、通り過ぎた人が持っていくことができます。十分に分散された32文字のキーを持つBlowfishは、今日の他のものと同じように安全です。ただし、3文字のキーは瞬く間に壊れることがあります。
「最強の暗号はAES-256です」
Bruce SchneierのWebサイトの詳細から、皮肉なことに、AES-256は、128、192、および256の3つのキーサイズの中で最も安全性が低い可能性があります。256ビットバリアントのキー生成には問題があります。
NISTの論文によると、RJINDAELは、MARS、twofish、またはserpentと比較してセキュリティマージンが低かった。本当に最強の暗号が必要な場合は、そのうちの1つを選択してください。
http://csrc.nist.gov/archive/aes/round2/r2report.pdf
引用:「MARSはセキュリティマージンが高いようです。MARSは2種類のラウンドを採用しているため、正確な特性評価は困難です。MARSはその複雑さに基づいて批判を受けており、セキュリティ分析を妨げている可能性があります。 AES開発プロセスの期間中。
Rijndaelには十分なセキュリティマージンがあるようです。ラウンド数はキーサイズによって変化するため、セキュリティマージンの測定は少し困難です。Rijndaelは、2つの理由でいくつかの批判を受けています。それは、そのセキュリティマージンがファイナリストの間で低い側にあることと、その数学的構造が攻撃につながる可能性があることです。ただし、その構造はかなり単純であるため、AES開発プロセスの指定された時間枠でのセキュリティ分析が容易になった可能性があります。
蛇は高いセキュリティマージンを持っているようです。Serpentは単純な構造でもあり、AES開発プロセスの指定された時間枠でのセキュリティ分析を容易にした可能性があります。
Twofishのセキュリティマージンは高いようです。Twofishはキーに依存するラウンド関数を使用するため、セキュリティマージンの概念は、他のファイナリストよりもこのアルゴリズムの意味が少ない場合があります。TwofishSボックスがkビットキーの場合のエントロピーのk/2ビットのみに依存しているため、Twofishは分割統治攻撃に適している可能性があるとの推測がありますが、そのような攻撃は見つかりませんでした。Twofishは、その複雑さについていくつかの批判を受けており、AES開発プロセスの期間中の分析を困難にしています。」
一部のアルゴリズムは、さまざまな点で他のアルゴリズムよりも優れています。「最も安全」の基準が何であるかはわかりません。
確かに、最近はDESベースのアルゴリズムを使用するべきではありません(自由な選択があると仮定します)。AES(Rijndael)は、NISTおよびその他の機関の現在の標準です。
一般に、特定のアルゴリズムのビット数が多いほど安全性が高くなりますが、初期化ベクトルを使用し、ECBを使用しないようにしてください。
HTH
C。
詳細を確認したい場合は、主に私によるブロック暗号に関する記事がhttp://en.citizendium.org/wiki/Block_cipherにあります。
現在の米国の標準に準拠するには、AES(以前のRijndael)を使用します。AESコンペティションの他のファイナリスト(Serpent、MARS、Twofish、RC-6)も同様に問題ないはずです。ただし、RC6のライセンスが必要だと思います。
AESはFIPSで承認されているため、私は通常AES-128を使用します。最強の暗号はAES-256(MCRYPT_RIJNDAEL_256)です。
mcryptはモジュラー設計であり、新しい暗号を簡単に追加できます。