Pull to refresh

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

Reading time 7 min
Views 102K
Приветствую вас, хабравчане!

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

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

Нужно учитывать, что атаковать вас может не только человек. Это может делать, например, бот.
Каждый из нас подключен к интернет провайдеру. А на него, скорее всего, происходят атаки буквально каждый день. Замечали у себя на почте раздел «спам»? В каждом таком письме потенциально есть фишинговая атака. Это атака не персонально на вас. Это масштабная атака, ориентированная на широкий круг лиц. Мы потенциально жертвы.

Чаще всего их цель — деньги. Как они могут их получить?

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

Время дорого, и мы хотим тратить как можно меньше времени на вопросы, связанные с безопасностью.

И поэтому первое, что нужно сделать — это ответить для себя на несколько вопросов:

  • В каких файлах хранятся наиболее важные данные?
  • Какие аккаунты в соц сетях вы не можете потерять?
  • Что может причинить наибольший вред?
  • А что может ударить по вашей репутации?

Ну, например, кража ноутбука. Да, это больно и печально. Но как это может угрожать вам?
Это может быть потеря данных для входа в соц сети. Это может быть конфиденциальная информация, полученная во время работы. А может это личные фотографии.

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

Да, разумеется, в мире существует множество атак и защититься от всех просто невозможно.
Поэтому мы рассмотрим один из наиболее эффективных инструментов — шифрование.

Что такое шифрование?


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

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

Дешифрование — обратная операция. Преобразование нечитаемых данных в читаемые.

Окей, где это применяется? На самом деле во многих местах. Например, обращали внимание на протокол «https»? Именно за счет него ваши данные не может перехватить 3-й человек во время вашего лазания в интернете. Объясню подробнее. Вы заходите на сайт «www.google.com», делаете любой запрос. При этом все данные, которые необходимы для отображения выдачи результатов, передаются с помощью протокола «https». А значит, если какой-либо человек решит просмотреть данные о вашем трафике (атака Man In the Middle), то он увидит лишь то, что вы зашли на Google. В придачу он получит множество зашифрованных пакетов. То есть можно сказать, что он не получит ничего.

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

Алгоритм — это в каком-то смысле замок, который позволяет хранить ваши данные в тайне. За счет него происходит преобразование текста.

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

Хм, хорошо. Едем дальше. Слегка повысим напряжение.

Виды шифрования


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

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


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

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

Например, при смещении в 5 символов, символ, который стоит на первой позиции заменить на символ 6 позиции и так далее.

Наиболее стойким на данный момент считается алгоритм AES (Advanced Encryption Standard).
Стоит упомянуть еще один момент — мощность пароля. Мощность пароля измеряется в битах. Одним из наиболее распространенных решений является 128 или 256 бит. Это то количество бит, которое будет выделено для пароля. Так же это число означает количество паролей, которое вы можете получить при данном алгоритме шифрования. Но чем больше длина ключа, тем медленнее протекает процесс шифрования или дешифрования.

Но чаще всего используется асимметричное шифрование


И так, мы зашифровали письмо, но как его отправить нашему другу? Отправлять в соц. сетях или текстовым сообщением — не самая лучшая затея. Как и говорить его по телефону.

И это приводит нас к новому типу шифрования.

В ассиметричном шифровании используется 2 ключа — открытый и закрытый(тайный).
Открытый ключ для шифрования, закрытый — для дешифрования.

Какие алгоритмы позволяют пользоваться этой технологией?

Вот списочек:

  • Rivest—Shamir—Adleman (RSA) (наиболее распространенный)
  • Elliptic curve cryptosystem (ECC)
  • Diffie—Hellman (DH)
  • El Gamal

Плюсы ассиметричных алгоритмов:

  • можно свободно делиться открытым ключом и любой может отправить тебе тайное сообщение.

Минусы:

  • скорость шифрования/дешифрования.

Для продвинутых
Так как во мне есть жилка программиста, а также любовь к математике, то я просто не могу не рассказать о том, как все работает «под капотом»

Рассмотрим на примере алгоритма RSA.

Первое, что нам необходимо сделать — сгенерировать открытый и закрытый ключи. Последовательность действий примерно такая:

1) Мы выбираем два простых числа. Желательно, чтобы они были достаточно близкими

p = 19
s = 13

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.

Ну и с точки зрения программиста, мы можем использовать эту информацию следующим образом:

  1. Создать массив соответствий символу и его коду (например, ASCII код)
  2. Применить алгоритм для каждого символа, создавая массив преобразованных значений
  3. Перевести полученный массив обратно в строковый вид
  4. Profit!

Как можно использовать асимметричное шифрование для своих целей?

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

Среди всех найденных программ, наиболее удобной мне показалась gpg4usb.

Данная программа использует PGP шифрование. Почему я рекомендую использовать именно его?

Все просто. Этот тип шифрования до сих пор еще не удалось взломать. Никому. Так что пользуйтесь.

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

Первое, что необходимо сделать — скачать программу. Вы можете это сделать по ссылке:
ссылка.

Скажу сразу — эта программа кросс—платформенная. То есть вы можете использовать ее как на Windows, так и на Linux.

Второе — это создание пары ключей шифрования.

Это можно сделать, выполнив следующую последовательность действий:

1) Переходим в раздел «Менеджер ключей»

2) Выбираем в верхней панели «Ключ», затем «Генерировать ключ»

Должно выглядеть примерно так:



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

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

На главном экране присутствует текстовое поле — это наш плацдарм для создания сообщений. В правой боковой панели помечаем галочкой свой ключ.



Введя сообщение в поле, смело нажимаем в верхней панели «Зашифровать».

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



Дешифровка происходит аналогично, разве что вместо «Зашифровать» вы пользуетесь кнопкой «Расшифровать».

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

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



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

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



Готово, теперь у вас «на руках» открытый и закрытый ключи шифрования, которыми вы можете распоряжаться по своему усмотрению.

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

Первое, что нужно понять — нельзя обеспечить 100% безопасность, как и свести все риски к нулю. Нельзя получить 100% анонимность. Нельзя получить 100% безопасность (разве что не использовать телефон и ПК).

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

Мы должны использовать риск—ориентированный подход.

Риск = уязвимость * угрозы * последствия


Например, кража ноутбука. Что мы можем сделать? Зашифровать весь диск, добавить дополнительные этапы авторизации.

Для обеспечения качественной защиты нужно пройти несколько этапов:

  1. Выбираем
  2. Настраиваем
  3. Оцениваем. Проверяем, что диск зашифрован полностью
  4. Контролируем. Проверка обновлений систем безопасности
Tags:
Hubs:
+15
Comments 6
Comments Comments 6

Articles