Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как применять RSA TurboPower LockBox 
:(
    Опции темы
klyaksa
Дата 14.7.2011, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 15.9.2005

Репутация: нет
Всего: нет



Поставил TurboPower LockBox. Хочу использовать из него RSA. Примеры работают.
Как его правильно использовать? Т.е. надо ключ сгенирировать ключ, как его сохранить (т.е. что и в каком виде) и вставить в одну (закрытая) и другую (открытую) часть программы?
Поясните, если можете.
PM MAIL   Вверх
kami
Дата 14.7.2011, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(klyaksa @  14.7.2011,  19:18 Найти цитируемый пост)
ключ сгенирировать ключ

правильно.
один из основных принципов использования:
1. Корреспонденты генерируют (каждый - свои) пары ключей.
2. открытый ключ сообщается корреспонденту.
3. Когда корреспонденту нужно отправить данные, он шифрует их полученным открытым ключем.
4. Второй корреспондент, получив зашифрованные данные, дешифрует их своим закрытым ключем (в принципе, другого закрытого ключа у него и нет).
Вот как-то так. Получается, что каждая из сторон знает, как зашифровать информацию, а вот расшифровать может только владелец закрытого ключа.
Осталось только добавить, что асимметричные ключи не применяют для длительного обмена информацией, а используют для безопасного обмена ключами для симметричных (блочных) алгоритмов шифрования (например, blowfish)

Это сообщение отредактировал(а) kami - 14.7.2011, 19:31
PM MAIL WWW   Вверх
klyaksa
Дата 14.7.2011, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 15.9.2005

Репутация: нет
Всего: нет



Я вот что не пойму - ключ я создам (хотя бы программой из turbopower_lockbox_for_delphi_2009\examples\Delphi
Но в каком виде ключи распихать по программам? Как строки?
И что это такое LbRSA1.PrimeTestIterations в примере что создает пару ключей?

Добавлено через 6 минут и 7 секунд
п.с. пробую вот какую версию
URL:: http://cc.embarcadero.com/Download.aspx?id=26160
Сохранён в:: ****\26160_turbopower_lockbox_for_delphi_2009.ZIP
Размер:: 306 KБ (313 025 байт)


PM MAIL   Вверх
kami
Дата 15.7.2011, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(klyaksa @  14.7.2011,  21:24 Найти цитируемый пост)
в каком виде ключи распихать по программам? Как строки?

А вот это уже зависит от задачи и порядка использования ключей.
У меня в одном из проектов ключи не "распихиваются", а генерируются при каждом запуске, и при каждом запуске обе программы обмениваются открытыми ключами. Хранятся - кажется, да, как строки (хотя - какая разница, как они представлены? Главное, чтобы это представление без труда "влезало" в компонент, работающий с RSA).
P.S. Здесь и далее под "у меня" с равной степенью можно читать как imho.

Это сообщение отредактировал(а) kami - 15.7.2011, 12:12
PM MAIL WWW   Вверх
firstvirus
Дата 1.9.2011, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 1.9.2011

Репутация: нет
Всего: нет



Серверное приложение имеет статический RSA ключ. Клиентское приложение знает его открытый ключ. Генерирует свои ключи, и свой открытый ключ отсылает серверу в сообщении зашифрованном ключом сервера. Прием сообщения и его дешифровка происходят нормально, однако при попытке положить ключ в хранилище серверное приложение сбоит и клиент теряет с ним связь.
Код

if Client.RSA=nil then  // Если объект RSA отсутствует...
  begin
  Client.RSA:=TLbRSA.Create(ServerForm);  // ... то создаем его и задаем размер ключа
  Client.RSA.KeySize:=TAsynmKeySize(aks128);
  end;
DecryptedMessage:=ServerRSA.DecryptString(CommBlock.Msg);  // Расшифровываем полученную от клиента строку
Log.Lines.Add('Расшифрованное сообщение: '+DecryptedMessage); //Пишем в лог расшифрованную строку с ключами
Client.RSA.PublicKey.ModulusAsString:=KeyParser(DecryptedMessage,1);  // парсим модулус   <-- здесь возникает ошибка при дебаге. При рантайме клиент тупо отваливается от сервера и следуящая строчка не пишет в лог ничего
Log.Lines.Add('Модуль ключа: '+Client.RSA.PublicKey.ModulusAsString);
Client.RSA.PublicKey.ExponentAsString:=KeyParser(DecryptedMessage,2);


Вопрос: А правильно ли я записываю ключ клиента?

P.S. Периодически при дебаге вижу такую ошибку RSA decoding error: Invalid block format. Почему одна и та же строка может вызывать или не вызывать данную ошибку?

Это сообщение отредактировал(а) firstvirus - 1.9.2011, 18:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.