Как хакеры, мы часто сталкиваемся с трудностями криптографии и шифрования. Каждый инженер по кибербезопасности, который стоит своего карманного щита, понимает, что шифрование значительно усложняет задачу хакера/злоумышленника. В некоторых случаях оно может быть полезно хакеру, чтобы скрыть действия и сообщения.
Многие приложения и протоколы используют шифрование для обеспечения конфиденциальности и целостности данных. Чтобы взломать пароли и зашифрованные протоколы, такие как SSL и беспроводные сети, необходимо хотя бы на базовом уровне знать концепции и терминологию криптографии и шифрования.
Для многих начинающих хакеров все концепции и термины криптографии могут показаться немного сложными и непонятными. Начнём с того, что криптография — это наука и искусство сокрытия сообщений, обеспечивая их конфиденциальность, а затем их «раскрытия» так, чтобы их мог прочитать только получатель. По сути, можно сказать, что криптография — это наука о секретной передаче сообщений.
Этим кратким обзором для новичков я надеюсь развеять туман, окутывающий эту тему, и пролить немного света на криптографию. Я стремлюсь лишь к краткому и беглому обзору криптографии для начинающих хакеров, а не к трактату об алгоритмах и математике шифрования. Я постараюсь познакомить вас с основными терминами и концепциями, чтобы, читая о хешировании, взломе беспроводных сетей или паролей и упоминая технологии шифрования, вы имели некоторое представление о том, о чём идёт речь.
Не поймите меня неправильно, я не собираюсь делать из вас криптографа (на это уйдут годы), а просто хочу помочь новичку познакомиться с терминами и концепциями криптографии, чтобы помочь вам стать авторитетным хакером.
Я постараюсь описывать эти технологии максимально простым языком, но, как и для всего в IT, для криптографии и шифрования существует свой особый язык. Такие термины, как «шифр», «открытый текст», «шифротекст», «пространство ключей», «размер блока» и «коллизии», могут сделать изучение криптографии несколько запутанным и непонятным для новичков. Я буду использовать термин «коллизия», поскольку в простом английском языке нет другого слова, способного его заменить.
Давайте начнем с разбиения шифрования на несколько категорий.
Типы криптографии
Существует несколько способов классифицировать шифрование, но для наших целей я разбил их на четыре основные категории (я уверен, что криптографы не согласятся с этой системой классификации, но что ж, пусть будет так).
Несколько слов о размере ключа
В мире криптографии размер имеет значение! Как правило, чем больше ключ, тем надёжнее шифрование. Это означает, что AES с 256-битным ключом надёжнее AES со 128-битным ключом, и, вероятно, его сложнее взломать. В рамках одного и того же алгоритма шифрования , чем больше ключ, тем надёжнее шифрование.
Это не обязательно означает, что более крупные ключи обеспечивают более надёжное шифрование между алгоритмами шифрования. Стойкость шифрования зависит как от особенностей алгоритма, так и от размера ключа.
Симметричная криптография
Симметричная криптография предполагает использование одного и того же ключа у отправителя и получателя. Это наиболее распространённая форма криптографии. У вас есть пароль или «ключ», которым шифруется сообщение, а у меня — тот же пароль для его расшифровки. Никто другой не сможет прочитать наше сообщение или данные.
Симметричная криптография очень быстра, поэтому она хорошо подходит для приложений хранения больших объёмов данных или потоковой передачи. Недостатком симметричной криптографии является так называемый обмен ключами. Если обеим сторонам нужен один и тот же ключ, им необходимо использовать третий канал для обмена ключами, и в этом заключается уязвимость. Если два человека хотят зашифровать свою переписку, находясь на расстоянии 12 000 миль друг от друга, как они обменяются ключами? В таком случае обмен ключами чреват всеми проблемами конфиденциальности выбранного ими средства, будь то телефон, почта, электронная почта, личное общение и т. д. Обмен ключами может быть перехвачен, что поставит под сомнение конфиденциальность шифрования.
Вот некоторые из распространенных симметричных алгоритмов, с которыми вам следует ознакомиться:
Асимметричная криптография использует разные ключи на обоих концах канала связи. Асимметричная криптография очень медленная, примерно в 1000 раз медленнее симметричной, поэтому мы не хотим использовать её для массового шифрования или потоковой передачи данных. Однако она решает проблему обмена ключами. Поскольку нам не требуется один и тот же ключ на обоих концах канала связи, у нас нет проблемы обмена ключами.
Асимметричная криптография используется в основном в тех случаях, когда два неизвестных друг другу субъекта хотят обменяться небольшой информацией, например, ключом или другой идентифицирующей информацией, например, сертификатом. Она не применяется для массового или потокового шифрования из-за ограничений по скорости.
Вот некоторые из распространенных схем асимметричного шифрования, с которыми вам следует ознакомиться:
Хеши — это одностороннее шифрование. Сообщение или пароль зашифрованы таким образом, что их невозможно расшифровать или восстановить. Вы можете спросить: «Какая польза нам, если что-то будет зашифровано, а расшифровать его будет невозможно?» Хороший вопрос!
При шифровании сообщения создаётся «хеш», который становится уникальной, но не поддающейся расшифровке подписью исходного сообщения. Каждое сообщение шифруется таким образом, что создаётся уникальный хеш. Обычно эти хеши имеют фиксированную длину (хеш MD5 всегда состоит из 32 символов). Таким образом, злоумышленник не может расшифровать какую-либо информацию об исходном сообщении, исходя из длины хеша. Благодаря этому нам не нужно знать исходное сообщение, нам достаточно проверить, создаёт ли какой-либо текст тот же хеш, чтобы проверить его целостность (неизменность).
Именно поэтому хэши можно использовать для хранения паролей. Пароли хранятся в виде хэшей, и когда кто-то пытается войти в систему, система хэширует пароль и проверяет, совпадает ли сгенерированный хэш с сохранённым. Кроме того, хэши полезны для проверки целостности, например, при загрузке файлов или проверке системных файлов.
В мире шифрования и хеширования «коллизия» — это ситуация, когда два разных входных текста создают одинаковый хеш. Другими словами, хеш не уникален. Это может стать проблемой, если мы предполагаем, что все хеши уникальны, например, при обмене сертификатами в SSL. АНБ использовало это свойство коллизий во вредоносной программе Stuxnet, чтобы предоставить ей, по всей видимости, легитимный сертификат Microsoft. Алгоритмы хеширования, создающие коллизии, как можно догадаться, несовершенны и небезопасны.
Это хэши, с которыми вам следует ознакомиться.
Беспроводная криптография — любимая тема моих читателей, поскольку многие здесь пытаются взломать беспроводные точки доступа . Как вы можете догадаться, беспроводная криптография симметрична (для скорости), и, как и в любой симметричной криптографии, обмен ключами критически важен.
Многие приложения и протоколы используют шифрование для обеспечения конфиденциальности и целостности данных. Чтобы взломать пароли и зашифрованные протоколы, такие как SSL и беспроводные сети, необходимо хотя бы на базовом уровне знать концепции и терминологию криптографии и шифрования.
Для многих начинающих хакеров все концепции и термины криптографии могут показаться немного сложными и непонятными. Начнём с того, что криптография — это наука и искусство сокрытия сообщений, обеспечивая их конфиденциальность, а затем их «раскрытия» так, чтобы их мог прочитать только получатель. По сути, можно сказать, что криптография — это наука о секретной передаче сообщений.
Этим кратким обзором для новичков я надеюсь развеять туман, окутывающий эту тему, и пролить немного света на криптографию. Я стремлюсь лишь к краткому и беглому обзору криптографии для начинающих хакеров, а не к трактату об алгоритмах и математике шифрования. Я постараюсь познакомить вас с основными терминами и концепциями, чтобы, читая о хешировании, взломе беспроводных сетей или паролей и упоминая технологии шифрования, вы имели некоторое представление о том, о чём идёт речь.
Не поймите меня неправильно, я не собираюсь делать из вас криптографа (на это уйдут годы), а просто хочу помочь новичку познакомиться с терминами и концепциями криптографии, чтобы помочь вам стать авторитетным хакером.
Я постараюсь описывать эти технологии максимально простым языком, но, как и для всего в IT, для криптографии и шифрования существует свой особый язык. Такие термины, как «шифр», «открытый текст», «шифротекст», «пространство ключей», «размер блока» и «коллизии», могут сделать изучение криптографии несколько запутанным и непонятным для новичков. Я буду использовать термин «коллизия», поскольку в простом английском языке нет другого слова, способного его заменить.
Давайте начнем с разбиения шифрования на несколько категорий.
Типы криптографии
Существует несколько способов классифицировать шифрование, но для наших целей я разбил их на четыре основные категории (я уверен, что криптографы не согласятся с этой системой классификации, но что ж, пусть будет так).
- Симметричное шифрование
- Асимметричное шифрование
- Хэши
- Беспроводной
Несколько слов о размере ключа
В мире криптографии размер имеет значение! Как правило, чем больше ключ, тем надёжнее шифрование. Это означает, что AES с 256-битным ключом надёжнее AES со 128-битным ключом, и, вероятно, его сложнее взломать. В рамках одного и того же алгоритма шифрования , чем больше ключ, тем надёжнее шифрование.
Это не обязательно означает, что более крупные ключи обеспечивают более надёжное шифрование между алгоритмами шифрования. Стойкость шифрования зависит как от особенностей алгоритма, так и от размера ключа.
Симметричная криптография
Симметричная криптография предполагает использование одного и того же ключа у отправителя и получателя. Это наиболее распространённая форма криптографии. У вас есть пароль или «ключ», которым шифруется сообщение, а у меня — тот же пароль для его расшифровки. Никто другой не сможет прочитать наше сообщение или данные.
Симметричная криптография очень быстра, поэтому она хорошо подходит для приложений хранения больших объёмов данных или потоковой передачи. Недостатком симметричной криптографии является так называемый обмен ключами. Если обеим сторонам нужен один и тот же ключ, им необходимо использовать третий канал для обмена ключами, и в этом заключается уязвимость. Если два человека хотят зашифровать свою переписку, находясь на расстоянии 12 000 миль друг от друга, как они обменяются ключами? В таком случае обмен ключами чреват всеми проблемами конфиденциальности выбранного ими средства, будь то телефон, почта, электронная почта, личное общение и т. д. Обмен ключами может быть перехвачен, что поставит под сомнение конфиденциальность шифрования.
Вот некоторые из распространенных симметричных алгоритмов, с которыми вам следует ознакомиться:
- DES – один из первых и старейших алгоритмов шифрования, разработанных IBM. Он оказался уязвимым и легко взламываемым, поэтому использовался в оригинальной системе хеширования LANMAN в ранних системах Windows (до 2000 года).
- 3DES — этот алгоритм шифрования был разработан в ответ на недостатки DES. 3DES применяет алгоритм DES трижды (отсюда и название «тройной DES»), что делает его немного более безопасным, чем DES.
- AES (Advanced Encryption Standard) — это не алгоритм шифрования, а стандарт, разработанный Национальным институтом стандартов и технологий (NIST). В настоящее время он считается самым надёжным алгоритмом шифрования, использует 128-, 196- или 256-битный ключ и с 2001 года используется алгоритмом Rijndael. Он используется в WPA2, SSL/TLS и многих других протоколах, где важны конфиденциальность и скорость.
- RC4 – это потоковый шифр (шифрует каждый бит или байт, а не блок информации), разработанный Рональдом Ривестом, известным специалистом по RSA. Используется в VoIP и WEP.
- Blowfish – первый алгоритм шифрования Брюса Шнайера . Он использует ключ переменной длины и отличается высокой надёжностью. Он не запатентован, поэтому любой может использовать его без лицензии .
- Twofish – более надёжная версия Blowfish, использующая 128- или 256-битный ключ и являвшаяся серьёзным конкурентом AES. Используется, среди прочего, в Cryptcat и OpenPGP. Он также находится в открытом доступе и не имеет патента.
Асимметричная криптография использует разные ключи на обоих концах канала связи. Асимметричная криптография очень медленная, примерно в 1000 раз медленнее симметричной, поэтому мы не хотим использовать её для массового шифрования или потоковой передачи данных. Однако она решает проблему обмена ключами. Поскольку нам не требуется один и тот же ключ на обоих концах канала связи, у нас нет проблемы обмена ключами.
Асимметричная криптография используется в основном в тех случаях, когда два неизвестных друг другу субъекта хотят обменяться небольшой информацией, например, ключом или другой идентифицирующей информацией, например, сертификатом. Она не применяется для массового или потокового шифрования из-за ограничений по скорости.
Вот некоторые из распространенных схем асимметричного шифрования, с которыми вам следует ознакомиться:
- Диффи-Хеллман – Многие специалисты в области криптографии считают обмен ключами Диффи-Хеллмана величайшим достижением в криптографии (и я с этим согласен). Не вдаваясь в глубокие математические рассуждения, Диффи и Хеллман разработали способ генерации ключей без необходимости их обмена, тем самым решив проблему обмена ключами, которая является проблемой симметричного шифрования.
- RSA – Ривеста, Шамира и Адлемана — это схема асимметричного шифрования, которая использует факторизацию очень больших простых чисел в качестве отношения между двумя ключами.
- PKI (Инфраструктура открытых ключей) — широко используемая асимметричная система для обмена конфиденциальной информацией с использованием закрытого и открытого ключей.
- ECC – Криптография на основе эллиптических кривых становится всё более популярной в мобильных вычислениях благодаря своей эффективности, требующей меньше вычислительной мощности и энергопотребления при том же уровне безопасности. ECC основана на взаимосвязи двух функций, находящихся на одной эллиптической кривой.
- PGP – Pretty Good Privacy использует асимметричное шифрование для обеспечения конфиденциальности и целостности сообщений электронной почты.
Хеши — это одностороннее шифрование. Сообщение или пароль зашифрованы таким образом, что их невозможно расшифровать или восстановить. Вы можете спросить: «Какая польза нам, если что-то будет зашифровано, а расшифровать его будет невозможно?» Хороший вопрос!
При шифровании сообщения создаётся «хеш», который становится уникальной, но не поддающейся расшифровке подписью исходного сообщения. Каждое сообщение шифруется таким образом, что создаётся уникальный хеш. Обычно эти хеши имеют фиксированную длину (хеш MD5 всегда состоит из 32 символов). Таким образом, злоумышленник не может расшифровать какую-либо информацию об исходном сообщении, исходя из длины хеша. Благодаря этому нам не нужно знать исходное сообщение, нам достаточно проверить, создаёт ли какой-либо текст тот же хеш, чтобы проверить его целостность (неизменность).
Именно поэтому хэши можно использовать для хранения паролей. Пароли хранятся в виде хэшей, и когда кто-то пытается войти в систему, система хэширует пароль и проверяет, совпадает ли сгенерированный хэш с сохранённым. Кроме того, хэши полезны для проверки целостности, например, при загрузке файлов или проверке системных файлов.
В мире шифрования и хеширования «коллизия» — это ситуация, когда два разных входных текста создают одинаковый хеш. Другими словами, хеш не уникален. Это может стать проблемой, если мы предполагаем, что все хеши уникальны, например, при обмене сертификатами в SSL. АНБ использовало это свойство коллизий во вредоносной программе Stuxnet, чтобы предоставить ей, по всей видимости, легитимный сертификат Microsoft. Алгоритмы хеширования, создающие коллизии, как можно догадаться, несовершенны и небезопасны.
Это хэши, с которыми вам следует ознакомиться.
- MD4 – это один из первых хэшей, придуманный Роном Ривестом, который в настоящее время практически не используется из-за коллизий.
- MD5 — наиболее распространённая система хеширования. Она имеет 128-битное шифрование и создаёт 32-символьный дайджест сообщения.
- SHA1 – разработанный АНБ, алгоритм более безопасен, чем MD5, но не так широко распространён. Он использует 160-битный дайджест, который обычно представляется в 40-символьном шестнадцатеричном формате. Часто используется для обмена сертификатами в SSL, но из-за недавно обнаруженных уязвимостей в настоящее время не рекомендуется для этой цели.
Беспроводная криптография — любимая тема моих читателей, поскольку многие здесь пытаются взломать беспроводные точки доступа . Как вы можете догадаться, беспроводная криптография симметрична (для скорости), и, как и в любой симметричной криптографии, обмен ключами критически важен.
- WEP – это была оригинальная схема шифрования для беспроводной связи, которая быстро оказалась уязвимой. Она использовала алгоритм RC4, но из-за малого размера ключа (24 бита) IV повторялся примерно каждые 5000 пакетов, что позволяло легко взламывать загруженную сеть с помощью статистических атак.
- WPA – это было быстрое исправление недостатков WEP, включающее добавление более длинного ключа и TKIP, что немного затруднило взлом.
- WPA2-PSK – это первый из наиболее безопасных протоколов беспроводного шифрования. Он использует предварительный ключ (PSK) и алгоритм AES. Затем он добавляет к хэшам имя точки доступа или SSID. Хеш передается при аутентификации в ходе четырёхстороннего рукопожатия между клиентом и точкой доступа.
- WPA2-Enterprise — это самый безопасный метод беспроводного шифрования. Он использует 128-битный ключ, AES и удалённый сервер аутентификации (RADIUS).