Skip to main content
Surveillance
Self-Defense

Ключевые понятия в шифровании

Последнее обновление: November 26, 2018

This page was translated from English. The English version may be more up-to-date.

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

В настоящем руководстве мы рассмотрим пять основных идей. Это важные понятия о процессе шифрования:

Шифр и ключ anchor link

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

Каковы отличия чего-то зашифрованного от непонятного?

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

Шифр — это набор правил (алгоритм), используемый при шифровании и расшифровывании. Это чётко определённые, выраженные в виде формулы правила, которым необходимо следовать.

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

Один ключ или несколько? anchor link

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

Старые способы шифрования были симметричными. В «шифре Цезаря», использованном Юлием Цезарем, ключом для шифрования и для расшифровывания сообщений был сдвиг по алфавиту на три символа. Например, символ «A» будет изменён на «Г». Сообщение «ШИФРОВАНИЕ — ЭТО КРУТО» превратится с помощью этого ключа («три») в «ЫЛЧУСЕГРЛЗ АХС НУЦХС». Тот же самый ключ используется и для расшифровывания сообщения обратно в исходный вид.

Симметричное шифрование все ещё применяется сегодня. Оно часто существует в форме «потоковых» и «блочных шифров», которые используют сложные математические процессы для усложнения взлома. В настоящее время процесс шифрования данных проходит в несколько этапов, максимально усложняя извлечение исходных данных при отсутствии подходящего ключа. Современные алгоритмы симметричного шифрования, такие как алгоритм Advanced Encryption Standard (AES), являются надёжными и быстрыми. Симметричное шифрование широко используется компьютерами для таких задач, как шифрование файлов, разделов жёстких дисков на компьютере, полного шифрования дисков и устройств, а также шифрования баз данных, например в менеджерах паролей. При расшифровывании информации, зашифрованной с помощью симметричного шифрования, у вас будут запрашивать пароль . Именно поэтому мы рекомендуем использовать надёжные пароли и предоставляем пособие по созданию надёжных паролей для защиты зашифрованной информации.

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

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

Симметричное шифрование

Асимметричное шифрование

  • Быстрое
  • Медленное
  • Не требует больших вычислительных мощностей
  • Требует больших вычислительных мощностей
  • Используется для шифрования как больших, так и маленьких сообщений
  • Используется для шифрования небольших сообщений
  • Необходим обмен ключами как для шифрования, так и для расшифровывания
  • Ключом для расшифровывания делиться нельзя, необходимо передать лишь открытый ключ, используемый для шифрования
  • Не может использоваться для проверки личности (аутентификации)
  • Может использоваться для проверки личности (аутентификации)

Симметричное и асимметричное шифрование часто используются совместно для шифрования при передаче данных.

Асимметричное шифрование: закрытые и открытые ключи anchor link

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

Несмотря на своё название, открытый ключ не используется для открытия чего-либо (в отличии от реального ключа). Его предназначение заключается в другом. Более подробную информацию о работе открытых и закрытых ключей вы можете найти в нашем руководстве «Глубокое погружение в мир сквозного шифрования».

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

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

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

Открытый ключ

Закрытый ключ

  • Файл, который можно свободно распространять, в том числе и через интернет
  • Файл, который должен надёжно храниться в безопасном месте
  • Отправителю необходим открытый ключ получателя для того, чтобы зашифровать отправляемую информацию
  • Используется для расшифровывания сообщений, зашифрованных с помощью соответствующего открытого ключа
  • Представлен так называемым «отпечатком» открытого ключа, который можно использовать для подтверждения личности (аутентификации)
  • Используется для цифровых подписей, позволяя проверить личность отправителя (аутентификация)
  • При желании может быть размещён в постоянных общедоступных базах данных - «серверах ключей», доступных при использовании программного обеспечения PGP (зашифрованной электронной почты)
 

Можно сказать, что, отправляя информацию по каналам связи, вы будто отправляете обычную почтовую открытку. На открытке отправитель напишет «Привет!» и отправит её получателю. Сообщение не зашифровано, и поэтому сотрудники почты и вообще все, кому в руки попадёт открытка, смогут прочитать это сообщение.

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

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

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

Для кого вы шифруете? Является ли он тем, кем представился? anchor link

Теперь у вас может возникнуть вполне резонный вопрос: «Понятно, что мой открытый ключ позволяет кому-то отправлять мне зашифрованное сообщение, а мой закрытый ключ позволяет прочитать это зашифрованное сообщение. Но что, если кто-то притворяется мной? Что, если кто-то создаст новые открытый и закрытый ключи и станет выдавать себя за меня?»

Именно здесь и раскрывается польза шифрования с открытым ключом. Вы можете подтвердить свою личность и проверить личность собеседника. Давайте подробно рассмотрим возможности использования закрытого ключа.

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

Получатель увидит вашу цифровую подпись вместе с сообщением и сравнит её с данными, указанными в вашем открытом ключе.

Давайте посмотрим, как это работает на практике.

Проверка личности для людей (отпечаток открытого ключа) anchor link

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

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

Открытый ключ — это файл с огромным количеством символов. Но существует и удобный для чтения «отпечаток ключа », соответствующий данному ключу.

В области компьютерной безопасности слово «отпечаток» имеет множество значений.

Одним из вариантов употребления этого слова является «отпечаток ключа» — строка с символами вида «65834 02604 86283 29728 37069 98932 73120 14774 81777 73663 16574 23234». Эта строка позволяет с абсолютной уверенностью утверждать, что ваш собеседник использует правильный закрытый ключ.

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

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

Лучше всего подобную проверку проводить при личной встрече. Вашему собеседнику необходимо посимвольно сравнить отпечаток вашего открытого ключа, находящегося на вашем устройстве, с отпечатком вашего же ключа, но находящегося у него. Несмотря на утомительность проверки такой длинной строки символов («342e 2309 bd20 0912 ff10 6c63 2192 1928»), её необходимо провести. Если вы не можете встретиться лично, можно передать свой отпечаток через другой защищённый канал связи, например через другой использующий сквозное шифрование мессенджер или чат, или разместить отпечаток на сайте HTTPS .

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

Итог: возможности шифрования с открытым ключом anchor link

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

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

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

Целостность: сообщение, зашифрованное или подписанное с помощью шифрования с открытым ключом, как правило, не может быть подделано; иначе оно не будет расшифровано, либо авторство сообщения не будет подтверждено. Это означает, что даже непреднамеренное искажение сообщения (например, из-за проблем со связью) будет обнаружено.

Проверка личности для веб-сайтов и сервисов (сертификаты безопасности) anchor link

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

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

Ниже вы можете увидеть пример сертификата безопасности нашего сайта, открытого в стандартном браузере. Информацию о сертификате безопасности можно просмотреть, нажав на значок замка в строке адреса HTTPS браузера и затем выбрав «сведения о сертификате».

Браузер на компьютере может шифровать подключение к сайту, используя HTTPS. Сайты часто используют сертификаты безопасности, чтобы показать браузеру свою подлинность и обеспечение безопасного подключения. Благодаря этому можно быть уверенным в том, что никто не сможет изменить передающиеся данные. Браузеры проверяют эти сертификаты на соответствие открытым ключам доменных имён (например www.google.com, www.amazon.com или ssd.eff.org). Сертификаты являются одним из способов определения безопасности общения с человеком или сайтом – соответствует ли данный открытый ключ этому сайту или человеку. А каким образом компьютер узнает, какой именно открытый ключ является подходящим для посещаемых сайтов?

Современные браузеры и операционные системы используют список доверенных центров сертификации (Certification authority, CA). Открытые ключи из этих центров сертификации уже будут у вас при установке браузера или покупке компьютера. Центры сертификации подписывают открытый ключ сайта лишь после того, как они удостоверились в том, что этот сайт на законных основаниях владеет доменом (например, www.example.com). Открывая HTTPS-сайт, браузер проверяет предоставленный этим сайтом сертификат на наличие подписи надёжного центра сертификации. Это значит, что сторонняя организация, которой можно доверять, подтверждает подлинность данного сайта.

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

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

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

Итог: симметричные и асимметричные ключи, отпечатки открытых ключей. anchor link

Пример рукопожатия безопасности транспортного уровня (TLS handshake)

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

Рассмотрим конкретный пример совместной работы этих способов шифрования при подключении к данному сайту (https://ssd.eff.org/), использующему протокол HTTPS.

Открывая HTTPS-сайт, браузер и сервер сайта совершают очень быстрый обмен некоторыми данными. Этот процесс называется «рукопожатием» (handshake). Браузер (Google Chrome, Mozilla Firefox, Tor Browser и т.д.) общается с сервером (компьютером), на котором расположен наш сайт - https://ssd.eff.org.

При осуществлении рукопожатия браузер и сервер отправляют друг другу запросы для определения общих настроек алгоритмов шифрования (наборов шифров). Вы можете представить себе это как оживлённую беседу между вашим браузером и нашим сервером ssd .eff.org об известных им методах шифрования, об их предпочтениях в выборе метода и о том, какой метод шифрования им обоим следует применить при общении. «Знакомо ли нам обоим совместное использование асимметричного алгоритма (RSA) с симметричным алгоритмом (AES)? Да, хорошо. Если же с этой комбинацией алгоритмов шифрования мы не знакомы, какие другие алгоритмы шифрования мы знаем?»

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

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

Если этот симметричный ключ работает, то браузер и сервер веб-сайта используют его для дальнейшего шифрования данных. Этот обмен данными является рукопожатием TLS. Таким образом, если рукопожатие прошло корректно, то ваше подключение обозначается как безопасное соответствующим значком в адресной строке браузера рядом с названием HTTPS-сайта ssd.eff.org.

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