Ну, собственно, понятно, что для генерации серйных номеров для программы нужно использовать криптографию с окрытым ключом. Определился я пока на RSA. Но вот не как не могу въехать — с какой стороны этот RSA нужно грызть, чтобы сделать так, что бы генерировался какой-нибудь регистрационный ключ исходя из имени пользователя, типа лицензии, и т.д.? А потом этот ключ высылать этому пользователю и как-то прога должна определить что ключ верный!!!
Я только въехал, как можно шифровать данные этим алгоритом, а вот остальное....блин.
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Советую купить что нибудь готовое (armadillo) если нет познаний.
Я придерживаюсь принципа, что лучше познать непознанное. KA>Если надо сейчас и подешевле, простое MD5 подойдет.
MD5 — согласен, что и быстро и дешево. Однако хеши нетрудно получать, зная алгоритм, — следовательно вопрос времени, когда генератор левых серийников появиться.
Здравствуйте, rastoman, Вы писали:
R>Я только въехал, как можно шифровать данные этим алгоритом, а вот остальное....блин.
Для начала: Наверное ты бы лучше написал в соответствующий форум.
Ну а по делу: простой способ (опускаю все доп. провекри и навороты работы с данными).
Делаешь пару ключей. Public зашиваешь в программу, пару private/public — себе оставляешь.
Данные шифруешь любым простым алгоритмом. Если там ничего секретного — можешь даже оставить как есть.
У себя — подписываешь данные юзера private ключем и высылаешь ему их.
В программе проверяешь если подпись верна, то сравниваешь присланные данные с введенными.
PS: Не забывай что тут описан самый примитив Делай лучше
Здравствуйте, Doc, Вы писали:
Doc>Для начала: Наверное ты бы лучше написал в соответствующий форум.
Не все шароварщики подписаны на "Алгоритмы"... Doc>Ну а по делу: простой способ (опускаю все доп. провекри и навороты работы с данными). Doc>Делаешь пару ключей. Public зашиваешь в программу, пару private/public — себе оставляешь. Doc>Данные шифруешь любым простым алгоритмом. Если там ничего секретного — можешь даже оставить как есть.
----------------------------------------------------------------------- Doc>У себя — подписываешь данные юзера private ключем и высылаешь ему их. Doc>В программе проверяешь если подпись верна, то сравниваешь присланные данные с введенными.
-----------------------------------------------------------------------
Вот в эту чать я как раз-таки и въхать не могу, хотя вроде в здравом уме и т.п.
Т.е. подписываешь? Зашифровываешь? Или сздаи прикрепляешь?
Doc>PS: Не забывай что тут описан самый примитив Делай лучше
... << RSDN@Home 1.1.3 stable >>
Re[2]: RSA и ключики
От:
Аноним
Дата:
27.05.04 08:32
Оценка:
Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, rastoman, Вы писали:
R>>Я только въехал, как можно шифровать данные этим алгоритом, а вот остальное....блин.
Doc>Для начала: Наверное ты бы лучше написал в соответствующий форум. Doc>Ну а по делу: простой способ (опускаю все доп. провекри и навороты работы с данными). Doc>Делаешь пару ключей. Public зашиваешь в программу, пару private/public — себе оставляешь. Doc>Данные шифруешь любым простым алгоритмом. Если там ничего секретного — можешь даже оставить как есть. Doc>У себя — подписываешь данные юзера private ключем и высылаешь ему их. Doc>В программе проверяешь если подпись верна, то сравниваешь присланные данные с введенными.
Не прокатит такая схема, во первых данные не подиписываются приватным ключем, а шифруются, а во вторых чтобы потом расшифровать эти данные у клиента должна быть пара ключей публичный и приватный.
Т.е. по твоей схеме зашивать в программу придется публичный и приватный ключ. А уже выкусит эту пару из бинарника, чтобы сделать кейгенератор — дело техники.
Doc>PS: Не забывай что тут описан самый примитив Делай лучше
Здравствуйте, rastoman, Вы писали:
Doc>>Для начала: Наверное ты бы лучше написал в соответствующий форум. R>Не все шароварщики подписаны на "Алгоритмы"...
А кто-то не дает? По рукам лупит
R>----------------------------------------------------------------------- Doc>>У себя — подписываешь данные юзера private ключем и высылаешь ему их. Doc>>В программе проверяешь если подпись верна, то сравниваешь присланные данные с введенными. R>----------------------------------------------------------------------- R>Вот в эту чать я как раз-таки и въхать не могу, хотя вроде в здравом уме и т.п. R>Т.е. подписываешь? Зашифровываешь? Или сздаи прикрепляешь?
Ты с электронными подписями разбирался?
Еще раз наглядный пример:
У тебя:
— 1 берем (вводим) данные (имя юзера, email, имя собаки, возраст итд итп).
— 2 данные шифруем как угодно (хоть XOR-ом) или вообще оставляем как есть
— 3 подписываем эти данные своей priv/pub парой
— 4 записываем в файл данные и подпись
— 5 отсылаем файл юзеру
У юзера:
— 1 читаем из файла данные и подпись
— 2 при помощи public ключа проверяем соответствует ли подпись данным
— 3 если нет — нас дурят
— 4 если да, то расшивровываем данные (если на шаге 2 у себя мы их шифровали)
— 5 проверяем данные из файла и данные введенные пользователем.
— 6 если совпадают то значит это ключ этого юзера. версия регистрированная
где у тебя затык с пониманием?
Кстати, не получится просто сразу шифровать и расшифровывать данные?
Для расшифровки тебе нужен будет private ключ, который зашешь в программу. CryptoAPI дает или public или пару private/public. Выделть отдельно private ключ невозможно. Для подписи подписи наоборот, распостраняем public ключ и у себя держим private что есть правильный ход.
Здравствуйте, Аноним, Вы писали:
А>Не прокатит такая схема, во первых данные не подиписываются приватным ключем, а шифруются,
Сейчас... Смотрим CryptoAPI:
— для шифрования юзается public ключ, а private расшифровывает.
тебе приходят закрытые данные. Шифрует любой (public key), а расшифровываешь только ты (private key).
— для подписи испольуется private ключ, а public проверяет подпись.
ты подписываешь, а любой адресат (с public key) убеждается что данные от тебя (private key).
А>а во вторых чтобы потом расшифровать эти данные у клиента должна быть пара ключей публичный и приватный.
Стоп. Я говорю о подписи. Сами данные кстати, уже можно не шифровать. Или юзать что-нибудь по проще.
Даже если данные расшифруют, их еще подписать надо, а это уже геморрой.
А>Т.е. по твоей схеме зашивать в программу придется публичный и приватный ключ. А уже выкусит эту пару из бинарника, чтобы сделать кейгенератор — дело техники.
Зачем пару? Отдаем в программе public и все. Не нужен private. не нужен.
Конечно можно подменить public, но это уже crack. А crack-нуть можно практически все.
Здравствуйте, Doc, Вы писали:
Doc>Ты с электронными подписями разбирался?
Не так сильно, как с самой шифрацией, однако в курсе, что в таком случае private и public ключ местами меняются.
Doc>Еще раз наглядный пример:
Doc>У тебя: Doc>- 1 берем (вводим) данные (имя юзера, email, имя собаки, возраст итд итп). Doc>- 2 данные шифруем как угодно (хоть XOR-ом) или вообще оставляем как есть Doc>- 3 подписываем эти данные своей priv/pub парой Doc>- 4 записываем в файл данные и подпись Doc>- 5 отсылаем файл юзеру
Doc>У юзера: Doc>- 1 читаем из файла данные и подпись Doc>- 2 при помощи public ключа проверяем соответствует ли подпись данным Doc>- 3 если нет — нас дурят Doc>- 4 если да, то расшивровываем данные (если на шаге 2 у себя мы их шифровали) Doc>- 5 проверяем данные из файла и данные введенные пользователем. Doc>- 6 если совпадают то значит это ключ этого юзера. версия регистрированная
Doc>где у тебя затык с пониманием?
В голове, наверное..., но ситуация заметно идёт к улучшению, скоро выпишусь...
Doc>Кстати, не получится просто сразу шифровать и расшифровывать данные? Doc>Для расшифровки тебе нужен будет private ключ, который зашешь в программу. CryptoAPI дает или public или пару private/public. Выделть отдельно private ключ невозможно. Для подписи подписи наоборот, распостраняем public ключ и у себя держим private что есть правильный ход.
Crypro API юзать не могу, т.к. под ещё и под unix генератор нужно будет делать.
Следовательно, нужно останавливаться на электронных подписях?
On Thu, 27 May 2004 08:32:40 GMT, wrote:
> Не прокатит такая схема, во первых данные не подиписываются приватным > ключем, а шифруются, а во вторых чтобы потом расшифровать эти данные у > клиента должна быть пара ключей публичный и приватный. > Т.е. по твоей схеме зашивать в программу придется публичный и приватный > ключ. А уже выкусит эту пару из бинарника, чтобы сделать кейгенератор — > дело техники.
Все правильно он сказал, не надо путать человека . Подписывание и
шифрование
это по сути одно и то же. В RSA для шифровки нужно знать приватный ключ, а
для
расшифровки достаточно публичного. Так что:
ДанныеЮзера -1-> ЗашифрованныеПриватнымКлючомДанныеЮзера -2->
РашифрованныеДанныеКоторыеМожноСравнить в -1-> использует приватный ключ
в -2-> публичный
ЗашифрованныеПриватнымКлючомДанныеЮзера — нельзя сгенерировать без
приватного ключа
On Thu, 27 May 2004 08:58:26 GMT, Gadsky <12705@news.rsdn.ru> wrote:
> ДанныеЮзера -1-> ЗашифрованныеПриватнымКлючомДанныеЮзера -2-> > РашифрованныеДанныеКоторыеМожноСравнить в -1-> использует приватный ключ > в -2-> публичный > ЗашифрованныеПриватнымКлючомДанныеЮзера — нельзя сгенерировать без > приватного ключа
Фу, господи, какое гадостное форматирование получилось .
Кстати, если кому нужно — могу послать исходники с RSA функциями.
Длина ключа — сколько памяти хватит
Posted via RSDN NNTP Server 1.9 alpha
Re[5]: RSA и ключики
От:
Аноним
Дата:
27.05.04 09:42
Оценка:
Здравствуйте, Gadsky, Вы писали: G>Фу, господи, какое гадостное форматирование получилось . G>Кстати, если кому нужно — могу послать исходники с RSA функциями. G>Длина ключа — сколько памяти хватит
выложи в форум "исходники" плз
Здравствуйте, rastoman, Вы писали:
Doc>>Кстати, не получится просто сразу шифровать и расшифровывать данные? Doc>>Для расшифровки тебе нужен будет private ключ, который зашешь в программу. CryptoAPI дает или public или пару private/public. Выделть отдельно private ключ невозможно. Для подписи подписи наоборот, распостраняем public ключ и у себя держим private что есть правильный ход. R>Crypro API юзать не могу, т.к. под ещё и под unix генератор нужно будет делать. R>Следовательно, нужно останавливаться на электронных подписях?
Мой совет: внимательно изучить подписи (понять, а то похоже ты еще не до концв понял). И остановиться на варианте — простое шифрование данных (что бы сходу не увидеть) и подпись для уверенности что их отправил ты. Ну и искать слабые места и делать хитрые проверки (что public ключ не подменили итд)
Doc>Мой совет: внимательно изучить подписи (понять, а то похоже ты еще не до концв понял). И остановиться на варианте — простое шифрование данных (что бы сходу не увидеть) и подпись для уверенности что их отправил ты. Ну и искать слабые места и делать хитрые проверки (что public ключ не подменили итд)
Спасибо.
Вот где бы исходник нормальный для RSA или HFE взять.....?
Не охота самому всю математику реализовывать....
Здравствуйте, rastoman, Вы писали:
R>А не мог бы ты описать отличия подписи RSA от прстого RSA?
Э..э..э..э.??? Прям незнаю что сказать. Вопрос ставишь некоректно. Шифрование нужно для того что бы скрыть данные от чужих глаз, а подпись что бы удостоверить что информация имеено от конкретного источника (в нашем случае твой софт должен "убедиться" что инфа о зарегистрировавшимся от тебя).
Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, rastoman, Вы писали:
R>>А не мог бы ты описать отличия подписи RSA от прстого RSA? Doc>Э..э..э..э.??? Прям незнаю что сказать. Вопрос ставишь некоректно. Шифрование нужно для того что бы скрыть данные от чужих глаз, а подпись что бы удостоверить что информация имеено от конкретного источника (в нашем случае твой софт должен "убедиться" что инфа о зарегистрировавшимся от тебя).
Ну, в этом я уже вкурсе, ... после второго дня поиска информации и исходников...
Здравствуйте, Gadsky, Вы писали:
G>В RSA для шифровки нужно знать приватный ключ, а G>для расшифровки достаточно публичного. Так что:
Для шифрования все как раз наоборот. Шифруется все public key, а расшивровыввается только private key.
А вот для подписи как раз — подписываем private, а все могут проверить используя public.
Здравствуйте, rastoman, Вы писали:
Doc>>Э..э..э..э.??? Прям незнаю что сказать. Вопрос ставишь некоректно. Шифрование нужно для того что бы скрыть данные от чужих глаз, а подпись что бы удостоверить что информация имеено от конкретного источника (в нашем случае твой софт должен "убедиться" что инфа о зарегистрировавшимся от тебя). R>Ну, в этом я уже вкурсе, ... после второго дня поиска информации и исходников...
Ну собственно это по большому счету все различия между подписью и шифрованием
Кстати, возми пока в качестве алогоитма CryptAPI и просто поэксперементируй.
Там все просто (особенно если есть MSDN). Подпиши данные и проверь другой прогой.
Сделаешь пару (подписывающее например указанный файл и проверяющее подпись) таких консольных приложений для теста и будешь понимать