"Oleg Prosvetov" ...
> ??>> Прехват public(открытых) ключей взломщику ничего не даст, на то они и
> ??>> называются открытые, т.е. доступные всем. Расшифровка же данных
> ??>> клиентом и сервером будет осущесвлятся ихними private(закрытыми)
> ??>> ключами. Кстати для надежности можно задавать интервал генерации
> ??>> и обмена ключами, но увлекатся я думаю не стоит, потому что будут
> ??>> тормоза :) Т.е. мы получаем зашифрованный канал между клиентом и
> ??>> сервером и программа перехвата остается при своих интересах :)
>
> HV> Про атаку "man in the middle" мы, конечно, не в курсе. Вынужден
> HV> огорчить - это элементарно взламывается.
>
> Оба-на!!! Вы знаете как взломать технологию открытых ключей ? Если можно
> поподробнее.
> Я думаю всем будет интересно :)
Видите ли. Часто достаточно не _ломать_, а подменить, или просто узнать.
Ок, показываю в подробностях:
а) Это то, как вам хотелось бы (хотя на самом деле делают не так, но
сути это не меняет)
01. C (сlient): генерит пару ключей. отсылает открытый ключ серверу
02. S (server): генерит пару ключей. отсылает открытый ключ клиенту
03. C: шифрует сообщение открытым ключём сервера, передаёт его по сети
04. S: получает сообщение и расшифровывает его приватным ключём сервера
05. S: шифрует ответ открытым ключём клиента, передаёт его по сети
06. С: получает сообщение и расшифровывает его приватным ключём клиента
б) а это то, как оно может быть
00. H (hacker): садится как прокси на трафик между клиентом и сервером
01. C (сlient): генерит пару ключей. отсылает открытый ключ серверу
02. H: получает открытый ключ клиента, генерит свою пару ключей #1 и
отсылает серверу свой открытый ключ #1
03. S (server): генерит пару ключей. отсылает открытый ключ клиенту
04. H: получает открытый ключ сервера, генерит свою пару ключей #2 и
отсылает клиенту свой открытый ключ #2
05. C: шифрует сообщение открытым ключём хакера, передаёт его по сети
06. H: получает сообщение и расшифровывает его приватным ключём #2,
зашифровывает его открытым ключём сервера и передаёт его по сети
07. S: получает сообщение и расшифровывает его приватным ключём сервера
08. S: шифрует ответ открытым ключём хакера, передаёт его по сети
09. H: получает сообщение и расшифровывает его приватным ключём #1,
зашифровывает его открытым ключём клиента и передаёт его по сети
10. С: получает сообщение и расшифровывает его приватным ключём клиента
Таким образом хакер ("man in the middle") видит весь трафик в открытом виде.
Это хорошо известная атака. Решается только если клиент и сервер обмениваются
ключами заранее, или имеют возможность проверить аутентичность ключа,
полученного
по открытому каналу. В общем - RTFM PKI, SSL etc ;)
...
> HV> PS Хотелось бы узнать, чем это лучше моего предложения :)
>
> К сожелению с вашим предложением не знаком.
Ветка "Шифрование БД" от 26.09.2006
--
Хорсун Влад