Если вы можете проверить, что хранилище ключей JKS не было изменено, есть ли какая-либо польза от его пароля?

Вопрос:

Например, скажем, хранилище ключей отслеживается в Git, поэтому мы можем быть уверены, что он не был подделан. Будет ли пароль в хранилище ключей добавить что-нибудь безопасное? Опускает ли пароль хранилища ключей каким-либо образом угрозу безопасности в этой ситуации?

NB: В случае, если это важно, хранилище ключей используется для хранения сертификатов открытого/закрытого ключа для подписания приложений для Android, а секретные ключи внутри хранилища ключей шифруются с помощью сильных кодовых фраз.

Лучший ответ:

Я много сделал в Googling, читал и экспериментировал, и я считаю, что ответ на мой вопрос «нет».

Пароль хранилища ключей используется только как часть поколения подписи: он защищает от несанкционированного доступа, но не предотвращает проверку. Если вы можете гарантировать, что файл не изменился ни на один бит, вы можете гарантировать, что он не был подделан, и поэтому добавление пароля хранилища ключей в этом сценарии не обеспечивает дополнительной безопасности.

Источники:

Документация Java keytool относится только к паролю хранилища ключей, проверяя целостность, никогда не шифруя, но явно не говорит, что он защищает только от подделки.

Спецификации Bouncy Castle (раздел 5.4) гласят, что при работе «таким же образом», как JKS, «хранилище ключей устойчиво к вмешательству, но не к проверке». — что сильно указывает на то, что это справедливо для JKS

Наиболее конкретным, но наименее официальным является реконструированная реализация JKS, которая также подтверждает утверждение о том, что хранилище ключей не зашифровано с помощью пароля хранилища ключей.

Эксперименты:

Мой первый эксперимент состоял в том, чтобы сменить пароль в хранилище ключей и посмотреть, насколько сильно изменился в шестнадцатеричном редакторе, и это выглядело, только изменились только последние несколько байтов файла.

Второй эксперимент. Создайте хранилище ключей с паролем, создайте и сохраните ключ с другим паролем. Извлеките ключ из хранилища ключей как с правильным паролем хранилища ключей, так и с пустым паролем. Вы получаете идентичные результаты бит-за-бит.

Ответ №1

На мой взгляд, личные ключи всегда должны храниться как можно безопаснее.

Как взято из официальной документации Sun/Oracle

There is a built-in default keystore implementation type known as "jks" that is provided by Sun Microsystems. It implements the keystore as a file, utilizing a proprietary keystore type (format). It protects each private key with its own individual password, and also protects the integrity of the entire keystore with a (possibly different) password...

http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html#KeystoreImplementation

Оцените статью
TechArks.Ru
Добавить комментарий