powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как убедиться в валидности пары ключей RSA?
21 сообщений из 21, страница 1 из 1
Как убедиться в валидности пары ключей RSA?
    #38601880
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я подписываю закрытым ключом серийник оборудования, получаю файл лицензии.

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

Но дело в том, что злоумышленник может сгенерировать свою пару открытый+закрытый ключ и подсунуть программе свой открытый ключ и свою лицензию.


Соответственно, нужно еще отличать настоящую лицензию от подделки.


Можно, конечно, хранить разрешенные ключи в программе, но есть два недостатка:


1. При вводе новой пары в оборот нужно перекомпилировать программу.


2. Строку ключа или даже MD5 ключа легко найти в коде EXE-файла и заменить на свои. Это даже проще, чем отладка и патчинг кода. Можно даже написать постоянный патч, который ищет эту строку и меняет ее на нужную. Будет работать на всех последующих версиях программы.


Что-то я в тупике. А теперь подскажите, как это можно сделать по-нормальному?
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38601896
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если правильно понимаю есть уникальный серийник оборудования. Если так - его и надо тебе подписывать своим закрытым ключом. Клиент имеет твой открытый ключ и твою подпись своего серийника, при старте берется серийник и проверяется его подпись твоим открытым ключом.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38601905
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Невнимательно прочитал. Похоже ты так и сделал как я написал.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38601906
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНевнимательно прочитал. Похоже ты так и сделал как я написал.
Именно так я и сделал.
Но злоумышленник может подменить пару открытый + закрытый ключ, например.
Как с этим бороться? Вся криптография псу под хвост.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38601929
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По нормальному никак от взлома и подмены не защититься если твоя прога в инет выхода не имеет.

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

PS Сильно не старайся, сделаешь хорошо - найдут вызов функции проверки подлинности и поставят туда return true;
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38601938
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю что за оборудование у тебя, по хорошему открытый ключ в него бы спрятать и туда подпись передавать на проверку. Это сломать намного труднее.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38601945
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНе знаю что за оборудование у тебя, по хорошему открытый ключ в него бы спрятать и туда подпись передавать на проверку. Это сломать намного труднее.
нет, так не получится. там только серийник хранится.
ну и потом открытый ключ потому и открытый.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38601947
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPS Сильно не старайся, сделаешь хорошо - найдут вызов функции проверки подлинности и поставят туда return true;

Ломать вряд ли кто будет - рынок узкий, апдейты/перекомпиляции будут частыми тоже.

А по нормальному в теории криптографии этот вопрос никак не решается?
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38601977
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixinну и потом открытый ключ потому и открытый.
Открытый ключ чтобы подтвердить что инфа получена от его владельца, твоему взломщику надо обратное, подтвердить твоей проге что его инфа от тебя. Поэтому надо прятать открытый ключ.

FixinА по нормальному в теории криптографии этот вопрос никак не решается?
Не считаю себя большим спецом в криптографии, но думаю что никак. Прога без связи с разработчиком по сути сейф который взломщик принес домой и не спеша его ковыряет, в итоге откроет - вопрос времени.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38602117
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНе считаю себя большим спецом в криптографии, но думаю что никак. Прога без связи с разработчиком по сути сейф который взломщик принес домой и не спеша его ковыряет, в итоге откроет - вопрос времени.

Там цена вопроса того не стоит, чтобы ломали.
Но защититься по среднему уровню бы не мешало.
Но вот как сделать так, чтобы нельзя было посунуть свою пару ключей - это вопрос.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38602195
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FixinНо защититься по среднему уровню бы не мешало.
Но вот как сделать так, чтобы нельзя было посунуть свою пару ключей - это вопрос.
Так по среднему или чтобы нельзя было подсунуть?

Если по среднему: вставь свой открытый ключ в код, в переменную, только не в исходном виде, а слегка зашифрованный, например сделай ^0x5А с каждым байтом, а при старте еще раз ^0x5А. Если считаешь этого мало, посчитай контрольную сумму (MD5, CRC или просто сумму байт) и сравни с эталонной, лучше если это будет однобайтовое число, тогда его поиск и автозамену достаточно сложно будет сделать.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38603024
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin,
1. Собери хэш образа программы содержаший твой открытый ключ как ресурс.
2. В лизензию вложи и подпиши сериный номер оборудования + хеш образа программы.
3. При проверке проверяй оба условия: хэш образа программы и серийник оборудования.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38603644
Морской десант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fixin,

Можно в лицензию добавить некоторые базовые константы протокола обмена, без которых вообще работа будет невозможна.

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

Лицензия отсылается на аппаратный ключ защиты (АКЗ), там расшифровывается и возвращается. Чтобы избежать табличной эмуляции АКЗ, трафик обмена шифруется случайным сеансовым ключом, то есть всякий раз он случайный.
В лицензии, кроме всего, содержаться идентификатор АКЗ (чтобы сразу отсечь работу не со своими АКЗ) и открытый ключ алгоритма ЦП, реализуемого в АКЗ. Периодически на АКЗ посылаются случайные данные, подписываются в АКЗ и возвращаются обратно. Приложение с помощью открытого ключа проверяет достоверность ЦП и факт замены АКЗ.

Таким образом, приложение без своего АКЗ не сможет расшифровать лицензию. А без "правильной" лицензии не сможет работать с оборудованием (нет констант протокола обмена) .

Естественно, дизассемблирование и отладчик сломают всё.

Если использовать АКЗ другого типа, то файл лицензии (а именно константы протокола обмена с оборудованием) можно хранить прямо в АКЗ.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38603668
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по нормальному в теории криптографии этот вопрос никак не решается?

Ну как бы компании типа VeriSign и иже с ними как раз для этого и существуют.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38604172
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronFixin,
1. Собери хэш образа программы содержаший твой открытый ключ как ресурс.
2. В лизензию вложи и подпиши сериный номер оборудования + хеш образа программы.
3. При проверке проверяй оба условия: хэш образа программы и серийник оборудования.

не получится. с помощью своего закрытого ключа злоумышленник может все это повторить.
и хэш программы свой сделать.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38604386
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда - ой.
Ты пытыешся зашитить определённуйю программу а утверждаеш примерно следуйющее:
А вот если взять другую программу, то она будет не защищена и может делатъ всё что угодно.
Да, но это уже будет другая программа.
Может сначала стоит разобратся, что ты хочеш зашитить.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38604859
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может сначала стоит разобратся, что ты хочеш зашитить.

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

А изобретать лисапед конечно не стоит, купите сертификат подписанный одним из паблик сайнинг асорити - вот и будет вам гарантия.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38605114
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Криптография предполагает существование "островка безопаснсости". Тоесть участка кода
или данных (у вас) куда злоумышленник никогда не зайдет. Это оносится к локальному
хранилищу сертификатов и .dll которые собственно делают проверки на валидность.

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

Криптографией заниматься еще рано. Надо сначала решить общие элементарные вопросы
безопасности на местах. И обучить пользователей.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38608828
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nА изобретать лисапед конечно не стоит, купите сертификат подписанный одним из паблик сайнинг асорити - вот и будет вам гарантия.

Да в принципе можно и по-другому.

Выдать клиенту одну пару, он ее закрытым ключом будет шифровать текущий рабочий открытый ключ из рабочей пары.

К открытому ключу идет его подпись этим ключом.

Соответственно, если злоумышленник подсунет другую пару открытый-закрытый ключ, то пара не пройдет проверку, т.к. злоумышленник не сможет сгенерировать подпись этим сверхсекретным ключом.

Но я решил поступить проще - клиент нагенерирует 50 пар и я пропишу их подписи по определенному алгоритму хэширования в код экзешника. Такого уровня защиты будет достаточно. 50 пар ему на всю жизнь хватит.
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38609232
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Fixin, а зачем нужны 50 закрытых ключей? Почему одного недостаточно?
...
Рейтинг: 0 / 0
Как убедиться в валидности пары ключей RSA?
    #38753504
Fixin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?Fixin, а зачем нужны 50 закрытых ключей? Почему одного недостаточно?
Каждому клиенту отдельный ключ как бы.
Почему так? Не знаю, для надежности наверное, так заказчик захотел.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как убедиться в валидности пары ключей RSA?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]