-2

次のような独自の暗号化アルゴリズムを簡単に手作りできます。

// make sure the private key is long enough
byte key[] = {0x3e, 0x33, 0x7e, 0x02, 0x48, 0x2a, 0x4e, ...};
byte data[] = "a string to be encrypted".getBytes("utf-8");
for (int i = 0, j = 0; i < data.length; ++i, ++j) {
    data[i] ^= key[j];
    if (j + 1 == key.length)
        j = 0;
}

上記のアルゴリズムでは、秘密鍵を渡さないと、暗号化を破る簡単な方法が見つかりません(または私はあまりにも素朴ですか?)、暗号化アルゴリズムをこのように簡単に作成できる場合、作成のポイントは何ですか標準?これらのよく知られたアルゴリズムを使用する利点は何ですか?

4

3 に答える 3

3

提案されたアルゴリズムに直接話すと、それにはいくつかの大きな問題があります。

  1. データがキーよりも長い場合、Vigenere Cipherのようになるため、キーの回復が非常に簡単になります。

  2. キーを使用して単一のメッセージを暗号化することしかできません。同じキーで2つ以上のメッセージを暗号化すると、メッセージ内でキーを再利用する場合と同じ問題が発生しますが、さらに悪いことになります。

  3. キーは実際に安全であるためにメッセージと同じ長さでなければならないので、キー管理の悪夢があります。メッセージと同じ長さのキーをどのように保存しますか?読みたい人に安全に伝えるにはどうすればよいですか?1GBのファイルを暗号化する場合はどうなりますか?暗号化されたバージョンには2GBのストレージが必要です

  4. キーは完全にランダムである必要があります。乱数ジェネレーターに欠陥があると、メッセージとキーに関する情報が公開されます。確かに、これはAESのようなアルゴリズムの問​​題でもありますが、RNGが悪いと、AESメッセージ/キーを壊す労力が減りますが、スキームの場合ほど悪くはありません。

AESのようなよく知られたアルゴリズムは、セキュリティを強化するために短いキーを使用して、この種の問題に対処します。単一の256ビットキーを使用すると、安全に使用できなくなる前に膨大な数のメッセージを暗号化できます。256ビットキーの管理と保存は、1GBのキーよりもはるかに簡単です。

于 2013-01-23T15:09:35.293 に答える
3

デイブにならないように、よく知られたアルゴリズムを使用します。

シュナイアーの法則は、「誰でもセキュリティシステムを発明できるので、それを破る方法を考えることができないほど賢い」と述べています。

つまり、基本的には、セキュリティシステム(暗号化アルゴリズム、認証システムなど)は、作成者が安全であると言っているため、安全であるとは見なされません。このトピックに関する他の専門家は、安全であると見なされる前に、それをレビューする必要があります(通常は長期間レビューします)。

于 2013-01-23T15:19:33.590 に答える
1

よく知られているアルゴリズムを使用する主な利点は、欠陥や弱点がないかレビューおよび分析されることです。あなたがあなた自身を転がすならば、あなたはコミュニティレビューの利益を得ません。さらに、プラットフォームに応じて、組み込みの暗号化を使用するのはおそらくほぼ同じくらい簡単、または同じくらい簡単です。

私は暗号解読の専門家ではありませんが、これほど単純なものはおそらくそれほど安全ではありません。

それに、こんなに簡単だったら、みんなやってみませんか?

于 2013-01-23T14:50:47.227 に答える