logo
INFO2

Проблемы использования открытых/закрытых ключей

Как мы уже сказали раньше, использование несимметричных алгоритмов шифрования и криптохешей позволяет защитить (казалось бы) передаваемую информацию от подслушивания и изменения.

Однако, условием этого является обмен открытыми ключами между сторонами (участвующими в обмене информацией). А как пользователь С сможет проверить, что полученный ключ - это ключ D, а не злобного E (который перехватил оригинальное письмо D, а вместо него отправил письмо со своим открытым ключом, и получая все сообщения от D, он их расшифровавает/меняет, шифрует/подписывает своим ключом и отправляет дальше к C)? Каким образом мы можем узнать, что данный ключ принадлежит данному пользователю? Опять шифроблокнотики, личные встречи и бумаги с печатами? (Кстати, это не самый сложный метод: люди обмениваются нотариально заверенными бумагами с распечатанными открытыми ключами - и никакой "злобный Е" не сможет притвориться одним из них. Главная проблема подобного метода - плохое масштабирование. Если 300 человек решат так сделать со всеми остальными 299 человеками, то потребуется 300*299=89700 нотариально заверенных распечаток откртых ключей).

Проблема получения правильного открытого ключа - это первая проблема. Вторая проблема: предположим, что закрытый ключ пользователя украли. Как ему оповестить всех людей, с кем у него защищённый обмен информацией о краже? А об утрате? Если он это сделает с помощью незащищённых каналов связи, то и злоумышленник может заявить (якобы от лица пользователя): "ключ украли, компьютер сломали, не слушайте больше писем с этим ключом". Т.е. вся защита держится на личном доверии, каких-то других каналах связи? Или вообще ни на чём не держится?

Главная проблема, которую можно выделить из этих примеров: пользователь не имеет возможности проверить, что ключ Aпринадлежит пользователю A. Любой другой пользователь (злоумышленник) может сделать то же самое, что пользователь A, и назвать себя пользователем A.

Как решить эту задачу?

Главная "правда" PKI состоит в том, что подобная задача не может быть решена только средствами криптографии. Необходима некая договорённость между использующими ключи людьми о том, как именно доказывать связь ключа и пользователя. Решение этого вопроса - и есть суть PKI. Дополнительно же, помимо "главной задачи" решается ещё несколько очень важных задач, позволяющих обеспечить множество видов дополнительного криптографического сервиса.