У многих современных мессенджеров есть шифрование в режиме end-to-end. Это значит, что сообщения шифруются на одном устройстве и через сервер отправляются другому человеку, который может их расшифровать. Кроме отправителя и получателя прочитать такое сообщение никто не может, потому что они используют стойкое симметричное шифрование. Проще говоря, сообщение шифруется неким ключом и расшифровывается таким же ключом.
У этого способа есть один минус — нужно как-то заранее обменяться общим ключом. Для решения этой проблемы используют асимметричное шифрование. Оно позволяет выработать общий ключ и передать его в зашифрованном виде каждой стороне даже в условиях прослушивания канала передачи.
Вот это и разберём.
Слегка упрощённо. В статье мы опустили протоколы аутентификации и проверки подписей и отпечатков открытых ключей. Ещё здесь нет постоянной смены общего ключа и его генерации по запросу. Если вы занимаетесь криптографией, можете не читать — ничего нового вы для себя не узнаете.
КАДРЮ ПЕДОФАЙЛОВ В ОДНОКЛАССНИКАХ 4
Протокол Диффи-Хеллмана (математика)
Главная задача мессенджера при первом обращении — получить общий секретный ключ. Это можно сделать с помощью протокола Диффи — Хеллмана.
Принцип работы этого протокола Уитфилд Диффи и Мартин Хеллман опубликовали в 1976 году, и с тех пор он лежит в основе всех подобных алгоритмов получения общего секретного ключа.
Сейчас покажем этот алгоритм с помощью математики, а потом приведём аналогию с цветом.
Допустим, Алла хочет тайно переписываться с Борисом, но они могут пользоваться только незащищённым каналом связи. Это значит, что всё, что они отправляют, может перехватить злоумышленник и попытаться расшифровать. В таких условиях они не могут просто послать друг другу секретный ключ, потому что его сразу узнает тот, кто за ними следит.
В этом случае Алла говорит Борису: придумай себе большое простое число и никому его не говори, а я придумаю пока своё. Какие числа выберут Алла и Борис — никто не знает, потому что они их не пересылают друг другу, а просто договариваются о выборе. Это будет для каждого свой секретный ключ, который они используют для асимметричного шифрования, a — для Аллы и b — для Бориса.
Когда оба выбрали себе по ключу, Алла говорит: Борис, вот два простых числа, P и G, работать будем с ними. В этот момент тот, кто прослушивает канал, может получить себе эти числа, но это ему ничего не даст. Почему не даст — увидите дальше.
Когда Борис получил эти числа, Алла говорит Борису:
- Возведи G в степень своего секретного числа b
- Найди остаток от деления этого результата по модулю P
- То, что получилось, пересылай мне.
Если записать это языком математики, то у Бориса получается такое:
G b mod P = B ← вот это число B Борис и отправляет Алле.
Алла одновременно с Борисом делает то же самое со своим секретным числом и отправляет результат Борису:
G a mod P = A ← вот это число A Алла отправляет Борису.
КАДРЮ ПАПИКОВ В ОДНОКЛАССНИКАХ 9
Деление по модулю
Остаток от деления по модулю означает следующее: мы делим одно число на другое с остатком. Целую часть выкидываем, а остаток — это то, что нам нужно. Обозначается такое деление словом mod.
Например, 12 mod 5 = 2, потому что 12 = 2×5 + 2
13 mod 4 = 1, потому что 13 = 4×3 + 1
10 mod 2 = 0, потому что 10 = 2×5 + 0
В криптографии деление по модулю применяется часто, потому что зная два исходных числа найти остаток очень легко, а вычислить первое число, зная второе и остаток — невозможно.
Если X mod 5 = 1, то X может быть равен 6, 11, 16, 21 и так далее — остаток от деления каждого из этих чисел по модулю 5 равен одному. Поэтому пересылать остаток от деления по модулю можно, а первое число — нет.
Когда Алла и Борис получили друг от друга их остатки от деления по модулю, они применяют ту же самую операцию к этому остатку. Даже если кто-то перехватит эти остатки от деления, он не восстановит по ним секретные ключи Аллы и Бориса.
В итоге оба собеседника получают одно общее число, которое можно использовать как общий ключ для симметричного шифрования. Как у них получается одинаковое число — следите за математической магией:
- Алла берёт результат Бориса B и делает так: B a mod P = K.
- Но B a mod P = G ba mod P → запомним это.
- Борис берёт результат Аллы А и делает так: A b mod P = K.
- Но A b mod P = G ab mod P → запомним и это.
- От перестановки множителей результат не меняется, а в обоих случаях мы возводим G в степень ab, поэтому у Аллы и Бориса получается в итоге одно и то же число. Это и есть их общий ключ для симметричного шифрования, которым они теперь могут пользоваться.
Штука в том, что без секретных ключей Аллы и Бориса кто-то другой не сможет вычислить этот ключ, даже если перехватит все сообщения с промежуточными результатами. А всё потому, что никто из них свои секретные ключи никуда не передавал.
Пример с цветами
Если математика показалась слишком сложной, вот пример с красками. Предположим, что мы можем легко перемешивать краски между собой, но при этом по готовой краске нельзя точно определить, какие именно оттенки использовались при смешивании. Тогда вся схема шифрования будет выглядеть так:

