Коротко о шифровании

Коротко о шифровании

Hydra Community


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

_________________


Шифрование: три важных понятия

1) Закрытые и открытые ключи

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

2) Сертификаты безопасности

Второе очень важное понятие — сертификат безопасности. Это своего рода открытый ключ для предотвращения атак посредника.  Сайт, имеющий доступ к сертификату, может проде­монстрировать удаленным системам, что сертификат существует, и что никакая другая сис­тема (без сертификата) не пытается изменить передаваемые данные.  Веб-браузер на вашем компьютере может устанавливать зашифрованные соединения с  сайтами посредством протокола  HTTPS.  В  таких  случаях  браузер  верифицирует  сертификаты,  проверяя  открытые ключи доменных имен (например, www.google.com или www.amazon.com). Использование сертификатов — один из  способов  подтвердить  подлинность имеющегося у вас  открытого ключа пользователя или веб-сайта,  чтобы  вы могли безопасно  обмениваться с  ним  инфор­мацией.

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

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

3) Отпечатки  ключей

Ключи в  шифровальных системах с  открытым  ключом — очень большие числа,  иногда из более чем тысячи цифр.  Отпечаток ключа гораздо короче. Это число (набор чисел и букв), которое  уникально  для  того  или  иного  ключа  и  позволяет  не  анализировать  все  символы при проверке  подлинности ключа.  Предположим,  вы  с  собеседником  обменялись копиями ключей,  а  потом  решили убедиться,  что  копии  соответствуют  оригиналам.  Вам  пришлось бы потратить уйму времени,  сверяя все символы каждого ключа.  Вместо этого можно све­рить отпечатки ключей.  В современных средствах шифрования отпечатки, как правило, со­стоят  из  40  букв  и  цифр,  например:  5d44  4rt8  9167  7401  40dl  5ws4  200z  q561  23sd  yl91. И если вы аккуратно сверите отпечаток импортируемого ключа с отпечатком, который вам сообщит  настоящий  владелец,  то  можете  быть  уверены  в  подлинности  ключа  (некоторые программы предлагают более удобные способы проверки ключей).

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


Основы PGP-шифрования

PGP-шифрование (от англ. Pretty Good Privacy, вполне хорошая приватность) — это одна из первых  популярных  реализаций  шифрования  с  открытым  ключом,  созданная  программи­стом Филом Зиммерманном в  1991  году, чтобы помочь пользователям защитить свои ком­муникации. При правильном использовании PGP может защитить содержимое ваших сооб­щений и даже  файлов  от самых  серьезных  средств  злоумышленников.  Когда  Эдвард Сноуден говорил о шифровании, он подразумевал именно PGP и связанные с ней программы.


Шифрование открытым ключом
В  традиционных  шифровальных  средствах  для  шифрования  и  расшифровки  сообщения используют один  и тот же  ключ.  В  асимметричном  шифровании  (шифровании  с открытым ключом)  используют два  парных ключа:  один для  шифрования  (открытый), другой для рас­шифровки (закрытый).  В этом масса преимуществ.  В частности,  вы можете делиться откры­тым  ключом со всеми.  Пока вы имеете доступ  к своему закрытому ключу, любой  пользова­тель,  у  которого  есть  ваш  открытый  ключ,  может  безопасно  общаться  с  вами.  Подобные системы используются для  шифрования электронных писем  и файлов по стандартам  PGP, OTR (при обмене мгновенными сообщениями) и SSL/TLS (для просмотра веб-страниц).


К сожалению, PGP — не самый легкий для освоения и использования инструмент.  Стойкое шифрование,  реализованное  в  PGP  (шифрование  с  открытым  ключом), — мощное,  но  до­вольно мудреное средство защиты.  Сама программа PGP существует четверть века и явля­ется ровесником  самых первых версий Microsoft Windows.  С тех давних пор внешний вид PGP не очень изменился. Впрочем, разработано много программ, которые скрывают «древний»  дизайн PGP  и  заметно упрощают  ее  использование,  особенно  в части шифрования  и аутентификации электронной почты (основные функции PGP). Далее вы научитесь работе с этими программами.  Но предварительно посвятим несколько минут основам шифрования с открытым ключом.


Игра с двумя  ключами

озьмем обычный текст— например, «Привет, друг!».  Зашифруем его — превратим в код, который непонятен для чужих глаз  (скажем,  ad&dsDE76vx+fdgQl).  Отправим  этот код че­рез Интернет. Наше сообщение может увидеть множество людей, но кто из них поймет со­держание? В таком виде письмо дойдет до получателя. Он и только он может расшифровать и прочитать исходный текст.

Откуда  получатель  знает,  как расшифровать  сообщение,  если это  не  может  сделать  никто другой? У получателя есть дополнительная информация, недоступная для остальных. Назо­вем ее ключом для расшифровки.  Этот ключ раскодирует содержащийся в зашифрованном сообщении  текст.  Но  отправитель  должен  предварительно  сообщить  ключ  получателю. В  этом  и заключен  недостаток такой стратегии — если вы думаете,  что  вашу почту могут перехватывать,  как вы перешлете  ключ? Ведь злоумышленник перехватит и его.  Тогда нет смысла отправлять зашифрованные  сообщения.  С другой стороны,  если у вас  есть  секрет­ный  способ  передать  ключ,  почему  бы  не  использовать  этот  же  способ  для  отправки всех секретных сообщений?

Шифрование  с  открытым  ключом —  замечательное  решение  проблемы.  Каждый  человек, участвующий  в  переписке,  может  создать  два  ключа.  Один  ключ  {закрытый)  нужно  дер­жать в тайне и никогда не передавать другим людям.  Другой ключ {открытый) можно пе­редать всем, кто желает переписываться. Неважно, кто получит доступ к открытому ключу. Вы  можете  опубликовать  его  во  Всемирной  паутине,  откуда  его  будут  скачивать  все желающие.

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

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


Электронная  подпись

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

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

Зачем? Кажется, нет никакой пользы в защите секретного сообщения при помощи закрыто­го ключа. Всякий, у кого есть ваш открытый ключ (а он доступен любому в этом мире), мо­жет снять такую защиту.  Предположим, вы написали сообщение «Привет Андрею!»  и при­менили к этому тексту свой закрытый ключ.  Кто угодно может потом прочитать это  сооб­щение,  использовав  парный  открытый  ключ,  но  лишь  один  человек  (и  это  главное!)  мог написать сообщение, — владелец упомянутого закрытого ключа. Конечно, если он аккурат­но хранит свой закрытый ключ. Так вы можете подтвердить свое авторство. То же самое мы делаем, когда подписываем бумаги в реальном мире.

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

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

Вы, вероятно, уже догадались, что пользы от шифрования с открытым ключом тем больше, чем больше людей знает этот ваш ключ.  Очевидно также,  что надо обеспечить безопасное хранение своего закрытого ключа, — ведь если кто-либо получит копию вашего закрытого ключа,  он сможет выдавать себя за вас и подписывать сообщения от вашего имени.  В про­грамме PGP имеется функция отзыва закрытого ключа — она позволяет предупредить лю­дей о том, что ключу больше нельзя доверять, но это не лучшее решение.  Главное правило для шифрования с открытым ключом: храните закрытый ключ в надежном месте.

Принцип работы PGP

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

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

Сеть доверия

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

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

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

Атака посредника
Представьте,  что вы общаетесь с вашим другом  (допустим, Дмитрием) с помощью зашиф­рованных  мгновенных  сообщений.  Чтобы  убедиться,  что  это  действительно  Дмитрий,  вы просите  собеседника  назвать  город,  где  вы  впервые  встретились.  «Магадан», —  отвечает он.  Правильно!  Увы,  втайне  от  вас  и Дмитрия  кто-то третий  перехватывает  ваши  сообще­ния.  Ваши  послания для Дмитрия попадают к злоумышленнику,  а тот,  в свою очередь,  свя­зывается с Дмитрием,  и наоборот.  Вы думаете, что наладили безопасный канал связи, а на самом  деле  общаетесь  через  шпиона!  Такая  атака  называется  атакой  посредника.  Зло­умышленник может перехватывать  информацию,  изменять и  подделывать сообщения.  По­этому программы для  коммуникаций  в  Интернете должны защищать от этого типа атак,  от злоумышленников,  которые могут контролировать какую-либо часть сетевой инфраструкту­ры между собеседниками.

Тем  не  менее,  PGP  предлагает  решение  получше —  сеть  доверия.  Если  вы  считаете,  что ключ  принадлежит  определенному человеку,  вы  можете  подписать  этот  ключ  и  загрузить его (вместе с подписью) на сервер открытых ключей.  Оттуда подписанный ключ могут ска­чивать  заинтересованные  люди.  В  целом,  чем  больше людей,  которым  вы  доверяете,  под­пишет ключ, тем выше доверие к такому ключу.  PGP позволяет подписывать чужие ключи и доверять другим  пользователям — если они подпишут ключ,  ваша программа автомати­чески будет считать его достоверным. Разумеется, сеть доверия не лишена недостатков. Но на  сегодняшний  день,  если  вы  не  готовы  передавать  ключи  исключительно  при  личной встрече,  использование  сети  доверия  и  серверов  открытых  ключей—  самая  подходящая альтернатива.


Источник: "Искусство легального, анонимного и безопасного доступа к ресурсам Интернета" М.Райтман

__________