1

アプリケーションがユーザーの場所を追跡し、それらをファイルに書き込み、定期的に (この例では 1 時間ごとに) サーバーにファイルを送信するアプリケーションを開発しています。次に、人々はサーバーからデータを解読して読み取ります。

PBE で AES を使用しています (この質問の最初の回答)

ただし、多くの電話がこれを使用するため、電話ごと、ファイル送信操作ごとに新しい IVが生成されます。各 IVをサーバーに送信し、それらをサーバー内の対応するファイルに関連付けるのは、やり過ぎのようです。

パスワードのみのように、IV なしでAES を使用できますか? これは AES の論理に反していますか? 私は暗号化の経験がありませんが、この「多くのファイルの暗号化と復号化」を克服する方法を教えてもらえますか?

前もって感謝します。

4

3 に答える 3

4

「自分は何から身を守っているのか?」と自問する必要があります。次に、それに関するセキュリティ ポリシーを作成します。仕事に間違ったツールを使用していると思います。プロセスで大きなセキュリティホールを作成する可能性があるため、設定方法がわからない暗号化を使用しないでください。

あなたが守ろうとしているものと、それをどのように解決するかについて、私が考えることができるいくつかの状況を次に示します。

サーバーに送信されるデータを誰かがキャプチャしてデータのコピーを取得する
ことを防止します。電話とサーバーの間の情報を保護するだけでよい場合は、あなたとサーバーの間で SSL 接続を使用するだけです。セットアップは簡単で、台無しにするのは難しいです。

サーバー上の人々の個人データを保護して、データがサーバーから盗まれた場合にアクセスできないようにします
このためには、サーバー上のデータを「保管中」として暗号化する必要があります。これを行う最善の方法は、対称鍵アルゴリズムを使用して高速な暗号化と復号化を行うことです。そのアルゴリズムの鍵は、クライアント側のみで保護する必要があります (ただし、クライアントがクライアント側の鍵を失った場合、その方法はありません)。データを回復し、データを生成したデバイスのみがそれを復号化できるため、「Web インターフェイス」はありません. または、データベースの損失によって攻撃者がデータを復号化できないようにキーを保護する必要があります (ハードウェア セキュリティのようなモジュール)

電話にキャッシュされたデータを保護して、誰かが電話への root アクセス権を持っていたとしても、アプリが記録した過去のデータを解読できないように
します。これを行うには、対称キーを使用してデータを暗号化し、その対称キーを公開キーで暗号化します。アプリの対称キーのコピーを削除します。この方法では、対称キーが削除されると、アプリのユーザーがデータを取り戻す方法はありません。対称キーを回復できるのは、秘密キーを使用してデータの対称キーを復号化することだけであるためです。 . これは、誰かがアプリの実行を監視している場合は保護されないことに注意してください (それを防ぐ方法はありません)。監視が開始される前に記録されたデータのみが保護されます。

これがあなたの助けになり、より安全なプログラムを作成できるようになることを願っています.

免責事項: 「解読する方法はありません」と言うときは、キーに対してブルート フォース攻撃を使用してすべてのキーを試行しない限り、解読する方法がないことを意味します。

于 2012-08-11T18:04:17.427 に答える
3

ECB モードで暗号化する場合、IV なしで AES を使用できますが、これはお勧めできません。ECB モードでは、同じ平文が常に同じ暗号文に暗号化されるため、平文のパターンが暗号文の認識可能なパターンとして「透けて見える」ことがあります。ECB モードの使用は推奨されません。

ECB モードの問題を回避するために、暗号は平文の各ブロックを前のブロックの暗号化の結果と組み合わせることができます。これはCBC モードとして知られています。これにより、平文のパターンが暗号文で認識されなくなります。同じ平文でも、ストリーム内の場所に応じて異なる暗号文が生成されるためです。しかし、各ブロックをその前のブロックと組み合わせる場合、最初のブロックは何と組み合わせますか? それがIVの目的です。

暗号文と一緒に IV を送信することは大したことではありません。これは小さく、AES の場合はわずか 16 バイトです。送信するのに「過剰」になることはほとんどありません。暗号化されたファイルの一部と考えてください。


ただし、あなたの質問は、キー管理に関する関連する質問をもたらします。AES は対称暗号です。つまり、データを解読する人は誰でも、電話で暗号化に使用したのと同じキーを持っている必要があります。多くの電話がすべて AES 暗号化データをサーバーに送信している場合、追跡しなければならないさまざまなキーがたくさんあります。

(そうしないとセキュリティがないため、各電話は異なるキーを使用すると想定しています。すべての電話が同じキーを使用して暗号化されている場合、アプリを持っている人は誰でもそのキーを抽出し、それを使用して他の人の電話からデータを復号化できます. )

TLSを使用してサーバーにデータを送信している場合、TLS は接続ごとに一時的な暗号化キーを生成し、電話でデータを自動的に暗号化し、サーバーで復号化します。AES を直接扱う必要はまったくありません。

ただし、暗号を「手動で」実装しているため、キー管理も手動で実装する必要があります。サーバーは電話のキーをどのように認識していますか? 「正しい」答えは、Diffie-Hellman key exchangeを使用することです。「間違った」答えは、暗号化されたファイルを傍受できる人なら誰でも鍵を傍受できるため、電話でキーを生成してからサーバーに送信することです。

サーバーに送信されるファイルの暗号化には、公開鍵暗号化の使用を検討する必要があります。そうすれば、電話機はサーバーの公開鍵を知っているだけでよく、秘密にしておく必要はありません。

于 2012-08-11T17:59:46.883 に答える
0

いいえ。ランダムに生成された IV をペイロードとともに送信します。IV が予測可能であるため、TLSに欠陥が発見されました。同じ過ちを犯さないでください。

さらに説明すると、同じキーと同じ IV を持つ 2 つのメッセージを送信すると、セマンティック セキュリティの原則に違反します。各メッセージには、キーと組み合わせて再利用されない固有の IV が必要です。

于 2012-08-30T20:29:48.177 に答える