Этот алгоритм гарантирует защиту от взлома и тайну переписки?
Нет, сам алгоритм нужен только для создания пары ключей. Если кто-то посередине будет всё подслушивать, он может перехватить все промежуточные результаты и подменить их своими. В итоге Алла и Борис установят промежуточную секретную связь через злоумышленника, который будет читать всю их переписку, а Алла и Борис ничего не заметят.
И что делают, чтобы такого не было?
Используют алгоритмы аутентификации и проверки цифровой подписи. Как это работает — отдельная сложная история. Если коротко: есть специальные алгоритмы, которые позволяют проверить, действительно ли этот ключ отправила Алла, а не кто-то другой вместо неё.
Так переписка в мессенджерах безопасна или нет?
Зависит от настроек сервера. Если сервер действует честно и просто переправляет сообщения, то, скорее всего, да. Если же сервер вклинивается и становится промежуточным звеном, как в примере выше, то кто угодно на сервере может читать вашу переписку.
Проще относиться к любой переписке как к публичной, а не полагаться на алгоритмы. Хотите что-то держать в секрете — говорите это лично или не говорите совсем.
А как же Телеграм?
В Телеграме полное end-to-end-шифрование реализовано только в секретных чатах и при звонках. Вся остальная переписка тоже защищена, но не настолько сильно. Но всегда есть вероятность, что даже серверы Телеграма тайно вклиниваются в переписку и читают сообщения. Хотите полной приватности — стройте хижину в тайге.
Источник: thecode.media
ФОЦПМРЬОЯКЦА: разбираемся в шифрах
Тарабарщина, абракадабра, затейное письмо — зашифрованные сообщения называли по-разному. Это был надежный способ передавать тайную информацию. Раньше умение дешифровать загадочные письма приравнивалось к сверхспособности, ведь нужно было обладать логическим, критическим и креативным мышлением. Вместе с экспертом Музея криптографии, который откроется в декабре этого года, рассказываем о популярных шифрах, а также о том, как их разгадать. Можете проверить себя!

Анастасия Ашаева
Кандидат исторических наук, старший научный сотрудник Музея криптографии

Атбаш
Этот шифр считается одним из самых древних в истории криптографии. Он появился примерно две с половиной тысячи лет назад на Ближнем Востоке. Чаще всего этот шифр можно встретить в религиозных текстах (кумранские рукописи, Ветхий Завет), где с его помощью скрывали, например, названия городов или имена собственные. Принцип шифрования очень прост: нужно написать алфавит в обратном порядке, так, чтобы под буквой «А» оказалась буква «Я», под буквой «Б» — буква «Ю» и так далее, а потом каждую букву сообщения, которое следует зашифровать, заменить на букву из алфавита, написанного в обратном порядке.

