Поддерживаемые технологии aes что это
Лучший в своем классе: история появления стандарта шифрования AES
C мая 2020 года в России стартовали официальные продажи внешних винчестеров WD My Book, поддерживающих аппаратное шифрование AES с 256-битным ключом. В силу законодательных ограничений, ранее подобные устройства можно было приобрести лишь в зарубежных интернет-магазинах электроники либо на «сером» рынке, однако теперь обзавестись защищенным накопителем с фирменной 3-летней гарантией от Western Digital может любой желающий. В честь этого знаменательного события мы решили сделать небольшой экскурс в историю и разобраться, как появился Advanced Encryption Standard и чем же он так хорош по сравнению с конкурирующими решениями.
Долгое время официальным стандартом симметричного шифрования в США являлся DES (Data Encryption Standard — стандарт шифрования данных), разработанный компанией IBM и внесенный в перечень Федеральных стандартов обработки информации в 1977 году (FIPS 46-3). В основу алгоритма легли наработки, полученные в ходе исследовательского проекта под кодовым названием Lucifer. Когда 15 мая 1973 года Национальное бюро стандартов США объявило о проведении конкурса, целью которого стало создание стандарта шифрования для госучреждений, американская корпорация включилась в криптографическую гонку с третьей версией Люцифера, использовавшей обновленную сеть Фейстеля. И наряду с другими конкурсантами потерпела фиаско: ни один из алгоритмов, представленных на первый конкурс, не соответствовал строгим требованиям, сформулированным экспертами НБС.
Разумеется, в IBM не могли просто так смириться с поражением: когда 27 августа 1974 года конкурс был перезапущен, американская корпорация вновь подала заявку, представив улучшенную версию Lucifer. На сей раз у жюри не оказалось ровным счетом ни одной претензии: проведя грамотную работу над ошибками, IBM успешно устранила все недочеты, так что придраться оказалось не к чему. Одержав убедительную победу, Люцифер сменил имя на DES и уже 17 марта 1975 года был издан в Федеральном реестре.
Однако в ходе открытых симпозиумов, организованных в 1976 году с целью обсуждения нового криптографического стандарта, DES подвергся жесткой критике со стороны экспертного сообщества. Причиной этого стали изменения, внесенные в алгоритм специалистами АНБ: в частности, была уменьшена длина ключа до 56 бит (изначально Lucifer поддерживал работу с 64- и 128-битными ключами), а также изменена логика работы блоков перестановки. По мнению криптографов, «улучшения» не имели смысла и единственное, к чему стремилось Агентство национальной безопасности, внедряя модификации, — получить возможность беспрепятственно просматривать зашифрованные документы.
В связи с перечисленными обвинениями, при Сенате США была создана специальная комиссия, целью работы которой стала проверка обоснованности действий АНБ. В 1978 году по итогам расследования был опубликован доклад, в котором сообщалось следующее:
В то же время ограничение на длину ключа оказалось проблемой, и притом весьма серьезной, что в 1998 году убедительно доказала общественная организация Electronic Frontier Foundation (EFF) в рамках эксперимента DES Challenge II, проведенного под эгидой RSA Laboratory. Специально для взлома DES был построен суперкомпьютер, получивший кодовое название EFF DES Cracker, над созданием которого трудились Джон Гилмор, сооснователь EFF и руководитель проекта DES Challenge, и Пол Кочер, основатель компании Cryptography Research.
Процессор EFF DES Cracker
Разработанная ими система смогла успешно подобрать ключ к зашифрованному образцу методом простого перебора всего за 56 часов, то есть менее чем за трое суток. Для этого DES Cracker потребовалось проверить около четверти всех возможных комбинаций, а это значит, что даже при самом неблагоприятном стечении обстоятельств на взлом уйдет около 224 часов, то есть не более 10 суток. При этом стоимость суперкомпьютера, с учетом затраченных на его проектирование средств, составила всего 250 тысяч долларов. Нетрудно догадаться, что сегодня взломать подобный шифр еще проще и дешевле: мало того, что железо стало куда мощнее, так еще и благодаря развитию интернет-технологий хакеру вовсе не обязательно покупать или арендовать необходимое оборудование — вполне достаточно создать ботнет из зараженных вирусом ПК.
Данный эксперимент наглядно продемонстрировал, насколько DES морально устарел. А поскольку на тот момент алгоритм использовался в составе практически 50% решений в области шифрования данных (по оценке все той же EFF), вопрос о поиске альтернативы встал как никогда остро.
Новые вызовы — новый конкурс
Справедливости ради стоит сказать, что поиски замены для Data Encryption Standard начались практически одновременно с подготовкой EFF DES Cracker: Национальный институт стандартов и технологий (NIST) США еще в 1997 году объявил о запуске конкурса алгоритмов шифрования, призванного выявить новый «золотой стандарт» криптобезопасности. И если в былые времена аналогичное мероприятие проводилось исключительно «для своих», то, памятуя о неудачном опыте 30-летней давности, в NIST решили сделать конкурс полностью открытым: в нем могли принять участие любая компания и любое частное лицо, независимо от места дислокации или гражданства.
Такой подход оправдал себя еще на этапе отбора претендентов: среди авторов, подавших заявку на участие в конкурсе Advanced Encryption Standard, оказались и всемирно известные криптологи (Росс Андерсон, Эли Бихам, Ларс Кнудсен), и небольшие IT-компании, специализирующиеся на кибербезопасности (Counterpane), и крупные корпорации (немецкая Deutsche Telekom), и образовательные учреждения (Лёвенский католический университет, Бельгия), а также стартапы и небольшие фирмы, о которых мало кто слышал за пределами их стран (например, Tecnologia Apropriada Internacional из Коста-Рики).
Интересно, что в этот раз в NIST утвердили всего два основных требования к алгоритмам-участникам:
Прием заявок на конкурс Advanced Encryption Standard продлился полтора года. Всего в нем приняли участие 15 алгоритмов:
В случае с «богом войны» эксперты отметили идентичность процедуры шифрования и дешифровки данных, однако этим его преимущества и ограничились. Алгоритм IBM вышел на удивление прожорливым, что делало его неподходящим для работы в условиях ограниченных ресурсов. Наблюдались проблемы и с распараллеливанием вычислений. Для эффективной работы MARS нуждался в аппаратной поддержке 32-битного умножения и вращения на переменное число бит, что опять же накладывало ограничения на перечень поддерживаемых платформ.
MARS также оказался достаточно уязвим к атакам по времени и энергопотреблению, имел проблемы с расширением ключей «на лету», а его чрезмерная сложность затрудняла анализ архитектуры и создавала дополнительные проблемы на этапе практической реализации. Одним словом, на фоне других финалистов MARS выглядел настоящим аутсайдером.
Алгоритм унаследовал часть преобразований от своего предшественника, RC5, тщательно исследованного ранее, что в сочетании с простой и наглядной структурой делало его полностью прозрачным для экспертов и исключало наличие «закладок». К тому же RC6 демонстрировал рекордные скорости обработки данных на 32-битных платформах, а процедуры шифрования и дешифровки были реализованы в нем абсолютно идентично.
Однако алгоритм имел те же проблемы, что и упомянутый выше MARS: тут и уязвимость к атакам по сторонним каналам, и зависимость производительности от поддержки 32-битных операций, а также проблемы с параллельными вычислениями, расширением ключей и требовательность к аппаратным ресурсам. В связи с этим на роль победителя он никак не годился.
Twofish
Twofish оказался довольно шустрым и хорошо оптимизированным для работы на маломощных устройствах, отлично справлялся с расширением ключей и предполагал несколько вариантов реализации, что позволяло тонко адаптировать его под конкретные задачи. В то же время «две рыбки» оказались уязвимы к атакам по сторонним каналам (в частности, по времени и потребляемой мощности), не особо дружили с многопроцессорными системами и отличались чрезмерной сложностью, что, кстати, сказалось и на скорости расширения ключа.
Serpent
Алгоритм имел простую и понятную структуру, что существенно упрощало его аудит, был не особо требователен к мощностям аппаратной платформы, имел поддержку расширения ключей «на лету» и сравнительно легко поддавался модификации, чем выгодно отличался от своих оппонентов. Несмотря на это, Serpent был в принципе самым медленным из финалистов, к тому же процедуры шифровки и дешифровки информации в нем кардинально отличались и требовали принципиально разных подходов к реализации.
Аппаратное шифрование в процессорах
Шифровальные средства | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Шифровальные (криптографические) средства (ШКС) | ||||||||||||||||||
Основные НПА | ||||||||||||||||||
Решение ЕЭК №30 от 21 апреля 2015 г. | ||||||||||||||||||
Перечень | 2.19 | |||||||||||||||||
Положение | Приложение 9 | |||||||||||||||||
Услуги IFCG | ||||||||||||||||||
Энциклопедия IFCG — открытый информационный ресурс для участников и экспертов в области ВЭД. Если Вам требуются услуги по таможенному оформлению, получению разрешительных документов или у Вас есть вопросы, свяжитесь с нами — Контакты IFCG. В частности, мы готовы оказать услуги по оформлению следующих разрешительных документов для ввоза и вывоза товаров с шифровальными функциями: Аппаратные технологии безопасности Intel: новое слово в защите биометрических приложений. Часть 2В первой части мы обсудили проблемы современных биометрических приложений распознавания пользователей и рассказали о том, как Intel SGX, Intel VMX и Intel IPT способны повысить уровень их защиты. Сегодня продолжим разговор о безопасности биометрии, рассмотрим технологии Intel AES-NI, Intel Secure Key и Intel RealSense. Для того, чтобы защитить важные данные или программный код во время исполнения, широко используются криптографические алгоритмы и рандомизация адресного пространства (Address Space Layout Randomization, ASLR). Подобные технологии применяются как на уровне обычных приложений, так и на уровне операционной системы. Важной их частью являются случайные числа. Intel Secure KeyЕсли нужно сгенерировать ключевую пару или создать случайное адресное пространство, генератор настоящих случайных чисел лучше, чем генератор псевдослучайных чисел. Технология Intel Secure Key предоставляет x86-инструкцию RDRAND, которую можно использовать для создания высококачественного генератора случайных чисел. Инструкция RDRAND воплощает инновационный подход к созданию высококачественного, высокопроизводительного генератора случайных чисел, основанного на аппаратном источнике энтропии. Генератор построен по каскадной модели, он задействует встроенный в процессор источник энтропии для периодической инициализации аппаратного криптографически безопасного генератора псевдослучайных чисел. В результате инструкция RDRAND может генерировать случайные числа, соответствующие стандарту NIST SP 800-90A. Для наиболее распространённых вариантов использования её можно считать генератором подлинно случайных чисел. Инструкция RDRAND получает данные из внутреннего аппаратного генератора случайных чисел Существует много способов использования RDRAND. 1. Вызов RDRAND напрямую в коде на ассемблере или на встроенном ассемблере в C++. 2. Использование библиотеки от Intel (librdrand). Она написана на C/C++. Существуют версии для Windows, и для Linux и OS X. 3. Использование библиотек сторонних поставщиков. Intel AES-NIIntel Advanced Encryption Standard New Instructions (Intel AES-NI) – это набор инструкций, разработанный для ускорения приложений, использующих один из самых популярных симметричных алгоритмов шифрования AES. AES широко используют для шифрования данных, хранящихся в оперативной памяти и на жёстких дисках, для защиты информации, передаваемой по сети. Делается это для того, чтобы защитить конфиденциальные данные даже в том случае, если злоумышленнику удастся их скопировать с некоего носителя или перехватить при передаче. Шифрование канала передачи данных с использованием AES Для того, чтобы повысить запас надёжности, рекомендуется выполнять шифрование с использованием нескольких раундов AES, что эквивалентно увеличению длины криптографического ключа. В 2010 году Intel представила новый набор инструкций (Intel AES-NI), который предлагает полную аппаратную поддержку шифрования и дешифровки AES. Это позволяет увеличить производительность и снизить потребление памяти. В наши дни практически все настольные и мобильные процессоры Intel поддерживают AES-NI. Вот, какого прироста производительности удаётся достичь при использовании AES-NI в сравнении с полностью программной реализацией алгоритма, не использующей эти команды. Тестируемое устройство построено на базе Intel Atom Z3770 (Bay Trail) FFRD8 PR1, оно работало под управлением Android 4.4, использовалось OpenSSL native C API.
Как видно из данных, приведённых в таблице, при шифровании использование инструкций Intel AES-NI дало 5-кратный рост производительности. При дешифровке – 11-кратный рост. Нужно отметить, что использование AES-NI позволяет снизить энергопотребление примерно на 40%. В настоящее время большинство популярных операционных систем содержат встроенную поддержку Intel AES-NI. Когда некое приложение обращается к криптографическому API, которое предоставляет система, например, к Windows CNG API или к классу Javax.crypto в Android, низкоуровневый драйвер автоматически задействует инструкции AES-NI для повышения производительности. Кроме того, многие библиотеки, например, OpenSSL 1.0.1, Intel Integrated Performance Primitives, Crypto++, оптимизированы с целью максимально эффективного использования AES-NI. Испытания на живучесть и датчик глубины камеры Intel RealSenseБиометрическое распознавание пользователя, основанное на анализе лица, широко используется в повседневной жизни многих людей. Например – для разблокировки Android-устройств и персональных компьютеров. Так как для распознавания лица используется традиционная оптическая камера, умеющая захватывать плоские изображения, система не может отличить реального человека от фотографии. В результате взломщик может пройти процедуру авторизации, воспользовавшись распечатанным фотоснимком лица пользователя. Камера Intel RealSense умеет захватывать информацию о глубине пространства. Это открывает очень интересные перспективы. Одна из её функций заключается в построении трёхмерных моделей людей и объектов, попадающих в объектив. Данная возможность позволяет задействовать Intel RealSense как инструмент испытания на живучесть в некоторых сценариях захвата биометрических данных, и, как результат, повысить безопасность биометрических систем. Обычная камера, входящая в состав RealSense, фотографирует лицо пользователя, а модуль трёхмерного сканирования пространства одновременно строит объёмную картину того, что находится перед камерой. Сведения о пространственных характеристиках лицевой области легко могут быть использованы для того, чтобы определить, человек ли смотрит в камеру, или, там, где должно находиться объёмное лицо, размещён плоский лист бумаги. Трёхмерная модель лица с камеры глубины Intel RealSense F200. Очевидно, перед камерой настоящий человек. Лист бумаги, пусть и с напечатанным фото пользователя, остаётся плоским для камеры глубины Intel RealSense F200. Очевидно, что это – подделка. Обзор технологийВот краткий обзор технологий Intel, которые могут поднять безопасность биометрических систем на новый уровень. Жёлтыми значками показаны области применения технологий Intel для повышения безопасности биометрических приложений. ИтогиБиометрическая идентификация пользователей отличается от традиционной схемы, использующей имя и пароль. Биометрические данные человека практически невозможно изменить. Как результат, этот подход к аутентификации требует повышенного уровня безопасности систем. Intel предлагает различные аппаратные технологии, доступные как в настольных компьютерах, оснащённых процессорами Intel, так и на мобильных устройствах. Эти технологии могут помочь разработчикам биометрических решений в создании более защищённых систем аутентификации без необходимости задействовать дополнительное аппаратное обеспечение. Аппаратная поддержка алгоритма AES современными процессорамиНачинаемДля начало, необходимо убедится что расширение AES-NI присутствует в нашем процессоре. Для этого существует специальная команда CPUID, которая при значение eax=0x00000001, должна выставить в регистрах биты относительно присутствующих расширений. Для расширения AES это 25 бит регистра ECX: Если бит установлен в 1, значит мы можем переходить к шифрованию. Расширение ключа/ExpandKeyАлгоритм расширения ключа в псевдокоде выглядит так: Для аппаратной поддержки надо использовать инструкцию AESKEYGENASSIST, которая выполнит: Как легко заметить, инструкция не выполняет: Эти операции придется выполнить самим, используя MMX инструкции Шифрование/EncryptionДля реализации одного раунда шифрования используется инструкция AESENC, которая выполняет следующие действия: Последний раунд шифрования реализуется при помощи инструкции AESENCLAST: Отличие этой инструкции от AESENC состоит в том, что операция MixColums на последнем шаге не выполняется: Расшифровывание/decryptionДля реализации процедуры расшифрования используется инструкция AESDEC: Для получения InvKey надо выполнить операцию InvMixClomuns для ключа. Инструкция, которая это делает — AESIMC xmm1.xmm2 Итак, аппаратное поддержка должна нам дать приличный прирост к скорости шифрования. В качестве завершения поста приведу класс на C++, реализующий операции шифрования и расшифрования в режиме ECB. После прогона теста была достигнута скорость шифрования на одном ядре i5-3740 (3.2GHz), равная 320MB/sec AES — американский стандарт шифрования. Часть IЭта публикация вызвана необходимостью дать возможность обучаемым изучать и моделировать процессы шифрования/расшифрования и дешифрования последнего стандарта США. Ознакомление с имеющимися публикациями в сети не соответствуют программе обучения в силу их поверхностного подхода, неполноты изложения, и отсутствия должной строгости. Например, нигде не встречается выбор и задание примитивного элемента, формирующего поле, без чего работу и подготовку специалиста, особенно криптоаналитические явления и процессы, организовать и моделировать невозможно. В этой работе используется описание, несколько отличное от оригинала AES, представленного FIPS PUB 197. Здесь описывается шифр AES, с использованием матриц над GF(2 8 ), но примечания работы сохраняются, т. е. шифр реализуется над конечным расширенным полем GF (2 8 ). На русском языке достаточно полная и доступная версия шифра изложена Зензиным О.С. и Ивановым М.А. Математические основы стандарта шифрования AES СШАAES – блочный шифр с длиной блоков равной 128 битам, и шифр поддерживает ключи длиной Шифр AES преобразует исходное состояние блока, обозначаемое символом S (State) и принадлежащее множеству матриц Пример 1. Блок данных длиной в 128 = 4·32, 4 слова по 32 разряда представляется квадратной таблицей байтов из 4-х строк и 4-х столбцов. Каждая строка содержит байты из 4-х разных 32 разрядных слов, а столбец – байты одного и того же 32-разрядного слова. Весь квадрат образован 4×4 = 16 байтами, которые могут обрабатываться как самостоятельные единицы. Представление данных, выбранное для элементов поля GF(2 8 ). Для удобства и лучшего понимания изучаемого материала, а для уяснения деталей выполнения вычислений с карандашом в руках ниже приводятся многочисленные числовые примеры и следующая таблица 1. Таблица 1. Соответствие десятичных, шестнадцатеричных, двоичных чисел и многочленов Представление данных, используемых в шифре AESВыберем десятичное целое число, эквивалент которого будем представлять 1. 21210, десятичным видом – числом в 10-ой системе счисления. 2. <11010100>b, представление элементов сообщения двоичным вектором – элементом векторного пространства GF(2 8 ) двоичных векторов, 3. 4. ⊕ – операция поразрядного суммирования векторов из GF(2 8 ) по mod2 (без переноса 1 в старший разряд). Алгоритм стандарта AES и шифра RIJNDAEL оперирует с байтами информации, которые отождествляются с элементами конечного поля Галуа GF(2 8 ). Степень расширения простого поля GF(2) равна 8. Все элементы расширенного поля при представлении их многочленами имеют показатель степень не более семи (≤ 7). Достигается такое положение приведением всех результатов действий с элементами поля по модулю неприводимого многочлена степени 8, который является формирующим многочленом для этого поля. Кроме неприводимого многочлена для построения поля необходимо задавать примитивный элемент. В рассматриваемом алгоритме примитивный элемент задан (его порядок должен быть равен порядку мультипликативной группы поля), а многочлен фиксирован и имеет вид φ(x). Не располагая этими характеристикам, работать со стандартом не получится или 1 <1b>в 16-ричной форме. Рассмотрим примеры выполнения арифметических операций над элементами поля при различных представлениях этих элементов. Любой байт исходного текста (элемент поля) формально можно представить строкой символов Пример 2. Элемент расширенного поля GF(2 8 ) задан в виде двоичного вектора: Описание многочленом этого элемента имеет вид: Если доопределить значения ai двоичными значениями, i = 0(1)7, например, так так как Шестнадцатеричное представление этого элемента α16 = <с1>=<11000001>, а десятичное α10 = Суммирование элементов поля GF(2 8 )Сложение в рассматриваемом поле представляет операцию поразрядного суммирования значений разрядов слагаемых без переноса единицы в старший разряд. Это операция исключающего ИЛИ (EXOR – EXLUSIV OR) часто обозначается просто XOR. В модулярной арифметике такое сложение называется суммированием по модулю два (mod2). Пример 3. Выберем в качестве операндов многочлены Представление многочленами В полях характеристики 2 действия сложения и вычитания операндов равнозначны. Для каждого элемента поля в аддитивной группе обратным к нему (противоположным) является он сам. Так, для элемента (а) противоположным является (-а), так как а + (-а) = 0. Нулевой элемент (единица аддитивной группы поля, нейтральный элемент) в шестнадцатеричном виде – это <00>16. Умножение элементов поля GF(2 8 )Операция обычного умножения операндов (в отличие от модулярного ⊗) обозначается точкой между операндами, или знак умножения вообще опускается, когда не возникает опасности разночтения. Операнды в двоичном представлении умножаются по обычным правилам «столбиком». Будем перемножать те же, что и ранее операнды. Пример 4. Умножение операндов в двоичном представлении Остаток от деления на неприводимый многочлен φ(x) в его двоичном представлении результата умножения операндов принимаем в качестве произведения операндов как элементов поля GF(2 8 ). Выполним умножение операндов в представлении многочленами. Пример 5. Умножение операндов элементов поля в многочленном представлении Здесь символ (moddφ (x),2) обозначает приведение по двойному модулю: многочлен по модулю φ(x), а его коэффициенты по модулю два, т.е. четные коэффициенты обнуляются. Получившаяся степень (deg(A(x)⊗ B(x)) =10) результата произведения выводит (этот многочлен — результат) за пределы поля. Чтобы результат принадлежал полю, его приводят (редуцируют, делят) по модулю неприводимого многочлена. Выполним такое деление обычным способом (уголком) Пример 6. Необходимость деления многочленов возникает при Наряду с обычным (классическим) рассмотрением операции умножения элементов в двоичном поле существует более удобная схема. Именно такая схема и реализована в стандарте AES. Рассмотрим сущность этого способа умноженияПример 7. Другой способ умножения в конечном поле. Пусть задан произвольный многочлен седьмой степени Умножим его на С этой целью определяют значение В этом случае при записи A(x) в сдвиговом регистре умножению на x полинома A(x), т.е. Детализируем все действия. Элемент х в поле GF(2 8 ) имеет представление Тогда умножение на него приводит просто к сдвигу первого операнда на 1 разряд влево. Очередной шаг процедуры И еще один шаг проверка обычным умножением (степенное представление) Еще большего эффекта при производстве вычислений можно достигнуть, если укрупнить элементы, с которыми выполняются манипуляции. Так в криптоалгоритме RIJNDAEL используются 32-разрядные (4-х-байтовые) слова. Составляющие байт разряды не анализируются по отдельности. Такой подход позволяет 4-байтовому слову в соответствие поставить многочлен А(х) степени не более трех, и коэффициенты которого лежат в поле GF(2 8 ). Операция умножения таких слов В качестве такого многочлена выбран многочлен Умножение многочленов. Окончательно результатом D(x) умножения ⊗ двух многочленов по модулю выполним умножение В(х) на х по
|