Вопрос

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

Однако запуск строк в моем исполняемом файле показывает статический ключ.

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

Это было полезно?

Решение

Его метод обмена ключами "гарантирует", что клиент действителен, а не самозванец.Простой безопасный обмен ключами с помощью D-H этого не сделает.Чтобы получить ту же функциональность, ему нужно будет внедрить систему PKI.Для этой цели был создан SSL / TLS, который под ним будет делать то, что ему нужно.

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

Другие советы

Существуют решения этой проблемы, которые не включают попытки скрыть ключи (которые, как правило, невозможно). Например, Диффи-Хеллман Обмен ключом Позволяет клиенту и серверу договориться о новой клавише секретного сеанса, не отправляя его через проволоку.

Таким образом, вы планируете скрыть свой секрет (ключ в исполняемом файле) с особенно трудным для отмены метода, который может быть отменен только в том случае, если вы знаете секрет метода, который вам также необходимо скрыть с новым Super Secret Method Это может быть отменено, только если вы знаете секрет этого метода, который нам нужно скрыть с другим секретным методом, требующим другого секрета, который нам нужно скрыть ...

Это «переполнение проблемы». Я надеюсь, что вы увидите, что не решите это так. Создайте клавиши на компьютер (SSH/SSHD делает это) и защитите их. Та же самая проблема на самом деле применяется, потому что, если я получаю этот ключ, он все еще встал на игру, но таким образом вы не придаете его жесткому решению, что означает, что исправление скомпрометированного ключа намного проще.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top