Кто не в курсе - Simp - прога которая служит локальной проксей для AIM клиентов, позволяющая шифровать сообщения между 2мя людьми у которых она стоит. В ней можно генерить 3 типа ключевых пар: RSA? эллиптику и elGamal/DSA... Так вот Весь измучался в догадках, как же может работать шифрование траффика, когда я на себе сгенерил EC пару, а у собеседника RSA. Насколько я в курсе для того чтобы совершить обмен общим случайным симметричным ключом и я и он обязаны иметь по ключевой паре EC, ибо сам кодил такую же штуку с помощью openssl. Получается если у него нет ключевой пары то она генерится каждый раз случайно или как? С рса то все понятно, а вот с эллиптикой не очень... Возможно если у него рса а у меня эллиптика то обмен по рса происходит... Либо я чего-то упустил в теории... Реверсер из меня хреновый, так что ковырнуть и посмотреть я не в состоянии )
А может все работает: ты передаешь открытый ключ в элиптических кривых - удаленный клиент и шифрует ним тебе передают ключ RSA - твой клиент шифрует им А чего - программе судя по всему все-равно чем шифровать, что попросил клиент то и делает.
В этом вся загвоздка. как я у себя расшифрую сеансовый ключ не имея на руках открытого ключа отправителя?(насколько я в курсе для шифрования\расшифровки нужен И открытый ключ получателя и закрытый ключ отправителя ). А в сниффере все ок )
А чего вас смущает незеркальные методы обработки? Объясняю на пальцах 1)Клиент А генерирует ключи RSA 2)Клиент Б генерирует ключи EC 3)Клиент А передает открытый ключ RSA клиенту Б 4)Клиент Б передает открытый ключ EC клиенту A 5)Клиент А шифрует исходящий трафик клиенту Б принятым от него открытым ключем EC, а принятый от клиента Б трафик расшифровывает своим приватным ключем RSA 6)Клиент Б шифрует исходящий трафик клиенту А принятым от него открытым ключем RSA, а принятый от клиента А трафик расшифровывает своим приватным ключем EC И все работает - а кто слушает - флаг ему в руки
Это все понятно, кроме одного (п5). Как имея на руках ТОЛЬКО открытый ключ EC, и не имея своего закрытого, зашифровать что-либо? В свое время спрашивал об этом на ru.Crypt, но тогда мне помнится сказали, что эллиптика может использоваться только для ECDSA и ECDH. Для последнего ессно надо 2 пары ключей. Может я упустил что-то, в таком случае прошу презренно ткнуть в меня инфой, где это опровергается.
1)Клиент А генерирует ключи RSA 2)Клиент Б генерирует ключи EC 3)Злоумышленник C генерирует свои ключи RSA и EC 3)Клиент А передает открытый ключ RSA встроевшимуся посередине злоумышленнику, тот его сохраняет а сам шлёт клиенту Б свой открытый RSA ключ 4)Клиент Б передает открытый ключ EC злоумышленнику, тот его сохраняет, клиенту A отсылает свой открытый ключ EC 5)Клиент А шифрует исходящий трафик злоумышленнику принятым от злоумышленника открытым ключем EC, а принятый от злоумышленника трафик расшифровывает своим приватным ключем RSA 6)Клиент Б шифрует исходящий трафик злоумышленнику принятым от него открытым ключем RSA, а принятый от злоумышленника трафик расшифровывает своим приватным ключем EC Т.е. злоумышленник прикидывается A при обмене с Б, и Б при обмене с A. Ни одна из сторон не догадывается что имеет дело не друг с другом, а с посредником. Классика Man-in-Middle. На практике кстати обычно обмениваются ключом симметричного алгоритма при помощи ассиметричных алгоритмов, а потом весь трафик шифруется уже симметречным алгоритмом. Хотя для короткий сообщений можно шифровать и ассиметрикой.