5

Triple-DES(> 128ビット)とプレーンDES(64ビット)を混同しているようです。Java 1.5を使用して、トリプルDES(またはDESede)でDerbyデータベースを暗号化しようとしています。

JDK 1.5の問題に関するこのディスカッションフォーラムのメッセージを偶然見つけたので、それが実際にDESedeを使用していて、プレーンなDESを使用していないことを確認しました。トリプルDES(168ビット)URLでデータベースを作成したとき

jdbc:derby:MySecureDB;dataEncryption=true;encryptionAlgorithm=DESede/CBC/NoPadding;bootPassword=$ecureC@deCanBr@kE0074242

私はまだそれを開いて、(プレーンな)DES(64ビット)URLでアクセスすることができました

jdbc:derby:MySecureDB;dataEncryption=true;encryptionAlgorithm=DES/CBC/NoPadding;bootPassword=$ecureC@deCanBr@kE0074242

これは私が期待する動作ではありません!!! 間違った暗号化アルゴリズムで開くことができないはずです。正しい(> 128ビット)アルゴリズムで実際に暗号化されていることを確認するにはどうすればよいですか?

Derbyは、JCECipherProvider.javaに記載されているJava1.5に適切な関数を使用しているようです。コードを読んだところ、DerbyはトリプルDESをプレーンDESとは異なり処理していないことがわかりました...強力な暗号化を使用していると本当に信頼できますか?

4

3 に答える 3

1

『 Java DB開発者ガイド』の「暗号化の操作」によると、最初のURLは、作成時にデータベースを暗号化するのに問題がないように見え(指定されているためdataEncryption=true)、168ビットの暗号化キーを生成する必要があります。

さて、まだドキュメントによると、暗号化されたデータベースを起動dataEncryption=trueするときに使用するべきではないと思います。私の理解では、あなたはとを使用する必要があるだけです。bootPasswordencryptionAlgorithm

私はこれをテストしなかったことを認めます、そして実際、私は本当に何が正確に起こるのか疑問に思っています:

  • 2番目のURLでdataEncryption間違ったものを指定して使用した場合。encryptionAlgorithm
  • 別のものを指定dataEncryption=trueして使用する場合encryptionAlgorithm(暗号化されたデータベースを再作成しますか?)。

ドキュメントはそれについて明確ではありません。

于 2009-12-17T23:54:34.800 に答える
1

encryptionAlgorithm パラメータは、最初に暗号化を行うとき (つまり、暗号化されたデータベースを最初に作成するとき、または暗号化されていないデータベースを最初に暗号化するとき) にのみ重要だと思います。

データベースを暗号化したら、それ以降は bootPassword を指定するだけです。Derby は、どの暗号化アルゴリズムが使用されたかを既に認識しています。

于 2009-12-18T23:59:57.223 に答える