2

私は現在、CBC モードで Rijndael 256 ビットを使用して、他の場所に送信する必要があるデータを暗号化しています。セキュリティを強化するために、ランダムに生成された SHA-256 ハッシュを取得し、暗号化キーと初期化ベクトルを使用するためにさまざまな部分を切り取る数式を使用しています (もちろん、ハッシュはデータと共に送信されます)。キーと IV を生成する式はかなり基本的なものであり、コードは PHP で記述されているため、ユーザーがアクセスできるページにコード化されています。私が疑問に思っているのは、これは1つの一定のキーおよび/またはIVを持つよりも多かれ少なかれ安全ですか?

4

2 に答える 2

2

これはおそらくあなたが行きたい方法ではありません。本質的に、キーとIVを生成するためにHASHを操作するための数式を理解するのに、長くはかからない優れたハッカーが必要です。したがって、あなたは本質的に王国自体と一緒に王国に鍵を送っています。

通常、このタイプの操作を実行する方法は、セッションキーを生成することです(現在実行しているのと同じ方法である可能性があります)が、公開キー暗号化方式を使用してそのセッションキーを暗号化します。次に、公開鍵暗号化方式を使用して、データが送信される場所にセッション鍵を送信します。受信者は公開鍵を持っており、通信を暗号化できます。チャネルセッションキー。

今、双方が通信を持っています。セッションキーは平文で送信されていないため、チャネルセッションキーとREALデータはこのキーを使用して暗号化できます。

Rijindaelは、公開鍵暗号アルゴリズムが非対称である対称暗号アルゴリズムの例です。公開鍵暗号アルゴリズムの例としては、RSA、ECDSA(暗号)などがあります。

于 2012-06-27T15:10:46.530 に答える
0

短期使用キーの生成について。長期キーをお持ちください。受信者と日付形式について合意します。毎日、長期キーをその日の日付と連結し、SHA-256 でハッシュして、その日付のみに使用する日キーを生成します。

dayKey <- SHA256("my very secret long term key" + "2012-06-27")

受信者は、最後にまったく同じキーを生成するために必要なすべての情報を持っています。攻撃者は日付を知っていますが、長期キーは知りません。

真夜中頃のプロトコルとその他のいくつかの詳細に同意する必要があります.

渡す暗号化データの量に応じて、1 か月または 2 か月ごとに長期キーを変更します。渡すデータが多いほど、長期キーを頻繁に変更する必要があります。

于 2012-06-27T22:06:19.917 に答える