Чтобы добавить цифровую подпись к документу, хеш-код, созданный на основе его содержимого, шифруется с помощью частного ключа пользователя (назовем его Боб). Другой человек (Алиса) может проверить подлинность документа, расшифровав хеш-код с помощью открытого ключа Боба и сравнив его с хеш-кодом, сгенерированным из полученных данных.
Если хеш-коды совпадают, данные не были изменены третьей стороной — создать такую подпись возможно, только обладая частным ключом Боба. Однако злоумышленник мог подменить открытый ключ Боба в тот момент, когда Алиса впервые получила его.
Как выяснить, корректный ли у Алисы ключ для проверки подписи? Для этого используется система корневых сертификатов доверия. Открытый ключ, созданный Бобом, подписывает своим собственным частным корневым ключом уполномоченный по выдаче сертификатов, проверив его личность. Публичные ключи таких уполномоченных широко известны, например, «зашиты» внутри всех популярных интернет-браузеров, поэтому подменить их незаметно практически невозможно. Открытый ключ Боба вместе с его реквизитами или анкетными данными, подписанный уполномоченным по выдаче сертификатов — это его личный цифровой «паспорт», или сертификат.
Давайте посмотрим, как это все работает на примере простой трансакции. Боб хочет послать Алисе конфиденциальное письмо по электронной почте. Для шифрования своего сообщения он будет использовать открытый ключ Алисы, хранящийся в ее сертификате, благодаря наличию которого он уверен, что этот ключ принадлежит именно Алисе. Боб подпишет сообщение своим закрытым ключом. Когда Алиса получит сообщение, она с помощью своего частного ключа это сообщение расшифрует. Поскольку частный ключ Алисы есть только у нее, значит, только она сама сможет раскрыть это сообщение. Узнав открытый ключ Боба из его сертификата, она сможет проверить подлинность подписи и убедиться, что это сообщение, во-первых, пришло именно от Боба, а во-вторых, не было изменено по пути.
По материалам: http://www.osp.ru/cw/1999/22/35858/
Итак, современная криптография достаточно надёжна для любых практических применений. Её широко используют банки, спецслужбы, корпорации и правительства. Она легко доступна — «гражданские» алгоритмы шифрования не уступают военным. Использование таких методов как пытки или слежка в отношении обычных людей весьма маловероятно, а надёжную защиту от модификации ПО даёт открытая разработка. О ней и пойдёт речь дальше.
Open Source
Как и в случае с алгоритмами шифрования, интуиция подсказывает, что в ПО с открытым исходным кодом легче внести злонамеренные модификации, но это не так. Открытая разработка происходит за «прозрачной стеной». Как и в мясном цеху супермаркета, видеть всё, что происходит внутри, может любой, но вход разрешён только ограниченному кругу людей. Сейчас все открытые проекты используют так называемые системы контроля версий[92], которые отслеживают и сохраняют любые изменения в коде проекта. Любой желающий может просмотреть эту историю, подобно истории правок статьи в Википедии. За популярными проектами следят тысячи программистов по всему миру. Внести незаметные изменения в код, минуя систему контроля версий, просто невозможно. Это гарантирует криптография. Права на такие изменения есть только у небольшого числа членов команды проекта. У каждого из них есть ключ, которым он подписывают изменения. У каждой правки есть конкретный автор, и всегда видно, кто отвечает за её корректность[92]. Если же в разработке хочет поучаствовать человек со стороны, он создаёт копию проекта, вносит изменения в неё и отправляет их на рассмотрение команды.
При закрытой разработке единственной гарантией служит репутация производителя. Никто не может проверить, что там внутри на самом деле. И даже если репутация безупречна, фирму всегда может прижать правительство, заставив внести, например, ограничения на длину ключа при шифровании, или оставив другие лазейки для «Большого Брата».
К сожалению, для «железа» такая открытость технически невозможна. Но, в отличие от софта, при серийном производстве закладывать «дыры» скажем, в микропроцессор — абсолютно самоубийственная политика для производителя. Если в случае ПО можно сказать: «Ой! Мы нечаянно!» и тут же выпустить заплатку, которая закрывает дыру, то железо отправится прямиком на свалку, причинив огромные убытки. Единственная возможность снабдить физическое устройство «жучками» ещё на заводе — сделать это официально, прикрывшись законодательным предписанием или легендой о «безопасности» или «борьбе с пиратством». И бороться с этим техническими методами невозможно. Массовое проникновение на рынок таких устройств, например под предлогом «борьбы с терроризмом (пиратством, детской порнографией и т.д.)» — одна из серьёзнейших угроз для сети.
P2P
Одноранговые, или пиринговые сети (от англ. peer to peer — «равный к равному») — это сети в которых нет центрального узла. Пример такого узла — сервер, на котором работает веб-сайт, или главный банковский компьютер. Если этот узел выходит из строя, вся сеть становится неработоспособной. В P2P-сети каждый участник — одновременно клиент и сервер. Для того чтобы серьезно нарушить работу такой сети, необходимо уничтожить или взять под контроль большую часть узлов, что невозможно на практике для достаточно большой сети. Кроме надёжности, важным преимуществом одноранговых сетей является масштабируемость. Например, если некий файл расположен на сервере в централизованной сети, то увеличение числа клиентов в сто раз наверняка «положит» сервер. Он не сможет справиться с возросшей стократно нагрузкой. А в P2P-сети каждый клиент помогает другим, отдавая имеющиеся у него части файла вместо сервера. Поэтому, чем больше людей качают файл, тем быстрее и надёжнее идёт загрузка у каждого из них.
Google тратит сотни миллионов долларов в год[93] на сервера видеохостинга Youtube. В то же время обмен видеофайлами через сеть BitTorrent происходит как бы сам собой. Если Google захочет (или его заставят), Youtube мгновенно перестанет существовать. А файлообмен в пиринговых сетях процветает, несмотря на все попытки его уничтожить. P2P дает гарантию, что если достаточно большое число людей желают, чтобы некая информация распространялась, или некий сервис продолжал работать, то никакая корпорация и никакое государство не смогут этому помешать.
Также Р2Р сети обладают еще одним важным свойством — естественной надежностью информации, которая в таких сетях хранится. Если информация размещена на одном сервере, то злоумышленник, обладающий определенными правами в системе, способен незаметно модифицировать данные. В одноранговой сети одна и та же информация разносится во множестве копий по многим узлам и самовольное внесение правок в одну из копий, к которой имеет доступ воображаемый злоумышленник, сделает эту копию невозможной к приему остальными членами сети (так как подлинность копии удостоверяется криптографически) и не уничтожит оригинальную информацию, которая все так же будет доступна остальным узлам сети. Если любое изменение в данных фиксируется и хранится, подобно правкам в Википедии, то старую информацию практически невозможно скрытно стереть или модифицировать.
Так, организации правообладателей неоднократно пытались нарушить работу файлообменных сетей, создавая узлы, которые намеренно распространяли искажённую информацию[94]. Тем не менее, подавляющее большинство пользователей этих усилий просто-напросто не заметило.
Интересный пример объединения трёх перечисленных выше технологий — криптовалюта Bitcoin[95]. Её изобретатели попытались создать средство обмена, лишённое недостатков бумажных денег — инфляции и зависимости от (коррумпированной и некомпетентной) политики национальных банков. Экономические постулаты, лежащие в основе Bitcoin, могут вызывать сомнения, но техническая возможность создания такой платёжной системы и её надежность теперь доказана опытом. Криптография гарантирует подлинность трансакций Bitcoin, открытая разработка исключает возможность закладки «жучков» и «дыр», распределённая одноранговая архитектура сети гарантирует невозможность её закрытия административными методами.
Искусственный интеллект
В отличие от первых трех технологий, которые широко распространены и хорошо изучены, искусственный интеллект пока только делает первые шаги. То, что специалисты называют «искусственным интеллектом», пока мало похоже на интеллект в человеческом понимании, скорее на отдельные его фрагменты. Достаточно широко применяется распознавание образов, значительных успехов удалось добиться в распознавании речи, методы искусственного интеллекта применяются поисковыми машинами и социальными сетями, скоринговыми системами банков, страховыми компаниями. По улицам Калифорнии и на автодромах Европы уже ездят экспериментальные машины-роботы (пока что с водителем, который может в любой момент взять в свои руки руль, для подстраховки). Все эти применения пока требуют огромных ресурсов и доступны лишь достаточно крупным организациям или имеют статус экспериментальных разработок.