Чтение онлайн

ЖАНРЫ

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

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

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

десятичное число 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!».

50

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

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

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

51

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

Где мой ключ?

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

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

52

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

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

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

В порядке упражнения попытайтесь представить себе количество звезд во вселенной, умноженное на 40 000 [53] .

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

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. Подсчет криптографических ключей является куда более точным процессом!

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

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

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

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

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

54

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

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

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

55

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

Поделиться с друзьями: