Криптография. Как защитить свои данные в цифровом пространстве
Шрифт:
Конверт нужен для того, чтобы только энергетической компании были известны подробности отправленного вам счета. Замок на двери нужен, чтобы только вы могли войти в свой дом. Поведение человека за прилавком аптеки характерно только для настоящего фармацевта. Детали приглушенного разговора с фармацевтом были слышны только вам двоим. Физические свойства денег имеют только настоящие купюры и монеты.
Только, только… суть любого механизма безопасности в том, чтобы те или иные вещи могли происходить только в определенных обстоятельствах. Механизм безопасности можно использовать, чтобы отмежевать себя от других или выделить
В материальном мире возможности безопасности обеспечиваются разными средствами. Самое очевидное – что-то, чем вы располагаете: ключ, бейдж, билет, рекомендательное письмо [48] . Или то, где вы находитесь – достаточно близко, чтобы расслышать личный разговор, или внутри концертного зала, где проходит мероприятие, на которое вы купили билет. Или что-то, что вам известно – голос друга или то, что для входа в пещеру с сокровищами нужно произнести: «Сим-сим, откройся» [49] . Или даже то, кем вы являетесь, как в случае со сканированием отпечатков пальцев или радужки глаза. И, конечно же, особая возможность может обеспечиваться сочетанием подходов. У вашего фармацевта могло быть что-то особенное (бейдж), он мог стоять в особенном месте (за прилавком аптеки), быть кем-то особенным (тем, кого вы раньше видели) или знать что-то особенное (фармакология и порядок назначения лекарств).
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!».
50
Заметьте, что в ASCII символ «9» является пятьдесят седьмым по счету, что может вызвать путаницу, так как он представлен в виде двоичного эквивалента числа 57, а не десятичного значения 9.
Полезно вспомнить и о размере данных. Поскольку они состоят из двоичных чисел, измерять их проще всего в количестве бит или байтах. Например, число 1011001100001111 имеет длину 16 бит или 2 байта. Для больших данных используются более грандиозные термины, такие как килобайты (1000 байт), мегабайты (1000 килобайт), гигабайты (1000 мегабайт) и терабайты (1000 гигабайт).
Криптографические ключи – это лишь особые элементы данных, поэтому компьютер их тоже должен представлять в виде двоичных чисел. А поскольку размер ключа – одна из важных мер безопасности, упоминания о длине ключей [51] в криптографических алгоритмах нередки. В современной криптографии ключ, как правило, имеет длину 128 бит.
51
Длину ключа иногда называют размером. Я буду считать эти термины синонимами.