Чем симметричное шифрование отличается от асимметричного
Перейти к содержимому

Чем симметричное шифрование отличается от асимметричного

  • автор:

Криптография простым языком: разбираем симметричное и асимметричное шифрование на примере сюжета Звездных войн (Updated)

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

image

После прочтения материала вы усвоите следующие моменты:

  1. Что такое шифрование;
  2. Чем отличается симметричное шифрование от асимметричного;
  3. В каком случае эффективнее применять симметричное, а в каких асимметричное шифрование;
  4. Что такое хеш данных и для чего он используется в шифровании;

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

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

Сюжет

Давайте мысленно перенесемся во вселенную Звездных войн до событий Эпизода 6, когда силам сопротивления становится известно о начале строительства новой Звезды смерти. Командование планирует внедрить разведывательную группу под видом строителей. Операция очень опасна, связь со штабом будет затруднена. В случае экстренной стиуации каждый член группы может отправлять и получать сообщения из штаба на незащищенной частоте.

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

Штаб утвердил два варианта этой операции:

План А — возвращение агентов с данными повстанческим силам;
План Б — дистанционная передача планов с самой Звезды смерти, используя оборудование станции. Передача информации при этом будет быстрой, но после передачи агент вероятнее всего будет вычислен и пойман.

image

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

При планировании операции рассматриваются несколько возможных негативных сценариев:

  • Противник перехватит сигнал, поймет по его содержимому о планировании атаки и уведет объект ближе к лояльным Империи силам. В этом случае потери среди сопротивления будут выше;
  • Один из шпионов будет пойман и на допросе раскроет план операции, что может привести к компрометации ключей шифрования (про них будет сказано ниже);
  • Шпион с загружеными данными может быть перехвачен имперскими силами, которые внесут изменения в содержимое, дезинформируя сопротивление о слабых местах станции. В этом случае, при атаке флот повстанцев будет направлен в ложном направлении и постепенно уничтожен;
  1. Содержимое должно быть надежно зашифровано и защищено от изменений;
  2. В случае утери ключей шифрования или их компрометации, должна быть возможность получения новых ключей шифрования дистанционно на частоте, которая может прослушиваться противником.
Шифрование информации

Давайте решим проблему шифрования информации:

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

Метод, при котором шифрование и дешифрация сообщения производится при помощи одного ключа называется симметричное шифрование.

image

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

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

image

Механизм действия такой:

  1. адресат отправляет ОТКРЫТЫЙ ключ отправителю;
  2. отправитель кодирует сообщение при помощи полученного открытого ключа. При этом, раскодировать сообщение можно теперь только закрытым ключом;
  3. при получении зашифрованного сообщения адресат раскодирует его ЗАКРЫТЫМ ключом (который был сгенерирован в паре с открытым).

Давайте приступим в программированию! Для разработки необходимого ПО мы будем использовать библиотеку Python под названием pycrypto. У нее отличная документация и в ней представлены все распространенные алгоритмы шифрования.

Для начала разработаем функционал для симметричного шифрования по названием Advanced Encryption Standard (AES). Он является одним из самых распространённых алгоритмов симметричного шифрования.

Хеш документа — это просто строка из символов, которая уникальна для какого-либо набора данных. При любом изменении данных хеш очень сильно меняется. Другими словами, хеш — это своеобразный «отпечаток пальца» для какого-либо набора данных.

Но что делать, если ключи шифрования будут по каким-то причинам скомпрометированы? Тогда расшифровать информацию может кто угодно.

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

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

Пользователь Akela_wolf справедливо заметил, сгенерировать и отправить открытый ключ может кто угодно. Я внес некоторые коррективы в план.

Будет правильно, если до отправки агентов штаб сгенерирует несколько пар ключей и назначит каждому агенту закрытый ключ. Лучше сгенерировать именно несколько пар, чтобы у каждого агента был индивидуальный ключ. Это необходимо, чтобы точно персонифицировать владельца ключа.
Тогда в случае компрометации ключей центр создаст новый СИММЕТРИЧНЫЙ ключ, закодирует его каждому агенту открытыми ключами и отправит по открытому каналу.


  1. Агент сгенерирует пару ключей (открытый и закрытый) на месте, затем отправит открытый ключ повстанческим силам;
  2. В штабе сопротивления создадут новый ключ для СИММЕТРИЧНОГО шифрования;
  3. Симметричный ключ закодируют при помощи открытого ключа, который прислал агент;
  4. Зашифрованный симметричный ключ отправят агенту, который раскодирует его с помощью закрытого ключа.
  1. Агент отправляет ОТКРЫТЫЙ ключ из пары, ЗАКРЫТЫЙ ключ находится у него;
  2. Штаб сопротивления отправляет ключ симметричного шифрования, зашифрованный присланным агентом открытым ключом.

