Что такое несимметричные шифры на чем основана их надежность
Асимметричное шифрование на практике
Приветствую вас, хабравчане!
Проблемы безопасности — это слабое место большинства из нас. Всем нам неприятно сталкиваться и тем более терять что—то ценное из—за случайного клика мышью. И именно поэтому я решила поделиться найденными материалами с вами.
В стремлении развеять наиболее часто задаваемый вопрос — почему будут атаковать меня? Кому я нужен? — мы начнем статью именно с него.
Нужно учитывать, что атаковать вас может не только человек. Это может делать, например, бот.
Каждый из нас подключен к интернет провайдеру. А на него, скорее всего, происходят атаки буквально каждый день. Замечали у себя на почте раздел «спам»? В каждом таком письме потенциально есть фишинговая атака. Это атака не персонально на вас. Это масштабная атака, ориентированная на широкий круг лиц. Мы потенциально жертвы.
Чаще всего их цель — деньги. Как они могут их получить?
Например, использовать ваш компьютер в качестве web сервера, красть ваш контент, производить email атаки, деятельность в ботнете, кража аккаунтов, атаки с целью вымогательства. Да и email аккаунт — потенциально важная вещь, потому что все мы достаточно часто используем один и тот же пароль на нескольких сервисах.
Время дорого, и мы хотим тратить как можно меньше времени на вопросы, связанные с безопасностью.
И поэтому первое, что нужно сделать — это ответить для себя на несколько вопросов:
Окей, мы определились с тем, что нам необходимо защитить. Следующий шаг — выбор метода защиты.
Да, разумеется, в мире существует множество атак и защититься от всех просто невозможно.
Поэтому мы рассмотрим один из наиболее эффективных инструментов — шифрование.
Что такое шифрование?
Чтобы сделать правильный выбор в области безопасности, вам нужно понимать, что такое шифрование. Не обязательно знать хардкорную математику. Достаточно понять на базовом уровне. Это один из лучших и незаменимых инструментов в нашем арсенале.
Шифрование — это метод преобразования данных, пригодных для чтения человеком, в форму, которую человек не сможет прочитать. За счет этого данные остаются конфиденциальными и приватными.
Дешифрование — обратная операция. Преобразование нечитаемых данных в читаемые.
Окей, где это применяется? На самом деле во многих местах. Например, обращали внимание на протокол «https»? Именно за счет него ваши данные не может перехватить 3-й человек во время вашего лазания в интернете. Объясню подробнее. Вы заходите на сайт «www.google.com», делаете любой запрос. При этом все данные, которые необходимы для отображения выдачи результатов, передаются с помощью протокола «https». А значит, если какой-либо человек решит просмотреть данные о вашем трафике (атака Man In the Middle), то он увидит лишь то, что вы зашли на Google. В придачу он получит множество зашифрованных пакетов. То есть можно сказать, что он не получит ничего.
Но вернемся к базовой теории. В процессе шифрования участвуют 2 основных компонента — алгоритм и ключ.
Алгоритм — это в каком-то смысле замок, который позволяет хранить ваши данные в тайне. За счет него происходит преобразование текста.
Ключ — это, уж простите за тавтологию, ключ от замка. Кусочек уникальных данных, с помощью которых происходит преобразование текста
Хм, хорошо. Едем дальше. Слегка повысим напряжение.
Виды шифрования
Как еще мы можем использовать шифрование в своих, корыстных целях? Для простоты понимания мы рассмотрим шифрование архива. При архивации во многих архиваторах присутствует возможность установить пароль. При этом архиватор использует какой-либо алгоритм для шифрования. И чаще всего это симметричный алгоритм.
Симметричное шифрование
Симметричный алгоритм шифрования — алгоритм, при котором для шифрования и дешифрования используется один и тот же ключ. Ярким и, в то же простым примером, будет шифр Цезаря.
Вся работа этого алгоритма заключается в том, чтобы изменить символ на другой с определенным шагом.
Например, при смещении в 5 символов, символ, который стоит на первой позиции заменить на символ 6 позиции и так далее.
Наиболее стойким на данный момент считается алгоритм AES (Advanced Encryption Standard).
Стоит упомянуть еще один момент — мощность пароля. Мощность пароля измеряется в битах. Одним из наиболее распространенных решений является 128 или 256 бит. Это то количество бит, которое будет выделено для пароля. Так же это число означает количество паролей, которое вы можете получить при данном алгоритме шифрования. Но чем больше длина ключа, тем медленнее протекает процесс шифрования или дешифрования.
Но чаще всего используется асимметричное шифрование
И так, мы зашифровали письмо, но как его отправить нашему другу? Отправлять в соц. сетях или текстовым сообщением — не самая лучшая затея. Как и говорить его по телефону.
И это приводит нас к новому типу шифрования.
В ассиметричном шифровании используется 2 ключа — открытый и закрытый(тайный).
Открытый ключ для шифрования, закрытый — для дешифрования.
Какие алгоритмы позволяют пользоваться этой технологией?
Так как во мне есть жилка программиста, а также любовь к математике, то я просто не могу не рассказать о том, как все работает «под капотом»
Рассмотрим на примере алгоритма RSA.
Первое, что нам необходимо сделать — сгенерировать открытый и закрытый ключи. Последовательность действий примерно такая:
1) Мы выбираем два простых числа. Желательно, чтобы они были достаточно близкими
2) Вычисляем их произведение, а также функцию Эйлера
n = p * s
f = (p — 1) * (s — 1)
3) Теперь наиболее затратная по времени часть — выбор экспоненты и произвольного коэффициента.
Дело в том, что при выбранных коэффициентах значение «d» должно быть целым. «d» — необходимая составляющая алгоритма
e = 5
k = 9
d = (k * f + 1)/e
Теперь наш открытый ключ (для шифрования сообщения) состоит из значений переменных «e» и «n», а закрытый ключ (для дешифрования) из значений «d» и «n».
То есть в нашем случае…
Тогда шифрование сообщения происходит по формуле: crypt = m^e%n.
А дешифрование: decrypt = crypt^d%n.
Ну и с точки зрения программиста, мы можем использовать эту информацию следующим образом:
Теперь, зная теорию, плюсы и минусы алгоритма, а также для чего вообще нужно им пользоваться, мы можем говорить о практическом применении.
Среди всех найденных программ, наиболее удобной мне показалась gpg4usb.
Данная программа использует PGP шифрование. Почему я рекомендую использовать именно его?
Все просто. Этот тип шифрования до сих пор еще не удалось взломать. Никому. Так что пользуйтесь.
Пользоваться программой достаточно просто. Нужно лишь знать куда нажимать.
И именно об этом сейчас пойдет речь.
Первое, что необходимо сделать — скачать программу. Вы можете это сделать по ссылке:
ссылка.
Скажу сразу — эта программа кросс—платформенная. То есть вы можете использовать ее как на Windows, так и на Linux.
Второе — это создание пары ключей шифрования.
Это можно сделать, выполнив следующую последовательность действий:
1) Переходим в раздел «Менеджер ключей»
2) Выбираем в верхней панели «Ключ», затем «Генерировать ключ»
Должно выглядеть примерно так:
3) Заполняем необходимые поля. Предупрежу сразу — пароль лучше куда-нибудь записать (или запомнить), потому что он понадобится в последующем для дешифрования сообщения.
Теперь ключ создан, и мы можем приступать непосредственно к шифрованию.
На главном экране присутствует текстовое поле — это наш плацдарм для создания сообщений. В правой боковой панели помечаем галочкой свой ключ.
Введя сообщение в поле, смело нажимаем в верхней панели «Зашифровать».
Поздравляю, вы умеете шифровать сообщения.
Дешифровка происходит аналогично, разве что вместо «Зашифровать» вы пользуетесь кнопкой «Расшифровать».
А теперь момент, который пол часа выносил мне мозг: как передать ключ другу?
Да, мы настроили систему шифрования, и она работает, да, мы можем передать другу открытый ключ и не бояться, что сообщение будет прочитано. Но где его взять?
Как оказалось, все достаточно просто. В окне, в котором мы создавали ключи для шифрования, мы помечаем галочкой нужный ключ и в верхней панели выбираем «Экспорт в файл». Мы получили открытый ключ и можем передавать кому угодно, чтобы получать от него зашифрованные сообщения, которые можем прочитать только мы.
Так, а теперь я хочу получить закрытый ключ (а вдруг буду работать с другого компьютера? Ведь ключи хранятся локально).
Чтобы решить эту задачу, мы вновь возвращаемся на главный экран, в правой боковой панели нажимаем правой кнопкой мыши на нужный ключ и выбираем «Показать свойства ключа». А в открывшемся окне выбираем «Экспортировать Секретный ключ».
Готово, теперь у вас «на руках» открытый и закрытый ключи шифрования, которыми вы можете распоряжаться по своему усмотрению.
Ну и в завершении статьи хочу поделиться полезной методикой: моделирование угроз и оценка рисков.
Первое, что нужно понять — нельзя обеспечить 100% безопасность, как и свести все риски к нулю. Нельзя получить 100% анонимность. Нельзя получить 100% безопасность (разве что не использовать телефон и ПК).
Используя интернет мы так или иначе принимаем риски. Он дает нам шанс расширить свои возможности, но при этом есть риск потери наших данных. Поэтому безопасность — это балансирование между удобством, расширением знаний, комфортом и сохранением уже определенных, важных для нас данных.
Мы должны использовать риск—ориентированный подход.
Риск = уязвимость * угрозы * последствия
Например, кража ноутбука. Что мы можем сделать? Зашифровать весь диск, добавить дополнительные этапы авторизации.
Для обеспечения качественной защиты нужно пройти несколько этапов:
Асимметричное шифрование
Сложное, но очень полезное.
В отличие от симметричного шифрования, в котором всё шифруется и расшифровывается одним и тем же ключом, асимметричное устроено сложнее. В нём уже два ключа, и один из них можно показывать всем.
👉 Если совсем просто: в асимметричном шифровании данные шифруются одним ключом, а расшифровываются другим. Первый ключ можно держать у всех на виду, а вот второй нужно прятать.
👉 Такой подход снимает некоторые вопросы безопасности в интернете: ведь невозможно вообще не передавать никому никакие ключи. Вот асимметричное шифрование помогает с этим: часть ключей можно безопасно пересылать, это не нарушит секретности.
Принцип работы
Асимметричное шифрование основано на парах чисел. Одно из этих чисел — открытый ключ, который доступен всем. С помощью этого числа кто угодно может зашифровать сообщение. Но расшифровать его с помощью этого же числа не получится.
Для расшифровки берут второе число — закрытый ключ. Он должен быть секретным.
Это не могут быть два случайных ключа. Открытый и закрытый ключ всегда связаны между собой алгоритмом, который их выдаёт. Смысл в том, что внутри этого алгоритма есть третье, тоже секретное, число, которое связано с обоими ключами.
Самый простой способ установить такую связь — взять два больших простых числа и перемножить их. Мы получим ещё большее число, которое и будет лежать в основе нашего алгоритма. А внутри этого алгоритма будет такая математика, которая зависит от разложения чисел на множители. Если мы не знаем ни одно из первоначальных простых чисел, то разложить на множители такое огромное число будет очень сложной задачей.
Пример: алгоритм RSA-2048
Все асимметричные алгоритмы делятся по виду математической задачи, на которой строится шифр. Задача должна быть сложной не для человека, а с точки зрения математики — той, которую сложно решить даже с мощным компьютером.
Разложение большого числа на множители, которое лежит в основе алгоритма RSA, — несложная задача, если таких множителей всего два. Например, если взять число 45, то оно легко раскладывается на множители так:
45 делится на 2? Нет.
45 делится на 3? Да, получается 15.
15 делится на 2? Нет.
15 делится на 3? Да, получается 5.
5 делится на 2, 3 или 4? Нет, остаётся только само число 5.
Получается 45 = 5 × 3 × 3.
Если мы возьмём число 474 689, то таких проверок и действий нам нужно будет выполнить ровно 479, потому что 474 689 = 479 × 991. Для человека это уже сложнее, но компьютер это сделает так же быстро, как и в случае с числом 45.
А вот для числа из 617 знаков — именно столько применяется в алгоритме RSA-2048 — потребуется сотни лет машинных вычислений, чтобы разложить его на два множителя.
Плюсы и минусы асимметричного шифрования
Плюс таких алгоритмов в том, что для передачи зашифрованных сообщений можно использовать открытый канал связи. Даже если злоумышленник перехватит сообщение, он не сможет прочитать его без секретного ключа. Но чтобы всё было именно так, нужно, чтобы ключ был достаточно длинный — 1024 бит и выше.
Минус асимметричного шифрования очевиден — оно работает только в одну сторону. Чтобы такое общение было двусторонним, каждый должен предоставить другому свой открытый ключ.
Применение
Асимметричное шифрование применяют в двух случаях:
Что дальше
Криптография и шифрование — слишком большая тема, чтобы рассказать о ней в паре статей. Скоро будет объяснение, как мессенджеры устанавливают защищённое соединение для чатов и как работает цифровая подпись. А потом поговорим про взломы и криптостойкость.
Понятие о несимметричном шифровании информации
Классификация методов
Криптографического преобразования
Информации
Под криптографической защитой информации понимается такое преобразование исходной информации, в результате которого она становится недоступной для ознакомления и использования лицами, не имеющими на это полномочий.
Известны различные подходы к классификации методов криптографического преобразования информации. По виду воздействия на исходную информацию методы криптографического преобразования информации могут быть разделены на четыре группы (рис. 1).
Рис. 1. Классификация методов
криптографического преобразования информации
Процесс шифрования заключается в проведении обратимых математических, логических, комбинаторных и других преобразований исходной информации, в результате которых зашифрованная информация представляет собой хаотический набор букв, цифр, других символов и двоичных кодов.
Для шифрования информации используются алгоритм преобразования и ключ. Как правило, алгоритм для определенного метода шифрования является неизменным. Исходными данными для алгоритма шифрования служат информация, подлежащая зашифрованию, и ключ шифрования. Ключ содержит управляющую информацию, которая определяет выбор преобразования на определенных шагах алгоритма и величины операндов, используемые при реализации алгоритма шифрования.
В отличие от других методов криптографического преобразования информации, методы стеганографии позволяют скрыть не только смысл хранящейся или передаваемой информации, но и сам факт хранения или передачи закрытой информации. В компьютерных системах практическое использование стеганографии только начинается, но проведенные исследования показывают ее перспективность. В основе всех методов стеганографии лежит маскирование закрытой информации среди открытых файлов. Обработка мультимедийных файлов в КС открыла практически неограниченные возможности перед стеганографией.
Существует несколько методов скрытой передачи информации. Одним из них является простой метод скрытия файлов при работе в операционной системе MS DOS. За текстовым открытым файлом записывается скрытый двоичный файл, объем которого много меньше текстового файла. В конце текстового файла помещается метка EOF (комбинация клавиш Control и Z). При обращении к этому текстовому файлу стандартными средствами ОС считывание прекращается по достижению метки EOF, и скрытый файл остается недоступен. Для двоичных файлов никаких меток в конце файла не предусмотрено. Конец такого файла определяется при обработке атрибутов, в которых хранится длина файла в байтах. Доступ к скрытому файлу может быть получен, если файл открыть как двоичный. Скрытый файл может быть зашифрован. Если кто-то случайно обнаружит скрытый файл, то зашифрованная информация будет воспринята как сбой в работе системы.
Графическая и звуковая информация представляются в числовом виде. Так в графических объектах наименьший элемент изображения может кодироваться одним байтом. В младшие разряды определенных байтов изображения в соответствии с алгоритмом криптографического преобразования помещаются биты скрытого файла. Если правильно подобрать алгоритм преобразования и изображение, на фоне которого помещается скрытый файл, то человеческому глазу практически невозможно отличить полученное изображение от исходного. Очень сложно выявить скрытую информацию и с помощью специальных программ. Наилучшим образом для внедрения скрытой информации подходят изображения местности: фотоснимки со спутников, самолетов и т. п. С помощью средств стеганографии могут маскироваться текст, изображение, речь, цифровая подпись, зашифрованное сообщение. Комплексное использование стеганографии и шифрования многократно повышает сложность решения задачи обнаружения и раскрытия конфиденциальной информации.
Содержанием процесса кодирования информации является замена смысловых конструкций исходной информации (слов, предложений) кодами. В качестве кодов могут использоваться сочетания букв, цифр, букв и цифр. При кодировании и обратном преобразовании используются специальные таблицы или словари. Кодирование информации целесообразно применять в системах с ограниченным набором смысловых конструкций. Такой вид криптографического преобразования применим, например, в командных линиях АСУ. Недостатками кодирования конфиденциальной информации является необходимость хранения и распространения кодировочных таблиц, которые необходимо часто менять, чтобы избежать раскрытия кодов статистическими методами обработки перехваченных сообщений.
Сжатие информации может быть отнесено к методам криптографического преобразования информации с определенными оговорками. Целью сжатия является сокращение объема информации. В то же время сжатая информация не может быть прочитана или использована без обратного преобразования. Учитывая доступность средств сжатия и обратного преобразования, эти методы нельзя рассматривать как надежные средства криптографического преобразования информации. Даже если держать в секрете алгоритмы, то они могут быть сравнительно легко раскрыты статистическими методами обработки. Поэтому сжатые файлы конфиденциальной информации подвергаются последующему шифрованию. Для сокращения времени целесообразно совмещать процесс сжатия и шифрования информации.
Шифрование. Основные понятия
Современные методы шифрования должны отвечать следующим требованиям:
♦ стойкость шифра противостоять криптоанализу (криптостойкость) должна быть такой, чтобы вскрытие его могло быть осуществлено только путем решения задачи полного перебора ключей;
♦ криптостойкость обеспечивается не секретностью алгоритма шифрования, а секретностью ключа;
♦ шифртекст не должен существенно превосходить по объему исходную информацию;
♦ ошибки, возникающие при шифровании, не должны приводить к искажениям и потерям информации;
♦ время шифрования не должно быть большим;
♦ стоимость шифрования должна быть согласована со стоимостью закрываемой информации.
Криптостойкость шифра является его основным показателем эффективности. Она измеряется временем или стоимостью средств, необходимых криптоаналитику для получения исходной информации по шифртексту, при условии, что ему неизвестен ключ.
В качестве примера удачного метода шифрования можно привести шифр DES (Data Encryption Standard), применяемый в США с 1978 года в качестве государственного стандарта. Алгоритм шифрования не является секретным и был опубликован в открытой печати. За все время использования этого шифра не было обнародовано ни одного случая обнаружения слабых мест в алгоритме шифрования.
Все методы шифрования могут быть классифицированы по различным признакам. Один из вариантов классификации приведен на рис. 2
Рис. 2. Классификация методов шифрован
Понятие о несимметричном шифровании информации
Системам шифрования столько же лет, сколько письменному обмену информацией. Обычный подход состоит в том, что к документу применяется некий метод шифрования (назовем его ключом), после чего документ становится недоступен для чтения обычными средствами. Его можно прочитать только тот, кто знает ключ, – только он может применить адекватный метод чтения. Аналогично происходит шифрование и ответного сообщения. Если в процессе обмена информацией для шифрования и чтения пользуются одним и тем же ключом, то такой криптографический процесс является симметричным.
Основной недостаток симметричного процесса заключается в том, что, прежде чем начать обмен информацией, надо выполнить передачу ключа, а для этого опять-таки нужна защищенная связь, то есть проблема повторяется, хотя и на другом уровне. Если рассмотреть оплату клиентом товара или услуги с помощью кредитной карты, то получается, что торговая фирма должна создать по одному ключу для каждого своего клиента и каким-то образом передать им эти ключи. Это крайне неудобно.
Поэтому в настоящее время используют несимметричные криптографические системы, основанные на использовании не одного, а двух ключей. Происходит это следующим образом. Компания для работы с клиентами создает два ключа: один – открытый (public – публичный) ключ, а другой – закрытый (private – личный) ключ. На самом деле это как бы две «половинки» одного целого ключа, связанные друг с другом.
Ключи устроены так, что сообщение, зашифрованное одной половинкой, можно расшифровать только другой половинкой (не той, которой оно было закодировано). Создав пару ключей, торговая компания широко распространяет публичный ключ (открытую половинку) и надежно сохраняет закрытый ключ (свою половинку).
Как публичный, так и закрытый ключ представляют собой некую кодовую последовательность. Публичный ключ компании может быть опубликован на ее сервере, откуда каждый желающий может его получить. Если клиент хочет сделать фирме заказ, он возьмет ее публичный ключ и с его помощью зашифрует свое сообщение о заказе и данные о своей кредитной карте. После шифрования это сообщение может прочесть только владелец закрытого ключа. Никто из участников цепочки, по которой пересылается информация, не в состоянии это сделать. Даже сам отправитель не может прочитать собственное сообщение, хотя ему хорошо известно содержание. Лишь получатель сможет прочесть сообщение, поскольку только у него есть закрытый ключ, дополняющий использованный публичный ключ.
Если фирме надо будет отправить клиенту квитанцию о том, что заказ принят к исполнению, она закодирует ее своим закрытым ключом. Клиент сможет прочитать квитанцию, воспользовавшись имеющимся у него публичным ключом данной фирмы. Он может быть уверен, что квитанцию ему отправила именно эта фирма, и никто иной, поскольку никто иной доступа к закрытому ключу фирмы не имеет.
Асимметричное шифрование
Асимметричное шифрование — это метод шифрования данных, предполагающий использование двух ключей — открытого и закрытого. Открытый (публичный) ключ применяется для шифрования информации и может передаваться по незащищенным каналам. Закрытый (приватный) ключ применяется для расшифровки данных, зашифрованных открытым ключом. Открытый и закрытый ключи — это очень большие числа, связанные друг с другом определенной функцией, но так, что, зная одно, крайне сложно вычислить второе.
Асимметричное шифрование используется для защиты информации при ее передаче, также на его принципах построена работа электронных подписей.
Принцип действия асимметричного шифрования
Схема передачи данных между двумя субъектами (А и Б) с использованием открытого ключа выглядит следующим образом:
В такой схеме перехват любых данных, передаваемых по незащищенным каналам, не имеет смысла, поскольку восстановить исходную информацию возможно только при помощи закрытого ключа, известного лишь получателю и не требующего передачи.
Применение асимметричных алгоритмов
Асимметричное шифрование решает главную проблему симметричного метода, при котором для кодирования и восстановления данных используется один и тот же ключ. Если передавать этот ключ по незащищенным каналам, его могут перехватить и получить доступ к зашифрованным данным. С другой стороны, асимметричные алгоритмы гораздо медленнее симметричных, поэтому во многих криптосистемах применяются и те и другие.
Например, стандарты SSL и TLS используют асимметричный алгоритм на стадии установки соединения (рукопожатия): с его помощью кодируют и передают ключ от симметричного шифра, которым и пользуются в ходе дальнейшей передачи данных.
Также асимметричные алгоритмы применяются для создания электронных подписей для подтверждения авторства и (или) целостности данных. При этом подпись генерируется с помощью закрытого ключа, а проверяется с помощью открытого.
Асимметричные алгоритмы
Наиболее распространенные алгоритмы асимметричного шифрования:
Надежность асимметричного шифрования
Теоретически приватный ключ от асимметричного шифра можно вычислить, зная публичный ключ и механизм, лежащий в основе алгоритма шифрования (последнее — открытая информация). Надежными считаются шифры, для которых это нецелесообразно с практической точки зрения. Так, на взлом шифра, выполненного с помощью алгоритма RSA с ключом длиной 768 бит на компьютере с одноядерным процессором AMD Opteron с частотой 2,2 ГГц, бывшем в ходу в середине 2000-х, ушло бы 2000 лет.
При этом фактическая надежность шифрования зависит в основном от длины ключа и сложности решения задачи, лежащей в основе алгоритма шифрования, для существующих технологий. Поскольку производительность вычислительных машин постоянно растет, длину ключей необходимо время от времени увеличивать. Так, в 1977-м (год публикации алгоритма RSA) невозможной с практической точки зрения считалась расшифровка сообщения, закодированного с помощью ключа длиной 426 бит, а сейчас для шифрования этим методом используются ключи от 1024 до 4096 бит, причем первые уже переходят в категорию ненадежных.
Что касается эффективности поиска ключа, то она незначительно меняется с течением времени, но может скачкообразно увеличиться с появлением кардинально новых технологий (например, квантовых компьютеров). В этом случае может потребоваться поиск альтернативных подходов к шифрованию.
Публикации на схожие темы
Сквозное шифрование: что это и зачем оно нужно вам
Квантовые компьютеры и криптография для чайников
Квантовые компьютеры — для «чайников»
Эволюция шифровальщика JSWorm
Программы-вымогатели: пара хороших новостей
Дорога к «интернету вещей»: преимущества и риски смарт-езды