|
|
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Я подписываю закрытым ключом серийник оборудования, получаю файл лицензии. При работе открытым ключом расшифровываю лицензию и проверяю полученный от оборудования серийник, если совпадаю, запускаю оборудование. Но дело в том, что злоумышленник может сгенерировать свою пару открытый+закрытый ключ и подсунуть программе свой открытый ключ и свою лицензию. Соответственно, нужно еще отличать настоящую лицензию от подделки. Можно, конечно, хранить разрешенные ключи в программе, но есть два недостатка: 1. При вводе новой пары в оборот нужно перекомпилировать программу. 2. Строку ключа или даже MD5 ключа легко найти в коде EXE-файла и заменить на свои. Это даже проще, чем отладка и патчинг кода. Можно даже написать постоянный патч, который ищет эту строку и меняет ее на нужную. Будет работать на всех последующих версиях программы. Что-то я в тупике. А теперь подскажите, как это можно сделать по-нормальному? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 14:04 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Если правильно понимаю есть уникальный серийник оборудования. Если так - его и надо тебе подписывать своим закрытым ключом. Клиент имеет твой открытый ключ и твою подпись своего серийника, при старте берется серийник и проверяется его подпись твоим открытым ключом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 14:19 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Невнимательно прочитал. Похоже ты так и сделал как я написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 14:27 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Dima TНевнимательно прочитал. Похоже ты так и сделал как я написал. Именно так я и сделал. Но злоумышленник может подменить пару открытый + закрытый ключ, например. Как с этим бороться? Вся криптография псу под хвост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 14:28 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
По нормальному никак от взлома и подмены не защититься если твоя прога в инет выхода не имеет. Только усложнить внутреннюю проверку подлинности открытого ключа - это усложнит подделку. Например запакуй архиватором открытый ключ с добавкой рандомной инфы, а при использовании сначала распаковывай и добавку откидывай, тогда поиск усложнится и заменить архив можно в очередной версии заменив рандомную инфу. PS Сильно не старайся, сделаешь хорошо - найдут вызов функции проверки подлинности и поставят туда return true; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 14:44 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Не знаю что за оборудование у тебя, по хорошему открытый ключ в него бы спрятать и туда подпись передавать на проверку. Это сломать намного труднее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 14:54 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Dima TНе знаю что за оборудование у тебя, по хорошему открытый ключ в него бы спрятать и туда подпись передавать на проверку. Это сломать намного труднее. нет, так не получится. там только серийник хранится. ну и потом открытый ключ потому и открытый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 14:58 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Dima TPS Сильно не старайся, сделаешь хорошо - найдут вызов функции проверки подлинности и поставят туда return true; Ломать вряд ли кто будет - рынок узкий, апдейты/перекомпиляции будут частыми тоже. А по нормальному в теории криптографии этот вопрос никак не решается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 14:59 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Fixinну и потом открытый ключ потому и открытый. Открытый ключ чтобы подтвердить что инфа получена от его владельца, твоему взломщику надо обратное, подтвердить твоей проге что его инфа от тебя. Поэтому надо прятать открытый ключ. FixinА по нормальному в теории криптографии этот вопрос никак не решается? Не считаю себя большим спецом в криптографии, но думаю что никак. Прога без связи с разработчиком по сути сейф который взломщик принес домой и не спеша его ковыряет, в итоге откроет - вопрос времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 15:15 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Dima TНе считаю себя большим спецом в криптографии, но думаю что никак. Прога без связи с разработчиком по сути сейф который взломщик принес домой и не спеша его ковыряет, в итоге откроет - вопрос времени. Там цена вопроса того не стоит, чтобы ломали. Но защититься по среднему уровню бы не мешало. Но вот как сделать так, чтобы нельзя было посунуть свою пару ключей - это вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 16:36 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
FixinНо защититься по среднему уровню бы не мешало. Но вот как сделать так, чтобы нельзя было посунуть свою пару ключей - это вопрос. Так по среднему или чтобы нельзя было подсунуть? Если по среднему: вставь свой открытый ключ в код, в переменную, только не в исходном виде, а слегка зашифрованный, например сделай ^0x5А с каждым байтом, а при старте еще раз ^0x5А. Если считаешь этого мало, посчитай контрольную сумму (MD5, CRC или просто сумму байт) и сравни с эталонной, лучше если это будет однобайтовое число, тогда его поиск и автозамену достаточно сложно будет сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2014, 17:44 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Fixin, 1. Собери хэш образа программы содержаший твой открытый ключ как ресурс. 2. В лизензию вложи и подпиши сериный номер оборудования + хеш образа программы. 3. При проверке проверяй оба условия: хэш образа программы и серийник оборудования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 14:09 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Fixin, Можно в лицензию добавить некоторые базовые константы протокола обмена, без которых вообще работа будет невозможна. Лицензию зашифровать с использованием уникального ключа, скрытого в устройстве, например. В качестве вектора инициализации алгоритма шифрования используется серийник вашего оборудования. Лицензия отсылается на аппаратный ключ защиты (АКЗ), там расшифровывается и возвращается. Чтобы избежать табличной эмуляции АКЗ, трафик обмена шифруется случайным сеансовым ключом, то есть всякий раз он случайный. В лицензии, кроме всего, содержаться идентификатор АКЗ (чтобы сразу отсечь работу не со своими АКЗ) и открытый ключ алгоритма ЦП, реализуемого в АКЗ. Периодически на АКЗ посылаются случайные данные, подписываются в АКЗ и возвращаются обратно. Приложение с помощью открытого ключа проверяет достоверность ЦП и факт замены АКЗ. Таким образом, приложение без своего АКЗ не сможет расшифровать лицензию. А без "правильной" лицензии не сможет работать с оборудованием (нет констант протокола обмена) . Естественно, дизассемблирование и отладчик сломают всё. Если использовать АКЗ другого типа, то файл лицензии (а именно константы протокола обмена с оборудованием) можно хранить прямо в АКЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 02:08 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
А по нормальному в теории криптографии этот вопрос никак не решается? Ну как бы компании типа VeriSign и иже с ними как раз для этого и существуют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 05:35 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
mikronFixin, 1. Собери хэш образа программы содержаший твой открытый ключ как ресурс. 2. В лизензию вложи и подпиши сериный номер оборудования + хеш образа программы. 3. При проверке проверяй оба условия: хэш образа программы и серийник оборудования. не получится. с помощью своего закрытого ключа злоумышленник может все это повторить. и хэш программы свой сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 13:09 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Ну тогда - ой. Ты пытыешся зашитить определённуйю программу а утверждаеш примерно следуйющее: А вот если взять другую программу, то она будет не защищена и может делатъ всё что угодно. Да, но это уже будет другая программа. Может сначала стоит разобратся, что ты хочеш зашитить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 15:08 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Может сначала стоит разобратся, что ты хочеш зашитить. Вообще то он хочет защитить своих клиентов от риска исполнения какого-нибудь малваре маскирующегося под его продукт. Ничего странного в этом нет, вполне нормальное желание для любого коммерческого продукта предназначенного для использования в инете. Можно конечно со скепсисом относиться к самой возможности такой атаки на некому неизвестный продукт, но это личное дело ТСа. А изобретать лисапед конечно не стоит, купите сертификат подписанный одним из паблик сайнинг асорити - вот и будет вам гарантия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2014, 21:42 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Криптография предполагает существование "островка безопаснсости". Тоесть участка кода или данных (у вас) куда злоумышленник никогда не зайдет. Это оносится к локальному хранилищу сертификатов и .dll которые собственно делают проверки на валидность. Если злоумышленник - это ваш сисадмин который меняет любой код, ставит снифферы и считывает пароли и вообще имеет возможность изменить всё включая перекомпиляцию вашей программы то здесь надо ставить точку и возвращаться назад. Криптографией заниматься еще рано. Надо сначала решить общие элементарные вопросы безопасности на местах. И обучить пользователей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2014, 10:03 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
mikhail_nА изобретать лисапед конечно не стоит, купите сертификат подписанный одним из паблик сайнинг асорити - вот и будет вам гарантия. Да в принципе можно и по-другому. Выдать клиенту одну пару, он ее закрытым ключом будет шифровать текущий рабочий открытый ключ из рабочей пары. К открытому ключу идет его подпись этим ключом. Соответственно, если злоумышленник подсунет другую пару открытый-закрытый ключ, то пара не пройдет проверку, т.к. злоумышленник не сможет сгенерировать подпись этим сверхсекретным ключом. Но я решил поступить проще - клиент нагенерирует 50 пар и я пропишу их подписи по определенному алгоритму хэширования в код экзешника. Такого уровня защиты будет достаточно. 50 пар ему на всю жизнь хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2014, 17:14 |
|
||
|
Как убедиться в валидности пары ключей RSA?
|
|||
|---|---|---|---|
|
#18+
Fixin, а зачем нужны 50 закрытых ключей? Почему одного недостаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2014, 07:00 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1341223]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 481ms |

| 0 / 0 |
