Серьезная безопасность: Microsoft Office 365 атакован из-за слабого шифрования PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Серьезная безопасность: Microsoft Office 365 атакован из-за слабого шифрования

Мы не совсем уверены, как его назвать прямо сейчас, поэтому мы назвали его в заголовке гибридным именем. Microsoft Офис 365.

(Название «Office» в качестве собирательного существительного для приложений Microsoft для обработки текстов, электронных таблиц, презентаций и совместной работы убит в течение следующего месяца или двух, чтобы стать просто «Microsoft 365».)

Мы уверены, что люди будут продолжать использовать названия отдельных приложений (Word, Excel, PowerPoint и друзья) и название номера Офис в течение многих лет, хотя новички в программном обеспечении, вероятно, в конечном итоге узнают его как 365, после удаления вездесущего префикса Microsoft.

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

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

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

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

ОМЕ в центре внимания

Или ты?

По исследователи в финской компании по кибербезопасности WithSecure ваши данные могут быть защищены гораздо меньше, чем вы могли бы разумно ожидать.

Функция, которую использовали тестировщики, называется Шифрование сообщений Office 365или OME коротко.

Мы не воспроизвели здесь их эксперименты по той простой причине, что основные продукты Office, извините, 365, изначально не работают в Linux, который мы используем для работы. Веб-версии инструментов Office не имеют того же набора функций, что и полные приложения, поэтому любые результаты, которые мы можем получить, вряд ли будут соответствовать тому, как большинство бизнес-пользователей Office, ах, 365 настроили Word, Excel, Outlook. и друзья на своих ноутбуках с Windows.

Как описывают исследователи:

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

Но они также отмечают, что:

К сожалению, сообщения OME зашифрованы в небезопасном режиме работы электронной кодовой книги (ECB).

ЕЦБ объяснил

Объяснять.

Многие алгоритмы шифрования, в частности Шифрования Advanced Encryption Standard или AES, которые использует OME, известны как блочные шифры, которые скремблируют большие куски данных за раз, а не обрабатывают отдельные биты или байты в последовательности.

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

Базовый алгоритм AES, например, потребляет 16 входных байтов открытого текста (128 бит) за раз и шифрует эти данные с помощью ключа шифрования, чтобы получить 16 выходных зашифрованных байтов зашифрованного текста.

(Не путайте размер блока размер ключа - Ключи шифрования AES могут иметь длину 128 бит, 192 бит или 256 бит, в зависимости от того, насколько маловероятно, чтобы они были угаданы, но все три размера ключа работают со 128-битными блоками каждый раз, когда алгоритм «запускается».)

Это означает, что если вы выбираете ключ AES (независимо от длины), а затем используете шифр AES непосредственно для фрагмента данных…

…тогда каждый раз, когда вы получаете один и тот же входной фрагмент, вы получите один и тот же выходной фрагмент.

Как действительно массивная кодовая книга

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

(Полная «кодовая книга» никогда не может быть построена в реальной жизни, потому что вам нужно будет хранить базу данных, состоящую из 2128 16-байтовые записи для каждого возможного ключа.)

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

Например, файлы, которые обычно дополняют разделы данных так, чтобы они выстраивались по границам 512 байт (обычный размер сектора при записи на диск) или по границам 4096 байт (обычный размер единицы выделения при резервировании памяти), часто будут создавать файлы с длинные серии нулевых байтов.

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

Каждый раз, когда повторяющийся фрагмент открытого текста просто выстраивается на 16-байтовой границе в процессе шифрования AES-ECB, он появляется в зашифрованном выводе. точно такой же зашифрованный текст.

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

Вот пример, основанный на статье, которую мы опубликовали почти девять лет назад, когда мы объяснили, почему печально известное использование Adobe шифрования в режиме ECB для «хеширования» паролей своих пользователей было Не хорошая идея:

Серьезная безопасность: Microsoft Office 365 атакован из-за слабого шифрования PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
Оставил. Исходное RGBA-изображение.
Правильно. Данные изображения зашифрованы с помощью AES-128-ECB.

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

В этом примере каждый пиксель в исходном файле занимает ровно 4 байта, поэтому каждая 4-пиксельная прогонка слева направо во входных данных имеет длину 16 байтов, что точно совпадает с каждым 16-байтовым блоком шифрования AES, тем самым подчеркивая «эффект ЭЦБ».


Сопоставление шаблонов зашифрованного текста

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

Помните, что вам не нужен ключ для «расшифровки» первого документа, если он у вас уже есть в расшифрованном виде. атака по известному тексту.

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

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

  • Все были отправлены одному и тому же получателю, если есть общее приветствие в верхней части каждого из них.
  • Обратитесь к тому же проекту, если есть уникальная идентифицирующая текстовая строка, которая продолжает появляться.
  • Имеют одинаковую классификацию безопасности, если вы заинтересованы в том, чтобы сосредоточиться на вещах, которые явно должны быть «более секретными», чем остальные.

Что делать?

Не используйте режим ECB!

Если вы используете блочный шифр, выберите режим работы блочного шифра что:

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

Если вы используете AES, режим, который вы, вероятно, захотите выбрать в наши дни, это AES-GCM (Режим счетчика Галуа), который не только использует IV для создания нового потока данных шифрования каждый раз, даже если ключ остается тем же, но также вычисляет то, что известно как Код аутентификации сообщения (MAC) или криптографической контрольной суммы одновременно с шифрованием или дешифрованием данных.

AES-GCM означает не только то, что вы избегаете повторяющихся шаблонов зашифрованного текста, но и то, что вы всегда получаете «контрольную сумму», которая сообщит вам, были ли данные, которые вы только что расшифровали, были подделаны по пути.

Помните, что мошенник, который не знает, что на самом деле означает зашифрованный текст, может, тем не менее, обманом заставить вас доверять неточному расшифрованию, даже не зная (или не заботясь), какой неверный вывод вы получите.

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

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

AES-GCM по существу преобразует AES в потоковый шифр и добавляет аутентификацию в форме MAC, но если вы ищете выделенный потоковый шифр, специально разработанный для работы таким образом, мы рекомендуем Даниэля Бернштейна. ЧаЧа20-Поли1305 (часть Poly1305 — это MAC), как подробно описано в RFC 8439.

Ниже мы показали, что мы получили, используя AES-128-GCM и ChaCha20-Poly1305 (здесь мы отказались от MAC-кодов), а также «изображение», состоящее из 95,040 330 байтов RGBA (72×4 при XNUMX байтах на пиксель) из Генератор псевдослучайных чисел ядра Linux.

Помните, что то, что данные выглядят неструктурированными, не означает, что они действительно случайны, но если они не выглядят случайными, но утверждают, что они зашифрованы, вы можете также предположить, что какая-то структура осталась позади, и что шифрование подозревать:

Что происходит дальше?

По данным WithSecure, Microsoft не планирует исправлять эту «уязвимость», видимо, из соображений обратной совместимости с Office 2010…

Устаревшие версии Office (2010) требуют AES 128 ECB, и документы Office по-прежнему защищены таким образом приложениями Office.

…а также…

Отчет [исследователей WithSecure] не считался отвечающим планке обслуживания безопасности и не считался нарушением. Никаких изменений кода не производилось, поэтому для этого отчета CVE не выдавался.

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

Таким образом, вы можете выбрать современный шифр и современный режим работы шифра, не возвращаясь к коду расшифровки старой школы, встроенному в Office 2010.


КАК МЫ СДЕЛАЛИ ИЗОБРАЖЕНИЯ В СТАТЬЕ Начните с файла sop330.png, который вы можете создать для себя, обрезав очищенный логотип SOPHOS с самого верхнего изображения, удалив 2-пиксельную синюю границу и сохранив в формате PNG.  Изображение должно получиться размером 330x72 пикселя.
 Преобразование в RGBA с помощью ImageMagick: $ convert sop330.png sop.rgba Результат: 330x72 пикселей x 4 байта/пиксель = 95,040 XNUMX байт.
 === Шифрование с использованием Lua и библиотеки LuaOSSL (у Python очень похожая привязка OpenSSL): -- загрузить данные > fdat = misc.filetostr('sop.rgba') > fdat:len() 95040 -- создать объекты шифрования > aes = openssl.cipher.new('AES-128-ECB') > gcm = openssl.cipher.new('AES-128-GCM') > cha = openssl.cipher.new('ChaCha20-Poly1305') -- инициализировать пароли и IV -- AES-128-ECB нужен 128-битный пароль, но не IV -- AES-128-GCM нужен 128-битный пароль и 12-байтный IV -- ChaCha20 нужен 256-битный пароль и 12-байтовый IV > aes:encrypt('THEPASSWORDIS123') > gcm:encrypt('THEPASSWORDIS123','andkrokeutiv') > cha:encrypt('THEPASSWORDIS123THEPASSWORDIS123','qlxmtosh476g') -- зашифровать данные файла тремя шифрами > aesout = aes:final(fdat) > gcmout = gcm:final(fdat) > chaout = cha:final(fdat) -- поточный шифр производит вывод побайтно, -- поэтому зашифрованный текст должен иметь ту же длину, что и открытый текст > gcmout:len() 95040 > chaout:len() 95040 -- здесь мы не будем использовать MAC-коды из GCM и Poly1305, -- но каждый шифр создает 128-битную (16-байтовую) «контрольную сумму» — используемую для проверки подлинности дешифрования после его завершения, — чтобы определить, поврежден или взломан входной зашифрованный текст (MAC зависит от ключа, поэтому злоумышленник не может его подделать) > base.hex(gcm:getTag(16)) a70f204605cd5bd18c9e4da36cbc9e74 > base.hex(cha:getTag(16)) a55b97d5e9f3cb9a3be2fa4f040b56ef -- создать 95040 "образ" прямо из /dev/random > rndout = misc.filetostr('/dev/random',#fdat) -- сохраните их все -- обратите внимание, что мы явно обрезаем AES-ECB -- вывод блочного шифра до требуемой длины изображения, потому что -- ECB нуждается в дополнении, чтобы соответствовать размер ввода с размером блока > misc.strtofile(aesout:sub(1,#fdat),'aes.rgba') > misc.strtofile(gcmout,'gcm.rgba') > misc.strtofile(chaout,'cha. rgba') > misc.strtofile(rndout,'rnd.rgba') === Чтобы загрузить файлы в обычном средстве просмотра изображений, вам может потребоваться без потерь преобразовать их обратно в формат PNG: $ convert -depth 8 -size 330x72 aes .rgba aes.png $ convert -depth 8 -размер 330x72 gcm.rgba gcm.png $ convert -depth 8 -size 330x72 cha.rgba cha.png $ convert -depth 8 -size 330x72 rnd.rgba rnd.png === Учитывая, что процесс шифрования шифрует все четыре байта в каждом пикселе RGBA , результирующее изображение имеет переменную прозрачность (A = альфа, сокращение от прозрачности).
 Ваш просмотрщик изображений может принять решение отобразить такое изображение с фоном в виде шахматной доски, который может показаться частью изображения, но таковым не является.  Поэтому мы использовали синий цвет Sophos из исходного изображения в качестве фона для зашифрованных файлов, чтобы их было легче просматривать.  Таким образом, общий синий оттенок не является частью данных изображения. 

Отметка времени:

Больше от Голая Безопасность