Электронная библиотека » Кит Мартин » » онлайн чтение - страница 4


  • Текст добавлен: 25 декабря 2023, 14:19


Автор книги: Кит Мартин


Жанр: Компьютеры: прочее, Компьютеры


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 4 (всего у книги 17 страниц) [доступный отрывок для чтения: 6 страниц]

Шрифт:
- 100% +

3. Хранение секретной информации

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

Конфиденциальность

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

Секреты есть у всех. Речь идет не только о крайне деликатной информации, раскрытие которой унизит вас. Любые сведения, которые касаются вас и которые вы бы не хотели увидеть опубликованными в газете, секретны. Это все, чем вы с радостью делитесь с одними людьми, но скрываете от других. Определенно, ваши банковские реквизиты, пароли и PIN-коды относятся к этой категории, как и ваши адрес, дата рождения и семейные фотоальбомы. Представьте, что к вам на улице подошел незнакомец и начал настойчиво выспрашивать имена ваших детей и что вы вчера ели на ужин. Каким бы был ваш ответ? Если бы вы отказались, эти сведения тоже можно было бы считать секретными. У всех нас есть то, чем мы не хотели бы делиться со всеми и каждым[69]69
  Конфиденциальность нужна всем, так как всем есть что скрывать. Часто можно услышать мантру о том, что людям, которым нечего скрывать, можно не беспокоиться о правительственных программах слежения. Ошибочность этого аргумента подробно раскрывается в книгах Дэниела Дж. Солова Nothing to Hide (Yale University Press, 2011) и Дэвида Лайона Surveillance Studies: An Overview (Polity Press, 2007).


[Закрыть]
.

Конфиденциальную информацию часто ассоциируют с личной, существование которой в более широком смысле объясняется желанием и возможностью скрывать от других те или иные сведения. Как высказался Эрик Хьюз в своем «Манифесте шифропанка»: «Личное дело – это то, чем мы бы не хотели делиться со всем миром, а секрет – то, что мы хотим скрыть ото всех. Приватность – это способность выборочно раскрывать информацию о себе»[70]70
  Эрик Хьюз, A Cypherpunk’s Manifesto, 9 марта 1993 года, https://www.activism.net/cypherpunk/manifesto.html.


[Закрыть]
. Механизмы безопасности, направленные на обеспечение конфиденциальности, можно использовать для сохранения приватности, но приватность как таковая не ограничивается хранением секретов.

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

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

Иначе говоря, конфиденциальность необходима при передаче приватных данных по любой сети, к которой у нас нет полного доверия. И здесь тоже по большому счету речь идет обо всех сетях, включая Интернет и ваш домашний Wi-Fi[71]71
  Я использую фразу «не следует полностью доверять», чтобы вы относились к устройствам и сетям с осторожностью, и вовсе не пытаюсь вызвать у вас паранойю из-за полного отсутствия безопасности. Суть в том, что мы никогда не знаем наверняка, скомпрометированы ли наши устройства и сети каким-либо образом (например, путем установки вредоносного ПО), поэтому, чтобы проявить благоразумие, к ним всегда нужно относиться с определенной настороженностью.


[Закрыть]
.

Игра в прятки

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

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

Цифровая информация тоже может быть спрятана среди обычных, на первый взгляд, цифровых объектов. Примером этого может служить цифровое изображение. Оно состоит из сотен отдельных пикселей, которые человеческий глаз не способен различить ввиду их малого размера. У каждого пикселя есть определенный цвет, который, как и многие другие данные, представлен последовательностью битов. Некоторые из этих битов критически важны, другие используются лишь для тонкого регулирования итогового цвета. Изменение этих менее чувствительных битов пройдет незаметно для наблюдателя; следовательно, их можно с легкостью заменить другими битами с какой-то информацией, которую мы хотим скрыть. Сторонний наблюдатель увидит все то же изображение, но если знать, где искать, можно извлечь скрытую информацию.

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

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

Тем не менее сокрытие факта существования информации не так уж и часто оказывается преимуществом. Если ваш банк решит отправить вам конфиденциальный документ, напечатанный на бумаге, вы, наверное, согласитесь с тем, что это лучше сделать традиционной почтой, запечатав документ в конверт; вам вряд ли захочется забирать документ в каком-то условленном секретном месте. Конечно, почтальон будет знать, что вы получили письмо от банка, но в конечном счете это не так уж важно. Важнее то, что он не может заглянуть в конверт. Точно так же, когда вы звоните кому-то по мобильному, вы не думаете о том, чтобы скрыть факт звонка, конфиденциальным является сам разговор[72]72
  Это, несомненно, спорный аргумент. Метаданные, связанные с тем, кому и как часто мы звоним, могут прийтись очень кстати следователям, у которых нет доступа к содержанию звонков. Полезность таких метаданных была проиллюстрирована в одном из документов, опубликованных Сноуденом, который касался сбора метаданных американского оператора телекоммуникационных услуг Verizon со стороны АНБ: Гленн Гринвальд, «NSA Collecting Phone Records of Millions of Verizon Customers Daily», Guardian, 6 июня 2013 года, https://www.theguardian.com/world/2013/jun/06/nsa-phone-records-verizon-court-order.


[Закрыть]
. Или когда вы покупаете что-то в Интернете, конфиденциальным, как правило, остается не факт покупки, а детали транзакции.

Во всех этих примерах сокрытие информации оказывается не только лишним, но и нереалистичным. Как бы вы ее скрыли? Когда вы звоните кому-то, вы намерены отправить только данные, кодирующие ваш голос, а не какой-то дополнительный объект, в котором можно спрятать информацию о звонке. Любой цифровой объект, в котором можно было бы что-то скрыть, намного больше данных с конфиденциальным разговором, и это само по себе делает «игру в прятки» чрезвычайно неэффективной.

В целом сокрытие информации – не самый надежный способ обеспечения конфиденциальности. Раздел науки, изучающий механизмы сокрытия информации, называется стеганография (что в переводе с греческого буквально означает «тайнопись»[73]73
  Хорошим введением в стеганографию является книга Питера Уэйнера Disappearing Cryptography: Information Hiding: Steganography & Watermarking (MK/Morgan Kaufmann, 2009).


[Закрыть]
), и у нее есть определенные узкие сферы применения. С ее помощью преступник может скрыть инкриминирующие материалы на своем компьютере так, что никто даже не догадается об их существовании[74]74
  С реальными примерами использования стеганографии для взлома компьютеров можно познакомиться в статье Бена Росси «How Cyber Criminals Are Using Hidden Messages in Image Files to Infect Your Computer» от 27 июля 2015 года, Information Age, http://www.information-age.com/how-cyber-criminals-are-using-hidden-messages-image-files-infect-your-computer-123459881.


