Как сохранить пару ключей RSA в Windows?

Как сохранить пару ключей RSA в Windows?

Я пытаюсь написать простую программу шифрования-дешифрования с использованием Openssl-RSA. Когда данные шифруются, генерируется пара ключей. Если я хочу расшифровать данные, мне нужна точная пара ключей, которая была сгенерирована при шифровании.

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

Я использую открытый ключ для шифрования и закрытый ключ для расшифровки.

решение1

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

Если данные особенно конфиденциальны и не будут использоваться регулярно/постоянно, наиболее безопасным способом хранения вашего закрытого ключа будет хранение на флэш-накопителе или напечатанного на листе бумаги в сейфе или банковском хранилище. (Обратите внимание, что вы можете хранить открытый ключ где угодно — в конце концов, это «открытая» информация.

Если вам нужно, чтобы данные были легкодоступны, обычно нецелесообразно хранить закрытый ключ в офлайн-сейфе или хранилище из-за хлопот с его извлечением каждый раз. Обычное место, которое часто используется для хранения ключей, — это папка с именем .sshвнутри вашего домашнего каталога. (Это значение по умолчанию в OpenSSL на Linux, и оно также часто используется в других системах.) Обычной практикой является хранение ключа в виде двух файлов с именами, которые описывают их следующим образом: purpose_typeдля закрытого ключа и purpose_type.pubдля открытого ключа. Например, если вы используете командную строку OpenSSL для создания и ключа RSA, который идентифицируетты, он будет сохранен по умолчанию в файлах id_rsaи id_rsa.pubв .sshкаталоге. В вашем случае вы могли бы назвать ключевые файлы как-то так mydatastorage_rsaи mydatastorage_rsa.pub.

ВАЖНЫЙ: Если вы храните закрытый ключ таким образом, настоятельно рекомендуется защитить его с помощью парольной фразы. Это не позволит никому, кто получит доступ к вашим файлам, использовать ваш закрытый ключ. Возможно, вам было предложено указать ключевую парольную фразу при первоначальном создании пары ключей; если нет, вы можете добавить парольную фразу к закрытому ключу с помощью инструментов командной строки OpenSSL.

Если вы будете выполнять много важной работы по шифрованию, вы можете купить аппаратное хранилище ключей, называемое «Аппаратный модуль безопасности», сокращенно «HSM», которое предназначено для безопасного хранения закрытых ключей. Если вы на самом деле не работаете в индустрии безопасности/шифрования, это почти наверняка излишество. Существуют также другие аппаратные решения, включая «Смарт-карты» и «USB Crypto Tokens», которые дешевле, чем полный HSM, но все равно требуют некоторых инвестиций в оборудование, которые, вероятно, больше, чем вам нужно.


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

  1. Вводите парольную фразу каждый раз при запуске серверного приложения.
  2. Укажите парольную фразу в файле конфигурации. (Поддерживается только некоторыми серверами)
  3. Удалите парольную фразу (или не устанавливайте ее вообще).

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

Связанный контент