Сплетни о Криптографии Часть 1 и 2

Сплетни о Криптографии Часть 1 и 2 - Gossip about Cryptography Parts 1 and 2

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

Одна из важных и основных техник шифрования – криптография.

Криптография – это технология, которая очень, очень распространена и используется повсеместно прямо сейчас, в любом программном обеспечении, например:

  • Маршрутизаторы, которые мы используем у себя дома.
  • WhatsApp, который мы используем для отправки и получения сообщений.
  • Любой сайт, который мы открываем по протоколу HTTPS.
  • И так далее…

Теперь, в то же время, криптография очень распространена, но она чрезвычайно сложна. Сложна в понимании, внедрении и даже в правильном использовании.

Необходимость криптографии

Чтобы на это ответить, давайте ответим на следующие вопросы:

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

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

Чтобы понять, как это работает, давайте начнем с древнего метода, известного как Шифр Цезаря.

Шифр Цезаря

Шифр Цезаря – это тип шифра замены, в котором каждая буква в открытом тексте сдвигается на определенное количество позиций вниз по алфавиту. Этот простой метод шифрования назван в честь Юлия Цезаря, который использовал его для шифрования сообщений, отправляемых своими чиновниками. Процесс шифрования прост: выбирается значение сдвига (также известное как ключ), и каждая буква открытого текста сдвигается на это число позиций вниз по алфавиту.

Например, при сдвиге на три буква A будет заменена на D, B будет заменена на E и так далее.

Открытый текст: Sahil

Сдвиг (ключ): 3

Шифрованный текст: Vdklo

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

Шифрованный текст: Vdklo

Сдвиг (ключ): -3

Открытый текст: Sahil

Важно отметить, что Шифр Цезаря очень легко взламывается и не должен использоваться для серьезного шифрования, так как его можно взломать простыми методами, такими как частотный анализ.

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

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

Вот пример таблицы Шифра Цезаря со значением сдвига (ключа) три:

И так далее…

С помощью шифра Цезаря кто-то легко может расшифровать этот шифротекст и дешифровать сообщения, зашифрованные с помощью этого алгоритма, определив шаблон; можно легко определить ключ. Это был просто пример, чтобы читатели ознакомились с концепциями криптографии и шифрования-дешифрования.

Как мы обсудили, шифр Цезаря менее безопасен; есть более надежный алгоритм, и его название – шифр Виженера.

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

Давайте начнем с того же примера для шифрования:

Открытый текст для шифрования – SendHelp

Ключ – BULGE

Шифрованный текст, который мы получим из следующей таблицы.

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

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

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

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

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

Теперь возникает еще один вопрос:

Когда мы шифруем один и тот же исходный текст с одним и тем же ключом, должно ли это приводить к одному и тому же шифрованному тексту?

Ну, ответ на этот вопрос – да/нет. Это зависит от конкретного случая использования и от того, насколько нам нужна безопасность.

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

Теперь это зависит от IV (вектора инициализации). Если мы передаем один и тот же IV при шифровании данных, то шифрованный текст будет одинаковым.

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

Теперь возникает вопрос, когда нам нужно конвергентное шифрование:

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

  1. Расшифровать все имена, хранящиеся в базе данных, загрузить их в память и выполнить поиск.
  2. Зашифровать имя, поступившее в качестве ввода для поиска, а затем выполнить поиск этого шифрованного текста в SQL-запросе.

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

До сих пор мы услышали о некоторых важных терминах, как:

  • Криптография
  • Алгоритм
  • Исходный текст
  • Ключ
  • Шифрованный текст
  • Симметричное шифрование
  • Конвергентное шифрование
  • Вектор инициализации

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

В следующих блогах мы поговорим о некоторых других вещах, таких как:

  • Хеширование
  • Асимметричные алгоритмы
  • Инфраструктура PKI
  • Шифрование конвертом
  • и многое другое

Следите за следующей частью…