[Эпизод 1] — Простое начало шифрования

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

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

Это чрезвычайно широкая область исследования, которая включает в себя много математики. Существует множество типов шифрования: ROT13, Lorenz, Rail Fence, Vigenere. Самый простой способ войти в этот мир — начать с основ. Думайте как «Hello World» мира криптографии. Простая для понимания криптограмма — шифр Цезаря.

Шифр Цезаря

Давайте начнем с понимания криптографии, которая была создана более 2000 тысяч лет назад. Он работает, заменяя каждую букву сообщения новой буквой в алфавите в соответствии с порядком смены. Например, давайте закодируем сообщение «Hello World», используя шифр Цезаря со сдвигом 2. Исходное сообщение:

Hello World

Алфавит соответствует:

‘A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z.’

Поскольку мы используем сдвиг в 2 пробела, сообщение выглядит так:

Jgnnq Yqtnf

То есть сдвигаем алфавит на 2 позиции букв. Что было H -> J, E -> g и так далее.

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

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

Питокрипт

Я сделал пакет Python под названием pythocrypt, чрезвычайно легкий пакет, который содержит некоторые из основных алгоритмов шифрования, используемых в учебных целях. Он по-прежнему содержит несколько модулей, но если вы хотите внести свой вклад, не стесняйтесь загружать запрос на слияние :D.

Я кратко покажу вам, как использовать пакет для кодирования или декодирования с помощью шифра Цезаря.

Во-первых, давайте установим пакет:

pip install pythocrypt

Теперь пример кода для шифрования сообщения, которое мы прокомментировали выше:

from pythocrypt import caesar
message = "Hello World"
message_encrypted = caesar.encrypt(message)  # Jgnnq Yqtnf

Мы также можем изменить сдвиг, как мы хотим, выполнив:

from pythocrypt import caesar
message = "Hello World"
message_encrypted = caesar.encrypt(message, shift=10)

И, наконец, мы также можем выполнить брутфорс по некоторым параметрам:

from pythocrypt import caesar
message = "Jgnnq Yqtnf"
message_encrypted = caesar.brute_force_decryption(
  message,
  initial_shift=1,
  final_shift=23,
  key='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
)

Заключение

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