Такой незатейливый, но действенный способ шифрования и есть атбаш, то есть «алеф», «тав», «бет» и «шин» — первая, последняя, вторая и предпоследняя буквы еврейского алфавита.

Интересный факт: самое известное упоминание шифра атбаш — в романе Дэна Брауна «Код да Винчи», где главные герои дешифруют сообщение, зашифрованное с помощью этого шифра, что позволяет им приблизиться к разгадке тайны святого Грааля.
Проверьте себя: расшифруйте слово «ФОЦПМРЬОЯКЦА» . Что оно означает? (Ответы — в конце статьи.)
- Сокровище
- Криптография
- Крестоносец

Квадрат Полибия
Древние греки придумали если не все, то очень многое, в том числе и слово «криптография» (с древнегреческого «скрытый» + «пишу»). Среди множества способов передать сообщение тайно особо выделяется способ, названный именем выдающегося древнегреческого историка II в. до н. э. Полибия, который описал его в своем труде «Всеобщая история» . Для шифрования используется квадрат 6×6, в который вписываются все буквы алфавита. Каждый вертикальный и горизонтальный столбец получает свой порядковый номер, чтобы буквы, вписанные в ячейки квадрата, имели свои координаты (например, буква «А» — 11, «Б» — 12 и т. д.).

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

Интересный факт: изначально квадрат Полибия выполнял две функции: с его помощью можно было как зашифровать сообщение, так и передать его на дальнее расстояние посредством оптического телеграфа. Делалось это при помощи группы факелов: сначала поднимались факелы слева, количество которых указывало номер строки, а потом — факелы справа, указывающие номер столбца. Для получения и расшифрования такого сообщения адресату нужно было иметь точно такой же квадрат, а также зорко следить за количеством поднятых факелов.
Проверьте себя: «Телеграфируем» фразу «ОЧШОУеЗЗОУК» (34 51 52 34 43 21 23 23 34 43 26)
- Истина в вине
- Золотое руно
- Кануть в Лету

Шифр Цезаря
Известный шифр Античности получил имя самого известного политического деятеля и полководца Древнего мира неспроста. Юлий Цезарь мог одновременно не только писать, читать, диктовать и слушать, но и шифровать. Своим потомкам в наследство он оставил великую Римскую империю и шифр, которым, по свидетельствам античных авторов, императоры пользовались почти до самого падения империи.

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

Интересный факт: шифр Цезаря лег в основу многих более сложных шифров и использовался вплоть до начала XX века, когда были изобретены первые шифровальные машины. И по сей день этот шифр считается наиболее важным и значимым в истории криптографии.
Проверьте себя: «ТУЛЫЗОЦЕЛЖЗОТСДЗЖЛО» — так выглядит одно из известных выражений, приписываемых Юлию Цезарю, зашифрованное при помощи шифра Цезаря со сдвигом на три позиции вправо. Попробуй расшифровать!
- И ты, Брут
- Опыт всему учитель
- Пришел, увидел, победил

Русская литорея
В средневековой Руси тоже любили шифровать. Зачастую шифры использовались в качестве украшения в литературных произведениях. Авторы шифровали свое имя и даже целые главы текста, используя тайнопись как литературный прием, который позволял выделить такой труд из множества других. Наиболее распространенным шифром в это время в России была литорея (от латинского слова littera — «буква»). Шифр предполагал замену согласных букв на согласные буквы по определенному правилу.

Под первыми десятью согласными буквами (за исключением «Й»), идущими по порядку, записывались другие десять согласных букв, но в порядке, противоположном тому, который использовался в верхней строке. Таким образом, под буквой «Б» оказывалась буква «Щ», а под буквой «В» — буква «Ш» и т. д.

