Криптография. Как защитить свои данные в цифровом пространстве

Кит Мартин, 2020

Криптография – ключ к цифровой безопасности. Имея базовое представление о ней, вы сможете не только защитить свои данные от угроз, кроющихся в киберпространстве, но и лучше понять природу интернет-технологий, все глубже внедряющихся в нашу повседневную жизнь. Каковы потенциальные последствия подключения к незащищенной сети Wi-Fi? Так ли уж важно иметь разные пароли для разных учетных записей? Если вы видите, что у веб-сайта нет действительного сертификата, стоит ли продолжать с ним работу? Ответы на эти и другие вопросы вы найдете внутри. В формате PDF A4 сохранен издательский макет книги.

Оглавление

Из серии: КиберБез. Лучшие книги о безопасности в сети

* * *

Приведённый ознакомительный фрагмент книги Криптография. Как защитить свои данные в цифровом пространстве предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

2. Ключи и алгоритмы

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

Важнейшая роль ключей

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

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

Только, только… суть любого механизма безопасности в том, чтобы те или иные вещи могли происходить только в определенных обстоятельствах. Механизм безопасности можно использовать, чтобы отмежевать себя от других или выделить один из множества элементов. Он дает нам особую возможность. Ключ и замок дают возможность открыть дверь и войти в свой дом. Разговор шепотом дает возможность исключить из него тех, кто находится за пределами слышимости. Защитные элементы купюры позволяют использовать ее в качестве законного платежного средства.

В материальном мире возможности безопасности обеспечиваются разными средствами. Самое очевидное — что-то, чем вы располагаете: ключ, бейдж, билет, рекомендательное письмо[48]. Или то, где вы находитесь — достаточно близко, чтобы расслышать личный разговор, или внутри концертного зала, где проходит мероприятие, на которое вы купили билет. Или что-то, что вам известно — голос друга или то, что для входа в пещеру с сокровищами нужно произнести: «Сим-сим, откройся»[49]. Или даже то, кем вы являетесь, как в случае со сканированием отпечатков пальцев или радужки глаза. И, конечно же, особая возможность может обеспечиваться сочетанием подходов. У вашего фармацевта могло быть что-то особенное (бейдж), он мог стоять в особенном месте (за прилавком аптеки), быть кем-то особенным (тем, кого вы раньше видели) или знать что-то особенное (фармакология и порядок назначения лекарств).

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

Должен признаться, что выше я выразился не совсем точно. В большинстве случаев взаимодействуют в киберпространстве компьютеры, а не люди; больше того, иногда люди вовсе не принимают активного участия в работе этих компьютеров. Ранее я говорил, что «знание» ключа позволяет отличить одного «человека» от другого; но было бы правильней сказать, что только сущность (человек или компьютер) с доступом к ключу может выполнять определенные действия в киберпространстве.

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

Биты и байты

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

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

Дальше — сложнее. Компьютер работает не в привычной нам десятичной системе счисления, а в двоичной, состоящей только из нолей и единиц. Звучит страшнее, чем на самом деле: это всего лишь еще один способ записи чисел, у каждого десятичного числа есть двоичное представление и наоборот. Например, десятичное число 17 записывается как 10001 («один ноль ноль ноль один», а не «десять тысяч один») в двоичной системе, а двоичное число 1101 — как 13 в десятичной. Каждую цифру двоичного кода называют битом, и эти биты формируют неделимые единицы числовой информации. Четыре бита составляют ниббл (от англ. nibble — покусывать), а два ниббла — байт (от англ. byte — кусать; и не говорите больше, что у компьютерщиков нет чувства юмора!).

Как правило, информация, которую мы хотим обработать на компьютере, состоит не только из чисел. Допустим, вы набрали на клавиатуре символы «K9!». Прежде чем сделать что-то с этими данными, компьютер должен представить их в двоичном виде. Клавиатурные символы преобразуются в биты по системе, известной как ASCII (American Standard Code for Information Interchange), которая описывает правила сопоставления кнопок клавиатуры и битов. В нашем примере символу «K» по ASCII соответствует байт 01001011, символу «9» — 00111001[50], а для «!» это будет 00100001. Таким образом компьютер, получивший код ASCII 01001011 00111001 00100001, знает, что для представления пользователю его следует перевести обратно в строку «K9!».

