2013-12-23 5 views
1

Как я разработал свое приложение с использованием openFL, которое использует haxe, и я собираюсь запустить часть активации моего программного обеспечения, интересно, как я могу безопасно хранить секретный ключ шифрования? я бы просто ввел его в свое приложение?!Как безопасно хранить секретный ключ?

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

Можно ли рекомендовать рекомендации в этом случае?

ответ

1

Это звучит как работа для асимметричного шифрования.

  1. Создайте пару ключей на своем сервере, сохраните открытые и закрытые ключи. Закрытый ключ должен храниться в безопасности, размер ключа должен быть 2048 бит или более;
  2. Включите открытый ключ в ваше приложение;
  3. Приложение использует безопасный случайный генератор для создания ключа AES;
  4. Данные шифруются с использованием дополнений CBC и PKCS # 7, также включают HMAC (возможно, с еще одним случайным ключом AES);
  5. Шифровать ключ (ы) с помощью алгоритма RSA и открытого ключа;

Теперь сервер может расшифровать ключи AES с помощью закрытого ключа и дешифровать данные с помощью извлеченных ключей. Затем проверьте MAC, если вы включили его в свой протокол. Наконец, расшифруйте зашифрованный текст, чтобы получить открытый текст.

Эта схема называется гибридным шифрованием, поскольку использует как симметричное, так и асимметричное шифрование. Остерегайтесь простудных атак (которые протекают всем обычным текстам злоумышленнику), если вы не используете MAC. Всегда проверяйте MAC перед расшифровкой.

Вы можете сохранить открытый ключ RSA в своем приложении. С помощью этого открытого ключа вы можете зашифровать ключ AES (используя PKCS # 1 OAEP или дополнение v1.5).

+0

Спасибо, интересно, может ли кто-то в сообществе haxe опубликовать ссылку на библиотеку, которая будет делать шифрование. – simo

+0

@simo Я не знаком с платформой, я знаю, что запрос на автономные ресурсы считается выключенным тема. –

+0

Что вы подразумеваете под MAC при вашем ответе, пожалуйста? вы имеете в виду MAC-адрес, который будет использоваться в качестве идентификатора оборудования? – simo

Смежные вопросы