Криптография: симметричное и асимметричное шифрование

Классические шифры, AES и RSA, хеш-функции, электронная подпись и обмен ключами — база для курсовых по информационной безопасности.

Криптография решает четыре задачи: конфиденциальность (никто не прочитает), целостность (никто не изменит незаметно), аутентичность (отправитель тот, за кого себя выдаёт) и неотказуемость (нельзя отрицать авторство). Разные механизмы закрывают разные задачи.

Классические шифры — с них начинают курсовые

ШифрПринципСтойкость
ЦезаряСдвиг алфавита на k позиций25 вариантов — перебор мгновенный
ВиженераСдвиг по ключевому словуЛомается анализом длины ключа (метод Касиски)
ВернамаXOR со случайным ключом длиной с текстАбсолютно стойкий при одноразовом ключе
ПерестановкиМеняется порядок символовЧастотный анализ работает, буквы те же
def caesar(text: str, k: int) -> str:
    res = []
    for ch in text:
        if 'а' <= ch.lower() <= 'я':
            base = ord('а') if ch.islower() else ord('А')
            res.append(chr((ord(ch) - base + k) % 32 + base))
        else:
            res.append(ch)
    return ''.join(res)

print(caesar('привет', 3))        # тулезх
print(caesar(caesar('привет', 3), -3))  # привет

Симметричное шифрование

Один ключ и для шифрования, и для расшифрования. Быстрое, подходит для больших объёмов. Главная проблема — как передать ключ по незащищённому каналу.

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

Асимметричное шифрование

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

RSA:
1. Выбрать простые p и q, вычислить n = p·q
2. φ(n) = (p−1)(q−1)
3. Открытая экспонента e: 1 < e < φ(n), НОД(e, φ(n)) = 1
4. Закрытая d: e·d ≡ 1 (mod φ(n))

Шифрование:    c = m^e mod n
Расшифрование: m = c^d mod n

Стойкость держится на сложности разложения n на множители

Учебный пример: p=11, q=13 → n=143, φ=120, возьмём e=7, тогда d=103. Сообщение m=9: c = 9⁷ mod 143 = 48, обратно 48¹⁰³ mod 143 = 9.

Гибридная схема — как работает на практике

  1. Генерируется случайный сеансовый ключ для симметричного шифра.
  2. Данные шифруются этим ключом через AES — быстро.
  3. Сам сеансовый ключ шифруется открытым ключом получателя через RSA — он короткий, медлительность неважна.
  4. Получатель расшифровывает сеансовый ключ своим закрытым ключом, затем им расшифровывает данные.

Именно так устроен TLS, на котором работает HTTPS. Это ответ на частый вопрос «что быстрее и что использовать» — используют оба, каждый по своему назначению.

Хеш-функции

Свойства криптографической хеш-функции:
• необратимость — по хешу нельзя восстановить исходные данные
• стойкость к коллизиям — трудно найти два разных сообщения с одним хешем
• лавинный эффект — изменение одного бита меняет примерно половину бит хеша

Актуальные: SHA-256, SHA-3, ГОСТ Р 34.11-2012 «Стрибог»
Устарели и небезопасны: MD5, SHA-1

Пароли хранят не хешем напрямую, а с солью и медленной функцией — bcrypt, scrypt, Argon2. Быстрый SHA-256 без соли перебирается по словарю за минуты.

Электронная подпись

Подпись — обратное применение асимметрии: хеш документа шифруется закрытым ключом отправителя, проверить может любой открытым. Это даёт целостность, аутентичность и неотказуемость, но не конфиденциальность — документ остаётся читаемым.

  1. Отправитель считает хеш документа.
  2. Шифрует хеш своим закрытым ключом — это и есть подпись.
  3. Получатель расшифровывает подпись открытым ключом отправителя и получает хеш.
  4. Считает хеш полученного документа сам и сравнивает. Совпало — документ не изменён и подписан владельцем ключа.

Частые вопросы

Почему нельзя просто зашифровать всё через RSA?

Он на два-три порядка медленнее AES и ограничен длиной сообщения размером ключа. Поэтому RSA шифрует только ключ, а данные — симметричный алгоритм.

Что такое соль и зачем она нужна?

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

Читайте также

Сделаем работу по этой теме

Опишите задачу — ответим в течение 15 минут в личных сообщениях ВКонтакте, назовём срок и цену. Предоплаты за оценку нет.

  • Оценка заявки бесплатно
  • Правки по замечаниям преподавателя
  • Работы по всем техническим и IT-дисциплинам

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