Математики, шпионы и хакеры. Кодирование и криптография - Гомес Жуан (бесплатные полные книги TXT) 📗
Описанные выше коды обеспечивают безопасную и эффективную связь между компьютерами, программами и пользователями. Но этот онлайновый язык основан на общей теории информации, которая лежит в основе процесса коммуникации.
Первый шаг в этой теории является настолько очевидным, что его легко упустить из вида: как измерить информацию.
Такая простая фраза, как «Приложение размером 2 КБ», основана на блестящих идеях, которые впервые появились в статье «Математическая теория связи», опубликованной в двух частях в 1948 г. американским инженером Клодом Шенноном.
В этой основополагающей статье Шеннон предложил использовать слово «бит» для обозначения наименьшей единицы информации. Общая проблема, которую Шеннон рассматривал в своей работе, знакома и современным читателям. Как лучше всего зашифровать сообщение, чтобы оно не повредилось во время передачи? Шеннон пришел к выводу, что невозможно найти шифр, который предотвратит потерю информации. Иными словами, при передаче информации неизбежно возникают ошибки. Однако этот вывод не помешал поиску стандартов кодификации, которые, не имея возможности исключить ошибки, могли бы по крайней мере обеспечить высокий уровень надежности.
При цифровой передаче информации сообщение, сгенерированное отправителем (это может быть как человек, так и компьютер или другое устройство), кодируется в двоичной системе и поступает в канал связи, состоящий из компьютеров отправителя и получателя, плюс самой линии связи, которая может быть или физическим кабелем, или беспроводной (радиоволны, инфракрасное излучение и т. д.). Движение по каналу связи является особенно уязвимым процессом, потому что сообщение подвергается всевозможным воздействиям, в том числе взаимодействиям с другими сигналами, неблагоприятным температурам физической среды и затуханиям (ослаблению) сигнала при прохождении через среду. Эти источники помех называются шумами.
Одним из таких методов является избыточность информации. Он состоит в повторении при определенных критериях некоторых характеристик сообщения. Рассмотрим пример, который поможет пояснить процесс. Возьмем текст, в котором каждое слово состоит из четырех битов, общее количество различных слов — 16 (т. к. 24 = 16), каждое слово имеет вид а1а2а3а4. Перед отправкой сообщения мы добавим к слову еще три бита c1c2c3так что закодированное сообщение при движении по каналу связи будет выглядеть как а1а2а3а4c1c2c3. Дополнительные символы c1c2c3 обеспечивают надежность сообщения. Они называются контрольными битами, или битами четности, и строятся следующим образом.
Добавим следующие биты четности к сообщению 0111.
Так как сумма 0 + 1 + 1 = 2 четная, с1 = 0.
Так как сумма 0 + 1 + 1 = 2 четная, с2 = 0.
Так как сумма 1 + 1 + 1 = 3 нечетная, с3 = 1.
Следовательно, сообщение 0111 будет передано в виде 0111001. Для «слов» мы, таким образом, получим следующую таблицу:
* * *
ГЕНИЙ БЕЗ НАГРАДЫ
Клод Элвуд Шеннон (1916–2001) был одним из величайших научных деятелей XX в. Получив образование по специальности «электротехника» в Мичиганском университете и Массачусетском технологическом институте, он работал математиком в лаборатории компании «Белл», где занимался исследованиями по криптографии и теории коммуникации. Его научный вклад настолько велик, что он считается одним из основоположников теории информации, но поскольку его работы были на стыке математики и информационных технологий, он так и не получил самой престижной среди ученых Нобелевской премии.
* * *
Допустим, что на другом конце сообщение будет получено в виде 1010110. Заметим, что такая комбинация нулей и единиц не входит в число возможных кодов и, следовательно, является ошибкой при передаче. В попытке исправить ошибку система сравнивает каждую цифру с набором цифр всех возможных кодов, чтобы найти наиболее вероятную альтернативу. Для этого система проверяет, какие из цифр представляют собой ошибку, следующим образом.
Ошибочное слово (1010110) отличается от другого слова (1000110) одной цифрой. Так как эта разница наименьшая, система предложит получателю этот второй, исправленный вариант. Аналогичный принцип использует программа контроля правописания текстового редактора. При обнаружении слова, которое не содержится в ее внутреннем словаре, программа предлагает ряд близких альтернатив.
Количество позиций, в которых соответствующие символы двух слов (понимаемых как последовательность символов) различны, называется расстоянием между двумя последовательностями. Этот метод обнаружения и исправления ошибок был предложен американцем Ричардом Хэммингом (1915–1998), современником Клода Шеннона.
В теории информации, как и в любой другой области, одно дело — обнаружить возможные ошибки, и совсем другое — исправить их. В шифровании, как в последнем примере, если имеется только один кандидат с наименьшим расстоянием, проблема достаточно проста. Пусть t — минимальное количество раз, когда единица появляется в последовательности цифр (исключая последовательность, где все нули), тогда:
Если t — нечетное, мы можем исправить (t — 1)/2 ошибок.
Если t — четное, мы можем исправить (t — 2)/2 ошибок.
Если наша цель заключается только в обнаружении ошибок, максимальным количеством ошибок, которые мы можем обнаружить, будет I — 1. В языке из 16 символов, описанном выше, t = 3, значит, наш метод способен обнаружить 3–1 = 2 ошибки и исправить — (3–1): 2 = 1 — одну ошибку.
* * *
КРИПТОГРАФИЯ ТРЕТЬЕГО ПОКОЛЕНИЯ
В 1997 г. был введен протокол для надежной передачи информации с помощью беспроводных сетей под названием WEP (сокращение от Wired Equivalent Privacy). Этот протокол включает алгоритм шифрования RC4 с двумя типами кодирования 5 и 13 ASCII-символов соответственно. Мы имеем дело, таким образом, с кодированием 40 или 104 битов или, другими словами, 10 или 26 шестнадцатеричных символов:
5 ASCII-символов = 40 битов = 10 шестнадцатеричных символов;
13 ASCII-символов — 104 битов = 26 шестнадцатеричных символов.
Провайдер подключения предоставляет коды, хотя пользователь может, в принципе, их изменить. До установления связи компьютер запрашивает ключ. В следующем диалоговом окне мы видим сообщение об ошибке при запросе WEP-ключа с указанием его длины в битах, ASCII- и шестнадцатеричных символах:
На самом деле реальные ключи длиннее. Используя ключ, выбранный пользователем, алгоритм RC4 генерирует новый с большим количеством битов, который и используется для шифрования передаваемых данных. Это — криптография с открытым ключом, и о ней будет более подробно рассказано в пятой главе. Пользователь, который желает поменять ключ, должен помнить, что ключ из десяти шестнадцатеричных символов более надежен, чем ключ из пяти букв и цифр, хотя битовый размер у них одинаковый. Однако очевидно, что слово james легче запомнить, чем его шестнадцатеричный эквивалент «6A616D6573».