Полезно вспомнить и о размере данных. Поскольку они состоят из двоичных чисел, измерять их проще всего в количестве бит или байтах. Например, число 1011001100001111 имеет длину 16 бит или 2 байта. Для больших данных используются более грандиозные термины, такие как килобайты (1000 байт), мегабайты (1000 килобайт), гигабайты (1000 мегабайт) и терабайты (1000 гигабайт).

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

Где мой ключ?

Если постоянно пользоваться криптографическими ключами, возникает вопрос: где они находятся?

Рассмотрим конкретный пример. Каждый раз, когда вы звоните кому-то по сотовому телефону, вы используете криптографию. Безопасность этого процесса опирается на способность сотового оператора отличить вас от остальных 5 миллиардов абонентов на планете[52]. Для этого оператор выдает вам секретный криптографический ключ — число, «известное» только ему и вам, при помощи которого вы сообщаете оператору о попытке сделать звонок. А теперь я объясню, почему это почти соответствует действительности.

Что это за особое секретное число, которое используется для звонка? Это явно не ваш телефонный номер — он не секретный. Криптографический ключ мобильного телефона вам наверняка неизвестен. И тому есть две веские причины, ни одна из которых не сводится к тому, что вам этот ключ знать нельзя.

Первая и, наверное, главная причина в том, что криптографические ключи представляют собой большие числа. Если вас попросят запомнить число от 0 до 10, вы легко с этим справитесь. Скорее всего, вы способны запомнить числа до 10 000 или даже до миллиона, так как числа такой длины часто используют в качестве PIN-кодов (хотя об этом чуть позже). Но в криптографических масштабах 1 миллион — это не большое число. Ключи не просто очень большие, их размер едва ли не за гранью нашего понимания.

В порядке упражнения попытайтесь представить себе количество звезд во вселенной, умноженное на 40 000[53]. Даже если вам удастся это вообразить, вы все равно будете оперировать значениями не того масштаба. Ключи примерно такого размера когда-то действительно использовались, но их давно уже не признают достаточно безопасными в большинстве современных сфер применения криптографии. Теперь мы пользуемся ключами в триллион раз большими. Если у вас от таких чисел начала кружиться голова, то вы уловили суть. Обычный человек не в состоянии запомнить современный криптографический ключ.

Сотового оператора не интересует, кто говорит по телефону и даже с какого аппарата прошел звонок. Оператора заботит, куда послать счет за услуги. Это вторая причина, почему вам неизвестен ключ, который используется в вашем сотовом. Таким образом, оператору нужен какой-то уникальный аспект вашей мобильной учетной записи, которым может быть невообразимо большое число. Именно его вы и получаете при регистрации номера. Это очень маленькая пластиковая карта с крошечным встроенным микрочипом, так называемым модулем идентификации абонента (англ. subscriber identity module — SIM), которая вставляется в ваш телефон. Основное назначение SIM-карты состоит в хранении криптографического ключа. Этот ключ позволяет отличить вашу учетную запись от любой другой на планете, поэтому, если вы одолжите кому-то свой телефон или вставите свою SIM-карту в другое устройство, счет придет именно вам.

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

Когда секретная информация не является ключом

Итак, криптографические ключи — это секретная информация, знание которой можно использовать для идентификации той или иной сущности в киберпространстве. Но что насчет таких секретных данных, как пароли и PIN-коды[54]? Можно ли их считать криптографическими ключами?

Не совсем, хотя иногда они таковыми оказываются. В каком-то смысле. Запутались? Неудивительно, различие между этими понятиями и правда тонкое.

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

