Carding 4 Carders
Professional
- Messages
- 2,730
- Reaction score
- 1,467
- Points
- 113
«256-битное шифрование это хорошо?»
Большинство людей постоянно используют термин «256-битное шифрование» и, если честно, не имеют абсолютно никакого представления о том, что он означает и насколько он надежен. Как только вы выйдете за пределы поверхностного уровня, «оно шифрует данные и делает их нечитаемыми», шифрование становится невероятно сложной задачей. Это не легкое чтение. Большинство из нас не хранят книгу о модульном возведении в степень на крайнем столе рядом с нашими кроватями.Вот почему понятно, что может возникнуть некоторая путаница, когда дело доходит до сильных сторон шифрования, что они означают, что «хорошо» и т.д. Нет недостатка в вопросах о шифровании, особенно о 256-битном шифровании.
Главный из них: насколько надежно 256-битное шифрование?
Итак, сегодня мы поговорим именно об этом. Мы расскажем, что такое даже немного безопасности, мы рассмотрим наиболее распространенную форму 256-битного шифрования и поговорим о том, что нужно, чтобы взломать шифрование с такой силой.
Давайте решим.
Быстрое напоминание о шифровании в целом
Когда вы что-то шифруете, вы берете незашифрованные данные, называемые открытым текстом, и выполняете с ними алгоритмическую функцию для создания фрагмента зашифрованного зашифрованного текста. Алгоритм, который вы используете, называется ключом. За исключением открытых ключей при асимметричном шифровании, значение ключа шифрования должно храниться в секрете. Закрытый ключ, связанный с этим фрагментом зашифрованного текста, является единственным практическим средством его расшифровки.Все это звучит невероятно абстрактно, поэтому давайте рассмотрим пример. И мы оставим Боба и Алису в стороне, поскольку они заняты объяснением шифрования буквально на всех других примерах в Интернете.
Пойдем с Джеком и Дайаной, и допустим, что Джек хочет отправить Дайане сообщение, в котором говорится: «О да, жизнь продолжается».
Джек возьмет свое сообщение и собирается использовать алгоритм или шифр - ключ шифрования - чтобы зашифровать сообщение в зашифрованный текст. Теперь он передаст его Дайане вместе с ключом, который можно использовать для расшифровки сообщения, чтобы его снова можно было прочитать.
Пока никто другой не получит ключ, зашифрованный текст ничего не стоит, потому что его нельзя прочитать.
Как работает современное шифрование?
Джек и Дайан только что продемонстрировали шифрование в его самой простой форме. И хотя математика, используемая в примитивных шифрах, была довольно простой - из-за того, что ее должен был выполнять человек, - появление компьютеров увеличило сложность математики, лежащей в основе современных криптосистем. Но концепции во многом остались прежними.Ключ или определенный алгоритм используется для шифрования данных, и только другая сторона, знающая соответствующий закрытый ключ, может его расшифровать.
В этом примере, а не в письменном сообщении, в котором мрачно утверждается, что жизнь продолжается даже после того, как радость потеряна, Джек и Дайан «делают все, что могут» на компьютерах (все еще «держатся за 16» - извините, это Джон Мелленкамп шутит, что, вероятно, не имеет смысла за пределами США). Теперь шифрование, которое должно произойти, является цифровым.
Компьютер Джека будет использовать свой ключ, который на самом деле представляет собой чрезвычайно сложный алгоритм, полученный из данных, совместно используемых устройствами Джека и Дайан, для шифрования открытого текста. Дайан использует свой соответствующий симметричный ключ для расшифровки и чтения данных.
Что на самом деле шифруется? Как вы шифруете «данные»?
В исходном примере на физическом листе бумаги были буквы, которые были превращены во что-то еще. Но как компьютер шифрует данные?Это восходит к тому, как компьютеры на самом деле обрабатывают данные. Компьютеры хранят информацию в двоичной форме. Комбинации 1 и 0. Любые данные, вводимые в компьютер, кодируются так, чтобы их могла прочитать машина. Зашифровываются именно закодированные данные в необработанном виде. На самом деле это часть того, что входит в различные типы файлов, используемых сертификатами SSL / TLS, частично это зависит от того, какой тип схемы кодирования вы пытаетесь зашифровать.
Таким образом, компьютер Джека шифрует закодированные данные и передает их на компьютер Дайан, который использует связанный закрытый ключ для расшифровки и чтения данных.
Опять же, пока закрытый ключ остается, вы знаете ... закрытым, шифрование остается безопасным.
Современное шифрование устранило самое большое историческое препятствие к шифрованию: обмен ключами. Исторически сложилось так, что закрытый ключ нужно было передать физически. Безопасность ключей буквально сводилась к физическому хранению ключа в надежном месте. Компрометация ключа не только поставила под вопрос шифрование, но и могла убить вас.
В 1970-х годах трио криптографов, Ральф Меркл, Уитфилд Диффи и Мартин Хеллман, начали работать над способом безопасного совместного использования ключа шифрования в незащищенной сети под наблюдением злоумышленника. Они преуспели на теоретическом уровне, но не смогли придумать функцию асимметричного шифрования, которая была бы практичной. У них также не было механизма аутентификации (но это совершенно другой разговор). Меркл выступил с первоначальной концепцией, но его имя не связано с протоколом обмена ключами, который они изобрели, несмотря на протесты двух других его создателей.
Примерно через год Рон Ривест, Ади Шамир и Леонард Адлеман создали одноименный метод обмена ключами, основанный на обмене ключами Диффи-Хеллмана (RSA), который также включал функции шифрования / дешифрования и аутентификации. Это актуально, потому что это было рождением совершенно новой итерации шифрования: асимметричного шифрования.
Они также дали нам вышеупомянутых Боба и Алису, что, по крайней мере, для меня, делает это своего рода стиркой.
В любом случае, понимание разницы между симметричным и асимметричным шифрованием является ключом к остальной части этого обсуждения.
Асимметричное шифрование и симметричное шифрование
Симметричное шифрование иногда называют шифрованием с закрытым ключом, поскольку обе стороны должны совместно использовать симметричный ключ, который может использоваться как для шифрования, так и для дешифрования данных.С другой стороны, асимметричное шифрование иногда называют шифрованием с открытым ключом. Лучше думать об асимметричном шифровании как об одностороннем шифровании.
В отличие от того, что обе стороны разделяют закрытый ключ, существует пара ключей. У одной стороны есть открытый ключ, который можно шифровать, у другой - закрытый ключ, который можно расшифровать.
Асимметричное шифрование используется в основном как механизм обмена симметричными закрытыми ключами. Для этого есть причина: асимметричное шифрование исторически является более дорогостоящей функцией из-за размера его ключей. Таким образом, криптография с открытым ключом используется больше как внешняя стена, чтобы помочь защитить стороны, поскольку они облегчают соединение, в то время как симметричное шифрование используется в самом фактическом соединении.
2048-битные ключи против 256-битных ключей
В SSL/TLS асимметричное шифрование выполняет одну чрезвычайно важную функцию. Это позволяет клиенту зашифровать данные, которые будут использоваться обеими сторонами для получения симметричных ключей сеанса, которые они будут использовать для связи. Вы никогда не сможете использовать асимметричное шифрование для функциональной связи. Хотя открытый ключ может использоваться для проверки цифровой подписи, он не может напрямую расшифровать что-либо, что зашифровано закрытым ключом, поэтому мы называем асимметричное шифрование «односторонним».Но более серьезная проблема заключается в том, что размер ключа делает фактические функции шифрования и дешифрования дорогими с точки зрения ресурсов центрального процессора, которые они потребляют. Вот почему многие крупные организации и предприятия при масштабном развертывании SSL/TLS разгрузили рукопожатия: чтобы освободить ресурсы на своих серверах приложений.
Вместо этого мы используем симметричное шифрование для фактического взаимодействия, которое происходит во время зашифрованного соединения. Симметричные ключи меньше и дешевле в вычислениях.
Итак, когда вы видите, что кто-то ссылается на 2048-битный закрытый ключ, они, скорее всего, имеют в виду закрытый ключ RSA. Это асимметричный ключ. Он должен быть достаточно устойчивым к атакам, поскольку выполняет такую важную функцию. Кроме того, обмен ключами - лучший вектор атаки для компрометации соединения. Намного проще украсть данные, использованные для создания симметричного сеансового ключа, и вычислить его самостоятельно, чем взламывать ключ грубой силой после того, как он уже используется.
Возникает вопрос: «Насколько надежно ИС 256-битное шифрование?» Если он менее надежен, чем 2048-битный ключ, достаточно ли его? И мы собираемся ответить на этот вопрос, но сначала нам нужно охватить немного больше, чтобы обеспечить правильный контекст.
Что такое «бит» безопасности?
Это действительно важно, чтобы мы обсудили элементы безопасности и сравнение надежности шифрования между алгоритмами, прежде чем мы фактически перейдем к любому практическому обсуждению того, насколько на самом деле надежна 256-битная безопасность. Потому что это не сравнение 1: 1.Например, 128-битный ключ AES, который составляет половину текущего рекомендуемого размера, примерно эквивалентен 3072-битному ключу RSA с точки зрения фактической безопасности, которую они обеспечивают.
Также важно понимать разницу между заявкой на безопасность и уровнем безопасности.
- Заявление о безопасности - это уровень безопасности, для достижения которого изначально был разработан криптографический примитив - рассматриваемый шифр или хеш-функция.
- Уровень безопасности - ФАКТИЧЕСКАЯ сила, которую достигает криптографический примитив.
В любом случае, уровень безопасности и требование безопасности обычно выражаются в битах. В этом контексте биты безопасности, давайте называть это, поскольку

Это может быть слишком абстрактно, поэтому вот небольшой пример: допустим, есть 2-битный ключ. Это означает, что у него будет 2 2 (4) значения.
Это было бы тривиально легко для компьютера, но когда вы начинаете использовать ключи большего размера, современному компьютеру становится непомерно сложно правильно угадать значение закрытого ключа за любое разумное время.
Но прежде чем мы перейдем к математике, давайте вернемся к требованию безопасности и уровню безопасности.
Требование обеспечения и уровень безопасности
Обычно, когда вы видите на рынке шифрование, вы видите, что рекламируется Заявление о безопасности. Вот какой будет уровень безопасности при оптимальных условиях. Мы собираемся сохранить это специфичным для SSL/TLS и PKI, но процент времени, в течение которого поддерживаются оптимальные условия, далек от 100%. Неверные конфигурации являются обычным явлением, как и поддержка старых версий SSL/TLS и устаревших наборов шифров для обеспечения взаимодействия.В контексте SSL/TLS, когда клиент приходит на веб-сайт, происходит рукопожатие, когда две стороны определяют взаимно согласованный набор шифров для использования. Фактическая сила шифрования зависит от параметров, выбранных во время рукопожатия, а также от возможностей самого сервера и клиента.
Когда вы подключаетесь к веб-сайту через HTTPS, под капотом происходит много всего. В первую очередь всем нужно… пожать руку?!
Иногда 256-битное шифрование обеспечивает только уровень безопасности 128 бит. Это особенно характерно для алгоритмов хеширования, которые измеряют устойчивость к двум различным типам атак:
- Коллизии - когда два разных фрагмента данных производят одно и то же значение хеш-функции, это называется коллизией и нарушает алгоритм.
- Сопротивление PreImage - насколько устойчивы и алгоритм к эксплойту, когда злоумышленник пытается найти сообщение с определенным значением хеш-функции.
Насколько надежно 256-битное шифрование?
Опять же, это зависит от алгоритма, который вы используете, и от асимметричного до симметричного шифрования. Как мы уже говорили, это не сравнения 1: 1. На самом деле, уровень безопасности асимметричного шифрования на самом деле не так научен, как могло бы показаться. Асимметричное шифрование основано на математических задачах, которые легко решить в одном направлении (шифрование), но чрезвычайно трудно отменить (дешифрование). Из-за этого атаки на открытый ключ, асимметричные криптосистемы, как правило, намного быстрее, чем поиск пространства ключей методом грубой силы, который мешает закрытому ключу и схемам симметричного шифрования. Итак, когда вы говорите об уровне безопасности криптографии с открытым ключом, это не установленная цифра, а расчет вычислительной стойкости реализации против лучшей, наиболее известной на данный момент атаки.Уровень симметричного шифрования немного легче вычислить из-за характера атак, от которых они должны защищаться.
Итак, давайте посмотрим на AES или Advanced Encryption Standard, который обычно используется в качестве массового шифрования с SSL/TLS. Массовые шифры - это симметричные криптосистемы, которые на самом деле обеспечивают безопасность связи, которая происходит во время зашифрованного HTTPS-соединения.
Исторически существует две разновидности: блочные шифры и потоковые шифры.
Блочные шифры разбивают все, что они зашифровывают, на блоки размером с ключ и шифруют их. Расшифровка включает в себя соединение блоков вместе. И если сообщение слишком короткое или слишком длинное, что бывает в большинстве случаев, его необходимо разбить и / или дополнить одноразовыми данными, чтобы сделать их подходящей длины. Атаки заполнения - одна из наиболее распространенных угроз для SSL/TLS.
TLS 1.3 отказался от этого стиля массового шифрования именно по этой причине: теперь все шифры должны быть переведены в потоковый режим. Потоковые шифры шифруют данные в псевдослучайных потоках любой длины, они считаются более простыми в развертывании и требуют меньше ресурсов. TLS 1.3 также устранил некоторые небезопасные потоковые шифры, такие как RC4.
Короче говоря, в настоящее время предлагается только два массовых шифра: AES и ChaCha20. Мы собираемся сосредоточиться на AES прямо сейчас, потому что ChaCha20 - другое животное.
Рекомендуемые шифры TLS 1.2
- TLS_ECDHE_ECDSA_WITH_ AES_256_GCM _SHA384
- TLS_ECDHE_ECDSA_WITH_ AES_128_GCM _SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
- TLS_ECDHE_RSA_WITH_ AES_256_GCM _SHA384
- TLS_ECDHE_RSA_WITH_ AES_128_GCM _SHA256
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
- TLS_ AES_256_GCM _SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_ AES_128_GCM _SHA256
- TLS_ AES_128_CCM_8 _SHA256
- TLS_ AES_128_CCM _SHA256
Как мы уже говорили, вы можете безопасно запустить AES в GCM или CCM со 128-битными ключами и все будет в порядке. Вы получаете эквивалент 3072-битного RSA с точки зрения уровня безопасности. Но обычно мы предлагаем использовать 256-битные ключи, чтобы обеспечить максимальную вычислительную надежность в течение самого длительного периода времени.
Итак, давайте посмотрим на эти 256-битные ключи. 256-битный ключ может иметь 2 256 возможных комбинаций. Как мы упоминали ранее, двухбитовый ключ может иметь четыре возможных комбинации (и его легко взломать двухбитным мошенником). Здесь мы имеем дело с возведением в степень, поэтому каждый раз, когда вы повышаете показатель n, вы резко увеличиваете количество возможных комбинаций. 2 256 - это 2 x 2, x 2, x 2… 256 раз.
Как мы уже говорили, лучший способ взломать ключ шифрования - это «грубая форсировка», которая, проще говоря, представляет собой просто метод проб и ошибок. Итак, если длина ключа составляет 256 бит, будет 2 256 возможных комбинаций, и хакер должен попробовать большинство из 2 256 возможных комбинаций, прежде чем прийти к заключению. Скорее всего, не нужно будет пытаться всех их всех угадать, чтобы угадать ключ - обычно это около 50% - но времени, которое потребуется, чтобы сделать это, уйдет далеко за пределы любой человеческой жизни.
256-битный закрытый ключ будет иметь 115,792,089,237,316,195,423,570,985,008,687,907,853,269,
984,665,640,564,039,457,584,007,913,129,639,936 (то есть 78 цифр) возможных комбинаций. Ни один суперкомпьютер на земле не сможет взломать это в разумные сроки.
Даже если вы используете Tianhe-2 (MilkyWay-2), самый быстрый суперкомпьютер в мире, на взлом 256-битного шифрования AES уйдут миллионы лет.
Эта цифра взлетает еще больше, когда вы пытаетесь вычислить время, необходимое для разложения закрытого ключа RSA. Для расчета 2048-битного ключа RSA потребуется 6,4 квадриллиона лет (6 400 000 000 000 000 лет), согласно DigiCert.
Ни у кого нет такого времени.
Квантовые вычисления изменят все это
Сейчас было бы неплохо поговорить немного о квантовом шифровании и угрозе, которую оно представляет для наших современных криптографических примитивов. Как мы только что рассмотрели, компьютеры работают в двоичном формате. Комбинации 1 и 0. А на современных компьютерах биты работают так, что они должны иметь известное значение, либо 1, либо 0. Точка. Это означает, что современный компьютер может угадывать только один раз.Очевидно, что это сильно ограничивает скорость перебора комбинаций для взлома закрытого ключа.
Квантовые компьютеры не будут иметь таких ограничений. Итак, две вещи, во-первых, квантовые вычисления все еще находятся примерно в 7-10 лет от жизнеспособности, так что нам все еще далеко. Некоторые центры сертификации, такие как DigiCert, начали размещать постквантовые цифровые сертификаты на устройствах Интернета вещей, которые будут иметь долгий срок службы, чтобы попытаться превентивно защитить их от квантовых вычислений, но в остальном мы все еще находимся на стадии исследований, когда дело доходит до квантовых вычислений. стойкое шифрование.
Проблема в том, что квантовые компьютеры не используют биты, они используют квантовые биты или кубиты. Квантовый бит может быть как 1, так и 0 благодаря принципу суперпозиции, который немного сложнее, чем мы собираемся получить сегодня. Кубиты дают квантовым компьютерам возможность возвести в степень их атаки методом грубой силы, что эффективно сводит на нет вычислительную трудность, обеспечиваемую возведением в степень, которое имело место с криптографическим примитивом. Компьютер с четырьмя кубитами может эффективно находиться в четырех разных положениях (2 2) одновременно. Это снова 2 n , поэтому квантовый компьютер с n кубитами может пробовать 2 n комбинаций одновременно. Bristlecone, имеющий 72 кубита, может попробовать сразу 2 72 (4,722,366,482,869,645,213,696) значений.
Опять же, мы все еще далеки от этого, и квантовому компьютеру придется выяснить, как успешно запустить алгоритм Шора - это другая тема на другой день, так что это все еще в значительной степени теоретическое.
И все же внезапно 4,6 квадриллиона лет не кажутся такими уж большими сроками.
Подведем итоги
256-битное шифрование является довольно стандартным в 2021 году, но каждое упоминание о 256-битном шифровании не относится к одному и тому же. Иногда 256-битное шифрование поднимается только до уровня безопасности 128 бит. Иногда размер ключа и уровень безопасности неразрывно связаны, в то время как в других случаях один используется только для приближения другого.Таким образом, ответ на вопрос «насколько надежно 256-битное шифрование» не дает однозначного ответа. По крайней мере, не все время.
Однако в контексте SSL/TLS это чаще всего относится к шифрованию AES, где 256 бит действительно означают 256 бит. И, по крайней мере, на данный момент, это 256-битное шифрование все еще достаточно надежно.
К тому времени, когда злоумышленник, использующий современный компьютер, сможет взломать 256-битный симметричный ключ, он не только будет отброшен, но и, скорее всего, заменит сертификат SSL/TLS, который помог его сгенерировать.
Короче говоря, самой большой угрозой для вашего шифрования и ваших ключей шифрования по-прежнему является неправильное управление, технология, лежащая в основе них, надежна.