4

私は次のことを検討しています:私は可能な限り安全に保護したいデータストリームをいくつか持っています-いくつかのIVでAESを適用し、次にいくつかのIVでBlowfishを適用し、最後にいくつかのAESを適用することは意味がありますか? Ⅳ?

暗号化/復号化プロセスは非表示になるため (デバッグからも保護されます)、どの暗号方式とどの IV が使用されたかを簡単に推測することはできません (ただし、この暗号チェーンの力は依存できないという事実を認識しています)デバッグに対するすべての保護は、しばらくすると破られる可能性があるためです)。

私はこれを行うためのコンピュータ能力を持っています (そのデータ量はそれほど大きくありません) ので、問題はそれを実装する価値があるかどうかだけです。たとえば、TripleDES は 3 つの IV と暗号化/復号化/暗号化スキームを使用して非常によく似た動作をしたため、おそらくまったくナンセンスではありません。もう 1 つの質問は、第 1 部と第 3 部に同じ IV を使用した場合、または 3 つの部分すべてに同じ IV を使用した場合、セキュリティがどの程度低下するかということです。

この件に関するヒントを歓迎します

4

14 に答える 14

11

この特定の組み合わせについてはよくわかりませんが、特定の組み合わせが広範囲に研究されていない限り、このようなものを混ぜることは一般的に悪い考えです. 数学的変換が実際に互いに打ち消し合い、最終結果がハッキングされやすくなる可能性があります。AES または Blowfish の 1 回のパスで十分です。

更新: 以下の私のコメントから…</p>

例として TripleDES を使用します。世界最高の暗号学者がその組み合わせを作成するのにどれだけの時間と労力を費やしたかを考えてみてください (DoubleDES には脆弱性があることに注意してください)。

更新 2: AES がシステムの弱点になる可能性は非常に低いという Diomidis に同意する必要があります。システムのほぼすべての側面は、AES よりも危険にさらされる可能性が高くなります。

更新 3: ストリームで何をしているかによっては、TLS (SSL の後継) だけを使用したい場合があります。詳細については、Practical Cryptographyをお勧めします。これは、対処する必要のある多くの懸念事項に対処するのに非常に優れています。とりわけ、ストリーム暗号について説明します。これは、AES よりも適切である場合とそうでない場合があります (AES はブロック暗号であり、暗号化するデータ ストリームがあると明確に述べているため)。

于 2008-09-23T09:58:51.323 に答える
4

ハッカーは常にチェーン内の最も弱い要素を攻撃します。したがって、強力な要素をさらに強力にすることはほとんど役に立ちません。128ビットのキー長では、AES暗号化を解読することはすでに不可能です。ブローフィッシュも同様です。さらに長いキーの長さを選択すると、さらに難しくなりますが、実際には128ビットがこれまでにクラックされたことはありません(おそらく今後10年または20年以内にはありません)。したがって、この暗号化はおそらく最も弱い要素ではないので、なぜそれをより強力にするのでしょうか?すでに強いです。

他に最も弱い要素は何か考えてみてください。IV?実際、私は素晴らしいIVを選択したり、それを非表示にしたりするのにあまり時間を無駄にしません。最も弱いキーは通常、暗号化キーです。たとえば、ディスクに保存されているデータを暗号化しているが、このデータをアプリケーションで読み取る必要がある場合、アプリケーションはIVを認識し、暗号化キーを認識している必要があります。したがって、両方がバイナリ内にある必要があります。これは実際には最も弱い要素です。20の暗号化方法を使用してデータにチェーンする場合でも、20のすべてのIVと暗号化キーはバイナリに含まれている必要があります。ハッカーがそれらを抽出できる場合は、1つの暗号化方法ではなく20を使用したため、追加の情報はゼロになります。安全。

プロセス全体が何であるか(誰がデータを暗号化するか、誰がデータを復号化するか、どこにデータが保存されるか、どのように転送されるか、誰が暗号化キーを知る必要があるかなど)がまだわからないため、非常に困難です。最も弱い要素が実際に何であるかを言うと、AESまたはBlowfish暗号化自体があなたの最も弱い要素であるとは思えません。