Пароли и PIN-коды в основном применяются для идентификации. Например, когда вы входите в систему, компьютер запрашивает пароль и проверяет его корректность. Если проверка прошла успешно, компьютер выводит на экран приветствие. С точки зрения криптографии в этом нет ничего особенного, так как в основе этого процесса нет шифрования[55]: вы всего лишь предоставляете пароль, чтобы компьютер мог его проверить.

Именно в этом и состоит ключевая проблема входа в систему. Пароль — это секретные данные, которые вам полагается оберегать, но, входя в систему, вы их «выдаете». В каком-то смысле вы теряете контроль, поскольку вам приходится доверять устройству, которому вы передаете их, а заодно всем сетям и устройствам, которым эти данные переправляются далее. Вы вынуждены верить, что все они не допустят никаких злоупотреблений.

Ввод пароля в домашний компьютер вряд ли покажется вам чем-то безрассудным, и вы, конечно же, правы. Но иногда мы взаимодействуем с удаленными компьютерами, например когда вводим пароль для доступа к каким-то ресурсам на веб-странице. В этом случае пароль передается незащищенным по компьютерным сетям, прежде чем дойдет до сервера, на котором физически находится сайт (некоторые хорошо спроектированные веб-сайты используют для защиты паролей криптографию, но не все). Любой, у кого есть доступ к промежуточной сети, сможет прочитать ваш пароль и позже использовать его, чтобы выдать себя за вас. Точно так же, снимая деньги в банкомате, мы «выдаем» свой PIN-код, и важные секретные данные передаются другому устройству[56].

Криптографические ключи ни в коем случае нельзя так раскрывать. Их используют для демонстрации того, что они вам известны, но сами ключи при этом не раскрываются. Таким образом ключ остается секретным на протяжении всего процесса — как до, так и после использования. Этот уровень секретности имеет куда более строгие требования по сравнению с теми, которые мы предъявляем к паролям и PIN-кодам.

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

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

Конец ознакомительного фрагмента.

Оглавление

Из серии: КиберБез. Лучшие книги о безопасности в сети

* * *

Приведённый ознакомительный фрагмент книги Криптография. Как защитить свои данные в цифровом пространстве предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Примечания

48

Следует признать, что рекомендательные письма в наши дни являются редкостью. Но мы все еще активно используем письменные рекомендации при собеседовании. Наша безопасность в материальном мире во многом основана на мнении других доверенных источников. Например, друг может представить нам человека, с которым мы раньше не были знакомы; в каком-то смысле это тоже устное «рекомендательное письмо».

49

Фраза «Сезам откройся» взята из сказки об «Али-Бабе и сорока разбойниках», входящей в Книгу тысячи и одной ночи — собрание народных сказок, которое, возможно, уходит корнями в восьмой век.

50

Заметьте, что в ASCII символ «9» является пятьдесят седьмым по счету, что может вызвать путаницу, так как он представлен в виде двоичного эквивалента числа 57, а не десятичного значения 9.

51

Длину ключа иногда называют размером. Я буду считать эти термины синонимами.

52

Количество абонентов мобильной связи в мире насчитывает более 5 миллиардов: «The Mobile Economy 2019», Ассоциация GSM, 2019 год, https://www.gsma.com/mobileeconomy.

53

Этот пример основан на предположении о том, что в нашей вселенной существует около 1022 звезд. Подсчет звезд — это не точная наука, так как мы можем только догадываться об их количестве по нашим наблюдениям с помощью существующих телескопов. По последним оценкам этот показатель приближается к 1024, и многие специалисты подозревают, что он тоже может быть заниженным. Например, см. статью Элизабет Хауэлл, «How Many Stars Are in the Universe?» от 18 мая 2017 года в разделе Science & Astronomy на сайте https://www.space.com/26078-how-many-stars-are-there.html. Подсчет криптографических ключей является куда более точным процессом!

54

Термин персональный идентификационный номер (англ. personal identification number или PIN) обычно используют для обозначения коротких паролей, состоящих из цифр. Он уходит своими корнями в конец 1960-х, когда появились первые банкоматы. В нашем контексте PIN-коды и пароли представляют собой одно и то же — строку секретных символов.

55

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

56

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

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я