Можете ли вы расшифровать, что здесь написано?

В августе 1977 разработчики алгоритма шифрования, на котором держится весь интернет, выложили этот код. И на его прочтение ушло больше 15 лет. Сегодня мы разберемся с ним, быстрее чем за 10 минут. Почему это интересно?

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

Но вопросов много. Что именно это означает и как оно работает? Как устроен HTTPS, протокол SSL и защита сообщений? И главное, причем здесь теорема Ферма?

Сегодня разберемся, как устроено шифрование и защита наших гаджетов?

Когда я учился в начальных классах, у нас с друзьями была одна очень важная миссия в жизни — передавать друг другу сообщения на уроках так, чтобы их не могли прочитать девчонки. Поэтому мы придумали простой шифр, в котором каждая буква соответствовала другой, зеркально отраженной в алфавите. Буква А превращалась в Я, Б — в Ю. Наверняка, многие баловались чем-то подобным.

Ключевые два понятия, которые нас тут интересуют это: сообщение и ключ. В качестве ключа, в данном случае, выступает таблица соответствия букв. Похожий подход, который использовали пару тысяч лет назад называют шифром Цезаря. Там вместо таблицы просто сдвигали буквы алфавита на несколько шагов вперед. Например, вместо A — была D, вместо B — E, и так далее. Сдвиг равен 3. В этом примере, сдвиг по сути тоже является ключом.

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

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

Мы добавим к первой букве d, порядковый номер в алфавите 4, порядковый номер первой буквы ключа «q», получим 4+17, 21. То есть, буква U. Затем ко второй букве сообщения R, номер 18, прибавляем W, номер 23. Получается 41. Но в латинском алфавите 26 букв, так что вычитаем 26. Получается 15, буква O. И так далее.

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

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

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

Для того, чтобы общение состоялось нам нужно сделать три вещи:

  1. Зашифровать сообщение,
  2. Передать,
  3. Расшифровать сообщение.

Так вот, в симметричных шифрах и шифровка и расшифровка делаются одним и тем же ключом.

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

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

Допустим, вы разведчик и можете спрятать такую книжку под камнем. Окей.

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

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

«Пóстаф»

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

Условные Злоумышленники, будь то грабители, пограничники или жена, при попадании вашего устройства в свои руки получит доступ к:

  • личным и рабочим перепискам;
  • чатам, в которых вы состоите;
  • каналы, на которые вы подписаны;
  • файлам, которые вы храните в папке “saved messages”.

Решить проблему пробовали многие. Например, в некоторых Android-смартфонах, в частности в Samsung, есть функция Скрытой папки. Но проблема в том, что любой может зайти в настройки и проверить, включена ли эта функция. Таким образом вы не сможете СКРЫТЬ, что вам есть что СКРЫВАТЬ. Понимаете, да? И подружка догадается, что где-то в вашем телефоне лежат нюдсы не от нее.

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

Что такое принцип «двойного дна» и как это работает?

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

 

Такую технологию для Telegram разработала компания «Пóстаф». К открытому коду Telegram они добавили возможность входить в разные профили в зависимости от пинкода. При этом никто кроме вас не будет знать о наличии других скрытых аккаунтов. Выглядит круто.

Кстати, ни один из существующих мессенджеров сегодня не использует подобную технологию. Сам продукт некоммерческий и будет абсолютно бесплатным для всех. Поэтому протестировать “двойное дно” можете прямо сейчас с помощью улучшенного клиента для телеграм — Postufgram. В качестве показательного примера можно протестировать версию приложения под iOS.

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

Поэтому они призывают поддержать их и оставлять хештег #ДуровДобавьДвойноеДно в своих социальных сетях, чтобы Павел добавил эту технологию в официальный клиент.
Подробнее о решении «Пóстаф»можно почитать о ссылке в описании. И это может быть интересно действительно многим! От Гонконга до Бреста ;)
В общем, приватность, безопасность, «Пóстаф»! Хештег #ДуровДобавьДвойноеДно

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

Для этого придумали асимметричное шифрование, как мы уже говорили. Чем оно отличается? Тут главное в том, что у каждого участника общения есть не один, а целых ДВА ключа: открытый, или public, и закрытый, private. И это настоящая магия.

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

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

Долгое время проблема не была решенной, пока трое ученых из Массачусетского университета не решили прибухнуть. И по пьяни они придумали алгоритм RSA, названный по именам создателей. В августе 1977 они опубликовали описание алгоритма, и предложили всем желающим расшифровать такую последовательность. За приз в 100 долларов.

В основе алгоритма лежат свойства простых чисел. И так называемая односторонняя функция. Что это?

Односторонняя функция — это такая, которую легко выполнить в одном направлении, но провернуть операцию обратно очень ресурсозатратно. Тут криптографам пригодились исследования математиков, в частности малая теорема Ферма и функция Эйлера, но не будем вдаваться в подробности.

Важно, что в данном случае такой функцией является произведение двух простых чисел, тех которые делятся только на себя и на единицу. Посчитать такое произведение нетрудно. А вот определить два единственных множителя, из которых оно получилось, очень сложно. Нужно делать бесконечно длинный перебор.

Например, умножить 11 на 17 можно даже в уме, будет 187, кажется. А сможете вы так же легко сказать, на что делится 91? М? Это 13 и 7.

Только в шифровании числа берутся очень большие числа: по 100-200 знаков. Непосредственно формула для шифровки в RSA алгоритме выглядит примерно так. Но вдаваться в подробности математики не будем.

M = m*e (mod(n))

А дальше происходит самое интересное. Приходит ваш браузер на сайт магазина, берет его открытый ключ, который доступен всем. Шифрует им свое сообщение «привет» и отправляет магазину. Магазин получает шифрограмму, расчехляет свой закрытый ключ, применяет хитрую формулу, и расшифровывает ваше сообщение. Потому что пара его открытого и закрытого ключа — это как Инь и Янь, помните.

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

Кстати, для расшифровки того первого сообщения потребовалась распределенная работа 1600 компьютеров по всему миру, по некоторым версиям, включая факс-машины. Оно было дешифровано спустя 17 лет после публикации, в 1994 году.

Была скрыта фраза «Волшебные слова — это брезгливый ягнятник», другой перевод: “Волшебные слова — это Застенчивая Скопа”.

Алгоритм RSA лег в основу большинства используемых сейчас протоколов и стандартов безопасности: от SSL и TSL, которые защищают наш HTTP, добавляя ему ту самую букву S до отечественных криптографических ГОСТов. Этот же принцип используется для цифровой подписи. И в end-to-end шифровании мессенджеров.

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

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

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