Секреты и ложь. Безопасность данных в цифровом мире

ОглавлениеДобавить в закладки К обложке

Если утверждают, что некая программа использует этот алгоритм, то здесь почти наверняка обман. А если и нет, то программа наверняка непригодна для использования или небезопасна.

Протоколы

Шесть инструментов, о которых я говорил в предыдущей главе, – симметричное шифрование, коды аутентификации сообщений, шифрование с открытым ключом, односторонние хэш-функции, схемы цифровых подписей и генераторы случайных чисел – составляют набор инструментов шифровальщика. С его помощью мы выстраиваем криптографические решения реальных задач: «Как мне послать секретное письмо по электронной почте? Как можно предотвратить мошенничества с телефонными звонками? Как мне обеспечить безопасность системы голосования через Интернет?» Эти задачи безопасности мы решаем, компонуя простейшие элементы в так называемые протоколы. Приходится использовать и другие второстепенные элементы, но, по существу, шесть перечисленных выше элементов составляют ядро любого криптографического протокола.

Например, предположим, что Алиса хочет сохранить в тайне некоторые файлы данных. Вот протокол, который это делает. Алиса выбирает пароль или даже лучше – ключевую фразу. Криптографические программы хэшируют этот пароль, чтобы получить секретный ключ, а затем, применяя симметричный алгоритм, зашифровывают файл данных. В результате получится файл, доступ к которому есть только у Алисы или у того, кто знает пароль.

Хотите создать безопасный телефон? Используйте криптографию с открытым ключом, чтобы сформировать сеансовый ключ, а затем при помощи этого ключа и симметричной криптографии зашифруйте переговоры. Хэш-функция обеспечивает дополнительную безопасность против атак, проводимых человеком. (Подробнее об этом позже.) Чтобы засекретить сообщение электронной почты, воспользуйтесь криптографией с открытым ключом для соблюдения секретности и схемой цифровой подписи для аутентификации. Электронная торговля? Обычно для нее не требуется ничего, кроме цифровых подписей и, иногда, шифрования для секретности. Секретный контрольный журнал? Возьмите хэш-функции, шифрование, может быть, MAC и перемешайте.

То, что мы сейчас делаем, и есть создание протоколов. Протокол – это не сложнее, чем танец. Это последовательность заданных шагов, которую выполняют два (или больше) партнера и которая предназначена для решения поставленной задачи. Представьте себе протокол, которым пользуются продавец и покупатель при покупке мандаринов. Вот необходимые шаги:

1. Покупатель спрашивает у продавца мандарины.

2. Продавец дает ему мандарины.

3. Покупатель платит продавцу.

4. Продавец возвращает ему сдачу.

Все, о ком идет речь в протоколе, должны знать шаги. Например, покупатель знает, что он должен заплатить за мандарины. Все шаги должны быть однозначны: ни продавец, ни покупатель не могут достичь шага, на котором они не знают, что делать. Кроме того, протокол должен обязательно завершаться – в нем не должно быть бесконечных циклов.

Шаг 2 не будет работать как надо, если продавец не поймет семантическое содержание шага 1. Продавец не выполнит шаг 4, если на шаге 3 не признает деньги настоящими. Попробуйте купить мандарины в США на польские злотые и посмотрите, как вам это удастся.

Нас особо волнуют протоколы безопасности. Кроме всех перечисленных выше требований мы хотим, чтобы покупатель и продавец не имели возможности обманывать (что бы ни означало «обманывать» в нашем контексте). Мы не хотим, чтобы продавец мог заглянуть в бумажник покупателя на шаге 3. Мы не хотим, чтобы продавец не отдал покупателю сдачу на шаге 4. Мы не хотим, чтобы покупатель застрелил продавца на шаге 3 и ушел с украденными мандаринами. Такие способы обмана распространены и в материальном мире, а анонимность киберпространства только увеличивает опасность.

Даже в физическом мире были разработаны более сложные протоколы, чтобы снизить опасность всякого рода жульничества. Вот как в общих чертах выглядит протокол продажи автомобиля.

1. Алиса передает Бобу ключи и документы.

2. Боб дает Алисе чек на сумму покупки.

3. Алиса кладет деньги в банк.

Здесь Боб запросто может сжульничать. Он может дать Алисе фальшивый чек. Она не будет знать, что чек фальшивый, и не узнает, пока ей не скажут об этом в банке. К тому времени Боб с ее машиной будет уже далеко.

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

1. Боб выписывает чек и идет с ним в банк.


Логин
Пароль
Запомнить меня