——BEGIN RSA PRIVATE KEY——
MIIEpAIBAAKCAQEA4JDLu7Vtvg2yqbH6Y0eJPfoEsOlKzgmOodqhA1CqkEG4OpKi
sGW7ciGP4v37GE6edHBCEy4UNkVQtnpPBjzTHvKd1pO70B84vD5OSrS7uNw2EYkj
d/ZwhrJMrcQKRwPkkM4OiewaaAaK0vPWJIKwlW61DY9X7LfNz7aOKMTbKnm1vdR0
919AV98FUmNoQBgka6nXFGmNbi7D43MtLwxBZIXfFupEiANSvOs+57hgaCho7OWM
GUOjLkG6HBscPhJ2W1H5DU9GjwL24ynTvKifgo1/2ue61MV1Pzh5CVaicJKNaRtg
Pd99gFhBGINsXV2X6Jh/W5nNsCddU4EI0AlO8wIDAQABAoIBAARM4YnjrIlSK9Sy
EtBp40frjMFyhjsx1ahlzmWI2utORt/gRPtJx3AlEmNPZ8qMXt5t8+X4IOz1INmN
uAuviH90N++O/q66mlSIgOlPUrT0ipiFXseCUZ9StMMzGNtJSMw5FfAwNEU/stLd
VoF2ezkxWIg88XsX/fn3Tfub4XKLvu4raJGcJ+Fo2GI9hYEGKnHhSuHvDHekTLlQ
z46O+cIwtehbFGcKesyK3zDD1uP5YLPIWpiqt1TgKjJzRF0l4ZJLk+RT7kU2pGIQ
mosOnr+06WyMIg724yQyAIwtS9X0czKBGUESrtTTb1HCXLeTwnncOTxh6q2z42LF
tn34+DECgYEA6EEp4oTvjfTQfUQPMByuAjF1hpdFHQqRymygiFgoF+Mg3QmL0w8j
/84H/q7s8FSx+3th8MK87bFq4lrry+h/mYwmvF5zZbhxcnl2uaX+KUPgpT6TgvAo
WOv2wc4BSaoo9DrxrZId86vpO2qbopw6gkBsvw47HSoQ+FSqXtZ0p8kCgYEA94Zj
b1ulctUjybiszO93TAjkzx3lU3yL+B1eZiQXtJa3mgG+ka1R/uMfr0NlT+Jzo0My
wHV30YRJDxziCrDol9OgSSU0sXwEcUxUIBLBwXLCp1EmMsYG9PB/x4OTWve35a8F
O+rMxuvWaZeIOfVCfL8UEcWweYaVdWIonJN+ltsCgYEAjeSZ2UlMLZce9RjqioNL
EA31dlfeoqJ9dYUuAn6RaB6cSk51vWlnnfXazo9CNIYaAsFbkcL3t+QHn+jaXEZc
BowocjbmG4Q20zBAB6XRBJbynSIA7yMYE1N9+uOHx+CMisGkO12krOUfZex4zzzR
RhhkF8ly9htoKL9ZIv20YXkCgYBzH3UF6PkVZJ5lhtgP5Nx2Z7iLwBrV7ppnBrnO
BcFkw6iXH3KT7KmzQ82LxWvMcMVZzLpBGyFkOAOG3OchE9DKNKpa+sv8NHMYguip
li+5mneAPFTozoOTznuPvtl9OLO2RuXHTVh6uFub9tdsJW8L+A8MiQagLwE6fDHp
SQxaewKBgQDIyzL1THpW3+AMNrOZuI/d3Em5wpGJiZbDSBRosvsfGm/sHaz4Ik5E
nWnftgktmsAD60eORTTh9/ww/nm7f3q9kzT8Sv1MmqeRXq9VFIOeP/+8SSE/7LzD
izlb5xEtVD8LuY54jHyiOxiZC++TQswMnOKKi0Gx26MDoO7Tx9akVw==
——END RSA PRIVATE KEY——

