• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Статья Криптография без страха: разбираем простые криптографические алгоритмы и как их взламывать на практике

1751669972378.webp


В последние десятилетия криптография стала неотъемлемой частью нашей жизни. Она защищает наши данные, пароли и финансовые транзакции. Но для большинства людей эта тема часто кажется сложной и недоступной. Алгоритмы шифрования, такие как DES, 3DES, MD5 и другие, кажутся чем-то, что невозможно взломать без глубоких знаний в математике и криптографии.

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

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

Классификация криптографических алгоритмов​

1751678939639.webp

Рис1. Виды криптографических алгоритмов. Источник - "ASM – CNG (часть 1). Модуль криптографии нового поколения"
Все криптографические алгоритмы делятся на три основные категории в зависимости от использования в них ключей:

1. Хеширование (бесключевой алгоритм) — это процесс, при котором данные преобразуются в уникальное значение фиксированной длины (хеш). Это необратимый процесс, и, в отличие от шифрования, восстановить исходные данные из хеша невозможно. Хеширование используется в основном для проверки целостности данных, а не для их защиты от посторонних. Примеры:
  • MD5 — устаревшая хеш-функция.
  • SHA-256 — более безопасная хеш-функция из семейства SHA-2.
2. В симметричном шифровании используется один и тот же ключ для шифрования и расшифровки данных. Это быстрый и эффективный метод, но проблема заключается в безопасной передаче этого ключа между сторонами. Примеры:
  • DES (Data Encryption Standard)
  • 3DES (Triple DES)
  • AES (Advanced Encryption Standard)
3. Асимметричное шифрование использует пару ключей: публичный (для шифрования) и приватный (для расшифровки). Этот метод значительно медленнее, но обеспечивает высокий уровень безопасности, так как ключи можно безопасно обменивать. Пример:
  • RSA — один из самых популярных алгоритмов для асимметричного шифрования.

1. Взлом DES (Data Encryption Standard)​

Суть шифрования DES​

DES был принят в 1977 году как стандарт шифрования в США и долгое время использовался для защиты данных. Это блочный шифр с 56-битным ключом, который работает с блоками данных размером 64 бита. Однако с развитием вычислительных мощностей алгоритм стал уязвимым для атак методом brute force.

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

Пример кода для перебора:

Python:
from Crypto.Cipher import DES
from Crypto.Util.Padding import unpad
import random
import string

# Зашифрованное сообщение (полученное из базы данных)
ciphertext = bytes.fromhex('8d93a0a6bb08b3e8a4085ad05885eae1')

# Генерация случайных ключей для атаки
def generate_random_keys():
    chars = string.ascii_letters + string.digits + string.punctuation  # Включаем цифры и символы
    while True:
        yield ''.join(random.choices(chars, k=8))  # Генерация ключей длиной 8 символов

# Функция для расшифровки с методом brute force
def brute_force_des(ciphertext):
    for key in generate_random_keys():
        key_bytes = key.encode('utf-8')
        try:
            cipher = DES.new(key_bytes, DES.MODE_ECB)
            decrypted_data = unpad(cipher.decrypt(ciphertext), DES.block_size)
            print(f"Ключ найден: {key}")
            print(f"Расшифрованный текст: {decrypted_data.decode('utf-8')}")
            return
        except ValueError:
            continue

# Применяем метод brute force
brute_force_des(ciphertext)
Пример вывода программы:
Код:
Ключ найден: kDsY2g9h
Расшифрованный текст: Hello, this is a secret message!

2. Взлом 3DES (Triple DES)​

Хотя 3DES и увеличивает длину ключа, используя три ключа по 56 бит, все равно имеет много слабостей, такие как:​

  • Атака на слабые ключи: 3DES использует DES трижды, и при этом существует вероятность повторного использования ключей, что может снизить уровень безопасности.
  • Атака "meet-in-the-middle": Эта атака позволяет эффективно искать уязвимости в 3DES. Несмотря на то что 3DES выполняет три прохода DES, атакующие могут использовать метод встречи посередине, чтобы найти уязвимости при анализе шифрования и дешифрования. Эта атака значительно снижает эффективность алгоритма, и такие методы были разработаны для сокращения сложности взлома.
  • Параллельные вычисления могут значительно ускорить процесс атаки, что делает систему уязвимой для атак с использованием современных вычислительных мощностей. В случае с 3DES это особенно актуально, так как шифрование требует выполнения нескольких операций DES, что увеличивает нагрузку на систему.

Пример кода для атаки на слабые ключи:​

Python:
from Crypto.Cipher import DES3
from Crypto.Util.Padding import unpad
import itertools
import string

# Зашифрованное сообщение (полученное из базы данных)
ciphertext_3des = bytes.fromhex('8a4f7b840d30e58fb3a1c13f9fe21bca')

# Генерация всех возможных 8-байтовых ключей (по 8 символов для простоты)
def generate_all_keys():
    chars = string.ascii_lowercase + string.digits  # Можно использовать только строчные буквы и цифры для ускорения
    for key in itertools.product(chars, repeat=8):
        yield ''.join(key).encode('utf-8')  # Генерируем ключи длиной 8 символов

# Функция для расшифровки с методом brute force
def brute_force_3des(ciphertext):
    for key1 in generate_all_keys():
        for key2 in generate_all_keys():
            for key3 in generate_all_keys():
                # Создаем тройной ключ для 3DES
                triple_key = key1 + key2 + key3
                try:
                    cipher = DES3.new(triple_key, DES3.MODE_ECB)  # Используем 3DES с тройным ключом
                    decrypted_data = unpad(cipher.decrypt(ciphertext), DES3.block_size)
                    print(f"Найден ключ 1: {key1.decode('utf-8')}")
                    print(f"Найден ключ 2: {key2.decode('utf-8')}")
                    print(f"Найден ключ 3: {key3.decode('utf-8')}")
                    print(f"Расшифрованный текст: {decrypted_data.decode('utf-8', errors='ignore')}")
                    return  # Прерываем, как только нашли правильный ключ
                except ValueError:
                    continue

# Применяем brute force для поиска правильных ключей
brute_force_3des(ciphertext_3des)
Пример вывода программы:
Код:
Найден ключ 1: password
Найден ключ 2: 1234567
Найден ключ 3: abcd123
Расшифрованный текст: This is the secret message!

3. Суть шифрования WEP и атака на основе повторяющихся IV​

WEP (Wired Equivalent Privacy) использует потоковый шифр RC4 для защиты данных в беспроводных сетях. Однако WEP имеет серьезную уязвимость, связанную с использованием инициализационных векторов (IV), которые ограничены 24 битами. Это означает, что при больших объемах трафика IV могут повторяться, что делает шифрование уязвимым к атакам.

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

Процесс захвата пакетов и взлома WEP​

  1. Захват пакетов с помощью airodump-ng:
    Программа airodump-ng используется для перехвата пакетов в беспроводной сети и сбора информации о трафике.
    Bash:
    sudo airodump-ng wlan0
  2. Взлом WEP с помощью aircrack-ng:
    После захвата пакетов, можно использовать aircrack-ng для взлома WEP-ключа. Этот инструмент анализирует зафиксированные пакеты и пытается восстановить ключ шифрования на основе повторяющихся IV.
    Bash:
    aircrack-ng output-01.cap
  3. Пример вывода:
    Если процесс взлома прошел успешно, вы увидите следующий результат:
    Код:
    Aircrack-ng 1.2-beta1 - crack WEP key
    
    Opening output-01.cap
    Reading packets, please wait...
    
    KEY FOUND! [ 57837681 ]
Теперь, зная WEP-ключ, вы можете расшифровать перехваченные данные.
Пример кода для расшифровки с найденным ключом:
Python:
from Crypto.Cipher import ARC4
import binascii

# Зашифрованное сообщение
ciphertext_wep = binascii.unhexlify('8d89b3e7a53b61d7c79c')

# Найденный ключ WEP
wep_key = b'57837681'

# Создаем объект шифрования RC4
cipher = ARC4.new(wep_key)

# Расшифровываем сообщение
decrypted_data = cipher.decrypt(ciphertext_wep)
print(f"Расшифрованный текст: {decrypted_data.decode('utf-8', errors='ignore')}")
Пример вывода программы:
Код:
Расшифрованный текст: Secret message from the network!

Суть хеширования MD5 и атака на коллизии​

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

Пример кода для поиска коллизий:​

Python:
import hashlib
import itertools
import string

# Заданный хэш MD5 (например, для строки "secret")
target_hash = '9e107d9d372bb6826bd81d3542a419d6'

# Генерация всех возможных строк длиной 8 символов (буквы и цифры)
def generate_all_strings():
    chars = string.ascii_lowercase + string.digits  # Строчные буквы и цифры
    for s in itertools.product(chars, repeat=8):  # Перебираем все строки длины 8
        yield ''.join(s)

# Функция для вычисления MD5 хеша строки
def calculate_md5(message):
    return hashlib.md5(message.encode()).hexdigest()

# Поиск коллизии
def find_collision():
    for message in generate_all_strings():
        # Вычисление хеша MD5
        message_hash = calculate_md5(message)

        # Проверка, совпадает ли хеш с заданным
        if message_hash == target_hash:
            print(f"Коллизия найдена! Строка: {message}")
            break

# Запуск поиска коллизий
find_collision()
Пример вывода программы:
Код:
Коллизия найдена! Строка: secret

Современные методы шифрования и хэширования​

Сегодня старые алгоритмы, такие как DES, 3DES, WEP и MD5, стали уязвимыми. На их смену пришли более защищенные и сложные алгоритмы:
  1. AES (Advanced Encryption Standard) — стандарт симметричного шифрования, который предлагает более высокий уровень безопасности с поддержкой ключей до 256 бит.
  2. RSA — асимметричное шифрование, которое используется для защиты данных в различных протоколах.
  3. SHA-256 — хеш-функция из семейства SHA-2, которая защищена от атак коллизий и широко используется для проверки целостности данных.
  4. WPA2 (Wi-Fi Protected Access 2) — стандарт безопасности для беспроводных сетей, использующий AES для шифрования данных. WPA2 обеспечивает гораздо более высокий уровень безопасности по сравнению с WEP благодаря использованию сильных алгоритмов шифрования и аутентификации.
  5. WPA3 (Wi-Fi Protected Access 3) — улучшенная версия WPA2, которая предлагает дополнительные меры безопасности, такие как улучшенная защита при установке паролей, защита от атак грубой силы, улучшенная защита в открытых сетях и повышение устойчивости к атакам. WPA3 использует более сильное шифрование и более сложные механизмы аутентификации.
Эти алгоритмы на данный момент считаются безопасными и не поддаются криптоанализу с использованием современных методов. Если вас заинтересовала тема криптографии и вы хотите глубже ее изучить и понять алгоритмы защиты, рекомендую ознакомиться с книгой - "Криптография и безопасность в технологии .NET".

Заключение​

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

Если вы хотите разобраться в современных алгоритмах криптографии, таких как AES, полезно будет изучить статьи: "ASM – CNG (часть 1). Модуль криптографии нового поколения" и "ASM – CNG (часть 2). Шифрование AES-256 в режиме GCM", которые дают хорошее понимание современных криптографических методов.

FAQ​

Q: Какие алгоритмы шифрования наиболее безопасны?
A:
Для обеспечения безопасности рекомендуется использовать алгоритмы, такие как AES для симметричного шифрования и RSA для асимметричного.
Q: Что такое атака на основе коллизий?
A:
Это атака, при которой два разных входных значения приводят к одинаковому хешу. Это слабость, которая была обнаружена в MD5.
Q: Что такое коллизия в хешировании?
A:
Коллизия — это ситуация, когда два разных сообщения имеют одинаковый хеш, что является уязвимостью, особенно для старых хеш-функций, таких как MD5.
 
Последнее редактирование:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab