OberonCore https://forum.oberoncore.ru/ |
|
Как лучше прятать от хакеров ключи в тексте программы? https://forum.oberoncore.ru/viewtopic.php?f=27&t=452 |
Страница 1 из 1 |
Автор: | Сергей Губанов [ Понедельник, 07 Май, 2007 18:53 ] |
Заголовок сообщения: | Как лучше прятать от хакеров ключи в тексте программы? |
Как в исходном тексте программы "спрятать" константы (ключи для шифрования), чтобы хакеры помучились их из программы выковыривать? На самом деле, как это сделать идей-то всяких много, интересует есть ли какой-либо научный подход к этой проблеме?... |
Автор: | Илья Ермаков [ Понедельник, 07 Май, 2007 20:19 ] |
Заголовок сообщения: | |
Ну, не знаю... Цепочечное шифрование, когда ключ для расшифровки очередного блока спрятан в конце предыдущего... |
Автор: | Sergo [ Вторник, 08 Май, 2007 09:07 ] |
Заголовок сообщения: | Re: Как лучше прятать от хакеров ключи в тексте программы? |
Сергей Губанов писал(а): Как в исходном тексте программы "спрятать" константы (ключи для шифрования), чтобы хакеры помучились их из программы выковыривать? На самом деле, как это сделать идей-то всяких много, интересует есть ли какой-либо научный подход к этой проблеме?...
Известный алгоритм шифрования RSA (или RSA-Euro) основан на использовании двух ключей: открытого и закрытого. Открытым можно только шифровать. Для дешифровки используется закрытый ключ. Поэтому обычно делают так: забивают в исходный текст список ключей, предварительно зашифровав их открытым ключом RSA. Когда пользователь вводит свой персональный ключ, он тоже шифруется тем же открытым ключом RSA, и затем ищется в списке. Закрытый ключ никак не используется. Уязвимое место здесь - участок программы, в котором производится сравнение двух ключей. Если это просто код вроде IF Ключ_Пользователя = Ключ_Из_Списка THEN ...., то его довольно просто найти и пропатчить. Но разными хитрыми приемами его можно очень хорошо замаскировать. |
Автор: | Иван Горячев [ Вторник, 08 Май, 2007 10:17 ] |
Заголовок сообщения: | Re: Как лучше прятать от хакеров ключи в тексте программы? |
Sergo Прочитал три раза. Не понял. А как можно просмотреть зашифрованый список ключей, предварительно его не расшифровав? Но идея с асимметричным шифрованием здравая. Что если в качестве части закрытого ключа использовать содержимое dll-файла, в котором находится важная часть программы? Т.е. при подготовке дистрибутива имеем программу в виде файлов program.exe и important.dll. после этого генерируем пару ключей, и закрытый ключ привязываем к important.dll (ну ищем там общие последовательности, или ещё как. создаём diff-файл, другими словами). В результате пользователю уходит набор program.exe, important.dll, open.key и secret.diff. Особенно интересно будет хакеру, если код расшифровки/проверок будет находиться в этой самой important.dll |
Автор: | Сергей Губанов [ Вторник, 08 Май, 2007 10:18 ] |
Заголовок сообщения: | Re: Как лучше прятать от хакеров ключи в тексте программы? |
Sergo писал(а): забивают в исходный текст список ключей, предварительно зашифровав их открытым ключом RSA. Когда пользователь вводит свой персональный ключ, он тоже шифруется тем же открытым ключом RSA
Пожалуй, в этом случае нужно использовать хеширование и сравнивать хешкоды. В моём случае пользователь ничего не вводит. У меня просто две программы общающиеся по TCP. Программы должны быть уверены, что общаются со своими "родными" копиями, а не хакерскими заглушками. Для этого, по всей видимости, надо использовать протокол SSL. Ключ шифрования ключей придётся захардкодить - вот в этом-то и проблема. |
Автор: | Sergo [ Вторник, 08 Май, 2007 12:20 ] |
Заголовок сообщения: | Re: Как лучше прятать от хакеров ключи в тексте программы? |
Ivor писал(а): Sergo
Прочитал три раза. Не понял. А как можно просмотреть зашифрованый список ключей, предварительно его не расшифровав? Шифруется каждый ключ в отдельности, а не весь список целиком. |
Автор: | batyrmastyr [ Вторник, 08 Май, 2007 23:17 ] |
Заголовок сообщения: | Re: Как лучше прятать от хакеров ключи в тексте программы? |
Сергей Губанов писал(а): Sergo писал(а): забивают в исходный текст список ключей, предварительно зашифровав их открытым ключом RSA. Когда пользователь вводит свой персональный ключ, он тоже шифруется тем же открытым ключом RSA Пожалуй, в этом случае нужно использовать хеширование и сравнивать хешкоды. В моём случае пользователь ничего не вводит. У меня просто две программы общающиеся по TCP. Программы должны быть уверены, что общаются со своими "родными" копиями, а не хакерскими заглушками. Для этого, по всей видимости, надо использовать протокол SSL. Ключ шифрования ключей придётся захардкодить - вот в этом-то и проблема. Никакой "ключ шифрования ключей" не нужен ![]() Есть n участников. Все они используют a. 1)Для каждого (i-го) берется секретное число x_i и публичное число yi= a^x_i. (по y_i вычислить x_i очень сложно). Далее если i и j хотят поболтать, они передают в общий доступ ключи y_i и y_j (и свои координаты ![]() 2)Таким путем генерятся секретные (возможно, одноразовые ![]() В итоге используется симметричное шифрование без осо. Нужно только "захардкодить" собственно алгоритм симметричного шифрования (из непрошибаемых-ГОСТ 89 года) и генератор x_i. Хотя это все-таки чтобы никто не вклинился без спросу. Для зашиты от посторонних требуется подпись. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |