ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

16 минут чтени€

 огда вы входите на финансовый или медицинский веб-сайт и входите в систему, вы должны ожидать, что полученна€ вами информаци€ не будет перехвачена и прочитана кем-либо на пути между вашим компьютером и сервером. ћенее очевидна€, но не менее важна€ проблема заключаетс€ в том, что информаци€, которую вы отправл€ете на сайт, не должна быть открыта дл€ изменени€ во врем€ ее передачи по сети.

Ќо как это можно обеспечить? Ёто две области, дл€ решени€ которых можно использовать транспортную безопасность. ¬ этой серии статей будет рассмотрено пространство проблем транспортной безопасности, а затем будет проведено исследование нескольких видов решений, включа€ шифрование. Ќаконец, в этой серии статей мы рассмотрим спецификацию безопасности транспортного уровн€ (TLS) в качестве примера шифровани€ транспортного уровн€.


ѕроблемное пространство

Ѕезопасность обычно решает одну из четырех проблем: подтверждение того, что данные не были изменены при передаче, предотвращение доступа к информации никому, кроме предполагаемого получател€, защита конфиденциальности людей, использующих сеть, и подтверждение того, что информаци€ была доставлена. ¬тора€ и треть€ проблемы, предотвращение несанкционированного доступа к данным при их передаче по сети и защита конфиденциальности пользователей, €вл€ютс€ св€занными проблемами, но будут рассматриватьс€ отдельно в следующих разделах. ѕоследн€€ отмеченна€ проблема, проблема доказательства обхода (котора€ аналогична проблеме доказательства работы, котора€ встречаетс€ в других контекстах информационных технологий), здесь не рассматриваетс€, поскольку это область активных исследований с небольшим количеством развернутых систем.


ѕроверка данных

≈сли вы войдете на сайт своего банка и переведете 100 рублей с одного счета на другой, вы, скорее всего, будете расстроены, если на самом деле сумма перевода составит 1000 рублей или если номера счетов будут изменены, так что 100 рублей окажутс€ на чьем-то другом счете. —уществует р€д других ситуаций, когда необходимо убедитьс€, что передаваемые данные совпадают с полученными, например:

  • ≈сли вы покупаете пару синих туфель, вы не хотите, чтобы вместо них доставили комплект красных.
  • ≈сли ваш врач дает вам рецепт на лекарство от изжоги (веро€тно, вызванной стрессом от работы сетевым инженером), вы не хотите, чтобы вам доставл€ли лекарство от артрита (веро€тно, из-за того, что вы печатаете так много документов и книг).

—уществует множество ситуаций, когда полученные данные должны совпадать с переданными, а отправитель и/или получатель должны быть поддающимис€ проверке.


«ащита данных от проверки

ѕримеры защиты данных, приведенные выше, позвол€ют сделать еще один шаг вперед: вы не хотите, чтобы кто-то видел номер вашего счета, рецепт или другую информацию, когда она передаетс€ по сети. Ќомера счетов, пароли и люба€ лична€ информаци€ (PII) очень важны, поскольку эти виды информации могут быть использованы дл€ взлома счетов с целью кражи денег или даже дл€ кражи конфиденциальной информации.

 ак можно защитить такую информацию? ќсновным средством защиты, используемым дл€ предотвращени€ неавторизованных пользователей (или злоумышленников), €вл€етс€ шифрование.


«ащита конфиденциальности пользователей

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

Ќапример, в области управлени€ информацией часто говор€т: "«нание - сила". »нформаци€ о компьютере или сети дает вам определенную власть над компьютером, сетью или системой. Ќапример, предположим, что банк настраивает автоматическое резервное копирование дл€ определенной таблицы базы данных; когда остатки на счете, хран€щемс€ в таблице, измен€ютс€ на определенную величину, резервное копирование запускаетс€ автоматически. Ёто может показатьс€ вполне разумным вариантом резервного копировани€, но оно требует исчерпани€ некоторого объема данных.

ѕримечание: исчерпание данных - это информаци€ о физических движени€х людей или информаци€, котора€ может быть использована дл€ вывода о том, что делают эти люди или эта информаци€. Ќапример, если вы каждое утро едете на работу одним и тем же маршрутом, кто-то может сделать вывод, что после того, как вы проделали какую-то небольшую часть поездки в сочетании со временем суток, вы собираетесь работать. “акие же типы данных существуют и в сетевом мире; если каждый раз, в определенное врем€ суток, через сеть передаетс€ определенный фрагмент данных определенного размера, и он случайно совпадает с определенным событием, таким как перевод денег между двум€ счетами, то, когда по€вл€ютс€ эти конкретные данные, передача должна иметь место. ѕросмотр, истори€ электронной почты и другие действи€ в интернете-все это приводит к исчерпанию данных, которые иногда могут быть использованы дл€ вывода содержимого потока данных, даже если поток зашифрован.

”€звимость здесь заключаетс€ в следующем: если злоумышленник создает резервную копию вместе с изменением значени€ учетной записи, этот человек будет точно знать, какова модель активности учетной записи. ƒостаточное количество таких подсказок можно превратить в целый набор планов атаки.

“о же самое верно и в отношении людей; знание о люд€х может дать вам некоторую способность вли€ть на людей в определенных направлени€х. ’от€ вли€ние на людей не так велико, как вли€ние на машины, передача власти одному человеку над другим всегда несет в себе моральные последстви€, с которыми нужно обращатьс€ осторожно.


ќбласть решений

’от€ каждое решение проблем безопасности и конфиденциальности, описанных в предыдущих разделах, обычно включает в себ€ сложные математические вычислени€, в этом разделе будут (попытаемс€) описать решени€ без математических расчетов.


Ўифрование

Ўифрование берет блок информации (открытый текст) и кодирует его, использу€ некоторую форму математической операции, чтобы скрыть текст, в результате чего получаетс€ зашифрованный текст. „тобы восстановить исходный простой текст, математические операции должны быть отменены. ’от€ шифрование часто рассматриваетс€ как математическа€ конструкци€, иногда проще начать думать о нем как о шифре подстановки с таблицей подстановок, котора€ мен€етс€ в зависимости от используемого ключа. –исунок 1 иллюстрирует это.

 стати, про типы шифровани€ в –оссии и за рубежом можно почитать тут.

Ќа рисунке 1 показан четырехбитовый блок информации - тривиальный пример, но все же полезный дл€ демонстрации. ѕроцесс шифровани€ концептуально представл€ет собой серию пр€мых замен:

Ѕлок шифровани€ как таблица подстановки

–ис. 1 Ѕлок шифровани€ как таблица подстановки

  • ≈сли 0001 находитс€ в исходном блоке данных (открытый текст) и используетс€ ключ 1, то 1010 подставл€етс€ в фактический передаваемый поток (зашифрованный текст).
  • ≈сли 0010 обнаружен в открытом тексте и используетс€ ключ 1, то 0100 подставл€етс€ в передаваемые данные.
  • ≈сли 0001 найден в открытом тексте и используетс€ ключ 2, то в передаваемые данные подставл€етс€ 0000.
  • ≈сли 0110 находитс€ в открытом тексте и используетс€ ключ 2, то в передаваемые данные подставл€етс€ 1001.

ѕроцесс замены одного блока бит на другой называетс€ преобразованием. Ёти преобразовани€ должны быть симметричными: они должны не только позвол€ть шифрование открытого текста в зашифрованный текст, но они также должны позвол€ть восстанавливать открытый текст (незашифрованный) из зашифрованного текста. ¬ таблице подстановок этот процесс включает поиск ключа на стороне зашифрованного текста таблицы и замену эквивалента открытого текста.

–азмер таблицы подстановки определ€етс€ размером блока или количеством битов, кодируемых за один раз. ≈сли, например, используетс€ 128-битный блок, в поисковой таблице должно быть 2128 записей - действительно, очень большое количество. Ётот вид пространства все еще можно быстро найти с помощью эффективного алгоритма, поэтому блок должен иметь некоторые другие особенности, кроме просто большого размера.

¬о-первых, шифротекстова€ сторона блока подстановки должна быть как можно более случайной. „тобы преобразование было идеальным, любой шаблон, найденный в открытом тексте, не должен быть доступен дл€ анализа в результирующем зашифрованном тексте. ¬ыход зашифрованного текста должен выгл€деть как можно ближе к случайному набору чисел, независимо от того, какой вход.

¬о-вторых, блок подстановки должен быть настолько большим, насколько это практически возможно. „ем более случайным и большим €вл€етс€ блок подстановки, тем труднее вернутьс€ от открытого и зашифрованного текста к обнаружению используемого шаблона подстановки. „тобы выполнить brute-force атаку против подстановки с использованием 128-битного размера блока, злоумышленник должен соотнести как можно больше из 2128 записей в блоке открытого текста с 2128 запис€ми в блоке подстановки зашифрованного текста-если информаци€ использует только небольшой (или разреженный) набор возможных записей из исходного 128-битного пространства, практически нет способа сделать коррел€цию достаточно быстрой, чтобы сделать такую атаку практичной, учитыва€, что шифрующий отправитель достаточно часто мен€ет свой ключ.

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

ѕлотность лучше всего объ€снить на примере. ѕредположим, что вы используете шифр пр€мой подстановки в английском €зыке, где кажда€ буква замен€етс€ буквой, смещенной на четыре шага в алфавите. ¬ этом виде (тривиального) шифра:

  •  ажда€ буква ј будет заменена буквой ≈.
  •  ажда€ буква B будет заменена буквой F.
  •  ажда€ буква — будет заменена буквой G.
  • и т.д.

“еперь попробуйте зашифровать два разных предложени€ с помощью этого преобразовани€:

  • THE SKY IS BLUE == XLI WOC MW FPYI
  • THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG == XLI UYMGO FVSAR JSB NYQTIH SZIV XLI PEDC HSK

ƒл€ злоумышленника, пытающегос€ вы€снить, как верси€ предложени€ с зашифрованным текстом соотноситс€ с версией открытого текста, первое предложение представл€ет 9 совпадающих пар букв из пространства, содержащего 26 возможных букв. ≈сть хороший шанс, что вы сможете угадать правильное преобразование - переместитесь на четыре шага вправо - из этого небольшого образца, но возможно, что здесь задействован какой-то "трюк", из-за которого будущие сообщени€, зашифрованные с помощью этого преобразовани€, не будут расшифрованы правильно. ќднако второе предложение - это хорошо известный пример предложени€, содержащего все возможные буквы английского алфавита. ѕреобразование может быть проверено на соответствие каждому возможному значению во всем диапазоне ввода и вывода, что делает обнаружение преобразовани€ тривиальным.

¬ этом примере первое предложение будет менее плотным, чем второе. ¬ реальных криптографических системах обща€ иде€ состо€ла бы в том, чтобы использовать всего несколько тыс€ч возможных символов из 2128 или 2512 возможных символов, что создает гораздо менее плотный набор информации дл€ работы. ¬ какой-то момент плотность становитс€ достаточно низкой, преобразование - достаточно сложным, а зашифрованный текст - достаточно случайным, так что не существует практического способа вычислить взаимосв€зь между входом (открытым текстом) и выходом (зашифрованный текст).

¬ реальной жизни блоки замены не вычисл€ютс€ заранее таким образом. —корее, дл€ вычислени€ значени€ замены в реальном времени используетс€ криптографическа€ функци€. Ёти криптографические функции принимают входной размер блока, открытый текст, выполн€ют преобразование и вывод€т правильный зашифрованный текст.  люч - это второй вход, который измен€ет выходные данные преобразовани€, поэтому каждый ключ приводит к тому, что преобразование производит разные выходные данные. ≈сли размер ключа равен 128 битам, а размер блока равен 256 битам, существует 2128 × 2256 возможных выходных комбинаций из преобразовани€. –исунок 2 иллюстрирует это.

Ќа рисунке 2 кажда€ таблица подстановки представл€ет собой размер блока. ≈сли размер блока составл€ет 256 бит, то в каждой таблице имеетс€ 2256 возможных замен.  аждый ключ создает новую таблицу, поэтому, если ключ составл€ет 128 бит, то существует 2128 возможных таблиц. ≈сть два основных способа атаковать такую систему шифровани€.

“аблицы подстановок, генерируемые большими ключевыми преобразовани€ми

ѕервый способ атаковать этот тип системы шифровани€-попытатьс€ сопоставить каждое возможное входное значение с каждым возможным выходным значением, раскрыва€ всю таблицу подстановок. ≈сли входные данные представл€ют только небольшой набор возможных входных данных (таблица используетс€ редко или, точнее, представл€ет собой разреженный массив), эта задача практически невыполнима. ≈сли пользователь мен€ет свой ключ, а следовательно, и конкретную таблицу среди возможного набора таблиц, достаточно часто, нет никакого способа выполнить это сопоставление быстрее, чем измен€етс€ ключ.

ѕримечание. ƒаже в больших блоках, объединенных с преобразовани€ми, все еще есть потенциальные слабые места, позвол€ющие получить почти случайный результат-другими словами, даже если преобразование близко к идеалу. ≈сли вы соберете 23 человека в одной комнате, есть больша€ веро€тность, что у двух из них будет один и тот же день рождени€-но это кажетс€ иррациональным, потому что есть 365 потенциальных дней (не счита€ високосные года), в которые человек может родитьс€. ѕричина несоответстви€ между тем, что должно произойти, и тем, что происходит, заключаетс€ в следующем: в реальном мире дни рождени€ людей группируютс€ по очень небольшому числу дней в течение года. “аким образом, входные данные представл€ют собой очень плотное "п€тно" в умеренно большом наборе возможных значений.  огда это происходит, разреженность данных может работать против системы шифровани€. ≈сли небольшой набор данных повтор€етс€ в большом наборе на регул€рной основе, злоумышленник может сосредоточитьс€ только на наиболее часто используемых заменах и потенциально обнаружить содержимое сообщени€, достаточное дл€ восстановлени€ большей части смысла.

¬торой способ атаковать систему шифровани€ такого типа - атаковать само преобразование - криптографическую функцию. ѕомните, что эти большие таблицы подстановки часто невозможно сгенерировать, сохранить и транспортировать, поэтому используетс€ некотора€ форма криптографической функции, чтобы принимать блок открытого текста в качестве входных данных и генерировать блок зашифрованного текста в качестве выходных данных. ≈сли бы вы могли обнаружить эту функцию преобразовани€, то вы могли бы вычислить вывод таким же образом, как передатчик и приемник, и расшифровать открытый текст в реальном времени.

¬ реальном мире эта проблема усложн€етс€ из-за:

  • ѕринцип  еркхоффа, согласно которому само преобразование не должно быть секретом. —корее, только ключ, используемый дл€ выбора таблицы из возможных, должен хранитьс€ в секрете.
  • ѕо крайней мере, некоторый открытый и зашифрованный текст иногда может быть восстановлен из текущей зашифрованной передачи данных по различным причинам-возможно, ошибка, или, возможно, смысл шифровани€ заключаетс€ в проверке текста, а не в том, чтобы не дать тексту быть прочитанным.

”читыва€ эти ограничени€, следует учитывать несколько ключевых моментов:

  • —ложность вычислени€ ключа из открытого текста, зашифрованного текста и криптографической функции (преобразовани€) должна быть очень высокой.
  • —лучайность вывода криптографической функции должна быть очень высокой, чтобы снизить веро€тность успешных brute-force атак - просто перебора всех возможных ключей в пространстве.
  •  лючевое пространство должно быть большим, оп€ть же, чтобы предотвратить успешные brute-force атаки.

 ачество криптографической функции определ€етс€ способностью функции выдавать максимально близкий к случайному результату практически любой вход таким образом, чтобы злоумышленник не мог обнаружить, какой ключ используетс€, даже если у них есть как открытый текст, так и зашифрованный текст. “аким образом, криптографические функции обычно используют ту или иную форму одной из самых сложных дл€ вычислени€ задач. ¬ частности, часто используетс€ вычисление множителей очень больших простых чисел.

„то произойдет, если вы используете 128-битный блок и у вас есть 56 бит данных дл€ транспортировки? ¬ этой ситуации наиболее естественным образом было бы дополнить открытый текст некоторым числом: скорее всего, всеми нул€ми или единицами.  ачество вывода в некоторой степени зависит от разреженности ввода, чем меньше диапазон чисел используетс€ как вход, тем более предсказуемым будет выход криптографической функции. ¬ этом случае важно использовать заполнение, максимально приближенное к случайному. —уществует цела€ область изучени€ того, как дополн€ть блоки открытого текста, чтобы "помочь" криптографической функции создавать зашифрованный текст, максимально приближенный к случайному.


Ќесколько раундов шифровани€

ќдну и ту же информацию можно обрабатывать с помощью криптографической функции несколько раз. Ќапример, если у вас есть 128-битный блок и 128-битный ключ, вы можете:

  • ¬озьмите открытый текст и с помощью ключа вычислите зашифрованный текст. Ќазовите это ct1.
  • ¬озьмите ct1 и с помощью ключа вычислите шифротекст второго раунда; назовите это ct2.
  • ¬озьмите ct2 и, использу€ ключ, вычислите шифротекст третьего раунда; назовите это ct3.

‘актический передаваемый шифротекст будет последним ct3.   чему приводит этот процесс? ѕомните, что качество процесса шифровани€ св€зано со случайностью выхода по отношению к входу.  аждый раунд во многих ситуаци€х лишь немного увеличивает случайность. ¬ этом процессе есть точка уменьшени€ отдачи; обычно после третьего раунда данные не станов€тс€ "более случайными", и, следовательно, больше раундов, по сути, просто трат€т вычислительную мощность и врем€ дл€ очень небольшого выигрыша.


 риптографи€ с открытым и закрытым ключом

—уществует класс криптографических функций, которые могут преобразовывать открытый текст в зашифрованный текст и обратно, использу€ два разных ключа. Ёта возможность полезна, когда вы хотите иметь возможность зашифровать блок данных одним ключом и позволить кому-то другому расшифровать данные, использу€ другой ключ.  люч, который вы держите в секрете, называетс€ закрытым ключом, а ключ, который вы передаете другим или публикуете, называетс€ открытым ключом.

Ќапример, чтобы доказать, что вы €вл€етесь фактическим отправителем конкретного файла, вы можете зашифровать файл своим закрытым ключом. “еперь любой человек с вашим открытым ключом может расшифровать файл, который мог быть отправлен только вами. ќбычно вы не шифруете весь блок данных своим закрытым ключом (на самом деле большинство систем, использующих пары ключей, спроектированы так, что вы не можете этого сделать). —корее, с помощью вашего закрытого ключа создаетс€ подпись, котора€ может быть проверена с помощью вашего открытого ключа. „тобы убедитьс€, что только человек, которому вы отправл€ете данные, может что-то прочитать, вы можете зашифровать некоторые данные своим открытым ключом, опубликовать их, и только человек с правильным закрытым ключом может их расшифровать.

“акие системы называют криптографией с открытым ключом (иногда названи€, которые выбирают инженеры, возможно, слишком очевидны), или асимметричной криптографией. ¬ криптографии с открытым ключом открытый ключ часто "выпускаетс€ на волю"; это то, что может найти любой, у кого есть доступ к ключевому серверу или другому источнику.

јльтернативой криптографии с открытым ключом €вл€етс€ криптографи€ с симметричным ключом. ¬ криптографии с симметричным ключом отправитель и получатель используют один ключ, который используетс€ как дл€ шифровани€, так и дл€ расшифровки данных (общий секрет). ”читыва€, что общие секреты (очевидно) сложно создавать и использовать, почему вообще используетс€ криптографи€ с симметричным ключом? ѕри выборе между симметричной криптографией и криптографией с открытым / закрытым ключом необходимо учитывать два основных компромисса:

  • —ложность обработки: системы криптографии с открытым ключом обычно требуют гораздо большей вычислительной мощности дл€ шифровани€ и расшифровки передаваемых данных. —истемы с симметричными ключами, как правило, намного проще разрабатывать и развертывать, не требу€ больших вычислительных мощностей и времени. »з-за этого криптографи€ с открытым ключом часто используетс€ дл€ шифровани€ очень небольших объемов данных, таких как закрытый ключ.
  • Ѕезопасность: криптографи€ с открытым ключом обычно требует отчасти уникального набора механизмов математического преобразовани€. —истемы с симметричным ключом, как правило, имеют более широкий диапазон доступных преобразований, которые также €вл€ютс€ более сложными и, следовательно, более безопасными (они обеспечивают большую случайность на выходе и, следовательно, их труднее взломать).

— учетом этих компромиссов и реальных требований есть место дл€ обоих типов систем.