[Закрыть]
. Стеганография применяется в сфере защиты цифровых прав, когда цифровой контент помечается особым образом без заметного ухудшения качества. Стеганография может пригодиться, если нужно укрыть какую-то информацию от правительства или руководства, объявившего использование механизмов конфиденциальности незаконным. Авторитарному режиму сложно обвинить человека в хранении секретов, если их существование нельзя доказать[75]75
  Такого рода способы применения часто обсуждаются, и советы на этот счет можно легко найти в Интернете (например, Krintoxi, «Using Steganography and Cryptography to Bypass Censorship in Third World Countries», Cybrary, 5 сентября 2015 года, https://www.cybrary.it/0p3n/steganography-and-cryptography-to-bypass-censorship-in-third-world-countries), свидетельств его широкого распространения не так уж много. Причины этого, наверное, аналогичны тем, которые приводятся критиками утверждений о том, что стеганография активно использовалась террористами (которые стали звучать после событий 11 сентября 2001 года): Роберт Дж. Бэгнелл, «Reversing the Steganography Myth in Terrorist Operations: The Asymmetrical Threat of Simple Intelligence Dissemination Techniques Using Common Tools», SANS Institute, 2002 год, https://www.sans.org/reading-room/whitepapers/stenganography/reversing-steganography-myth-terrorist-operations-asymmetrical-threat-simple-intellig-556. На самом деле с тех пор, как Бэгнелл дал свои комментарии в 2002 году, и особенно с момента публикации разоблачений Сноудена в 2013 году, спектр средств безопасной связи, доступных любому, кто хочет избежать слежки со стороны правительства, расширился.


[Закрыть]
.

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

Стеганография и криптография – разные вещи. Можно сказать, что стеганография эффективна в качестве механизма конфиденциальности только в том случае, когда сама скрытая информация уже зашифрована. Обычный человек использует стеганографию либо редко, либо вообще никогда, в то время как криптография стала неотъемлемой частью нашей повседневной жизни.

Взлом кодов

Допустим, у нас есть какая-то конфиденциальная информация, которую мы хотим отправить кому-то в киберпространстве. Нам не нужно скрывать тот факт, что она существует; мы просто хотим ограничить к ней доступ. Поскольку за процессом отправки может наблюдать кто угодно, эту информацию нужно как-то замаскировать. Иными словами, ее нужно отправить в измененном виде.

Как замаскировать информацию? Нам нужно привести ее к такому виду, чтобы она казалась бессмысленной любому постороннему наблюдателю. Следовательно, нам нужен алгоритм.

Давайте рассмотрим очень простой пример такого алгоритма. Допустим, информация, которую мы хотим защитить, состоит из букв, скажем, TOPSECRET. Это обычный (или исходный) текст – информация до того, как ее замаскируют. Чтобы проиллюстрировать этот процесс, я воспользуюсь шифром Атбаш[76]76
  Шифр Атбаш – это древний способ кодирования букв в иврите (название Атбаш получено из первой и последней букв в еврейском алфавите). Высказываются мнения о том, что он применяется в нескольких местах библейской книги пророка Иеремии: Пол Хоскиссон, «Jeremiah’s Game», Insight 30, no. 1 (2010): 3–4, https://publications.mi.byu.edu/publications/insights/30/1/S00001-30–1.pdf.


[Закрыть]
– изменением порядка следования букв алфавита на противоположный. Иными словами, каждая буква исходного текста заменяется буквой в той же позиции, но взятой из алфавита, записанного в обратном порядке: вместо A подставляется Z, вместо B – Y, вместо C–X и т. д. Полный алгоритм представлен в следующей таблице.


Обычный текст A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Зашифрованный текст Z Y X W V U T S R Q P O N M L K J I H G F E D C B A


Алгоритм шифрования Атбаш заменяет каждую букву в верхнем ряду этой таблицы буквой из нижнего ряда. Таким образом исходный текст TOPSECRET превращается в GLKHVXIVG. Эту вторую последовательность букв, которая может выглядеть бессмысленной, называют зашифрованным текстом или шифротекстом.

Шифротекст – это то, что мы отправляем предполагаемому получателю секретного сообщения. Любой, кто наблюдает со стороны, видит лишь GLKHVXIVG. Но получатель знает, что мы преобразовали простой текст в зашифрованный с помощью шифра Атбаш, поэтому для восстановления оригинала он использует обратный алгоритм: заменяет каждую букву в нижнем ряду соответствующей буквой верхнего ряда. Таким образом получатель успешно избавляется от маскировки и превращает GLKHVXIVG обратно в TOPSECRET.

Насколько эффективен шифр Атбаш в качестве механизма конфиденциальности? Вообще-то он считается очень слабым по многим причинам, самая важная из которых связана с моим предыдущим наблюдением: нельзя полагаться на секретность самого алгоритма. Как утверждал Огюст Керкгоффс (и я с ним согласен), мы всегда должны исходить из того, что используемый нами алгоритм известен всем, даже если в реальности это не так. В примере применяется шифр Атбаш, поэтому следует предполагать, что о замене Z на A, Y на B и т. д. знают все. Следовательно, ни для кого не секрет, что шифротекст GLKHVXIVG соответствует обычному тексту TOPSECRET. Вот вам и конфиденциальность!

Проблема шифра Атбаш проста: любому, кто знает, что мы его используем, известно, как преобразовать зашифрованный текст обратно в обычный, поскольку для этого предусмотрен только один способ. Шифр Атбаш не может обеспечить конфиденциальность, поскольку совершенно лишен вариативности. Говоря иначе, его проблема в том, что это алгоритм без ключа.

Алгоритмы, шифрующие информацию без использования ключа, часто называют кодами. Обычно цель кода состоит в том, чтобы преобразовать информацию каким-то образом, но не для секретности. Наверное, самым известным кодом можно назвать азбуку Морзе, которая заменяет буквы короткими последовательностями точек и тире[77]77
  С краткой историей и спецификацией азбуки Морзе можно познакомиться в Британской энциклопедии, статья под заголовком «Morse Code», https://www.britannica.com/topic/Morse-Code (по состоянию на 21 июля 2019 года).


[Закрыть]
. Она была разработана для передачи информации по телеграфу. Последовательности точек и тире позволяют превращать алфавитно-цифровые символы в короткие и длинные электромагнитные сигналы. Эта технология не имеет ничего общего с конфиденциальностью. Действительно, если бы международный сигнал бедствия «точка точка точка тире тире тире точка точка точка», переданный тонущим кораблем, не смогли расшифровать на проплывающем поблизости судне, это было бы катастрофой. Это шифротекст, который должен уметь расшифровать кто угодно.

Но иногда коды дают обманчивое ощущение конфиденциальности. Время от времени вам могут предлагать «взломать код» (я уже сбился со счета, сколько раз мне говорили, что это моя работа как криптографа). На протяжении столетий египетские иероглифы представляли собой аналогичную проблему для исследователей Древнего Египта. Их значения удалось восстановить только в начале девятнадцатого века[78]78
  С историей расшифровки египетских иероглифов можно познакомиться в книге Эндрю Робинсона Cracking the Egyptian Code: The Revolutionary Life of JeanFrançois Champollion (Thames and Hudson, 2012).


[Закрыть]
. Однако иероглифическое письмо никогда не предназначалось для обеспечения конфиденциальности. С исчезновением древнеегипетской культуры люди просто забыли подробности алгоритма, который кодировал понятия в иероглифы. Повторного открытия этого алгоритма оказалось достаточно, чтобы наполнить иероглифы смыслом. Древние египтяне точно не стали бы рассматривать это как нарушение их безопасности.

Еще один известный код упоминается в романе Дэна Брауна Код да Винчи, посвященном секретам, загадкам и интригам[79]79
  Дэн Браун, The Da Vinci Code (Doubleday, 2003).


[Закрыть]
. Одна из главных героинь этого романа, криптограф Софи Неве, якобы училась в Королевском колледже Холлоуэй при Лондонском университете, где я в настоящий момент работаю. Во времена, когда эта книга лидировала в списках бестселлеров, многие новостные издания обращались ко мне с вопросами о криптографии, которую описывал Дэн Браун.

Тем не менее превосходное знание криптографии совершенно не пригодилось Софи Неве, поскольку в Коде да Винчи нет ничего криптографического. В раскрытии тайн и головоломок, которыми наполнена книга, Софи в основном помогает нестандартное мышление. Ближе всего к настоящей криптографии она оказывается в момент осознания, что одна из головоломок содержит текст, преобразованный шифром Атбаш. Поскольку этот шифр, как вам уже известно, не обеспечивает конфиденциальности, Софи почти моментально «вскрывает» секретное сообщение.

Итак, коды – это алгоритмы, с помощью которых можно маскировать информацию, но делается это обычно не в целях конфиденциальности. Если вы ищете механизм безопасности, который обеспечивает конфиденциальность, вам нужен алгоритм с ключом.

Делаем Атбаш конфиденциальным

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

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


Обычный текст A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Зашифрованный текст D I Q M T B Z S Y K V O F E R J A U W P X H L C N G


то строка TOPSECRET превращается в PRJWTQUTP. А если он имеет следующий вид:


Обычный текст A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Зашифрованный текст N R A W K I L F O C T E Y P V J S D B X H M Z U Q G


текст TOPSECRET будет закодирован в XVJBKADKX.


Можно ли считать это прогрессом? В шифре Атбаш алгоритм кодирования подставляет Z вместо A, Y вместо B и т. д. Конфиденциальность здесь невозможна, потому что алгоритм известен всем, и каждый знает, что буква A заменяется буквой Z и т. д. В шифре простой замены, представленном выше, алгоритм кодирования меняет A на N, B на R, C на A и т. д. Чем же это отличается от шифра Атбаш, учитывая, что алгоритм общеизвестный?

Разница на самом деле огромна! Ключевой ее аспект состоит в том, что алгоритм кодирования в шифре простой замены из нашего последнего примера не звучит как «заменить A на N, B на R, C на A и т. д.». Вместо этого его можно сформулировать так: заменить букву в верхнем ряду таблицы соответствующей буквой из нижнего ряда». Алгоритм знают все, но невозможно сказать, какая именно таблица была использована в конкретном случае. Эта информация отделяет тех, кому предназначено сообщение, от всех остальных. Конкретная таблица становится ключом.

Давайте посмотрим, как это работает. Представьте, что вы отправляете своему другу конфиденциальное сообщение с помощью шифра простой замены.

Сначала вам нужно договориться о секретном ключе, иными словами – условиться о случайной последовательности букв. Предположим, вам это каким-то образом удалось. Например, вы могли выбрать тот же ключ, который показан в нашем последнем примере – последовательность N, R, A, …, U, Q, G. Если вы хотите послать текст TIMEFORCAKE, вам нужно свериться с таблицей и заменить буквы в верхнем ряду соответствующими буквами из нижнего ряда: получится XOYKIVDANTK. Вы отправляете эту строку своему другу, и он, используя ту же таблицу, восстанавливает исходное TIMEFORCAKE.

Теперь посмотрим глазами злоумышленника, который хочет узнать содержание ваших секретных сообщений. Предположим, что ему известен алгоритм, то есть он знает, что вы используете шифр простой замены, и может видеть шифротекст, который вы отправляете. Если бы вы использовали Атбаш, злоумышленник мог бы легко восстановить исходный текст. Но он имеет дело с шифром простой замены и знает лишь то, что буквы исходного текста перемешиваются в соответствии с неизвестной ему последовательностью. Буква X в зашифрованном тексте, равно как O и Y, могла заменить любую другую букву.

Насколько безнадежна ситуация, в которой оказался злоумышленник? Что ж, у него всегда есть крайний вариант: он может попытаться подобрать неизвестный ему ключ. Поскольку ключ был сгенерирован произвольным образом, злоумышленник должен угадать случайную последовательность букв в алфавите, надеясь, что ему повезет. Чтобы вычислить вероятность успеха, необходимо определить, сколько всего возможных комбинаций у последовательности из 26 букв.

Сделать это довольно легко. Первая буква может быть любой из 26, поэтому вариантов 26. В качестве второй буквы можно выбрать любую, кроме первой, поэтому остается 25 вариантов. Следовательно, существует 26 × 25 = 650 возможных комбинаций первых двух букв. Третья буква может быть любой, кроме тех двух, которые мы уже выбрали, поэтому остается 24 варианта. Таким образом для первых трех букв существует 26 × 25 × 24 = 15 600 комбинаций. И так далее.

В итоге получается, что число возможных последовательностей из 26 букв равно 26 × 25 × 24 × 23 × 22 × 21 × 20 × 19 × 18 × 17 × 16 × 15 × 14 × 13 × 12 × 11 × 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 403 291 461 126 605 635 584 000 000. Насколько большое это число? Чтобы не вводить все это в калькулятор, наберите «26» и нажмите кнопку с символом «!» (факториал). Если ваш калькулятор не очень мощный, эта операция может свести его с ума, и вместо результата он вернет сообщение об ошибке: ответ слишком большой. Более продвинутый калькулятор сообщит о том, что факториал 26 – это нечто невообразимое. Чего он вам не скажет, так это то, что данный ответ примерно в 40 000 раз превышает количество звезд во вселенной. Проще говоря, угадывание того, какой из возможных ключей выбрали вы с вашим другом – затея совершенно безнадежная, и злоумышленнику не стоит тратить на нее свое время.

Шифр Атбаш – это лишь один из 26! возможных вариантов шифра простой замены. Если ключ выбран случайным образом, вероятность получения шифра Атбаш или любой из двух других таблиц, описанных ранее, крайне низка. И каждый из этих ключей даже менее вероятен, чем выбор одной конкретной звезды, если бы звезд во вселенной было в 40 000 раз больше. Даже если в результате невероятного стечения обстоятельств вам выпадет ключ, соответствующий шифру Атбаш, это будет настолько ошеломляющим совпадением, что вряд ли злоумышленник о нем догадается.

С этой точки зрения шифр простой замены обеспечивает конфиденциальность. Но прежде чем вы приметесь шифровать с его помощью секретную информацию на своем компьютере, примите во внимание следующее: этот шифр действительно имеет 26! возможных ключей, но степень конфиденциальности, которую он предоставляет, серьезно ограничена. Дело в том, что для получения исходного текста из зашифрованного вовсе не обязательно угадывать ключ. Существует куда более простой способ. Пока, впрочем, вам достаточно знать, что, в отличие от стеганографии и таких кодов, как шифр Атбаш, шифр простой замены является примером настоящего (хоть и несовершенного) криптографического механизма безопасности для обеспечения конфиденциальности.

Шифрование

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

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

Шифрование – это чрезвычайно важный механизм безопасности, и тому немало причин. Например, это древнейшая часть криптографии. Еще Юлий Цезарь, Мария Стюарт и Наполеон использовали криптографию для обеспечения конфиденциальности средствами шифрования. В двух мировых войнах двадцатого века, как и впоследствии во время холодной войны, на криптографии были основаны системы секретной связи.

Шифрование широко используется и в наши дни. Если вы сегодня звонили по мобильному телефону, сняли деньги в банкомате, подключились к Wi-Fi, купили что-нибудь в Интернете, задействовали VPN для доступа к офисному компьютеру из дома, смотрели платный телеканал или отправили сообщение в WhatsApp, это означает, что ваш день не прошел без шифрования.

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

Чтобы понять, почему шифрование обычного текстового сообщения не гарантирует, что полученный результат совпадет с текстом, который намеревался защитить отправитель, рассмотрим еще раз шифр простой замены. В одном из наших предыдущих примеров исходный текст TOPSECRET был зашифрован в XVJBKADKX. Этот процесс не позволяет злоумышленнику, получившему доступ к строке XVJBKADKX, узнать ее первоначальное значение.

Тем не менее ничто не мешает ему модифицировать шифротекст до того, как тот окажется у получателя. Злоумышленник мог бы, к примеру, поменять одну букву. Если он подставит X вместо J, расшифрованное сообщение будет выглядеть как POPSECRET. Опечатка ли это? Получателю остается только гадать (возможно, POPSECRET – это таинственный ингредиент в рецепте Coca-Cola!). Несмотря на то что злоумышленнику неизвестны конкретные последствия внесенного им изменения, получатель не может быть уверен в том, что расшифрованный текст корректен[80]80
  Большинство современных средств шифрования сопровождается отдельной криптографической проверкой, которая позволяет получателю узнавать, был ли шифротекст каким-либо образом модифицирован. Эти два процесса все чаще объединяются посредством использования алгоритмов аутентифицированного шифрования.


[Закрыть]
.

Традиционное шифрование

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

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

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

Вплоть до 1970-х годов все механизмы шифрования были симметричными. Что общего у Юлия Цезаря, Марии Стюарт и Наполеона? Все они использовали симметричное шифрование. Даже Алан Тьюринг, один из тех гениев, кого в первую очередь ассоциируют с важной ролью криптографии во Второй мировой войне, мог бы посчитать идею асимметричного шифрования причудливой и нереалистичной[81]81
  Мой коллега-криптограф Стивен Гэлбрейт совершенно не согласен. Он утверждает, что Тьюринг был достаточно умен и что в случае, если бы ему предложили идею об асимметричном шифровании, он бы, скорее всего, ответил: «Да, конечно!»


[Закрыть]
.

В наши дни симметричное шифрование по-прежнему обладает наибольшей популярностью. Оно применяется для кодирования всех данных на вашем ноутбуке и при использовании Bluetooth. Оно присутствует во всех повседневных примерах, рассмотренных ранее: Wi-Fi, мобильных телефонах, банковском деле, интернет-торговле и т. д. На самом деле для обеспечения конфиденциальности любых данных, будь то документы, электронные таблицы, веб-формы, электронные письма, голосовой трафик и т. п., неизменно используется симметричное шифрование. Большинство процессов шифрования симметричны. Этот подход так и оставался бы безальтернативным, если бы не одна небольшая проблема, о которой речь пойдет чуть ниже.

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

Алгоритм шифрования, известный как шифр Виженера, был изобретен в середине шестнадцатого века, но применялся еще во время Гражданской войны в США. В конечном счете он оказался неустойчивым к методикам статистического анализа, разработанным во второй половине девятнадцатого века[82]82
  Названный в честь Блеза де Виженера, этот алгоритм шифрования был изобретен Джованни Баттистой Белласо в 1553 году. В то время шифр Виженера считался «невзламываемым», но расшифровать его относительно легко, если установить длину ключа – это можно сделать с помощью статистического анализа шифротекста. Хорошее объяснение как самого алгоритма, так и способа его взлома можно найти в книге Саймона Сингха The Code Book (Fourth Estate, 1999).


[Закрыть]
.

В электромеханических машинах Энигма были реализованы симметричные алгоритмы шифрования, основанные на электрических контактах, соединенных с последовательностью роторов. Они использовались почти всю первую половину двадцатого века, хотя пик их известности пришелся на Вторую мировую войну[83]83
  Подробней об истории и взломе машин Энигма можно почитать, к примеру, в книге Хью Себага-Монтефиоре Enigma: The Battle for the Code (Weidenfeld & Nicolson, 2004).


[Закрыть]
. Эффективность использования машин Энигма в качестве механизмов симметричного шифрования свела на нет революция в области телекоммуникаций, последовавшая за изобретением цифровых компьютеров.

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

В 1977 году правительство США опубликовало симметричный алгоритм шифрования под названием Data Encryption Standard (стандарт шифрования данных), более известный пользователям как DES[84]84
  «Data Encryption Standard (DES)», Федеральные стандарты обработки информации (англ. Federal Information Processing Standards или FIPS), выпуск 46, январь 1977 года. Впоследствии этот стандарт был несколько раз пересмотрен и в итоге аннулирован в 2005 году. Последняя обновленная версия, выпуск 46–3, доступна в архиве по адресу: https://csrc.nist.gov/csrc/media/publications/fips/46/3/archive/1999–10-25/documents/fips46–3.pdf.


[Закрыть]
. Это был воистину поворотный момент в истории криптографии, ознаменовавший ее превращение из совершенно секретного занятия в предмет всеобщего обозрения. Стандарт – то, что было проанализировано специалистами и одобрено для широкого использования. Создание стандарта шифрования было беспрецедентным и, естественно, способствовало применению DES в коммерческих организациях США, а впоследствии и многих других стран. Это был симметричный алгоритм шифрования, с которым могли взаимодействовать рядовые граждане в повседневной жизни (иногда сами того не осознавая).

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

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

Сделано в Бельгии

В современном симметричном шифровании применяется целый ряд разных алгоритмов. Банковские сети по-прежнему сильно зависят от DES, но ввиду того, что однократное применение DES давно уже не считается достаточно безопасным, данные обычно шифруются три раза с помощью расширенной версии этого алгоритма – Triple DES[85]85
  Triple DES фактически использует алгоритм DES три раза: сначала данные шифруются одним ключом, затем расшифровываются вторым, после чего результат снова шифруется третьим ключом (расшифровка в Triple DES повторяет этот процесс в обратном порядке). Изначально Triple DES был исправлением для DES, сделанным «на скорую руку», но он по-прежнему используется во многих приложениях, в частности в финансовом секторе. Подробности и рекомендации о применении Triple DES можно найти в документе «Recommendation for the Triple Data Encryption Standard (TDEA) Block Cipher», Илэйн Баркер и Ники Моуха, Национальный институт стандартов и технологий, NIST Special Publication 800–67, rev. 2, ноябрь 2017 года, https://doi.org/10.6028/NIST.SP.800–67r2.


[Закрыть]
. Однако в приложениях, требующих симметричного шифрования, все чаще используется блочный шифр AES (Advanced Encryption Standard – улучшенный стандарт шифрования)[86]86
  «Specification for the Advanced Encryption Standard (AES)», Федеральные стандарты обработки информации, выпуск 197, 26 ноября 2001 года, https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.197.pdf.


[Закрыть]
.


Страницы книги >> Предыдущая | 1 2 3 4 5 6 | Следующая
  • 0 Оценок: 0

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации