Открытый текст, ключ и шифр

Прежде чем шифровать, договоримся о словах: что такое открытый текст, шифр-текст, ключ и алгоритм.

Словарь криптографа

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

Открытый текстИсходное читаемое сообщение (англ. plaintext).
Шифр-текстЗашифрованное, нечитаемое сообщение (англ. ciphertext).
ШифрованиеПревращение открытого текста в шифр-текст.
ДешифрованиеОбратное превращение — из шифр-текста в открытый.
КлючСекретный параметр, без которого расшифровать нельзя.
Алгоритм (шифр)Правило, по которому происходит шифрование.

Алгоритм и ключ — это разные вещи

Новички часто путают алгоритм и ключ. Разница важная: алгоритм — это общее правило (например, «сдвинуть буквы»), а ключ — конкретное число, которое задаёт детали (например, «сдвинуть на 3»). Один и тот же алгоритм с разными ключами даёт разные шифр-тексты.

Принцип Керкгоффса

Стойкость шифра должна зависеть только от секретности ключа, а не от секретности алгоритма.

Этот принцип сформулировал ещё в XIX веке голландец Огюст Керкгоффс. Звучит парадоксально: разве не безопаснее держать алгоритм в тайне? Оказывается, нет. Алгоритмы рано или поздно становятся известны, а вот ключ можно легко заменить. Поэтому современные алгоритмы (AES, RSA) открыты и опубликованы — их изучают тысячи учёных, и именно поэтому им доверяют.

Посмотрим на ключ в действии

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

def shift(text, key):
    result = ""
    for ch in text:
        result += chr(ord(ch) + key)
    return result

plaintext = "secret"
print("Ключ 1:", shift(plaintext, 1))
print("Ключ 5:", shift(plaintext, 5))
print("Ключ 10:", shift(plaintext, 10))

Вывод:

Ключ 1: tfdsfu
Ключ 5: xjhwjy
Ключ 10: }migk~

Алгоритм один и тот же — «прибавь ключ к коду буквы». Но каждый ключ даёт свой шифр-текст. Чтобы расшифровать, нужно знать именно тот ключ, которым шифровали.

Кто есть кто

В задачах по криптографии часто встречаются имена-персонажи. По традиции отправителя зовут Алиса, получателя — Боб, а злоумышленника, который пытается подслушать, — Ева (от англ. eavesdropper — подслушивающий). Мы тоже будем ими пользоваться.

Проверьте себя
1. Что утверждает принцип Керкгоффса?
AАлгоритм нужно держать в строжайшем секрете
BСтойкость шифра должна зависеть только от секретности ключа
CКлюч должен совпадать с алгоритмом
DЧем длиннее открытый текст, тем он безопаснее
2. Как называется зашифрованное, нечитаемое сообщение?
AОткрытый текст
BКлюч
CШифр-текст
DАлгоритм
Поддержать проект