Лучший способ защитить паролем консольное приложение Java - PullRequest
0 голосов
/ 23 мая 2019

Я ищу лучший или стандартный метод защиты паролем консольного приложения.Я исследовал различные методы и хотел бы получить отзывы о моем подходе.

Я решил хешировать свой пароль с помощью Argon2, чтобы мне оставалось только хранить односторонний хеш.Все работает как положено.У меня вопрос, где мне хранить хэш?Это должно быть жестко закодировано?Должен ли я хранить его в отдельном файле и читать в?Какой самый безопасный способ подойти к этому?В конце дня я пишу это приложение для изучения и очень хочу научиться делать это правильно.Ссылки на любые соответствующие материалы для чтения также будут оценены.Я продолжаю гуглить ...

РЕДАКТИРОВАТЬ: Итак, какими будут потенциальные недостатки, если я сохраню пароль программы в виде хэша в файле.Пользователь должен знать пароль для использования приложения.Тогда пусть пароль программы, который защищен хешем, будет ключом шифрования для защиты конфиденциальной информации?Даже если манипулировать исходным кодом и / или хеш-файлом, конфиденциальные данные не будут доступны для чтения, поскольку в качестве ключа используется правильный пароль ... что я пропускаю?

1 Ответ

0 голосов
/ 23 мая 2019

Прежде всего, Argon2 - это функция точного получения ключей для преобразования паролей в ключи шифрования.

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

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

Именно так, например, работает GPG. Он нигде не хранит хеши паролей. Вместо этого он хранит закрытые ключи в зашифрованном виде и просто запрашивает пароль, если ему нужно расшифровать закрытый ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...