JKS / BKSキーストアなど、キーストアパスワードの背後にある意味は正確には何ですか?
エディターでファイルを開き、パスワードチェックなしですべてのエントリを新しいファイルにコピーできるため、これは明らかにセキュリティのためではありません。パスワードで保護されたキーストア内のデータは暗号化されていません!
このパスワードは何を保護しますか?それはただの嫌な開発者のためのようです...
「これは私の文です」という文字列をキーストアに保存し、それをメモ帳で開くと、暗号文「blabla」が表示され、「blabla」を別のファイルにコピーして、平文を見つけたと主張したとします。 -text、そしてそれは「blabla」です。これは明らかに間違っています。パスワードで復元するまで、元の pliant-ext はわかりません。
==編集==
JKS キーストアの場合、キーストアのパスワードは整合性を検証するために使用されます 。src
636 if (password != null) {
637 md = getPreKeyedHash(password);
638 dis = new DataInputStream(new DigestInputStream(stream, md));
639 }
DigestInputStream は署名を生成し、それを実際の署名と比較して変更されているかどうかを確認します。
BouncyCastle キーストアUBERはより安全で、キーストア全体が SHA1 と Twofish (PBEWithSHAAndTwofish-CBC) に基づく PBE で暗号化されています。
Cipher cipher = this.makePBECipher(cipherAlg, Cipher.DECRYPT_MODE, password, salt, iterationCount);
CipherInputStream cIn = new CipherInputStream(dIn, cipher);
Digest dig = new SHA1Digest();
DigestInputStream dgIn = new DigestInputStream(cIn, dig);
this.loadStore(dgIn);
JKS キーストアはバイナリ ストアであり、その内容はパスワードをキーとして使用して暗号化されます。パスワードがなければ、誰もコンテンツにアクセスできません。パスワードは、不正なアクセスや操作からストアのコンテンツを保護するためのものです。暗号化されたコンテンツを何らかのエディターで確実に開くことはできますが、それを理解することはできません。