Hello Serguei!
Saturday April 04 2015 03:55, Serguei E. Leontiev wrote to Yuri Myakotin:
SL> Ответ: нет, "подписи для открытого сессионного ключа ОТВЕЧАЮЩЕЙ
SL> стороны" недостаточно.
SL> Поясню, сессия это не только ключ, это совокупность правильных,
SL> допустимых ключей, сторон, момента и т.п.
Речь идет о самом первом этапе сессии: две стороны "договариваются" о сеансовых
ключах шифрования. Вызывающая сторона знает, кого она вызывает, открытый ключ
сервера у нее есть. Соответственно, проверяется, подписаны ли передаваемые
сервером в самом начале данные его ключом, или кто-то влез посредине. Смысл в
том, что при наличии злоумышленника либо подпись будет неверной, либо
подмененные данные для ключа не совпадут и защищенной сессии все равно не
получится.
SL> А нарушитель не обязан просто и тупо пихать свой открытый ключ,
SL> например, он может перехватывать сессию и т.д. и т.п.
Вот как раз о перехвате сессии и речь.
Алгоритм сессии в моем случае:
1) стороны шлют друг другу информацию о используемых ими версиях протокола.
2) Каждая из сторон генерит рандомный ключ, получает из него открытый ключ и
отсылает этот открытый ключ другой стороне. Отвечающая сторона дополнительно
добавляет подпись этого открытого ключа своим постоянным ключом, открытая часть
которого известна вызывающей стороне.
3) Вызывающая сторона проверяет соответствие подписи, если она не соответствует
- обрывает соединение.
4) Стороны из своих секретных и и полученных от другой стороны ключей
генерируют общие ключи шифрования сессии и переходят в шифрованный режим.
5) дальше уже в шифрованном виде идет аутентификация/авторизация сторон и обмен
данными.
Влезание MITM в этой схеме приводит либо к непрохождению проверки в пункте 3,
либо к тому, что в пункте 4 ключи у сервера и клиента окажутся разными, т.е.
сесии все равно не получится, вместо данных в пункте 5 одна из сторон получит
абракадабру и оборвет соединение. Либо к тому, что MITM вынужден будет просто
ретранслировать данные пунктов 1-2 без изменений, и, начиная с пункта 5 -
прочитать ничего не сможет :)