1

Encrypting a file with RSA in Python の投稿で同様の質問をしましたが、この質問には別の意味があります。

AESパスワードを暗号化するためにRSAを使用して、AESでファイルを暗号化しています。

唯一の違いは、AES パスワードを保存したくないということです。ユーザーは、RSA キーへのパスとパスワードの両方を指定する必要があります。

では、このスキームについてどう思いますか?

path_to_RSA_key = ... # ユーザー指定
pwd = ... # これはファイルの暗号化に使用されます。また、ユーザーによって与えられます。

rsa_enc = RSA.importKey(path_to_RSA_key)
# RSA でパスワードを暗号化し、最後の 32 文字を保持します
rsa_pwd = rsa_enc.encrypt(pwd)[-32:]
# Aes、暗号化されたパスワード付き
aes_enc = AES.new(rsa_pwd, AES.MODE_CBC)

# ファイルを AES で暗号化...
# 暗号化されたファイルのみ保存
#パスワードを保存しないでください。RSAキーへのパスを保存しないでください

代わりに、ランダム パスワードを生成し、ランダム パスを使用して AES でファイルを暗号化し、RSA でランダム pwd を暗号化し、暗号化された結果のみを保存する場合の従来のスキームを使用します。

なぜこれが必要なのか本当に知りたいのなら、それは私のプロジェクトですhttp://code.google.com/p/scrambled-egg

スキームについてどう思いますか?前もって感謝します !

4

1 に答える 1

1

若干の混乱があるようです。「パスワード」を保存したくないと述べていますが、対称アルゴリズムではなくRSAを使用しています。「パスワード」という用語は、対称暗号化で使用される共有秘密を強く暗示しており、作成した型に RSA を合わせるのに非常に苦労しているようです。

私が見ている問題は、この機能が計画された用途にうまく適合しない可能性があることです. あなたの計画は対称暗号に重点を置いているようです。さらに、この方法で非対称鍵を使用すると、問題が発生する可能性があります。ナンスの暗号化に非対称暗号化が使用されているのには理由があると思います。あなたが提案するようなスキームに対して行うことができる攻撃に対して堅牢ではないかもしれません.

非対称鍵は、次のようによく使用されます。

  1. 純粋にランダムな 32 文字のキーを生成し、それを「ノンス」と呼びます。
  2. メッセージを「ノンス」で暗号化し、暗号文と呼びます。
  3. 非対称鍵 (おそらく公開鍵ですが、指定する必要があります) で「ナンス」を暗号化します。
  4. 結果は、暗号文と非対称に暗号化された「ノンス」で構成されます。

復号化には、暗号化に使用された非対称キーの反対側のペアのみが必要です。

筋金入りの場合は、ノンスを復号化して乗車のために送信するために使用できる公開鍵または秘密鍵を暗号化 (AES + パスワードなどを使用) することもできます。悲しいことに、これは AES + パスワードよりもセキュリティを実際に向上させているわけではなく、メッセージの肥大化を大幅に増加させています。

于 2011-09-28T04:34:37.510 に答える