Digital Security and Privacy for Human Rights Defenders

2.4 Шифрование

Общие замечания
I.Шифрование – процедура, которая делает вашу информацию недоступной для всех, кроме некоторых "избранных". Можно зашифровать файл, электронное письмо и даже весь жесткий диск.
II.Для зашифрованного общения используется алгоритм с открыты ключом. Он подразумевает существование пары "открытый ключ – закрытый ключ". Открытый ключ вы распространяете среди друзей и коллег. Если кто-нибудь из них хочет написать вам зашифрованное письмо, он пользуется вашим открытым ключом.
III.Безопасность этой системы зависит от уровня доверия к открытому ключу, наличия антивирусной и антишпионской программной защиты и адекватного обстоятельствам пароля, который защищает ваш закрытый ключ.
IV.От измененений в письмах e-mail можно застраховаться, используя цифровую подпись.
V.Уровень защиты, предлагаемый современными шифровальными программами, настолько высок, что в некоторых странах мира такие программы (и даже обучение работе с ними) запрещены.

История

Шифрование объединяет усилия лингвистов и математиков для защиты информации. Данные шифруются так, что прочесть их может лишь адресат. История шифрования уходит корнями в глубокую древность и содержит немало колоритных моментов. Примерно в пятом веке до нашей эры спартанцы придумали самый древний из известных нам способов шифрования. Они брали две одинаковые по форме и размеру палки ("скиталы") и пергаментную ленту. Ленту наматывали на одну из палок и писали сообщение поперек витков. Затем ленту снимали и передавали адресату, который имел точно такую же палку. Даже если враги перехватывали гонца, они не могли ничего разобрать на длинной ленте. Другим известным шифровальщиком был римский полководец Юлий Цезарь. Его метод состоял в смещении алфавита на три позиции в латинском алфавите (в русском языке это выглядело бы как использование "г" вместо "а", "д" вместо "б" и т.д.). Метод применяется и поныне, он называется "шифр Цезаря". А вот "скиталы" ушли в прошлое: развитие математики и появление компьютеров сделали такие архаичные методы защиты информации бессмысленными. Существует целая отрасль науки – лингвистическая криптология (напр. иероглифы). Есть метод, при котором прячется на содержимое, а само сообщение: он называется стеганографией.

Шифр Цезаря – метод подстановки: буква заменяется на другую букву алфавита.

Вскрытие шифров имеет свое научное название: криптоанализ. Задача криптоаналитика – найти ошибку или уязвимость в методе шифрования. Одна из наиболее впечатляющих побед криптоаналитиков XX века – вскрытие польскими и британскими специалистами нацистского военного кода "Enigma". Уинстон Черчилль считал это поворотным пунктом всей Второй мировой войны: шифры "Enigma" использовались нацистами для координации действий подводных лодок, наводивших ужас на морские конвои союзников.

ceasar cipher

Не стоит, однако, переоценивать способность шифрования защитить данные. Уязвимость крипто – обычно результат ошибки человека или способов применения крипто. Шифрование нередко становится объектом ограничений со стороны законодателей. Гражданские организации в США уже давно ведут борьбу за то, чтобы шифрование было открыто для всех. Правительства многих стран, которые считают за благо контролировать информационные потоки в Интернете, запрещают гражданским лицам использовать шифры (а то и налагают на крипто полный запрет).

Шифруем информацию

Криптология учит нас шифровать (и, наоборот, расшифровывать) информацию. Сложный математический метод применяется к массиву данных, и вот уже никто не в состоянии вернуть им первоначальный вид, кроме единственного человека: того, кто владеет ключом.

Шифрование жесткого диска

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

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

Если компьютер выключен, а злоумышленник пытается обойти защиту BIOS (мы ранее говорили о том, как ее можно установить), просто вынув диск из компьютера, вашей информации ничто не угрожает: ведь она зашифрована.1

Картинка слева: "зашифрованный раздел". Картинка справа: "полностью зашифрованный диск".

harddisk partition encryption

Можно зашифровать и раздел на диске. Кстати, а что такое "раздел"? Это способ виртуально разделить один жесткий диск на две части (или больше). Когда я говорю "виртуально", то имею ввиду, что система будет воспринимать ваш диск как два разных, хотя физически по-прежнему останется один диск. Например, если у вашего компьютера есть диск C: с 5 Гб свободного пространства, можно выделить на нем раздел D: объемом 1 Гб. Этот раздел можно защифровать и хранить на нем документы. Основной раздел C: останется открытым. Там можно держать программы и файлы, которые не нуждаются в особой защите. В итоге получается стабильная и защищенная компьютерная система.2

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

Можно зашифровать "флэшку" или другой съемный носитель данных. Это очень полезно, если вы часто путешествуете и держите важные данные на карточке памяти. Некоторые программы (TrueCrypt, CompuSec) могут шифровать "флэшки" так, что расшифровать их позднее можно и без установки самой программы на компьютере, где вы пользуетесь "флэшкой".

_______________________________________________________________________________________________

(1) Весь жесткий диск можно зашифровать, например, с помощью программы CompuSec (http://www.ce-infosys.com) – она также есть на диске "НПО в коробке: безопасность" (NGO in a Box – Security Edition).

(2) Зашифрованный раздел на жестком диске можно создать, например, с помощью программы TrueCrypt (http://www.trucerypt.org). Ее можно найти на компакт-диске "НПО в коробке: безопасность" (NGO in a Box – Security Edition CD).

Шифрование с открытым ключом

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

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

Отправьте всем, с кем вы хотите вести защищенную переписку, свой открытый ключ. Его можно также загрузить на специальный сервер открытых ключей в Интернете. Закрытый ключ лучше хранить подальше от чужих глаз (может быть, на дискете). Он защищен паролем, который известен только вам. Никому не передавайте свой закрытый ключ. Если у вас есть подозрение, что пароль к закрытому ключу скомпрометирован (например, украден), вы можете аннулировать ключ и создать новую пару ключей.

Как зашифровать и расшифровать сообщение(3)

Алгоритм с открытым ключом означает, что для написания вам сообщения отправитель может пользоваться вашим открытым ключом. Поэтому открытый ключ можно передавать друзьям и знакомым и размещать на сервере в Интернете.

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

public key encryption
Первая картинка: "Шаг 1. Передайте свой открытый ключ другу".
Вторая картинка: "Шаг 2. Друг шифрует текст своего письма с помощью вашего открытого ключа".
Третья картинка: "Шаг 3. Друг посылает вам шифровку".
Четвертая картинка: "Шаг 4. Вы расшифровываете письмо с помощью своего закрытого ключа (защищенного паролем)".

Обратите внимание: когда мы говорим "письмо", то имеем ввиду оригинальное сообщение, а когда "шифровка" – зашифрованное.

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

________________________________________________________________________________________________

(3) Чтобы на практике оценить возможность алгоритма с открытым ключом, воспользуйтесь пакетом GPG4Win (http://www.gpg4win.org) или связкой программ GnuPG и GPGshell с компакт-диска "НПО в коробке: безопасность" (NGO in a Box – Security Edition). Попробуйте с их помощью воспроизвести примеры из этой главы.

Надежность ключа

Надежность шифрования зависит от:

длины вашей пары ключей (обычно 2048 бит),
возможности подтвердить аутентичность ключа отправителя,
защиты пароля, который вы придумали для своего закрытого ключа.

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

Каждая пара ключей имеет пять характерных признаков:

Идентификатор владельца (User ID): обычно адрес электронной почты. Обратите внимание – в нем не должно быть опечаток.
Идентификатор ключа (Key ID): уникальный номер, который автоматически создается шифровальной программой.
Отпечаток ключа (Fingerprint, иногда можно встретить обозначения MD5 и SHA1, подробнее см. раздел "Шифрование в Интернете"): уникальный идентификатор, который генерируется из открытого ключа.
Дата создания пары ключей.
Дата окончания срока действия пары ключей.

GPGshell program

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

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

________________________________________________________________________________________________

(4) Ваша подпись будет добавлена к ключу. Если теперь вы отправите ключ кому-то еще, этот человек увидит вашу подпись и таким образом узнает, что вы вполне доверяете этому ключу.

(5) С размышлениями о длине ключей сегодня и в будущем можно познакомиться в статье http://www.keylength.com/en/3.

Хотите узнать больше?
Цифровая подпись

Как вашему адресату удостовериться, что полученное им письмо – именно то, которое вы ему отправляли? Это можно сделать с помощью цифровой подписи, которая также использует алгоритм с открытым ключом. Когда вы снабжаете документ своей цифровой подписью, фактически, вы прикрепляете к сообщению результат математических вычислений, основанных на объеме сообщения, дате отправки, содержании. Эта информация шифруется с помощью вашего закрытого ключа. Теперь адресат, получив письмо, может удостовериться, что оно и в самом деле отправлено нами. После расшифровки программа сравнивает служебную информацию с полученным текстом и сообщает адресату, есть ли разница. Злоумышленник не может незаметно внести в письмо изменения: программа обнаружит разницу между фактическим письмом и цифровой подписью.

digital signatures

Рис. 3: Как работает цифровая подпись

(по строкам сверху вниз)

Шаг 1. (а) Антон вычисляет дайджест из сообщения (б) Антон шифрует дайджест своим закрытым ключом (в) Антон присоединяет зашифрованный дайджест к сообщению

сообщение вычисление дайджеста шифрование зашифрованный дайджест сообщение зашифрованный дайджест

Шаг 2. Антон посылает Борису сообщение и зашифрованный дайджест.

Шаг 3. (а) Борис расшифровывает дайджест открытым ключом Антона (б) Борис вычисляет дайджест из сообщения

зашифрованный дайджест расшифровка дайджест, отправленный Антоном сообщение вычисление дайджеста дайджест, вычисленный Борисом

(с) Борис сравнивает дайджесты

дайджест, отправленный Антоном дайджест, вычисленный Борисом Если они совпадают: – Антон действительно отправил сообщение – Сообщение не было изменено по пути от Антона к Борису

Некоторые программы, работающие по алгоритму с открытым ключом (например, GnuPG), интегрируются в почтовые клиенты. Упомянутая GnuPG работает с почтовой программой Thunderbird через модуль Enigmail(6), а с MS Outlook – через модуль G Data GnuPG(7). При таком раскладе управляться с шифрованием электронных писем быстрее и удобнее.

Как только вы со своими друзьями/коллегами установили шифровальные программы, рекомендую полностью перейти на обмен защищенными сообщениями. Если сделать именно так, отдельное шифрованное письмо с важной информацией не будет вызывать подозрений.

Если суммировать все, что сказано выше, можно прийти к выводу: при наличии современных программ шифровать данные не так уж и сложно. Основные пункты:
Нужно создать пару ключей и держать закрытый ключ в тайне.
Нужно шифровать исходящие сообщения открытыми ключами адресатов.
Нужно проверять аутентичность ключа адресата, используя отпечаток.
Насколько надежно шифрование?
Шифрование создает немалую проблему: оно вызывает у пользователя ложное чувство защищенности. Думаете, если вы используете шифрование, ваши сообщения на 100% защищены? Как бы не так. Конечно, общий уровень безопасности здорово поднимется, но абсолютную гарантию дать невозможно. Уязвимое место алгоритма с открытым ключом – "человеческий фактор", то есть, ошибки, которые мы допускаем из-за беспечности или невнимательности. Приведу три способа, которые могут использовать злоумышленники против человека, вооруженного шифрованием.

Компрометация закрытого ключа. Допустим, злоумышленник неким образом получил копию вашего закрытого ключа (забрался к вам в компьютер или что-нибудь в этом роде). Что дальше? Ему нужно подобрать пароль к закрытому ключу. Можно сделать это методом перебора (используя специальную программу, которая одна за другой пробует разные словесные комбинации). А возможно, злоумышленнику удастся подсмотреть, как вы набираете пароль на клавиатуре. Еще один вариант – поставить "клавиатурного шпиона", программу, которая записывает все нажатия на клавиши и отправляет эту информацию на заранее указанный адрес в Интернете. В конце концов злоумышленник получит пароль и сумеет воспользоваться вашим закрытым ключом, не вскрывая с отверткой ваш системный блок(8).

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

Депонирование закрытого ключа. Сегодня шифрование используется в самых разных устройствах. Это создает проблему для многих правительств и спецслужб. Чтобы справиться с проблемой, они продвигают схемы депонирования ключей (key escrow), которые открывают властям доступ ко всем закрытым ключам. Например, в нынешнее время то и дело принимаются законы, по которым вы просто обязаны передать правительству свой закрытый ключ "на хранение". Кроме того, существует некоторое количество шифровальных программ с закрытым кодом, которые никогда не проходили проверку/тестирование независимыми программистами. Авторы этих утилит оставляют программные "лазейки" для спецслужб. Хотя это и запрещено во многих странах, примеры можно найти как в программном, так и в аппаратном обеспечении. Здесь помогает использование программ с открытым кодом (таких, как GnuPG): они прошли самое придирчивое тестирование специалистами и пользователями Интернета.

Подмена открытого ключа. Мы уже говорили об этом ранее: возможность проверить аутентичность ключа – краеугольный камень всей системы шифрования с открытым ключом. Ведь ключи в действительности нетрудно подделать. Небольшая небрежность – и вот уже мы пользуемся ключом Ивана Ивановича, полагая, что это именно его ключ, хотя на самом деле его владелец – совсем другой человек. Будьте аккуратны, когда получаете или импортируете чужие открыте ключи. Шаги по проверке открытого ключа приводятся выше. Может быть, процесс общения несколько замедлится, но пренебрегать этой мерой не стоит.

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

Выбирайте для работы те шифровальные программы, которые прошли независимую проверку и не имеют "лазеек" (например, PGP, GnuPG, TrueCrypt). Узнайте, разрешно ли использование шифрования местным законодательством, и если да, существуют ли ограничения на длину ключа. Выясните, требуют ли законы вашей страны раскрывать пароль по требованию властей. Может быть, существуют законодательные "зацепки", которые позволят вам не делать этого?

Злоумышленники могут использовать и другие способы против защиты-шифрования. Например, на компьютере может быть установлена "дырявая" программа, которая позволяет злоумышленнику получить пароль. С этим трудно что-либо сделать. Во всяком случае, абсолютно полагаться на шифрование не надо. Пользуйтесь им, чтобы поднять уровень информационной безопасности, но не верьте, если кто-то скажет вам, что алгоритм с открытым ключом неуязвим. Никто такой гарантии не даст – ни в реальном мире, ни в цифровом пространстве.

_______________________________________________________________________________________________

(6) См. пакет "НПО в коробке: безопасность" (NGO in a Box – Security Edition).

(7) http://www3.gdata.de/gpg/download.html

(8) В 1991 году ФБР запустила проект под названием "Волшебный фонарь" (Magic Lantern). Это технология, смысл которой (по сообщениям наблюдателей) в попытках установить "троянского коня" на компьютер "жертвы" посредством e-mail. После активации "троянский конь" начинает отслеживать нажатия на клавиши и передавать эту информацию в Бюро. Когда ФБРовцев стали спрашивать, зачем это нужно, они сослались на распространение программ, использующих алгоритм с открытым ключом. ФБР было лишено возможности читать зашифрованные таким образом сообщения, поэтому была поставлена задача добывать пароли к закрытым ключам. После того, как вопрос о законности "Волшебного фонаря" добрался до суда, проект закрыли. Но вряд ли кто-то может дать гарантию, что подобная ему инициатива не разрабатывается прямо сейчас.