Интересный факт: известное всем слово «тарабарщина» в веках означало не что иное, как шифр литорея, и употреблялось в качестве синонима. Одна из историй возникновения этого слова гласит, что для сохранения тайны передаваемого сообщения его зашифровывали, но не писали на бумаге, а давали гонцам заучивать наизусть. Гонцы доставляли сообщение адресату в виде устного послания, а так как произнести зашифрованный текст и понять его порой было непросто, он и получил название «тарабарщина».
Проверьте себя: «ЩЕФ КМУЦА ПЕ ШЫСОШИВЬ И МЫЩТУ ИФ НМУЦА» , гласит одна из русских поговорок. Что это за поговорка?
- Век живи — век учись
- Без труда не выловишь и рыбку из пруда
- Не плюй в колодец, пригодится воды напиться

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

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

Интересный факт: Несмотря на то что шифр носит имя Виженера, сам Виженер его не изобретал. Шифр был придуман в 1466 году итальянским гуманистом, ученым и архитектором Леоном Баттистой Альберти. Вклад в его развитие внесли современники Альберти, среди которых — немецкий гуманист и аббат Иоганн Тритемий и итальянский ученый Джованни Баттиста Беллазо. Виженер же просто описал все известные ему способы шифрования, а в XIX веке за шифром прочно закрепилось имя Виженера, под которым он известен и по сей день.
Проверьте себя: «ЧФЩЪОВН ЙЪЯФОН» — так бы мог выглядеть призыв к атаке, зашифрованный при помощи таблицы Виженера с использованием ключевого слова «мел».
- Пушки доставлены
- Конница готова
- Герцог в западне
Источник: theoryandpractice.ru
10 популярных кодов и шифров
Коды и шифры — это не одно и то же: в коде каждое слово заменяется другим, в то время как в шифре заменяются все символы сообщения.
В данной статье мы рассмотрим наиболее популярные виды шифров, методы шифрования, а следующим шагом будет изучение основ криптографии.
- Стандартные шифры
- Цифровые шифры
- Как расшифровать код или шифр?
Стандартные шифры
ROT1
Этот шифр известен многим детям. Ключ прост: каждая буква заменяется на следующую за ней в алфавите. Так, А заменяется на Б, Б — на В, и т. д. Фраза «Уйрйшоьк Рспдсбннйту» — это «Типичный Программист».
Попробуйте расшифровать сообщение:
Лбл еёмб, рспдсбннйту?
Поняли, как работает это шифрование? Напишите в комментариях, что у вас получилось.
Шифр транспонирования
В транспозиционном шифре буквы переставляются по заранее определённому правилу. Например, если каждое слово пишется задом наперед, то из hello world получается dlrow olleh. Другой пример — менять местами каждые две буквы. Таким образом, предыдущее сообщение станет eh ll wo ro dl.
Эксперт отдела сопровождения проектов ИБ Иннотех , , можно удалённо , По итогам собеседования
Ещё можно использовать столбчатый шифр транспонирования, в котором каждый символ написан горизонтально с заданной шириной алфавита, а шифр создаётся из символов по вертикали. Пример:
Из этого способа мы получим шифр holewdlo lr. А вот столбчатая транспозиция, реализованная программно:
def split_len(seq, length): return [seq[i:i + length] for i in range(0, len(seq), length)] def encode(key, plaintext): order = < int(val): num for num, val in enumerate(key) >ciphertext = » for index in sorted(order.keys()): for part in split_len(plaintext, len(key)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode(‘3214’, ‘HELLO’))
Азбука Морзе

В азбуке Морзе каждая буква алфавита, цифры и наиболее важные знаки препинания имеют свой код, состоящий из череды коротких и длинных сигналов:
Чаще всего это шифрование передаётся световыми или звуковыми сигналами.
Сможете расшифровать сообщение, используя картинку?
Шифр Цезаря
Это не один шифр, а целых 26, использующих один принцип. Так, ROT1 — лишь один из вариантов шифра Цезаря. Получателю нужно просто сообщить, какой шаг использовался при шифровании: если ROT2, тогда А заменяется на В, Б на Г и т. д.
А здесь использован шифр Цезаря с шагом 5:
Иербэй йюк ёурбэй нтчйхйцтаъ энщхуж
Моноалфавитная замена
Коды и шифры также делятся на подгруппы. Например, ROT1, азбука Морзе, шифр Цезаря относятся к моноалфавитной замене: каждая буква заменяется на одну и только одну букву или символ. Такие шифры очень легко расшифровываются с помощью частотного анализа.
Например, наиболее часто встречающаяся буква в английском алфавите — «E». Таким образом, в тексте, зашифрованном моноалфавитным шрифтом, наиболее часто встречающейся буквой будет буква, соответствующая «E». Вторая наиболее часто встречающаяся буква — это «T», а третья — «А».
Однако этот принцип работает только для длинных сообщений. Короткие просто не содержат в себе достаточно слов.
Шифр Виженера

Представим, что есть таблица по типу той, что на картинке, и ключевое слово «CHAIR». Шифр Виженера использует принцип шифра Цезаря, только каждая буква меняется в соответствии с кодовым словом.
В нашем случае первая буква послания будет зашифрована согласно шифровальному алфавиту для первой буквы кодового слова «С», вторая буква — для «H», etc. Если послание длиннее кодового слова, то для (k*n+1)-ой буквы, где n — длина кодового слова, вновь будет использован алфавит для первой буквы кодового слова.
Чтобы расшифровать шифр Виженера, для начала угадывают длину кодового слова и применяют частотный анализ к каждой n-ной букве послания.
Попробуйте расшифровать эту фразу самостоятельно:
зюм иэлруй южжуглёнъ
Подсказка длина кодового слова — 4.
Шифр Энигмы
Энигма — это машина, которая использовалась нацистами во времена Второй Мировой для шифрования сообщений.
Есть несколько колёс и клавиатура. На экране оператору показывалась буква, которой шифровалась соответствующая буква на клавиатуре. То, какой будет зашифрованная буква, зависело от начальной конфигурации колес.
Существовало более ста триллионов возможных комбинаций колёс, и со временем набора текста колеса сдвигались сами, так что шифр менялся на протяжении всего сообщения.
Цифровые шифры
В отличие от шифровки текста алфавитом и символами, здесь используются цифры. Грубо говоря, шифр слова цифрами. Рассказываем о способах и о том, как расшифровать цифровой код.
Двоичный код
Текстовые данные вполне можно хранить и передавать в двоичном коде. В этом случае по таблице символов (чаще всего ASCII) каждое простое число из предыдущего шага сопоставляется с буквой: 01100001 = 97 = «a», 01100010 = 98 = «b», etc. При этом важно соблюдение регистра.
Расшифруйте следующее сообщение, в котором использована кириллица:
110100001001101011010000101111101101000010110100
Шифр A1Z26
Алфавит по цифрам. Это простая подстановка, где каждая буква заменена её порядковым номером в алфавите. Только нижний регистр.
Попробуйте определить, что здесь написано:
15-6-2-16-13-30-26-16-11 17-18-10-14-6-18
Шифрование публичным ключом

Алгоритм шифрования, применяющийся сегодня буквально во всех компьютерных системах. Есть два ключа: открытый и секретный. Открытый ключ — это большое число, имеющее только два делителя, помимо единицы и самого себя. Эти два делителя являются секретным ключом, и при перемножении дают публичный ключ. Например, публичный ключ — это 1961, а секретный — 37 и 53.
Открытый ключ используется, чтобы зашифровать текст сообщения, а секретный — чтобы расшифровать текст.
Как-то RSA выделила 1000 $ в качестве приза тому, кто найдет два пятидесятизначных делителя числа:
1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139

Почувствуйте себя детективом: сможете разгадать эти 10 шифров и кодов?
Как расшифровать код или шифр?
Для расшифровки шифров онлайн применяются специальные сервисы. Это может быть расшифровка цифр в буквы и наоборот, расшифровка кода и многое другое. Выбор такого инструмента зависит от того, что за код предстоит расшифровать. Примеры шифраторов, с которыми вы подробнее узнаете, как зашифровать слово, и дешифраторов:
- Азбука Морзе
- RSA (криптографический алгоритм с открытым ключом)
- Двоичный код
- Другие онлайн-дешифраторы
Источник: tproger.ru