Чтобы добавить цифровую подпись к документу, хеш-код, созданный на основе его содержимого, шифруется с помощью частного ключа пользователя (назовем его Боб). Другой человек (Алиса) может проверить подлинность документа, расшифровав хеш-код с помощью открытого ключа Боба и сравнив его с хеш-кодом, сгенерированным из полученных данных.
Если хеш-коды совпадают, данные не были изменены третьей стороной — создать такую подпись возможно, только обладая частным ключом Боба. Однако злоумышленник мог подменить открытый ключ Боба в тот момент, когда Алиса впервые получила его.
Как выяснить, корректный ли у Алисы ключ для проверки подписи? Для этого используется система корневых сертификатов доверия. Открытый ключ, созданный Бобом, подписывает своим собственным частным корневым ключом уполномоченный по выдаче сертификатов, проверив его личность. Публичные ключи таких уполномоченных широко известны, например, «зашиты» внутри всех популярных интернет-браузеров, поэтому подменить их незаметно практически невозможно. Открытый ключ Боба вместе с его реквизитами или анкетными данными, подписанный уполномоченным по выдаче сертификатов — это его личный цифровой «паспорт», или сертификат.
Давайте посмотрим, как это все работает на примере простой трансакции. Боб хочет послать Алисе конфиденциальное письмо по электронной почте. Для шифрования своего сообщения он будет использовать открытый ключ Алисы, хранящийся в ее сертификате, благодаря наличию которого он уверен, что этот ключ принадлежит именно Алисе. Боб подпишет сообщение своим закрытым ключом. Когда Алиса получит сообщение, она с помощью своего частного ключа это сообщение расшифрует. Поскольку частный ключ Алисы есть только у нее, значит, только она сама сможет раскрыть это сообщение. Узнав открытый ключ Боба из его сертификата, она сможет проверить подлинность подписи и убедиться, что это сообщение, во-первых, пришло именно от Боба, а во-вторых, не было изменено по пути.
По материалам: http://www.osp.ru/cw/1999/22/35858/
Итак, современная криптография достаточно надёжна для любых практических применений. Её широко используют банки, спецслужбы, корпорации и правительства. Она легко доступна — «гражданские» алгоритмы шифрования не уступают военным. Использование таких методов как пытки или слежка в отношении обычных людей весьма маловероятно, а надёжную защиту от модификации ПО даёт открытая разработка. О ней и пойдёт речь дальше.
Как и в случае с алгоритмами шифрования, интуиция подсказывает, что в ПО с открытым исходным кодом легче внести злонамеренные модификации, но это не так. Открытая разработка происходит за «прозрачной стеной». Как и в мясном цеху супермаркета, видеть всё, что происходит внутри, может любой, но вход разрешён только ограниченному кругу людей. Сейчас все открытые проекты используют так называемые системы контроля версий