Всем доброго времени суток! Программа Vypress Chat для отправки сообщений по локальной сети использует алгоритм шифрования RSA. Оба ключа для шифрования сохранены на компьтере (*\Application Data\VyPRESS\Vypress Chat\pubkeys.vcdata *\Application Data\VyPRESS\Vypress Chat\pvtkey.vcdata). Все приватные сообщения шифруются соответствующим получателю паблик-ключом (по материалам http://www.cracklab.ru/f/index.php?action=vthread&forum=6&topic=5465). Среди пакетов, отправляемых данной программой только при открытии приватного диалога, передается ключ для шифрования. Из всего вышеизложенного у меня вытекает несколько вопросов: 1) Насколько я понимаю, Vypress Chat передает паблик-ключ получателю сообщения. Происходит публикация открытого ключа (e,n - по материалам http://ru.wikipedia.org/wiki/RSA), так как в остальных пакетах никаких ключей не передается: ни от одного из переписывающихся, только userID. Так ли это на самом деле? 2) Так как публикуется только один открытый ключ, то логично предположить, что оба учаcтника приват диалога дешифруют сообщения одним и тем же секретным ключом. Более того, если мы публикуем открытый ключ, то получатель знает какой применить секретный ключ, т. е. существует какая-то таблица соответствия открытого и секретного ключей единая для всех участников приват-диалога. Так ли это на самом деле? Помогите пожалуйста разобраться с этим механизмом, а то такая каша в голове... (
Спасибо, помогло. Даже очень - потихоньку начинаю понимать. Но вот загвоздка - из этой статьи следует, что каждый из двух участников приват диалога должен публиковать свой открытый ключ. А vypress chat отпраляет только 1 ключ! Я все пакеты просмотрел - ключ один... Как это понимать?
"А vypress chat отпраляет только 1 ключ! Я все пакеты просмотрел - ключ один... Как это понимать?" возможно: 1. вы смотрели пакеты только в одном направлении. 2. на второй машине по какой то причине вайпресс чат не захотел использовать шифрование (отключено в настройках, заданы не те порты, не установлены все части в программе? 3. вы не заметили
Я раз 5 просмотрел пакеты в обоих направлениях 5 разных подключений, даже если пользователь новый отправляется только 1 ключ, затем зашифрованные данные (размер совпадает с текстом) тоже в обоих направлениях. При повторном подключении к тому же пользователю (например после перезагрузки) отправляется совершенно другой ключ, если сразу же открыть приват диалог после его закрытия, то данные шифруются под старый ключ и никакого ключа в пакетах не уходит. Может там не RSA?
у сколька из 5 человек версия Vypress Chat больше 1.9.5? в хелпе сказано что только с этой версии они включили RSA а то что вы видите это скорее всего кодировка в UTF-8 а не шифрование...
У всех версия 2.6. Если я открываю приват-диалог с моего компа отправляет ключ: ckey: AQIAAAFoAAAApAAAvhWnooiY6xzNScc87MndYt4c57GA5rxgEPVB6S2EUc9WokZal MeSBILVnUip5ZoJsC1SPPIy1pyd9dHeZqJZidbDY7m38YcAinnMjh7c4ZYKsy8bk/lGdJCxuqaPo0LDKI5ihtfjATzCrU2SrTgTnigW8aHvzz24HnDJmQEaVrQ= А от компа с которым соединяюсь данные в ответном пакете: ckey: . Так что ключ публикуется 1, проверил на нескольких компах еще пару раз. Насчет другой кодировки: как не открывай - одна ерунда получается. И вот вопрос: если открытый ключ 1, то оба участника знают и закрытый ключ?
Простите конечно, но перечитайте документ ссылку на который я Вам дал выше. Зачем всем учасникам разговора знать закрытый ключ?Если все будут знать закрытый ключ это называется компрометацией и RSA тут вообще не причём.Объекты А и Б обмениваются открытыми ключами, для того что бы: 1.Когда А захочет написать зашифрованное сообщение Б он возьмёт открытый ключ Б зашифрует, отправит и получатель(т.е Б) с помощью своего закрытого ключа расшифрует сообщение. 2.Тоже самое с другими учасниками разговора. 3.Если А будет знать закрытый ключ Б(т.е скомпрометирует его), то А сможет от имени Б писать зашифрованные сообщения и все будут думать что А это Б. По этой причине открытый ключ ещё называется публичным(public), потому что публикуется "везде".В ассиметричном шифровании генерируется пара, открытый/закрытый ключ. С помощью первого корреспонденты шифруют, а получатель расшифровает только уже закрытым.Вообще, то что Вы написали больше похоже на симметричное шифрование, которое уже редко используется. P.S Я то думаю в чём дело, а Вы всё перепутали.Вот почитайте, там всё доходчиво описано.
А от компа с которым соединяюсь данные в ответном пакете:
ckey: .
Так что ключ публикуется 1, проверил на нескольких компах еще пару раз.
Насчет другой кодировки: как не открывай - одна ерунда получается.
И вот вопрос: если открытый ключ 1, то оба участника знают и закрытый ключ?
Хоть поздно, но всё-равно отвечу... При использовании ассиметричного щифрования, непосредственно открытым или закрытым ключом шифруется не текст сообщения (секретные данные) а, случайно сгенерированный ключ, симметричного шифрования (длиной от 40 до 256 бит, в зависимости от протокола симметричного шифрования). После токо как строны надёжно обменялись симметричным ключом шифрования, они используют этот ключ, потому что симметричное шифрование работает надежнее и быстрее чем ассиметричное, последнее используется только для обмена ключами. Таким образом чат для локальной сети Vypress Chat, имея открытый ключ собеседника (который передается ещё в момент входа в канал, и также используется для цифровой подписи), генерирует сессионный случайный ключ длиной 40 бит, шифрует его открытым ключом и отправляет его. Собеседник просто извлекает сгенерированный сессионный ключ и использует его для шифрования, поэтому второй пакет и не нужен. Просто, обмен открытыми ключами, фактически, произошёл раньше - при входе клиентов в сеть.