Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Интернет. Ваш выход. Евгений Финкель.doc
Скачиваний:
11
Добавлен:
03.05.2019
Размер:
3.81 Mб
Скачать

Часть I. Общие вопросы криптографии

И все же, осторожный оптимизм кажется оправданным.

Фил Зиммерманн [http://www.geocities.com/Paris/Parc/9320/phil.htm] , автор

программы PGP

Почти любая лекция о криптографии для широкой публики начинается с весьма

правдоподобной истории. Мол, еще Гай Юлий Цезарь, не доверявший своим

посыльным, шифровал письма элементарной заменой A на D, B на E и так далее

по всему латинскому алфавиту. При таком кодировании комбинация XYZ была бы

записана как ABC, а слово »ключј превратилось бы в неудобоваримое »нобъј

(прямой код N3). Есть основания полагать также, что за сотни лет до

Великого Диктатора тайнописью пользовались египетские фараоны и евреи в

период вавилонского пленения. Да так ли уж важно, когда все это началось.

Люди издревле не доверяли друг другу.

Криптография. Это слово из мира шпионских страстей щекочет нервы. Рядовой

компьютерный пользователь зачастую полагает, что данная область знания

является для него недоступной. Абсолютному большинству кажется

бессмысленной сама идея »компьютерной тайнописиј. Безусловно, эта штука

может пригодиться разведслужбам, органам защиты правопорядка и военным, а

также власть предержащим с их извечными »тайнами мадридского дворај. Кому

еще? Ну, само собой, хакерам. Хотя этих скорее должна волновать не проблема

защиты сообщений от посторонних глаз, а разработка сценариев взлома такой

защиты. Да, не забыть бы упомянуть крупных бизнесменов, которым вечно

мерещится, что кто-то вынюхивает их коммерческие тайны. Вот и весь перечень

заинтересованных лиц? Нет, круг значительно шире. Практически любое

обсуждение или просто личную переписку участники могут пожелать утаить от

посторонних глаз. Кроме того, компьютерная криптография позволяет »закрыть

на ключј не только текстовое сообщение, но и произвольно взятый файл или

группу файлов любого типа.

Криптография начинается с нескольких трудно переводимых терминов (см.

табл.1).

Термин

Перевод

Описание

plaintext (cleartext)

явный (чистый) текст

открытые данные, читаемые без применения специальных средств

encryption

шифрование

метод маскировки открытых данных

ciphertext

шифрованный текст

нечитабельная тарабарщина, следствие маскировки

decryption

расшифровка

перевод вышеуказанной тарабарщины на человеческий язык

Таблица 1. Основные термины в криптографии

Запутались? Взгляните на картинку. Так проще запомнить.

Известен принцип: чем глубже спрячешь, тем дольше выкапывать. В недалеком

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

помнить о стороне, для которой предназначена информация. С развитием

программных средств эта проблема постепенно теряет актуальность. Сложность

криптографического алгоритма практически не влияет на время

»санкционированного вскрытияј данных, если обе стороны используют

программные пакеты типа PGP. Что же до подлинной безопасности при передаче

данных, то она зависит не только от »крутизныј применяемого алгоритма, но и

от элементарной способности конкретной программы надежно спрятать ключ.

Полная криптографическая система (cryptosystem) состоит из трех частей:

собственно алгоритма, всевозможных ключей, а также протоколов передачи

данных. Так называемая »конвенциональнаяј криптография подразумевает

использование одного и того же ключа и для кодирования, и для декодирования

данных. Описанный выше архаичный »метод Цезаряј - простейший образчик

»конвенциональнойј криптографии. У этого метода и ему подобных есть один

существенный недостаток: для вскрытия всех сообщений, достаточно единожды

перехватить ключ. Как это ни парадоксально, но спасением от этой напасти

может служить выставление ключа для шифрования на всеобщее обозрение

(public key ѕ общественный или открытый ключ). Таким образом, им может

воспользоваться любой человек, желающий отправить вам закодированное

сообщение. А вот открываете сообщение вы уже совершенно другим ключом

(private или secret key ѕ личный или закрытый ключ), которым ни с кем не

делитесь. Генерируются такие ключи одновременно. В дальнейшем, закрытый

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

а также для расшифровки входящей корреспонденции. Открытыми ключами

шифруется исходящая почта и проверяется подлинность цифровых подписей

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

шифрует лишь некий временный ключ (session key), который получатель затем

расшифровывает своим открытым ключом. Свой личный закрытый ключ вы

используете также и для создания цифровой подписи, подлинность которой

получатель может проверить, имея на руках копию вашего общественного

открытого ключа. Этот метод был детально разработан британской разведкой в

начале 70-х годов.

Программа PGP использует гибридную криптографическую систему. Кодирование и

декодирование происходят в несколько этапов (см. табл.2).

Кодирование

1.

2. сжатие открытых данных (plaintext), предназначенных к пересылке (что

повышает скорость передачи и снижает вероятность использования взломанных

фрагментов текста для декодирования всего пакета), зашифрованные данные

невозможно подвергнуть дополнительному сжатию,

3.

4. создание ключа сессии (session key) - секретного одноразового ключа

(secret key) (ключ генерируется программой как производная случайных

перемещений мыши и данных, набранных на клавиатуре),

5.

6. шифрование данных с помощью секретного ключа сессии (session key),

7.

8. шифрование самого ключа сессии (session key) посредством общественного

ключа (public key),

9.

10. передача зашифрованного текста (ciphertext) и зашифрованного ключа

сессии (session key) получателю

Декодирование

1.

2. получатель использует свой собственный частный ключ (private key) для

декодирования использованного отправителем ключа сессии (session key),

3.

4. зашифрованный текст (ciphertext) вскрывается ключом сессии (session

key),

5.

6. распаковка данных, сжатых при отправлении (plaintext)

Таблица 2. Основные этапы кодирования и декодирования в PGP

Снова запутались? Ничего страшного. Во-первых, потому что, если уже только

одно описание основных этапов шифрования данных заставляет подолгу

вглядываться в текст, то подсознательно пользователь описываемого

криптографического пакета начинает доверять разработчику. А во-вторых,

совершенно необязательно запоминать все этапы кодирования-декодирования.

Поехали дальше.

Применяемые в криптографии ключи можно попытаться классифицировать. Однако

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

это большое или очень большое число, измеряемое в битах (bit) или, иначе,

разрядах. Чем больше ключ, тем в большей безопасности находятся

зашифрованные данные (ciphertext). Хотя, конечно, очень многое зависит и от

применяемого алгоритма. Помните также о том, что гипотетическая мощь

секретного личного ключа (secret key) и ключа общественного (public key)

различна. Скажем, личный 80-битный ключ эквивалентен по силе 1024-битному

общественному ключу, а секретный ключ 128 бит соответствует общественному

размером в 3000 бит. При выборе размера ключа рекомендуется прежде всего

оценивать время, в течение которого информация должна быть надежно

защищена. Если вы, скажем, запираете дверь на ночь, не стоит навешивать сто

замков, есть шанс провозиться до утра. Будьте благоразумны и

прислушивайтесь к советам специалистов. Конечно, с развитием компьютерной

техники и передовой хакерской мысли сколь угодно хитрые криптографические

алгоритмы »ветшаютј. Но на сегодняшний день еще никому не удалось

»победитьј секретный личный ключ размером свыше 56 бит. Завтра это уже

может показаться смешным, ничто не стоит на месте (а пока народ собирается

в команды для взлома 64-битного ключа RC5). Программа PGP хранит

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

жестком диске вашего компьютера, рекомендуется сохранить их также и на

дискете. Файлы эти именуют »брелкамиј (keyrings). Не теряйте их. Особенно

бережно относитесь к »брелкуј с личными ключами.

При создании личного ключа принято не доверять паролю из одного слова,

обычно прибегают к помощи так называемой »ключевой фразыј (passphrase).

Ключевая фраза обладает сразу двумя преимуществами перед обычным паролем.

Ее и легче запомнить, и сложнее угадать (разумеется, под словом »угадатьј

скрыт сложнейший алгоритм нелегального взлома). Как так? Очень просто.

Скажите, какой пароль вы бы предпочли держать в уме: вариант 1 -

»AU63Db35ј, вариант 2 - »храните деньги в сберегательной кассеј (пусть даже

и записанный на транслите)? Практика показывает - 90% предпочитают второй

вариант просто потому, что забыть подобный пароль невозможно при всем

желании. А теперь представьте себе, сколько жизней уйдет у какого-нибудь

прославленного заграничного хакера на вскрытие данного пароля второго типа.

Хотя и к выбору ключевой фразы в последнее время приходится подходить

крайне аккуратно, - библиотека наиболее популярных цитат на всех языках уже

создана и постоянно пополняется. Поэтому желательно, для пущей

безопасности, в качестве пароля выбирать что-то более оригинальное, нежели

фразочки типа »у вас продается славянский шкаф?ј или образчик, указанный

выше. Впрочем, можно обойтись и обычным паролем. Старайтесь только не

использовать слова, которые легко найти в словаре, имена, а также памятные

даты.

Немаловажную роль в криптографии играют и цифровые подписи (digital

signatures), о которых уже упоминалось выше. Некоторые даже считают, что

основное внимание при разработке криптографических алгоритмов нужно уделять

именно невозможности подделать личную цифровую подпись, а не сверхсложным

закрытым личным ключам. Апологеты такой концепции в чем-то правы. Ведь, так

ли уж важно, что кому-то стало известно, например, о моем очередном

банковском вкладе, значительно важнее, чтобы вклад был принят настоящим

работником банка, а не кем-то, сумевшим подделать его цифровую подпись.

Основная задача цифровой подписи - подтверждение подлинности происхождения

информации. Кроме того, сохранность цифровой подписи означает, что

информация дошла до получателя в неповрежденном виде. Тут у читателя может

и должен возникнуть справедливый вопрос: »А что, так ли уж сложно подделать

цифровую подпись, имея на руках ее образчик?ј Да уж, непросто. Ведь, само

собой, цифровая подпись не передается в виде открытых данных. Для ее

кодирования используются так называемые »хэш-функцииј (hash functions; hash

(англ.) - мешанина, фарш). У англоязычных пользователей слово »хэшј или

»хашј вызывает особое доверие, поскольку »хашј, записанное как hush,

соответствует русскому »тсс!ј, а двойное »хаш-хашј (hush-hush) обозначает

информацию, закрытую для посторонних ушей и глаз. »Хэш-функцияј

видоизменяет открытые данные любого объема до компактного »дайджестај

фиксированной длины. Цифровая подпись является производной »дайджестај и

личного ключа, чем гарантируется ее абсолютная уникальность. Не последнюю

роль в подтверждении подлинности личности отправителя играет и традиционное

цифровое удостоверение личности (digital certificate), включающее в себя

имя, прозвище, адрес электронной почты и некоторые другие персональные

данные. Ради пущей безопасности удостоверение отправителя должно быть

подписано получателем (такая вот бюрократия).

Практикуется также и подтверждение подлинности чужих открытых ключей.

Скажем, вы случайно столкнулись с N на выставке достижений народного

хозяйства, и N передал вам лично свой ключ. Он может попросить вас

опубликовать на сервере свой открытый ключ за вашей подписью, для того,

чтобы знающие вас люди отнеслись с большим доверием и к данному ключу.

Доверие к ключу и доверие к его владельцу отнюдь не одно и то же. Когда вы

подписываете чужой открытый ключ, вы всего лишь ручаетесь за подлинность

отпечатка, и вас не должны мучить сомнения, является ли владелец

добропорядочным гражданином. Вы не отвечаете за правдоподобность или, если

угодно, презентабельность чужой информации, вы лишь гарантируете ее

аутентичность, то есть принадлежность перу данного автора.

Да, непросто жить в виртуальном мире тотального недоверия. Поэтому, если

вам приходится трудиться в неком коллективе в обстановке повышенной

секретности, рекомендуется выделить толкового сотрудника для обеспечения

информационной безопасности или даже создать целую службу для этой цели.

Пусть у специально обученных людей болят головы на эту тему. Да, вам

придется исполнять издаваемые ими инструкции, придерживаться вводимых ими

правил, мириться со своим скромным местом в иерархии доверия, но зато вы

будете чувствовать себя абсолютно защищенными от внешних напастей. Под

крылом настоящего профессионала всякий почувствует себя орлом. Мне знаком

один руководитель средней руки, который страшно гордится тем, »какую

пакость придумали его ребятај. Они »раскололиј на три части общественный

ключ компании и раздали его части работникам компании в зависимости от их

иерархического положения в компании. Первую часть получили только директор,

его зам и главный бухгалтер, второй осколок был вручен начальникам отделов,

третья часть досталась всем сотрудникам, допущенным к закрытой информации.

В большинстве случаев для выпуска исходящей корреспонденции достаточно

одной трети ключа, но если перехват может нанести сколько-нибудь

существенный ущерб компании, требуется сложить какие-либо две части вместе.

Информация, которой был присвоен гриф »секретној, могла выйти только, если

были сложены вместе »обломкиј первого и второго уровня. Метод, безусловно,

стандартный. Но поскольку внедрен он был специальной службой, доверия к

нему прибавилось.

Итак, главный предварительный (утешительный) вывод: желаете сохранить

что-либо в тайне, установите на все компьютеры в офисе и по домам у

сотрудников криптографическую программу PGP. Разработку точного сценария

пользования лучше всего доверить профессионалам, хотя не мешало бы и самому

в общих чертах разобраться с программой. И, ради всего святого, не пишите

ключевые фразы на цветных бумажках, во множестве разбросанных по вашему

рабочему столу. Не то - все пропало.

Жизнеутверждающая цитата

В это самое время поручик Лукаш изучал в своей комнате только что

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

одновременно тайный шифрованный приказ о направлении, по которому маршевый

батальон должен был двигаться к границе Галиции. Расшифровывая эти цифры,

поручик Лукаш вздохнул: »Der Teufel soll das buserierenј.*

Ярослав Гашек, »Похождения бравого солдата Швейкај

*очень близко к русскому выражению »Черт ногу сломитј, хотя по-немецки все

это звучит куда грубее.

Несколько статей по криптографии для продвинутых пользователей

Клод Шеннон. Теория связи в секретных системах.

Хорст Файстель. Криптография и компьютерная безопасность.

Андрей Винокуров. Как устроен блочный шифр?