Я занимаюсь разработкой консольного приложения. Это приложение создает самозаверяющий сертификат и устанавливает его в хранилище сертификатов текущего компьютера.
Шаги включают в себя: -
- Создать сертификат
- Создать файл pfx
- Установить файл pfx
Для этих шагов мне понадобится пароль для защиты закрытого ключа и файла pfx.
Однако эти пароли используются только во время выполнения exe.
Должен ли я автоматически генерировать пароль с использованием какого-либо алгоритма генерации случайных чисел или принять пароль в качестве ввода от пользователя?
Какие проблемы безопасности связаны с обоими сценариями?
Спасибо за все ответы. Срок действия пароля - только до тех пор, пока не будет создан файл pfx. Программа удаляет файл pfx после установки его в хранилище сертификатов Windows. Я полагаю, что в таком случае принятие пароля от пользователя не обеспечит никаких преимуществ по сравнению с автоматическим созданием пароля.
Я бы хотел еще добавить к этому вопросу.
Как только пароль станет доступен программе, как вы защитите этот пароль на весь срок его службы? Я использую .net и прочитал о безопасных строк в .net. Но безопасная строка должна быть построена из строки, которая не решает проблему.
фрагмент кода выглядит как
string password = AutoGenerateOrGetPassword ();
GenerateCertificateAndInstall (пароль);
Как защитить пароль, который хранится в памяти при его жизни?