2

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

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

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

1 ответ1

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», которые дешевле, чем полноценный HSM, но требуют инвестиций в оборудование, которое, вероятно, больше, чем нужно.


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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .