Пароль защищает ключи шифрования? - PullRequest
2 голосов
/ 12 июля 2011

Хорошо.Поэтому я искал в Google несколько дней, пытаясь найти ответ на этот вопрос.Я пытаюсь защитить паролем закрытые ключи пары открытых / закрытых ключей, как это делает keytool.Это нужно использовать в среде, где keytool недоступен, и, кроме того, я хочу узнать, как это делает keytool.Кто-нибудь знает, как это сделать на Java?

Ответы [ 3 ]

3 голосов
/ 12 июля 2011

Используйте шифрование на основе пароля - лучше всего для этой цели.

Keytool не реализует это сам. Это реализовано в хранилище ключей. Чтобы быть более точным в java.security.KeyStoreSpi#engineSetKeyEntry и java.security.KeyStoreSpi#engineGetKey методах. Тип хранилища ключей JKS реализован в sun.security.provider.JavaKeyStore. Защита паролем реализована в sun.security.provider.KeyProtector. JKS хранит ключи в формате PKCS # 8 , но использует свой собственный алгоритм (OID 1.3.6.1.4.1.42.2.17.1.1) с SHA1. Это своего рода PBE. Посмотрите пример открытой реализации JKS .

Как Том предложил ниже (в своем комментарии), вы можете посмотреть на класс sun.security.tools.KeyTool .

0 голосов
/ 12 июля 2011

Лучшая ставка: используйте шифрование AES с солью. Как правило, рекомендуется использовать проверенную технологию, а не использовать собственную, когда дело доходит до криптографии. Вот еще один пост, ответы которого должны ответить на все ваши вопросы: 256-битное Java AES-шифрование на основе пароля

0 голосов
/ 12 июля 2011

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

, например, в WebSphere, это xor-ed хеш и кодировка base64.

У них обычно есть что-то вроде stash-файла или файла конфигурации, в котором хранится закодированный пароль.(Не я не использую слово «шифровать»)

Это означает, что кто-то случайно не может быстро просмотреть пароль.Однако кто-то, кто знает алгоритм кодирования, может легко его декодировать, так что stash-файл или файл конфигурации необходимо хранить в безопасном месте.

...