——BEGIN PUBLIC KEY——
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4JDLu7Vtvg2yqbH6Y0eJ
PfoEsOlKzgmOodqhA1CqkEG4OpKisGW7ciGP4v37GE6edHBCEy4UNkVQtnpPBjzT
HvKd1pO70B84vD5OSrS7uNw2EYkjd/ZwhrJMrcQKRwPkkM4OiewaaAaK0vPWJIKw
lW61DY9X7LfNz7aOKMTbKnm1vdR0919AV98FUmNoQBgka6nXFGmNbi7D43MtLwxB
ZIXfFupEiANSvOs+57hgaCho7OWMGUOjLkG6HBscPhJ2W1H5DU9GjwL24ynTvKif
go1/2ue61MV1Pzh5CVaicJKNaRtgPd99gFhBGINsXV2X6Jh/W5nNsCddU4EI0AlO
8wIDAQAB
——END PUBLIC KEY——

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

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

Симметричное и ассиметричное шифрование: просто о сложном

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

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

1.shifr-20219-e1d740.png

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

Для работы применяется всего один пароль. Происходит всё следующим образом: 1. Существует некий математический алгоритм шифрования. 2. На его вход подаётся текст и пароль. 3. На выходе получаем зашифрованный текст. 4. Если хотим получить исходный текст, применяется тот же самый пароль, но с алгоритмом дешифрования.

symmetric_encryption_graphic_ru-20219-f67d82.pngГоворя простым языком, если кто-то узнает наш пароль, безопасность криптосистемы тут же нарушится. Именно поэтому, используя подходы симметричного шифрования, мы должны особое внимание уделять вопросам создания и сохранения конфиденциальности пароля. Он должен быть сложным, что исключит подбор программным перебором значений. И не должен передаваться кому-нибудь в открытом виде как в сети, так и на физических носителях информации. Очевидно, что листочек, прикреплённый к монитору — явно не лучший вариант)). Тем не менее если наша секретная комбинация используется командой, нужно обеспечить безопасность её распространения. Пригодится и система оповещения, которая сработает, если шифр узнают, произойдёт утечка данных.

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

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

Здесь применяют 2 пароля — публичный (открытый) и секретный (закрытый). Первый отсылается всем людям, второй остаётся на стороне сервера. Эти названия достаточно условные, а зашифрованное одним из ключей сообщение можно расшифровать лишь с помощью другого. По сути и значимости они равноценны.

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

asymmetric_encryption_graphic_ru-20219-67c3d6.pngДля ассиметричного шифрования хранение паролей проще, ведь секретный ключ не нужно передавать кому-либо. А в случае взлома сервер сменит пару ключей и разошлёт всем новые комбинации.

Считается, что ассиметричное шифрование «тяжелее» симметричного. Всё потому, что оно требует больше компьютерных ресурсов. Есть ограничения и на процесс генерации ключей.

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

Что важно знать

Давайте перечислим основные моменты и сравним оба вида шифрования: 1. Симметричный алгоритм прекрасно подходит при передаче больших объёмов зашифрованных данных. Ассиметричный в этом случае будет работать медленнее. Кроме того, при организации обмена информацией по ассиметричному алгоритму оба ключа должны быть известны обеим сторонам либо пар должно быть две (по одной на каждую сторону). 2. Ассиметричное шифрование позволяет дать старт безопасному соединению без каких-либо усилий со стороны пользователя. Если говорить о симметричном шифровании, то пользователю нужно знать пароль. Однако не стоит думать, что ассиметричный подход безопасен на 100 %. К примеру, он подвержен атакам «человек посередине». Это когда между сервером и вами размещается компьютер, который вам отсылает свой открытый ключ, а при передаче информации с вашей стороны, использует открытый ключ сервера. В итоге происходит перехват конфиденциальных данных. 3. Продолжая тему взлома и компрометации пароля, давайте ещё раз отметим, что в случае с симметричным шифрованием возникает проблема конфиденциально передать следующий пароль. В этом плане ассиметричный алгоритм «легче». Серверу достаточно сменить пару и разослать вновь созданный публичный ключ. Однако и тут есть своя Ахиллесова пята. Дело в том, что генерация ключей постоянно происходит по одному и тому же алгоритму, стало быть, если его узнают, безопасность окажется под угрозой. 4. Симметричный шифр обычно строится на основании ряда блоков с математическими функциями преобразования, ассиметричный — на математических задачах. Тот же RSA создан на задаче возведения в степень с последующим вычислением модуля. В результате алгоритмы симметричного шифрования модифицировать просто, а ассиметричного — практически невозможно. 5. Лучший эффект достигается при комбинации обоих видов шифрования. Происходит это так: — посредством ассиметричного алгоритма серверу отсылается сессионный ключ для симметричного шифрования; — происходит обмен информацией по симметричному алгоритму. Тут возможны варианты, но общий смысл обычно не меняется. 6. В симметричном шифровании пароли генерируются по специальным правилам с учётом цифр, букв, регистра и т. д., создаются комбинации повышенной сложности. В ассиметричном пароли не так безопасны, однако их секретность обеспечивается тем, что их знает только сервер. 7. Вне зависимости от выбранного вида шифрования ни один из них не является гарантом стопроцентной безопасности. Помните, что любой подход нужно комбинировать с другими средствами информационной защиты.

Послесловие

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

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

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

Основы криптографии — Шифрование и хеширование

Обнаружены очередные поддельные расширения для браузера Google Chrome, часть пользователей установили эти расширения. Власти Канадской провинции Новая Шотландия выложили конфиденциальные данные в открытый доступ. Google закрывает возможность обхода блокировок через свои домены, а Volkswagen Group исправила уязвимости в автомобилях.

Предисловие

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

Картинка недели

Безопасность xkcd

Вспомогательные темы

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

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

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

Новости

Более 20 млн пользователей Chrome установили поддельное расширение AdBlock

Расширения-блокировщики рекламы защищают пользователей от всплывающих окон и назойливой рекламы на сайтах. Для Google Chrome есть достаточно большое количество разнообразных расширений. Но среди полезных попадаются поддельные расширения, и особенно много поддельных блокировщиков рекламы. Как сообщают исследователи из Adguard Software Limited, они нашли очередную порцию таких расширений. На данный момент Google уже удалил их, но более 20 млн пользователей успели их поставить.

Из открытых блокировщиков можно посоветовать uBlock Origin от разработчика по имени Реймонд Хилл. Если будете искать его, то ищите именно полное название — uBlock Origin, т.к. существуют ответвления и поддельные расширения.

Власти Новой Шотландии выложили в публичный доступ приватные данные жителей

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

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

Данный пример демонстрирует одну из распространенных проблем/уязвимостей в информационных системах — небезопасный прямой доступ. Broken Access Control в терминологии OWASP Top 10 за 2017 год. В данном случае факт “эксплуатации” уязвимости неоднозначен, т.к. информация была расположена на сайте, предполагающем свободный доступ к информации. Однако полиция возбудила уголовное дело. Пока не ясно, чем закончится эта история.

Google закрывает domain-fronting

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

Некоторые модели концерна Volkswagen Group можно взломать

В ходе исследовательской работы специалисты компании Computest обнаружили уязвимость в некоторых моделях концерна Volkswagen Group. Уязвимость позволяет получить удаленный доступ к системам автомобиля. В некоторых случаях можно получить доступ к мультимедиа, адресной книге, истории разговоров. Также есть вероятность получить доступ к навигационной системе. Т.к. названные компоненты имеют косвенный доступ к системе управления ускорением и торможением автомобиля, исследование решено было прекратить.

Специалисты уведомили о проблемах VW Group, которая уже устранила проблемы. Как вы можете видеть, иногда обновлять необходимо даже автомобили.

Основы криптографии

Я не буду сегодня оперировать формулами. Во-первых, потому, что это может быть скучно или непонятно, как минимум для некоторых слушателей. Во-вторых, потому, что голосом объяснять формулы достаточно сложно.

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

Математическая точность нужна при реализации и проектировании криптоалгоритмов. Для использования нужно знать некоторые тонкости. Но для понимания общих схем и принципа действия достаточно базовых знаний.

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

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

Асимметричное шифрование (с открытым ключем)

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

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

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

Асимметричное шифрование с небольшой натяжкой можно сравнить с банковским переводом — для того, чтобы отправить деньги нужно знать, ФИО и номер счета, которые будут выступать в качестве публичного ключа. Чтобы деньги забрать, нужен будет паспорт, который является аналогом ключа приватного.

Хеширование

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

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

Под словом “нельзя” понимается, что это невозможно сделать за разумное время. Для разных систем разумными могут быть разные временные промежутки.

Особенности

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

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

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

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

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

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

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

  • Шифр и ключ
  • Симметричное и асимметричное шифрование
  • Закрытые и открытые ключи
  • Проверка личности для людей (отпечаток открытого ключа)
  • Проверка личности для сайтов (сертификаты безопасности)

Шифр и ключ 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.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *