"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

-- 
Хорсун Влад


Ответить