于 2008-09-23T10:44:00.153 に答える
4

最初の暗号化アルゴリズムとは非常に異なる別の暗号化アルゴリズムの上に適用することで、失うものは何もないと思います。ただし、途中で別のアルゴリズムを実行したとしても、最初のアルゴリズムの上に同じアルゴリズムの 2 番目のラウンドを実行することには注意が必要です。2 つの実行間の相互作用により、脆弱性が生じる可能性があります。

そうは言っても、暗号化の部分で苦労しすぎていると思います。ほとんどのデータ漏洩は、AES などの業界標準の暗号化アルゴリズムを破ることによってではなく、システムの他の弱点によって発生します。キー管理、暗号化されていないデータの処理、アルゴリズムの実装の弱点 (データまたはキーが漏洩する可能性)、およびより広範なシステムの問題 (たとえば、データのバックアップで何を行っているか) を調べることにもっと時間を費やすことをお勧めします。

于 2008-09-23T10:03:15.307 に答える
1

誰からデータを保護しようとしていますか? あなたの兄弟、あなたの競争相手、あなたの政府、またはエイリアン?

これらにはそれぞれ、意味のある予算 (時間/現金) 内で、データが「可能な限り安全」であると見なすことができるさまざまなレベルがあります。

于 2008-09-23T09:58:39.903 に答える
1

あなたが使用しているアルゴリズムを曖昧にすることに頼りません。この種の「あいまいさによるセキュリティ」は、長くは機能しません。コードを逆コンパイルすることは、使用している暗号を明らかにする 1 つの方法ですが、通常、このような秘密を長期間保持することはありません。そのため、最初に秘密鍵/公開鍵暗号を使用しています。

于 2008-09-23T10:11:57.657 に答える
0

はい、それは有益である可能性がありますが、ほとんどの状況でおそらくやり過ぎです。また、ハンクが述べているように、特定の組み合わせは実際に暗号化を弱める可能性があります。

TrueCryptは、AES-Twofish-Serpentのような多くの組み合わせ暗号化アルゴリズムを提供します。もちろん、それらを使用するとパフォーマンスが低下します。

于 2008-09-24T15:03:52.720 に答える
0

個別のIVとキーを使用して複数回暗号化する場合、実際にはセキュリティを低下させることはできませんが、セキュリティの向上は予想よりもはるかに少ない可能性があります。2DESの例では、中間者攻撃は難易度を二乗するよりも、壊すのは2倍だけ難しいです。

ただし、一般的には、単一のよく知られたアルゴリズムを使用し、セキュリティを強化する必要がある場合はキーの長さを増やす方がはるかに安全です。暗号システムの作成は専門家に任せてください(そして私は自分自身にそれらの1つを数えません)。

于 2008-09-23T10:32:22.663 に答える
0

アルゴリズムを変更しても品質は向上しません (アルゴリズムが壊れると予想される場合を除きます)。それは、キー/ブロックの長さと難読化の利点についてのみです。最初のキーが漏洩したとしても、結果のデータはランダムなデータと区別できないため、これを数回行うのは興味深いことです。特定のプラットフォームでより適切に処理されるブロック サイズがあります (例: レジスタ サイズ)。

攻撃品質の暗号化アルゴリズムは力ずくでしか機能しないため、費やせる計算能力に依存します。これは、最終的に誰かが暗号化を解除するのに必要な平均時間を増やすことしかできないことを意味します。

データが本当に価値のあるものなら、データではなくキーホルダーを攻撃した方がいいでしょう...

于 2008-09-24T17:36:30.357 に答える
0

最初は明確ではないかもしれませんが、2 回暗号化する方が 1 回暗号化するよりも安全です。

直観的には、同じアルゴリズムで 2 回暗号化しても追加の保護は得られないように見えます。...しかし、そうではありません。

たとえば、プレーンテキストAから始めて、キーK1で暗号化してBを取得します。次に、キーK2でBを暗号化してCを取得します。

直感的には、Aを暗号化してCを直接取得するために使用できるキーK3が存在する可能性が高いと想定するのが合理的であるように思われます。この場合、ブルート フォースを使用する攻撃者は最終的にK3に遭遇し、 Cを復号化できるため、追加の暗号化ステップによってセキュリティが追加されません。

ただし、そのようなキーが存在する可能性はほとんどありません (最新の暗号化スキームの場合)。(ここで「非常にありそうもない」と言うときは、普通の人が「ありえない」という言葉を使って表現することを意味します)。

なんで?
キーは、平文から暗号文へのマッピングを提供する関数と考えてください。
鍵の長さがすべてKLビットの場合、そのようなマッピングは 2^KL あります。ただし、それぞれKL
ビット の 2 つのキーを使用すると、(2^KL)^2 のマッピングが得られます。 これらのすべてが 1 段階の暗号化に相当するわけではありません。

2 つの異なるアルゴリズムが使用されている場合に 2回暗号化するもう 1 つの利点は、アルゴリズムの 1 つに脆弱性が見つかった場合でも、他のアルゴリズムがある程度のセキュリティを提供することです。

他の人が指摘したように、キーのブルート フォースは通常、最後の手段です。攻撃者は、別の時点でプロセスを破ろうとすることがよくあります (たとえば、ソーシャル エンジニアリングを使用してパスフレーズを発見するなど)。

セキュリティを強化するもう 1 つの方法は、単純に 1 つの暗号化アルゴリズムでより長いキーを使用することです。

...遠慮なく私の数学を修正してください!

于 2008-09-24T11:07:31.527 に答える
0

また、アルゴリズムを難読化するために時間を無駄にしないでください。Kirchoff の原則を適用し、AES 自体が、データを「安全」にする必要がある多くの場所で使用されている (および使用が認められている) ことを覚えておいてください。

于 2008-09-23T10:00:28.293 に答える
0

Damien: そうです、もっとはっきりと書くべきです。私は競合他社について話している、それは商用利用のためのものです。したがって、有意義な予算が利用可能ですが、なぜそれを行っているのかを確信せずに実装したくありません:)

ハンク:はい、これも怖いです。このアイデアを最も支持する情報源は、TripleDES でした。一方、あるアルゴリズムを使用して一部のデータを暗号化し、別のアルゴリズムを適用する場合、暗号化全体の「力」がスタンドアロンのアルゴリズムを使用するよりも低くなると、非常に奇妙になります。しかし、これは等しくないという意味ではありません...これがヒントを求めている理由です。これは私の知識の領域ではありません...

于 2008-09-23T10:05:36.517 に答える
0

ディオミディス: これは基本的に私の見解ですが、私の同僚は、それが本当にセキュリティを「強化」することを私に納得させようとしています。私の提案は、私が何をしているのかを考えたり深い知識を持たずに、アルゴリズムを次々と使用する代わりに、より強力な暗号化キーを使用することです。

于 2008-09-23T10:10:13.793 に答える
0

@Miro Kropacek - あなたの同僚は Voodoo を通じてセキュリティを追加しようとしています。代わりに、AES を使用するなど、欠陥を分析できる単純なものを作成してみてください。

デバッグから保護することでセキュリティを強化することを提案したのは彼(彼女?)だったと思います...

于 2008-09-23T10:14:11.660 に答える
-1

私は上で述べたことに同意します。暗号化の複数の段階はあなたに多くを買わないでしょう。「安全な」アルゴリズムを使用している場合、それを破ることは事実上不可能です。一部の標準ストリーミングモードでのAESの使用。http://csrc.nist.gov/groups/ST/toolkit/index.htmlを参照してください受け入れられた暗号とモード。そのサイトで推奨されているものはすべて、適切に使用すれば十分に安全である必要があります。さらに安全にしたい場合は、AES 256を使用してください。ただし、とにかく128で十分です。最大のリスクは、アルゴリズム自体に対する攻撃ではなく、キー管理に対する攻撃、またはサイドチャネル攻撃(アプリケーションと使用法によってはリスクである場合とそうでない場合があります)です。アプリケーションがキー管理攻撃またはサイドチャネル攻撃に対して脆弱である場合、適用する暗号化のレベルは実際には重要ではありません。これが私があなたの努力を集中するところです。

于 2008-09-28T14:05:48.293 に答える