КОМАНДА НА ШИФРОВАНИЕ СООБЩЕНИЯ С АУТЕНТИФИКАЦИЕЙ Российский патент 2020 года по МПК H04L9/06 

Описание патента на изобретение RU2727152C1

Уровень техники

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

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

Специальная публикация 800-38D Национального института науки и техники США (NIST), Рекомендация по режимам использования блочного шифрования: Режим счетчика с аутентификацией Галуа (GCM) и GMAC, (GMAC: код аутентификации сообщений Галуа), описывает следующие операции:

Аутентификация дополнительных аутентифицированных данных с помощью алгоритма хеширования Галуа, (GHASH), описанного в NIST 800-38D SP. Примером дополнительных аутентифицированных данных является информация о сетевой маршрутизации для сообщения. Эти данные не шифруют, что позволяет сетевому маршрутизатору должным образом диспетчеризировать сообщение, однако, маршрутная информация может потребовать аутентификации, например, для подтверждения прибытия данных из ожидаемого источника.

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

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

Сущность изобретения

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

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

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

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

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

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

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

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

Краткое описание чертежей

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

Фиг. 1А изображает один пример вычислительной среды для охвата и использования одного или нескольких аспектов настоящего изобретения,

Фиг. 1Б изображает дополнительные подробности процессора на фиг. 1А,

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

Фиг. 2Б изображает более подробную информацию по памяти на фиг. 2А,

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

Фиг. 3Б изображает один пример содержимого общего регистра, общего регистра 0 (GR0), который подлежит использованию одним или несколькими аспектами команды на шифрование сообщения с аутентификацией на фиг. 3А, согласно аспекту настоящего изобретения,

Фиг. 3В изображает один пример содержимого другого общего регистра, общего регистра 1 (GR1), который подлежит использованию командой на шифрование сообщения с аутентификацией на фиг. 3А, согласно аспекту настоящего изобретения,

Фиг. 3Г изображает один пример содержимого регистра R1, который подлежит использованию, в одном или нескольких аспектах, командой на шифрование сообщения с аутентификацией на фиг. 3А, согласно аспекту настоящего изобретения,

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

Фиг. 3Е изображает один пример содержимого регистра R2+1, который подлежит использованию, в одном или нескольких аспектах, командой на шифрование сообщения с аутентификацией на фиг. 3А, согласно аспекту настоящего изобретения,

Фиг. 3Ж изображает один пример содержимого регистра R3, который подлежит использованию, в одном или нескольких аспектах, командой на шифрование сообщения с аутентификацией на фиг. 3А, согласно аспекту настоящего изобретения,

Фиг. 3З изображает один пример содержимого регистра R3+1, который подлежит использованию, в одном или нескольких аспектах, командой на шифрование сообщения с аутентификацией на фиг. 3А, согласно аспекту настоящего изобретения,

Фиг. 4 изображает один пример формата блока параметров для использования командой на шифрование сообщения с аутентификацией на фиг. 3А, согласно аспекту настоящего изобретения,

Фиг. 5А изображает один пример кодирования подключа хеша, согласно аспекту настоящего изобретения,

Фиг. 5Б изображает один пример обработки алгоритмом хеширования Галуа полных блоков дополнительных аутентифицированных данных, согласно аспекту настоящего изобретения,

Фиг. 5В изображает один пример обработки алгоритмом хеширования Галуа последнего (короткого) блока дополнительных аутентифицированных данных, согласно аспекту настоящего изобретения,

Фиг. 5Г изображает один пример комбинированного процесса шифрования и хеширования полных блоков сообщения для кодирования, согласно аспекту настоящего изобретения,

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

Фиг. 5Е изображает один пример шифрования и хеширования последнего (короткого) блока сообщения, согласно аспекту настоящего изобретения,

Фиг. 5Ж изображает один пример хеширования и кодирования последнего тега, согласно аспекту настоящего изобретения,

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

Фиг. 7А-7Д изображают один пример обработки связанной с командой на шифрование сообщения с аутентификацией, согласно аспекту настоящего изобретения, и

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

Подробное описание

Согласно одному или нескольким аспектам, предоставлена отдельная команда (например, отдельная архитектурно выполненная аппаратная машинная команда на аппаратном/программном интерфейсе), которая сочетает в себе функции аутентификации и шифрования. Например, предоставлена отдельная команда, которая объединяет функции получения тега аутентификации сообщения (как для дополнительных аутентифицированных данных, так и для сообщений) с шифрованием сообщения. Хотя в одном варианте осуществления команда выполняет шифрование и аутентификацию, соответствующие техническому описанию счетчика с аутентификацией Галуа, в других вариантах осуществления, для выполнения шифрования и аутентификации команда может использовать дополнительные и/или другие алгоритмы. В настоящем документе команда упоминается как команда на шифрование сообщения с аутентификацией.

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

Один вариант осуществления вычислительной среды для охвата и использования одного или нескольких аспектов настоящего изобретения описан с отсылками на фиг. 1А. В одном примере вычислительная среда основана на Z/Архитектуре, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк. Один вариант осуществления Z/Архитектуры описан в публикации IBM® под названием «z/Архитектура, принципы работы» (z/Architecture, Principles of Operation), публикация IBM № SA22-7832-10, март 2015, включенной в настоящий документ путем отсылки в полном объеме. Z/АРХИТЕКТУРА является зарегистрированной торговой маркой International Business Machines Corporation, Армонк, Нью-Йорк, США.

В другом примере, вычислительная среда основана на архитектуре Power, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк. Один вариант осуществления Архитектуры Power описан в публикации «Power ISA™ версия 2.07В» (Power ISA™ Version 2.07B), International Business Machines Corporation, от 9 апреля 2015, включенной в настоящий документ путем отсылки в полном объеме. Архитектура Power является зарегистрированной торговой маркой International Business Machines Corporation, Армонк, Нью-Йорк, США.

Вычислительная среда может также быть основана на другой архитектуре, в том числе, но не ограничиваясь, на архитектуре Intel х86. Имеются также и другие примеры.

Как показано на фиг. 1А, вычислительная среда 100 включает в себя, например, компьютерную систему/сервер 12, который может включать в себя, но не ограничивается ими, один или несколько процессоров или вычислительных устройств 16, системную память 28, и шину 18, которая соединяет с процессором 16 различные компоненты системы, включая системную память 28.

Шина 18 представляет собой один или более из числа любых нескольких типов структур шины, включая шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт, а также шину процессора или локальную шину, использующую любую из ряда шинных архитектур. В качестве примера, но не ограничения, такая архитектура включает в себя шину Промышленной стандартной архитектуры (ISA), шину Микроканальной архитектуры (МСА), шину Расширенной ISA (EISA), локальную шину Ассоциации по стандартам в области видео-электроники (VESA) и шину Взаимодействия периферийных компонентов (PCI).

Компьютерная система/сервер 12 обычно включает в себя ряд считываемых компьютерной системой носителей. Такие носители могут быть представлены любыми доступными носителями, которые являются доступными посредством компьютерной системы/сервера 12, и которые включают в себя как энергозависимые, так и энергонезависимые носители, съемные и несъемные носители.

Системная память 28 может включать в себя считываемые компьютерной системой носители в виде энергозависимой памяти, такой как оперативная память (RAM) 30 и/или кэш-память 32. Компьютерная система/сервер 12, кроме того, может включать в себя и другие съемные и несъемные, энергозависимые и энергонезависимые информационные носители компьютерной системы. Исключительно в качестве примера, может быть предоставлена система 34 памяти для считывания из несъемных, энергонезависимых магнитных носителей (не показанных и обычно называемых «жестким диском») и для записи в них. Хотя не показаны, могут быть предоставлены магнитный дисковод для считывания из несъемного, энергонезависимого магнитного диска (например, «гибкого диска») и для записи в него, и оптический дисковод для считывания из несъемного, энергонезависимого оптического диска, такого как CD-ROM, DVD-ROM или другие оптические носители, и для записи в них. В таких реализациях каждый дисковод может быть присоединен к шине 18 посредством одного или нескольких интерфейсов носителей данных. Как, кроме того, изображено и описано ниже, память 28 может включать в себя по меньшей мере один программный продукт, имеющий набор (например, по меньшей мере один) программных модулей, которые сконфигурированы для выполнения функций вариантов осуществления настоящего изобретения.

В качестве примера, но не ограничения, программа/сервисная программа 40, имеющая набор (по меньшей мере один) программных модулей 42, может быть сохранена в памяти 28, равно как операционная система, одна или несколько прикладных программ, другие программные модули и данные программы. Каждый элемент из числа операционной системы, одной или нескольких прикладных программ, других программных модулей и данных программы или некоторая комбинация из них может включать в себя реализацию сетевой среды. В основном, программные модули 42 выполняют функции и/или методологии предпочтительных вариантов осуществления настоящего изобретения, как они описаны в настоящем документе.

Компьютерная система/сервер 12 может также сообщаться с одним или несколькими внешними устройствами 14, такими как клавиатура, позиционирующее устройство, дисплей 24, и т.д., с одним или несколькими устройствами, обеспечивающими пользователю взаимодействие с компьютерной системой/сервером 12, и/или любыми устройствами (например, сетевой платой, модемом и т.д.), которые обеспечивают компьютерной системе/серверу 12 сообщение с одним или несколькими другими вычислительными устройствами. Такая коммуникация может происходить через интерфейсы 22 ввода/вывода (I/O). Кроме того, компьютерная система/сервер 12 может сообщаться через сетевой адаптер 20 с одной или несколькими сетями, такими как локальная сеть (LAN), общая глобальная сеть (WAN) и/или сеть общего пользования (например, Интернет). Как изображено, сетевой адаптер 20 сообщается с другими компонентами компьютерной системы/сервера 12 через шину 18. Следует понимать, что совместно с компьютерной системой/сервером 12 могут быть использованы, хотя и не показаны, другие аппаратные компоненты и/или компоненты программного обеспечения. Примеры, в том числе, но не ограничиваясь: микрокод, драйверы устройств, резервные вычислительные устройства, массивы внешних дисководов, системы RAID (массивы недорогих дисковых накопителей с избыточностью), устройства записи на ленту, системы архивного хранения данных и т.д.

В одном примере процессор 16 включает в себя несколько используемых для выполнения команд функциональных компонентов. Как изображено на фиг. 1Б, эти функциональные компоненты включают в себя, например, компонент 120 выборки команды для выборки подлежащих выполнению команд, устройство 122 декодирования команд для декодирования выбранных команд и для получения операндов декодированных команд, компонент 124 выполнения команд для выполнения декодированных команд, компонент 126 доступа к памяти для доступа, в случае необходимости, к памяти для выполнения команд, и компонент 130 перезаписи для предоставления результатов выполненных команд. Один или несколько из этих компонентов, согласно аспекту настоящего изобретения, имеет возможность предоставления операций 136 шифрования и аутентификации, включая аутентификацию дополнительных аутентифицированных данных, как описано в настоящем документе.

В одном варианте осуществления процессор 16 также включает в себя один или несколько регистров 140 для использования посредством одного или нескольких из числа функциональных компонентов.

Другой вариант осуществления вычислительной среды для охвата и использования одного или нескольких аспектов описан с отсылками на фиг. 2А. В этом примере вычислительная среда 200 включает в себя, например, предназначенное для исходной среды центральное вычислительное устройство (CPU) 202, память 204, а также одно или несколько устройств ввода-вывода и/или интерфейсов 206, соединенных друг с другом, например, через одну или несколько шин 208 и/или других присоединений. Например, вычислительная среда 200 может включать в себя процессор PowerPC или сервер pSeries, предлагаемые International Business Machines Corporation, Армонк, Нью-Йорк, HP Superdome с процессорами Intel Itanium II, предлагаемый Hewlett Packard, Пало-Альто, Калифорния, и/или другие машины, основанные на архитектурах, предлагаемых International Business Machines Corporation, Hewlett Packard, Intel, Oracle или другими.

Предназначенное для исходной среды центральное вычислительное устройство 202 включает в себя один или несколько предназначенных для исходной среды регистров 210, таких как один или несколько регистров общего назначения и/или один или несколько регистров особого назначения, используемых в процессе обработки в среде. Эти регистры включают в себя информацию, представляющую состояние среды на какой-либо конкретный момент времени.

Кроме того, предназначенное для исходной среды центральное вычислительное устройство 202 выполняет команды и код, которые сохраняются в памяти 204. В одном конкретном примере центральное вычислительное устройство выполняет код 212 эмулятора, сохраняемый в памяти 204. Этот код позволяет вычислительному среде, сконфигурированной в одной архитектуре, эмулировать другую архитектуру. Например, код 212 эмулятора позволяет основанным на отличных от z/Архитектуры архитектурах машинам, таким как процессоры PowerPC, серверы pSeries, серверы HP Superdome или другие, эмулировать z/Архитектуру и выполнять программное обеспечение и команды, разработанные на основе z/Архитектуры.

Дополнительные, относящиеся к коду 212 эмулятора подробности приведены с отсылками на фиг. 2Б. Сохраняемые в памяти 204 гостевые команды 250 содержат команды программного обеспечения (например, коррелирующие с машинными командами), которые были разработаны для выполнения в архитектуре, отличной от таковой для предназначенного для исходной среды CPU 202. Например, гостевые команды 250 могут быть разработаны для выполнения на процессоре 16 z/Архитектуры, но вместо этого, эмулируются на предназначенном для исходной среды CPU 202, который может быть представлен, например, процессором Intel Itanium II. В одном примере код 212 эмулятора включает в себя подпрограмму 252 выборки команд для получения одной или нескольких гостевых команд 250 из памяти 204 и, факультативно, для предоставления локальной буферизации для полученных команд. Он также включает в себя подпрограмму 254 трансляции команд для выявления типа полученной гостевой команды и для трансляции гостевой команды в одну или несколько соответствующих собственных команд 256. Такая трансляция включает в себя, например, идентификацию функции, которая подлежит выполнению посредством гостевой команды, и выбор предназначенной для исходной среды команды (команд) для выполнения этой функции.

Кроме того, код 212 эмулятора включает в себя подпрограмму 260 управления эмуляцией для принуждения команд исходной среды к выполнению. Подпрограмма 260 управления эмуляцией имеет возможность принуждения предназначенного для исходной среды CPU 202 к выполнению подпрограммы команд исходной среды, которые эмулируют одну или несколько ранее полученных гостевых команд и, в конце такого выполнения, возвращения управления подпрограмме выборки команд для эмуляции получения следующей гостевой команды или группы гостевых команд. Выполнение команд 256 исходной среды может включать в себя загрузку данных в регистр из памяти 204, сохранение данных обратно в память из регистра, или выполнение арифметической или логической операции некоторого типа, как задано подпрограммой трансляции.

Каждая подпрограмма, например, реализуется в программном обеспечении, сохраняемом в памяти и выполняемом посредством предназначенного для исходной среды центрального вычислительного устройства 202. В других примерах, одна или несколько из числа подпрограмм или операций, реализуются во встроенном программном обеспечении, аппаратных средствах, программном обеспечении или в некоторой комбинации из этих средств. Регистры эмулированного процессора могут быть эмулированы с помощью регистров 210 предназначенного для исходной среды CPU или при помощи местоположений в памяти 204. В предпочтительных вариантах осуществления гостевые команды 250, команды 256 исходной среды и код 212 эмулятора могут находиться в той же самой памяти или могут быть рассредоточены среди различных запоминающих устройств.

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

В одном примере гостевой командой 250, которую получают, транслируют и выполняют, является описанная в настоящем документе команда на шифрование сообщения с аутентификацией. Команду, которая имеет одну архитектуру (например, Z/Архитектуру), выбирают из памяти, транслируют и представляют в виде последовательности команд 256 исходной среды другой архитектуры (например, PowerPC, pSeries, Intel и т.д.). Такие команды исходной среды затем выполняют.

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

Один вариант осуществления команды на шифрование сообщения с аутентификацией описан с отсылками на фиг. 3А. В одном примере команда 300 на шифрование сообщения с аутентификацией включает в себя поле 302 кода операции (например, биты 0-15), которое имеет операционный код (код операции) (OPCODE) для указания на шифрованное сообщение с операцией аутентификации, первое поле 304 регистра (например, биты 24-27), используемое для обозначения по меньшей мере одного первого регистра (R1), второе поле 306 регистра (например, биты 28-31), используемое для обозначения по меньшей мере одного второго регистра (R2), и третье поле 308 регистра (например, биты 16-19), используемое для обозначения по меньшей мере одного третьего регистра (R3). В одном примере каждое из полей 304-308 является отдельным и независимым от поля кода операции. Кроме того, в одном варианте осуществления они являются отдельными и независимыми друг от друга, однако, в других вариантах осуществления, поля в числе более одного могут быть объединены друг с другом.

В одном примере определяемое полем R1 содержимое четного регистра содержит адрес первого операнда. Кроме того, содержимое обозначенных полем R2 и полем R3 четно-нечетных пар регистров соответственно содержит адрес и длину второго и третьего операндов.

В дополнение к закодированным в команде R1, R2 и R3, одна реализация команды использует один или несколько неявно задаваемых регистров, включая, например, общий регистр 0 (GR0) и общий регистр 1 (GR1). Каждый из регистров, кроме того, описан ниже с отсылками на фиг. 3Б-3З.

Обращаясь первоначально к фиг. 3Б, описан один вариант осуществления формата общего регистра 0 (320). В одном примере общий регистр 0 включает в себя поле 322 (F) меток (например, биты 48-55), элемент 324 управления (например, бит 56) модификатором (М), и поле 326 функционального кода (FC) (например, биты 57-63). Каждое из полей, кроме того, описано ниже.

Метки (F) 322: Позиции 48-55 битов из общего регистра 0 содержат 8-битовое поле меток, регулирующее функционирование функции. Поле меток является значащим, когда функциональный код в битах 57-63 из общего регистра 0 обозначает функцию шифрования (то есть, когда функциональный код является ненулевым). Формат поля меток может быть представлен следующим образом, в одном примере:

Зарезервировано: Биты 0-4 поля меток зарезервированы и должны содержать ноли, в противном случае, программа может не иметь совместимости в будущем.

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

Метка последних дополнительных аутентифицированных данных (LAAD): Бит 6 поля меток квалифицирует содержимое третьего операнда. Когда метка LAAD представлена единицей, она указывает на то, что третий операнд обозначает последнюю серию дополнительных аутентифицированных блоков данных. Когда метка LAAD является нолем, она указывает на то, что третий операнд не обозначает последнюю серию дополнительных аутентифицированных блоков данных.

Последняя метка простого текста/шифрованного текста (LPC) (также упоминаемая в настоящем документе как последний элемент управления текстом): Бит 7 поля меток квалифицирует содержимое второго операнда. Когда метка LPC представлена единицей, она указывает на то, что второй операнд обозначает последнюю серию блоков простого текста или шифрованного текста. Когда метка LPC представлена нолем, она указывает на то, что второй операнд не обозначает последнюю серию блоков простого текста или шифрованного текста.

Исключение по спецификации распознается, и операция подавляется в том случае, когда метка LPC представлена единицей, а метка LAAD представлена нолем.

Модификатор (М) 324: Когда функциональный код в битах 57-63 из общего регистра 0 является ненулевым, позиция 56 бита из общего регистра 0 содержит элемент управления модификатором, указывающий на то, что посредством функции должно быть выполнено кодирование или декодирование. Когда элемент управления М представлен нолем, функция выполняет кодирование второго операнда, когда элемент управления М представлен единицей, функция выполняет декодирование второго операнда. Когда функциональный код представлен нолем, элемент М управления игнорируется.

Функциональный код (FC) 326: Позиции 57-63 битов из общего регистра 0 содержат функциональный код. В процессе выполнения команды выполняется заданная функциональным кодом функция. Примеры приписанных функциональных кодов для шифрованного сообщения с аутентификацией включают в себя:

Биты 0-31 из общего регистра 0 игнорируются. Биты 32-47 из общего регистра 0 резервируются и должны содержать ноли, в противном случае, программа может не иметь совместимости в будущем.

Функция запроса (например, функциональный код 0), предоставляет средства указания на доступность других функций. Содержимое общих регистров R1, R2, R2+1, R3 и R3+1 проигнорировано для функции запроса.

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

Как показано на фиг. 3В, общий регистр 1 (330) содержит логический адрес 332 крайнего левого байта блока параметров в памяти. В 24-битовом режиме адресации содержимое позиций 40-63 битов из общего регистра 1 составляет адрес, а содержимое позиций 0-39 битов игнорируется. В 31-битовом режиме адресации содержимое позиций 33-63 битов из общего регистра 1 составляет адрес, а содержимое позиций 0-32 битов игнорируется. В 64-битовом режиме адресации содержимое позиций 0-63 битов из общего регистра 1 составляет адрес.

Как показано на фиг. 3Г, поле (304) R1 обозначает общий регистр, и должно обозначать регистр с четным номером, в противном случае, распознается исключение по спецификации. Каждое из полей R2 и R3 обозначает четно-нечетную пару общих регистров, и каждое из них должно обозначать регистр с четным номером, в противном случае, распознается исключение по спецификации. Исключение по спецификации также распознается, когда поле R3 обозначает тот же регистр, что и одно из полей R1 или R2.

Местоположение крайнего левого байта первого, второго, и третьего операндов задано содержимым общих регистров R1 304 (фиг. 3Г), R2 306 (фиг. 3Д) и R3 308 (фиг. 3Ж), соответственно. Число байтов во втором местоположении операнда задано в общем регистре R2+1 (370, фиг. 3Е). Первый операнд имеет ту же длину, что и второй операнд. Число байтов в местоположении третьего операнда задано в общем регистре R3+1 (390, фиг. 3З).

В качестве части операции, адрес 382 в общем регистре R3 (380, фиг. 3Ж) получает приращение на число обработанных байтов третьего операнда, а длина 392 в общем регистре R3+1 (390) получает уменьшение на то же число, дополнительно, каждый из адресов 342, 362 в общих регистрах R1 и R2 получает приращения на число обработанных байтов второго операнда, а длина 372 в общем регистре R2+1 (370) получает уменьшение на то же число. Формирование и обновление адресов и длин зависят от способа адресации.

Например, в 24-битовом режиме адресации, содержимое позиций 40-63 битов общих регистров R1, R2 и R3 составляют адреса первого, второго и третьего операндов, соответственно, а содержимое позиций 0-39 битов игнорируется, биты 40-63 в составе обновленных адресов заменяют соответствующие биты в общих регистрах R1, R2 и R3, переносы из позиции 40 бита в составе обновленного адреса игнорируются, а содержимому позиций 32-39 битов общих регистров, R1, R2 и R3 задают нулевые значения. В 31-битовом режиме адресации, содержимое позиций 33-63 битов общих регистров R1, R2 и R3 составляют адреса первого, второго и третьего операндов, соответственно, а содержимое позиций 0-32 битов игнорируется, биты 33-63 в составе обновленных адресов заменяют соответствующие биты в общих регистрах R1, R2 и R3, переносы из позиции 33 бита в составе обновленного адреса игнорируются, а содержимому позиции 32 битов общих регистров, R1, R2 и R3 задают нулевое значение. В 64-битовом режиме адресации, содержимое позиций 0-63 битов общих регистров R1, R2 и R3 составляют адреса первого, второго и третьего операндов, соответственно, а содержимое позиций 0-32 битов игнорируется, биты 0-63 в составе обновленных адресов заменяют соответствующие биты в общих регистрах R1, R2 и R3, а переносы из позиции 0 бита игнорируются.

Как в 24-битовом, так и в 31-битовом режиме адресации, содержимое позиций 32-63 битов из общего регистра R2+1 формируют 32-битовое двоичное целое число без знака, задающее число байтов в первом и втором операндах, а содержимое позиций 0-31 битов игнорируется, биты 32-63 в составе обновленного значения заменяют соответствующие биты в общем регистре R2+1. В 64-битовом режиме адресации, содержимое позиций 0-63 битов из общего регистра R2+1 формирует 64-разрядное двоичное целое число без знака, задающее число байтов в первом и втором операндах, обновленное значение заменяет содержимое общего регистра R2+1.

Как в 24-битовом, так и в 31-битовом режимах адресации, содержимое позиций 32-63 битов из общего регистра R3+1 формирует 32-битовое двоичное целое число без знака, задающее число байтов в третьем операнде, а содержимое позиций 0-31 битов игнорируется, биты 32-63 в составе обновленного значения заменяют соответствующие биты в общем регистре R3+1. В 64-битовом режиме адресации, содержимое позиций 0-63 битов из общего регистра R3+1 формирует 64-разрядное двоичное целое число без знака, задающее число байтов в третьем операнде, обновленное значение заменяет содержимое общего регистра R3+1.

В 24-битовом или в 31-битовом режиме адресации содержимое позиций 0-31 битов общих регистров R1, R2, R2+1, R3 и R3+1 остается неизменным.

В режиме регистра доступа, регистры доступа 1, R1, R2 и R3 задают адресные пространства, содержащие блок параметров, а также первый, второй и третий операнды, соответственно.

Каждая из функций описана ниже:

Запрос (функциональный код 0)

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

По завершении выполнения функции запроса, условный код принимает значение 0, условный коды 1, 2 и 3 не являются применимыми к этой функции. Счетчик с аутентификацией Галуа (GCM) - Функции AES (Избирательные ненулевые функциональные коды)

В одном варианте осуществления имеются шесть функций GCM-AES:

GCM-AES-128 (функциональный код 18),

GCM-AES-192 (функциональный код 19),

GCM-AES-256 (функциональный код 20),

GCM-закодировано AES 128 (функциональный код 26),

GCM-закодировано AES 192 (функциональный код 27),

GCM-закодировано AES 256 (функциональный код 28),

Эти функции также используют блок параметров, и один пример блока параметров, используемого для функций GCM-AES, описан с отсылками на фиг. 4. В одном примере блок 400 параметров включает в себя:

Зарезервировано: Байты 0-11 в составе блока параметров являются зарезервированными. Зарезервированное поле может содержать не поддающиеся предсказанию значения команды.

Значение 402 счетчика (CV): Байты 12-15 в составе блока параметров содержат, например, 32-битовое двоичное целое число. Крайние левые 12 байтов начального значения 412 счетчика (J0, в байтах 64-79 в составе блока параметров) объединены в цепочку с содержимым поля CV справа для формирования начального блока счетчика (ICB), который используется посредством описанной ниже функции GCTR (счетчика Галуа).

Для каждого выполнения команды, CPU увеличивает поле CV в блоке параметров на число обработанных блоков второго операнда. Перенос из позиции 0 бита в составе поля CV игнорируется.

Тег (Т) 404: Байты 16-31 в составе блока параметров содержат поле тега аутентификации сообщения.

Для каждого блока третьего операнда, и для каждого блока итогового первого операнда (когда М имеет значение 0) или для каждого блока второго операнда (когда М имеет значение 1), CPU использует поле тега в качестве как ввода, так и вывода для описанной ниже функции алгоритма хеширования Галуа (GHASH). Когда все дополнительные аутентифицированные данные и шифрованный текст хешированы, объединенные в цепочку поля TAADL 408 и TPCL 410 (описаны ниже) хешируют с помощью GHASH, а результаты хеширования кодируют с помощью функции GCTR для получения последнего поля тега (Т) в блоке параметров.

Подключ (Н) хеша 406: Для функций GCM-AES, байты 32-47 в составе блока параметров содержат, например, 128-разрядный подключ хеша, который используют функции GHASH команды. Когда метка предоставления подключа хеша (HS, бит 53 из общего регистра 0) представлена нолем, CPU вычисляет подключ хеша путем кодирования 128 битов двоичных нулей с помощью криптографического ключа (K), сохраняет подключ хеша в поле Н и задает метке HS значение единица. Когда метка HS представлена единицей, CPU использует предоставленный программой в поле Н подключ хеша, в этом случае, поле Н и метка HS не претерпевают изменений.

Для функций GCM-закодировано-AES байты 32-47 в составе блока параметров зарезервированы, и должны содержать ноли, в противном случае, программа может не иметь совместимости в будущем. В этом случае CPU вычисляет подключ хеша путем кодирования 128 битов двоичных нулей с помощью декодированного криптографического ключа (K), в этом случае, поле Н и метка HS не претерпевают изменений.

Полная длина 408 дополнительных аутентифицированных данных (TAADL): Байты 48-55 в составе блока параметров содержат 64-разрядное двоичное целое число без знака, обозначающее полную длину в битах всех дополнительных аутентифицированных данных для обрабатываемого сообщения.

Полная длина 410 простого текста или шифрованного текста (TPCL): Байты 56-63 в составе блока параметров содержат 64-разрядное двоичное целое число без знака, обозначающее полную длину в битах всего простого текста или шифрованного текста для обрабатываемого сообщения.

Начальное значение 412 счетчика (J0): Байты 64-79 в составе блока параметров содержат 128-разрядное начальное значение счетчика, которое используют (А) для предоставления крайних левых 96 битов начального блока счетчика, используемого функцией GCTR, и (Б) для кодирования последнего поля тега (Т) аутентификации.

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

Комбинация (WKaVP) 418 для подтверждения ключа обертывания AES: Для GCM-закодировано-AES функций (коды 26-28), следующие непосредственно за ключом в блоке параметров 32 байта содержат комбинацию AES (WKaVP) для подтверждения ключа обертывания.

Для функций GCM-AES (коды 18-20), поле WKaVP в блоке параметров отсутствует.

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

1. Подтверждение ключа обертывания: Этот процесс выполняют однократно для каждого выполнения команды, он обеспечивает использование применяющими закодированные обернутые ключи функциями правильной версии ключа. Для функций GCM-закодировано-AES (функциональные коды 26-28), содержимое 32-байтового поля WKaVP сравнивают с содержимым регистра комбинации для подтверждения ключа обертывания AES. Если они не согласуются, первый операнд и местоположения блока параметров остаются неизменными, и операция завершается путем задания условного кода, например,

1. Если они согласуются, содержимое поля 414 ключа блока параметров дешифруют с помощью ключа обертывания AES для получения используемого функцией 128-битового криптографического ключа, K 414, однако, поле ключа блока параметров остается неизменным. Для функций GCM-AES, не использующих закодированные ключи (коды 18-20), подтверждение ключа обертывания не выполняют.

2. Вычисление подключа хеша: Этот процесс принимает 128-битовое значение ноля и зашифровывает его с помощью алгоритма шифрования (например, кодирования AES). Для функций, не использующих обернутые ключи, реализация обеспечивает программе возможность задания предварительно вычисленного подключа хеша. Подключ хеша используют при GHASH обработке для получения итогового тега аутентификации сообщения.

Для функций GCM-AES (функциональные коды 18-20), применимо следующее:

Когда метка предоставления подключа хеша (HS, бит 53 из общего регистра 0) представлена нолем, блок 128 двоичных нулей кодируют с помощью алгоритма AES. Как показано на фиг. 5А, алгоритм 500 AES использует поле 414 ключа (K) в блоке параметров. Итоговый 128-битовый подключ 504 хеша размещен в поле 406 Н блока параметров, а метке HS задано значение единица в общем регистре 0.

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

Для функций GCM-закодировано-AES (функциональные коды 26-28) метка HS проигнорирована. Блок 128 двоичных нулей шифруют с помощью алгоритма AES как показано на фиг. 5А, с помощью дешифрованного ключа (K). В этом случае поле 406 Н блока параметров и метка HS не претерпевают изменений.

3. Хеширование дополнительных аутентифицированных данных: Любые дополнительные аутентифицированные данные обрабатывают посредством алгоритма GHASH для формирования тега частичного сообщения. Когда длина третьего операнда в общем регистре R3+1 является отличной от нуля, выполняют хеширование дополнительных аутентифицированных данных. В этом случае, обозначаемый операндом R3 четный общий регистр в составе команды содержит адрес ячейки памяти, содержащей данные, по которым вычисляют тег аутентификации сообщения с помощью алгоритма GHASH. В дополнение к блокам третьего операнда, в качестве входных значений функция GHASH использует подключ 406 хеша и поле 404 тега в блоке параметров.

Результат получают, как если обработку запускают на левом конце третьего операнда, и переходят вправо, блок за блоком. Когда остается один или несколько полных 16-байтовых блоков дополнительных аутентифицированных данных, обработка осуществляется показанным на фиг. 5Б образом, при этом, операция в 510 является битовым исключающим «ИЛИ», а операция в 512 является операцией по умножению GCM на GF (2128) (поле Галуа).

В одной реализации процесс хеширования дополнительных аутентифицированных данных заканчивают при соблюдении любого из следующих условий:

Была произведена обработка выявленного CPU числа блоков, которое является меньшим, чем длина третьего операнда. В этом случае, вычисленную к данному времени аутентификацию сообщения размещают в поле Т 404 блока параметров, общий регистр R3 получает приращение на число обработанных байтов третьего операнда, общий регистр R3+1 получает уменьшение на ту же величину, а команда завершается путем задания, например, условного кода 3.

Последняя метка (LAAD, бит 54 из общего регистра 0) дополнительных аутентифицированных данных является нолем, а число остающихся в третьем операнде байтов составляет менее 16. В этом случае, вычисленный к данному времени тег аутентификации сообщения (если вообще есть в наличии), размещают в поле Т 404 блока параметров, общий регистр R3 получает приращение на число обработанных байтов третьего операнда (если вообще есть в наличии), общий регистр R3+1 получает уменьшение на ту же величину, а команда завершается путем задания, например, условного кода 2.

Метка LAAD представлена единицей, а число остающихся в третьем операнде байтов составляет от 1 до 15. В этом случае выполняют следующие действия:

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

- Общий регистр R3 получает приращение на число обработанных байтов третьего операнда, а длине третьего операнда в общем регистре R3+1 задают нулевое значение.

Обработку последнего блока третьего операнда осуществляют как показано на фиг. 5В.

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

Когда длина третьего операнда в общем регистре R3+1 первоначально представлена нолем, а метка LAAD представлена единицей, хеширование дополнительных аутентифицированных данных не выполняют. В этом случае, зависит от модели, производят ли выборку поля Т 404 в блоке параметров и сохранение его в неизмененном виде.

4. Шифрование и хеширование сообщения: Этот процесс является шифрованием или дешифрованием сообщения, а также вычислением тега сообщения на основании закодированных данных. В зависимости от бита М (бит 56 из общего регистра 0), каждый блок второго операнда либо кодируют, либо декодируют с использованием функции GCTR. Соответствующий закодированный или декодированный результат размещают в местоположении первого операнда, а закодированный операнд хешируют с помощью функции GHASH. Комбинация обработок GCTR и GHASH описана как функция GCM.

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

Функция GCTR использует 16-байтовый начальный блок счетчика (ICB), сформированный путем объединения в цепочку крайних левых 12 байтов начального значения (J0) 412 счетчика слева с четырехбайтовым счетчиком (CV) 402 справа. GCTR также использует поле ключа (либо непосредственно из блока параметров для функций GCM-AES, либо декодированный ключ для функций GCM-закодировано-AES). Для каждого зашифрованного посредством GCTR блока значение (CV) счетчика получает приращение на единицу, перенос из позиции 0 бита в составе значения счетчика игнорируется. Функция GCTR, в этом случае, использует 16-байтовый отсчетный блок (СВ), сформированный из крайних левых 12 байтов J0, объединенных в цепочку с получившим приращение значением счетчика.

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

Когда бит М представлен нолем (то есть, когда второй операнд кодируют), обработку GCM полных блоков осуществляют как показано на фиг. 5Г. Когда бит М представлен единицей (то есть, когда второй операнд декодируют), обработку GCM полных блоков осуществляют, как показано на фиг. 5Д.

Процесс шифрования и хеширования для кодирования или для декодирования продолжают, например, до реализации любого из следующих условий:

Была произведена обработка выявленного CPU числа блоков, которое является меньшим, чем длина второго операнда. В этом случае действующее значение счетчика размещают в поле 402 CV блока параметров, вычисленный к данному времени тег аутентификации сообщения размещают в поле Т 404 блока параметров, общие регистры R1 и R2 получают приращение на число обработанных байтов второго операнда, общий регистр R2+1 получает уменьшение на ту же величину, а команда завершается путем задания, например, условного кода 3.

- Последняя метка (LPC, бит 55 из общего регистра 0) простого текста/шифрованного текста представлена нолем, а число остающихся в третьем операнде байтов составляет менее 16. В этом случае действующее значение счетчика размещают в поле CV 402 блока параметров, вычисленный к данному времени тег аутентификации сообщения (если вообще есть в наличии) размещают в поле Т 404 блока параметров, общие регистры R1 и R2 получают приращение на число обработанных байтов второго операнда (если вообще есть в наличии), общий регистр R2+1 получает уменьшение на ту же величину, а команда завершается путем задания, например, условного кода 2.

- Метка LPC представлена единицей, а число остающихся в третьем операнде байтов составляет от 1 до 15. В этом случае выполняют следующие действия:

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

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

- Действующее значение счетчика размещают в поле CV 402 блока параметров, итоговое значение тега размещают в блоке параметров, общие регистры R1 и R2 получают приращение на число обработанных байтов второго операнда, а общему регистру R2+1 задают нулевое значение.

Обработку GCM последнего блока второго операнда осуществляют, как показано на фиг. 5Е.

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

5. Хеширование и кодирование тега аутентификации последнего сообщения: Этот процесс использует полную длину дополнительных аутентифицированных данных и сообщения в битах, подвергает его действию алгоритма GHASH, а затем, объединяет его с зашифрованным начальным значением счетчика для формирования заключительного тега аутентификации сообщения. 128-битовое значение, которое содержит объединенные в цепочку поля 64-битовой полной длины (TAADL) дополнительных данных аутентификации и полной длины (TPCL) простого текста или шифрованного текста из блока параметров, хешируют с помощью функции GHASH. Функция GHASH использует поле объединенных в цепочку длин, поле тега (Т), как вычислено в операции шифрования и хеширования, а также подключ хеша.

Итоговый 128-битовый вывод GHASH затем обрабатывают посредством алгоритма GCTR. Следует отметить, что в отличие от операции шифрования и хеширования, входным счетчиком для GCTR является поле 412 начального блока (J0) счетчика из блока параметров. Итоговое 128-битовое значение заменяет поле 404 тега (Т) в блоке параметров, а команда завершается, например, с условным кодом 0. Фиг. 5Ж показывает один вариант осуществления хеширования и кодирования значения последнего тега.

В одном варианте осуществления выдающая команду программа является ответственной за предоставление точного TAADL и значений TPCL (например, в битах). В другом варианте осуществления программа имеет возможность задания равных нулю значений TAADL и TPCL при начале обработки сообщения, a CPU имеет возможность обновления этих полей, поскольку обработка сообщения включает в себя одно или несколько повторных выполнений команды.

Дополнительные подробности относительно команды предоставлены ниже.

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

Результаты не поддаются предсказанию при выполнении любого из следующих условий:

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

Метка LAAD представлена единицей, и соблюдено любое из следующих условий:

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

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

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

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

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

Объяснение:

Неприменимо

Кроме того, адреса первого, второго и третьего операнда в общих регистрах R1, R2 и R3 являются неизменными.

Зависит от модели, задан ли СС3 для этих условий (которые идентичны условиям СС0).

СС Условный код.

LAAD Последняя метка дополнительных аутентифицированных данных, бит 54 из общего регистра 0.

LPC Последняя метка простого текста/шифрованного текста, бит 55 из общего регистра 0.

3rd OpL Длина третьего операнда

2nd OpL Длина второго операнда

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

Событие изменения памяти PER (Правила уплотненного кодирования) может быть распознано как для местоположения первого операнда, так и для части сохраненного блока параметров. Событие обнаружения нулевого адреса PER может быть распознано для местоположений первого, второго и третьего операндов, а также для блока параметров (включая зарезервированное поле блока параметров). Когда события PER обнаружены для одного или нескольких из этих местоположений, не поддается предсказанию, какое именно местоположение идетифицировано в PER идентификации доступа (PAID) и в PER ASCE ID (Индикатор элемента управления адресным пространством) (AI) (Индикатор действия).

Не поддается предсказанию, сколько байтов местоположений первого, второго или третьего операндов было обработано на момент распознавания события изменения памяти PER для блока параметров. Когда событие PER изменения памяти распознано для местоположения первого операнда, в местоположении первого операнда сохранено менее 4 дополнительных Kбайтов прежде сообщения о событии.

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

Когда содержимое полей R1 и R2 является одинаковым, содержимое обозначаемых регистров получает приращение на число обработанных байтов, но не на число, кратное числу обработанных байтов.

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

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

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

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

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

1. Биты 57-63 из общего регистра 0 задают неприсвоенный или удаленный функциональный код.

2. Поле R1, R2 или R3 обозначает регистр с нечетным номером или общий регистр 0.

3. Поле R3 обозначает тот же регистр, что и любое из полей R1 или R2.

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

Итоговый условный код, в качестве примеров:

0 Нормальное завершение

1 Несоответствие комбинации подтверждения.

2 Неполная обработка (остаточная длина третьего операнда является меньшей, например, 16, когда метка LAAD представлена нолем, или остаточная длина второго операнда является меньшей, например, 16, когда метка LPC представлен нолем).

3 Частичное завершение (превышен модельно-зависимый предел).

Примерные программные исключения включают в себя:

Доступ (выборка, операнд 2, операнд 3, поля блока параметров, память, операнд 1, значение счетчика, подключ хеша, тег).

Операция (если служебное расширение для защиты сообщения 8 не инсталлировано),

Спецификация

Ограничение транзакции

Кроме того, типовые условия исключения/завершения для приоритета выполнения включают в себя:

1.-7. Исключения с тем же приоритетом, что и приоритет условий прерывания программы для общего случая.

8. Исключение по спецификации вследствие недопустимого функционального кода или недопустимого номера регистра.

9. Исключение по спецификации вследствие того, что метка LPC представлена единицей, когда метка LAAD представлена нолем (применимо в случае ненулевого функционального кода).

10. А1 Исключения по доступу для доступа к блоку параметров.

10. А2. Условный код 1 вследствие несоответствия комбинации подтверждения.

10. В Исключения по доступу для доступа к первому, второму или третьему операнду.

11. Условный код 3 вследствие частичной обработки третьего операнда.

12. Условный код 2 вследствие того, что остаточная длина третьего операнда составляет менее, например, 16, когда метка LAAD представлена нолем.

13. Условный код 3 вследствие частичной обработки второго операнда.

14. Условный код 2 вследствие того, что остаточная длина второго операнда составляет менее, например, 16, когда метка LPC представлена нолем.

15. Условный код 0 вследствие нормального завершения.

Кроме того, в одном или нескольких вариантах осуществления, применимо следующее.

При обработке отдельного сообщения программа первоначально задает, например, следующие поля в блоке параметров и не изменяет эти поля до завершения команды с условным кодом, например 0, в противном случае, результаты не будут соответствовать стандарту GCM.

A. Значение счетчика (CV): Полю CV должно быть присвоено начальное значение в составе 4 самых правых байтов поля начального значения (J0) счетчика.

Б. Тег (Т): Полю тега должно быть присвоено начальное значение в виде нолей.

B. Подключ (Н) хеша: Для функций KMA-GCM-AES (коды 18-20), применимо следующее:

Когда метка HS представлена единицей, программа предоставляет предварительно вычисленный подключ хеша в поле Н. Подключ содержит, например, 16 байтов нолей, закодированных с использованием алгоритма AES.

Когда метка HS представлена нолем, CPU кодирует, например, с помощью алгоритма AES 16 байтов нолей и поле ключа в блоке параметров, сохраняет результаты в поле Н, и задает метке HS значение единица.

Для функций KM-закодировано-AES (коды 26-28), CPU вычисляет подключ хеша, а поле Н и метки HS не претерпевают изменений.

Г. Начальное значение (J0) счетчика: Начальное значение счетчика получают из предоставляемого программой вектора (IV) присвоения начальных значений. Если программа использует, например, 96-битовый IV, то она должна сохранять IV в крайних левых 12 байтах поля J0 и сохранять шестнадцатеричное число 00000001 в самых правых байтах поля J0. Если программа использует IV, имеющий отличную длину, то она должна предоставлять, например, 16 байтовое хешированное значение IV в поле J0 с помощью алгоритма GHASH.

Д. Значение (K) ключа и комбинация для подтверждения ключа обертывания (WKaVP): Для надлежащего шифрования отдельного сообщения ключ должен быть неизменным для всего процесса выполнения команды. Для функций KM-закодировано-AES поле комбинации для подтверждения ключа обертывания также должно оставаться неизменным.

При обработке последнего блока (блоков) простого текста или шифрованного текста (то есть, когда метка LPC представлена единицей), поля полной длины (TAADL) дополнительных аутентифицированных данных и полной длины простого текста/шифрованного текста (TPCL) в блоке параметров должны содержать полные длины в битах соответствующих дополнительных аутентифицированных данных и простого текста или шифрованного текста для всего сообщения.

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

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

Когда условный код 2 задан вследствие равенства нолю одной или обеих меток LAAD и LPC, содержащие адреса операндов и длин общие регистры, а также блок параметров подвергают обновлению, которое отображает достигнутый к данному времени прогресс. Однако в отличие от условного кода 3 (когда программа может попросту выполнить обратное ветвление к команде для продолжения операции), программа является ответственной за обновление адресов операндов и длин, а также, при необходимости, меток LAAD и LPC прежде выполнения обратного ветвления к команде. Если программа попросту выполняет обратное ветвление к команде в ответ на условный код 2, то, например, возникает непроизводительный программный цикл.

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

Дополнительные подробности относительно различных функций счетчика с аутентификацией Галуа описаны ниже. Они являются всего лишь примерами, и описаны в специальной публикации 800-38D Национального института науки и техники США (NIST) - Рекомендации по режимам использования блочного шифрования: Счетчик с аутентификацией Галуа (GCM) и GMAC (Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC). Изменения могут быть сделаны, и/или другие функции, относящиеся к счетчику с аутентификацией Галуа и/или другим режимам шифрования, могут быть использованы.

Для понимания приведенных ниже функций, описаны следующие символы:

Переменные:

А Дополнительные аутентифицированные данные.

С Шифрованный текст.

Н Подключ хеша.

ICB Начальный блок счетчика.

IV Вектор присвоения начальных значений.

K Ключ блочного шифра.

Р Простой текст.

R Константа в рамках алгоритма для операции по блочному умножению.

Т Тег аутентификации.

t Длина в битах тега аутентификации.

Операции и функции:

0s Строка битов, состоящая из s битов «0».

CIPHK (X) Вывод прямой функции шифрования блочного шифрования с ключом K, примененным к блоку X.

GCTRK (ICB, X) Вывод функции GCTR для данного блочного шифрования с ключом K, примененным к строке X битов при начальном блоке ICB счетчика.

GHASHH (X) Вывод функции GHASH с подключом Н хеша, примененным к строке X битов.

incs (X) Вывод приращения на 1 по модулю 2s самых правых s битов строки X битов, рассматриваемых как двоичное представление целого числа.

int (X) Целое число, для которого строка X битов является двоичным представлением.

len (X) Длина в битах строки X битов.

LSBs (X) Строка битов, состоящая из s самых правых битов строки X битов.

MSBs (X) Строка битов, состоящая из s крайних левых битов строки X битов.

[х] Наименьшее целое число, которое не является меньшим, чем вещественное число х.

[x]s Двоичное представление неотрицательного целого числа х в виде строки s битов, где х<2s.

X>>1 Строка битов, полученная в результате отбрасывания самого правого бита строки X битов и добавления к началу бита «0» слева.

Объединение в цепочку двухбитовых строк X и Y.

X ⊕ Y Побитовое исключающее «ИЛИ» двухбитовых строк X и Y той же длины.

Произведение двух блоков, X и Y, рассматриваемых как элементы некоторого двоичного поля Галуа.

Xi Для положительного целого числа i, i-я степень X при перемножении «».

Произведение двух целых чисел, x и y.

Один пример перемножения блоков (X ⋅ Y) включает в себя, например:

Предварительные условия:

Принято:

Ввод:

Блоки X, Y.

Вывод:

Блок X ⋅ Y

Этапы:

1. Принято: X0X1 … Х127 обозначает последовательность битов в X.

2. Принято: Z0 = 0128 и V0 = Y.

3. Для I = от 0 до 127, вычисление блоков Zi+1 и Vi+1 следующим образом:

Zi+1 = Zi [если xi = 0, или]

Zi ⊕ Vi [если xi = 1]

Vi+1 = Vi>>1 [если LSBi (Vi) = 0, или]

(Vi>>1) ⊕ R [если LSBi (Vi) = 1]

4. Результат Z128.

Более подробная информация относительно одного примера функции шифрования GCM предоставлена ниже:

Алгоритм: GCM-AEK (IV, Р, А)

Предварительные условия:

Одобренное блочное шифрование CIPH с 128-битовым размером блока,

Ключ K,

Описания поддерживаемых длин ввода - вывода,

Поддерживаемая связанная с ключом длина t тега.

Ввод:

Вектор IV присвоения начальных значений (с поддерживаемой длиной),

Простой текст Р (с поддерживаемой длиной),

Дополнительные аутентифицированные данные (с поддерживаемой длиной).

Вывод:

Шифрованный текст С,

Тег Т аутентификации.

Этапы:

1. Принято: Н = CTPHK (0128).

2. Задание блока J0 следующим образом:

если len (IV) = 96, то принято: J0 = IVψ031ψ1.

если len (IV) γ 96, то принято: , и

принято: J0 = GHASHH(IVψ0s+64ψ[len(IV)]64).3.

Принято: GCTRK(inc32(J0),P).

4. Принято: и

Принято:

5. Задание блока S, как представлено ниже:

S = GHASHH(Aψ0vψCψ0uψ[len(A)]64ψ[len(C)]64).

6. Принято: Т = MSBt(GCTRK(J0, S)).

7. Результат (С, Т).

Один вариант осуществления дешифрующей функции GCM описан ниже:

Алгоритм: GCM-ADK (IV, С, А, Т)

Предварительные условия:

То же, что и в вышеописанном случае для шифрования

Ввод:

Вектор IV присвоения начальных значений,

Шифрованный текст С,

Дополнительные аутентифицированные данные А,

Тег Т аутентификации.

Вывод:

Простой текст Р или указатель неаутентичности СБОЙ.

Этапы:

1. Если длина в битах IV, А или С не поддерживается, или если len (Т) ≠ t, то результатом является СБОЙ.

2. Принято: Н = CIPHK (0128).

3. Задание блока J0 следующим образом:

если len (IV) = 96, принято: J0 = IVψ031ψ1.

если len (IV) γ 96, принято: и

принято: J0 = GHASHH(IVψ0s+64ψ[len(IV)]64).

4. Принято: Р = GCTRK(inc32(J0), С).

5. Принято:

6. Задание блока S, как представлено ниже:

S = GHASHH(Aψ0vψCψ0uψ[len(A)]64ψ[len(C)]64).

7. Принято: T' = MSBt(GCTRK(J0, S)).

8. Если Т = Т', тогда результат Р, в противном случае, результат FAIL.

Один вариант осуществления функции алгоритма хеширования Галуа (GHASH) описан ниже:

Алгоритм: GHASHH (X)

Предварительные условия:

Блок Н, подключ хеша.

Ввод:

Строка X битов, у которой len (X) = 128 м для некоторого положительного целого числа m.

Вывод:

Блок GHASHH (X).

Этапы:

1. Принято: Х1, Х2, …, Xm-1, Xm обозначают уникальную последовательность блоков таким образом, что Х= X1ψX2ψ…ψXm-1ψXm.

2. Принято: Y0 является «нулевым блоком», 0128 (то есть, 128 битов нолей).

3. Для i = i = 1, …, m, принято: .

4. Результат Ym.

Кроме того, один вариант осуществления функции счетчика Галуа (GCTR) описан ниже:

Алгоритм: GCTRK (ICB, X)

Предварительные условия:

Одобренное блочное шифрование CIPH с 128-битовым размером блока,

Ключ K.

Ввод:

Начальный блок счетчика ICB.

Строка X битов произвольной длины.

Вывод:

Строка битов Y с длиной в битах len (X).

Этапы:

1. Если X является пустой строкой, то результат является пустой строкой Y.

2. Принято: .

3. Принято: X1, Х2, …, Xn-1, Xn* обозначают уникальную последовательность строк битов таким образом, что

X = X1ψX2ψ…ψXn-1ψXn*;

X1, X2, …, Xn-1 являются полными блоками.

4. Принято: CB1 = ICB.

5. Для i = от 2 до n, принято: CBi = inc32(CBi-1).

6. Для i = от 1 до n-1, принято: let Yi = Xi ⊕ CIPHK(CBi). [для всех полных блоков кроме последнего]

7. Принято: Yn* = Xn* ⊕ MSBlen(Xn*)(CIPHK(CBn)). [для заключительного полного или частичного блока]

8. Принято: Y = Y1ψY2ψ…ψYn*.

9. Результат Y.

Графическое описание команды на шифрование сообщения с аутентификацией показано на фиг. 6. Как показано, команда 300 на шифрование сообщения с аутентификацией включает в себя первый операнд 600, который включает в себя зашифрованный результат (либо закодированный, либо декодированный), второй операнд 602, который включает в себя сообщение, которое подлежит шифрованию (либо кодированию, либо декодированию) и хешированию, и третий операнд 604, который включает в себя дополнительные данные, которые подлежат аутентифицированию (хешированию), но не шифрованию.

Более подробная информация относительно обработки связанного с одним вариантом осуществления команды на шифрование сообщения с аутентификацией описана с отсылками на фиг. 7А-7Д.

Как показано на фиг. 7А, первоначально производят выявление относительно того, является ли допустимым функциональный код, включенный в используемый командой общий регистр 0, ИНФОРМАЦИОННЫЙ ЗАПРОС 700. Если он не является допустимым, может быть выдана ошибка, ЭТАП 702, и обработку команды завершают. В противном случае, если функциональный код является допустимым, производят дальнейшее выявление относительно того, является ли регистр, заданный в первом, втором или третьем полях регистра (то есть, R1, R2, R3), регистром с нечетным номером (ODD), ИНФОРМАЦИОННЫЙ ЗАПРОС 704. Если один из этих регистров является регистром с нечетным номером, то, например, выдается ошибка, ЭТАП 706, и обработку завершают. В противном случае, производят дальнейшее выявление относительно того, равен ли регистр, заданный в поле R3, регистру, заданному в поле R1, или равен ли регистр, заданный в поле R3, регистру, заданному в поле R2, ИНФОРМАЦИОННЫЙ ЗАПРОС 708. Если регистр, заданный в R1 или R2, равен регистру, заданному в R3, то может быть выдана ошибка, например, ЭТАП 710, и обработку завершают. В противном случае, производят дальнейшую проверку относительно того, равна ли последняя метка простого текста/шифрованного текста заданному значению, такому как единица, и задано ли последней метке дополнительных аутентифицированных данных выбранное значение, такое как ноль. Если оба эти условия являются верными, то может быть выдана ошибка, ЭТАП 714, и обработка команды завершена. В противном случае, если последний элемент управления простым текстом/шифрованным текстом не равен единице, а последний элемент управления дополнительными аутентифицированными данными не равен нолю, производят проверку относительно того, равен ли нолю функциональный код, ИНФОРМАЦИОННЫЙ ЗАПРОС 716. Если функциональный код представлен нолем, выполняют функцию запроса, а допустимые функции сохраняют в блоке параметров, ЭТАП 718. Условному коду задают значение, например ноль, в одном примере, ЭТАП 720. Однако если функциональный код не является нолем, то обработку продолжают с образованием подключа хеша, как описано с отсылками на фиг. 7Б.

Как показано на фиг. 7Б, для функций шифрования, не использующих закодированные ключи, программа имеет возможность либо предоставления своего собственного подключа хеша в блоке параметров, либо программа может иметь команду для генерации подключа хеша. Для функций шифрования, использующих закодированные ключи, команда генерирует подключ хеша, а любой предоставленный программой подключ хеша игнорируется. Таким образом, в одном варианте осуществления производят выявление относительно того, обозначает ли функциональный код функцию без закодированного ключа (то есть, функциональный код является меньшим или равным заданному значению, такому как 20), ИНФОРМАЦИОННЫЙ ЗАПРОС 730. Если функциональный код обозначает функцию без закодированного ключа (то есть, функциональный код является меньшим или равным, например, 20), производят выявление относительно того, предоставила ли программа подключ хеша (FLAGS.HS), ИНФОРМАЦИОННЫЙ ЗАПРОС 732. Если программа не предоставила подключ хеша (например, элемент HS управления представлен нолем), генерируют подключ хеша, ЭТАП 734. Например, H=AES (0128, Ключ). Кроме того, тег хеша сохранен в блоке (PL.H) параметров, а предоставленному подключу хеша элементу (HS) управления задано значение единица, ЭТАП 736. (PL в описании и на чертежах отнесено к блоку параметров.)

Возвращаясь к ИНФОРМАЦИОННОМУ ЗАПРОСУ 732, если программа предоставила подключ хеша (например, элемент HS управления представлен единицей), обработка продолжается хешированием дополнительных аутентифицированных данных, как описано с отсылками на фиг. 7В.

Возвращаясь к ИНФОРМАЦИОННОМУ ЗАПРОСУ 730, если функциональный код обозначает функцию, использующую закодированные ключи (например, функциональный код превышает 20), тогда функция является функцией с ключом обертывания, а Н вычисляют (например, H=AES (0128, Ключ), ЭТАП 738, но не сохраняют, и обработку продолжают хешированием дополнительных аутентифицированных данных, как описано с отсылками на фиг. 7В.

Как показано на фиг. 7В, в одном варианте осуществления производят выявление относительно того, имело ли место модельно-зависимое время ожидания, ИНФОРМАЦИОННЫЙ ЗАПРОС 740. Если модельно-зависимое время ожидания имело место, обработку завершают с условным кодом, например 3, в одном примере, ЭТАП 742. Однако если модельно-зависимое время ожидания не имело места, производят выявление относительно того, превышает ли длина операнда 3 (Op3L) заданное значение, такое как 16, ИНФОРМАЦИОННЫЙ ЗАПРОС 744. Если оно превышает 16, полный блок дополнительных данных аутентификации является доступным для обработки, ЭТАП 746. Например, тегу 404 в блоке (PL.T) параметров, задают значение , в котором * указывает на то, что Ор3А является указателем на третий операнд (Ор3А) (то есть, поле (Т) тега в блоке параметров было подвергнуто действию исключающего ИЛИ вне зависимости от местоположения в памяти, на которое указывает обозначенный R3 общий регистр), 16 байтов, в качестве примера, добавляют к адресу операнда 3 (Ор3А), и 16 байтов, в качестве примера, вычитают из длины операнда 3 (Op3L). Op3L, например, является длиной операнда 3 в байтах. Обработку затем продолжают ИНФОРМАЦИОННЫМ ЗАПРОСОМ 740.

Возвращаясь к ИНФОРМАЦИОННОМУ ЗАПРОСУ 744, если длина операнда 3 не превышает заданного значения, например, 16, то производят выявление последнего элемента управления дополнительными аутентифицированными данными в составе поля меток, ИНФОРМАЦИОННЫЙ ЗАПРОС 750. Если значение элемента управления представлено нолем, то в одном варианте осуществления задают значение условного кода, такое как условный код 2, ЭТАП 752. Оно указывает на наличие подлежащих обработке дополнительных аутентифицированных данных.

Возвращаясь к ИНФОРМАЦИОННОМУ ЗАПРОСУ 750, если элемент управления представлен единицей, производят дальнейшую проверку длины операнда 3 (Op3L), ИНФОРМАЦИОННЫЙ ЗАПРОС 754. Если длина превышает ноль, то тегу 404 из блока параметров задают значение, например, PL.T = Н ⊕ (PL.T / (*Op3A[Op3L] ψ ноли[16-Op3L])), адрес операнда 3 увеличивают на длину операнда 3, а длине операнда 3 задают равное нолю значение, ЭТАП 756. Обработку затем продолжают обработкой простого текста/шифрованного текста, как описано с отсылками на фиг. 7Г. Кроме того, если длина операнда 3 представлена нолем, ИНФОРМАЦИОННЫЙ ЗАПРОС 754, обработку продолжают обработкой простого текста/шифрованного текста согласно фиг. 7Г.

Как показано на фиг. 7Г, производят выявление относительно того, имело ли место модельно-зависимое время ожидания, ИНФОРМАЦИОННЫЙ ЗАПРОС 760. Если модельно-зависимое время ожидания имело место, обработку завершают с условным кодом, например, 3, ЭТАП 762. В противном случае, производят выявление относительно того, превышает ли длина операнда 2 (Op2L) заданное значение, такое как 16, ИНФОРМАЦИОННЫЙ ЗАПРОС 764. Если это является верным, то СВ = PL.J0[12] ψ ++PL.CV, где ++ указывает на получение приращения значением счетчика в блоке параметров, и *Ор1А = AES(Key,CB) ⊕ *Ор2А; PL.T = Н ⊕ (PL.T ⊕ (М ? *Ор2А: *Ор1А)),ЭТАП 766. (В одном из вариантов, текст (М? *Ор2А: *Ор1А), указывает на то, что производят выявление относительно того, является ли М истиной или ложью (1 или 0). Если он является истинным, тогда *Ор2А используют в качестве указателя на входной шифрованный текст во втором операнде. Если он является ложным, то *Ор1А является указателем на выходной шифрованный текст в первом операнде.) Кроме того, адрес операнда 1 (Op1A) получает приращение, например, на 16 байтов, адрес операнда 2 (Ор2А) получает приращение, например, на 16 байтов, и длина операнда 2 (Op2L) получает уменьшение, например, на 16 байтов, ЭТАП 766. Обработку затем переводят к ИНФОРМАЦИОННОМУ ЗАПРОСУ 760.

Возвращаясь к ИНФОРМАЦИОННОМУ ЗАПРОСУ 764, если длина операнда 2 не превышает заданного значения, например, 16, то производят проверку последнего элемента управления простым текстом/шифрованным текстом в составе поля меток, ИНФОРМАЦИОННЫЙ ЗАПРОС 768. Если метка равна нолю, то задают условный код, например условный код 2, ЭТАП 770. Он указывает на наличие все еще подлежащего обработке простого текста/шифрованного текста. Однако если последнему элементу управления простым текстом/шифрованным текстом задают значение единица, то далее производят выявление относительно длины операнда 2, ИНФОРМАЦИОННЫЙ ЗАПРОС 772. Если длина превышает ноль, то СВ = PL.J0[12] ψ ++PL.CV, и *Ор1А = AES(PL.Key, СВ) ⊕ (*Op2A[Op2L] ψ ноли[16-Op2L); , ЭТАП 774. Кроме того, адреса операнда 1 и операнда 2 увеличивают на длину операнда 2, а длине операнда 2 затем задают нулевое значение, ЭТАП 774. После этого, или в случае равенства нолю длины операнда 2, ИНФОРМАЦИОННЫЙ ЗАПРОС 772, а затем обработку продолжают обработкой заключительного тега, как описано с отсылками на фиг. 7Е.

Как показано на фиг. 7Д, тегу задано значение, равное , при этом функцию хеширования (например, GHASH) выполняют на полной длине в битах дополнительных аутентифицированных данных и полной длине в битах шифрованного текста. Затем тегу задают значение, равное AES(PL.Key, PL.J0) / PL.T, при этом заключительным значением хеш-функции является полученное в результате применения исключающего ИЛИ с начальным закодированным счетчиком (J0) для формирования результата тега значение, ЭТАП 780. (Таким образом, ранее вычисленный тег является полученным в результате применения исключающего ИЛИ с объединением в цепочку полей двух-битовой длины и применения алгоритма GHASH. Затем поле J0 кодируют, и применяют к нему, совместно с результатами вышеупомянутого вычисления, исключающее ИЛИ для формирования заключительного тега.) Обработку затем завершают, а условному коду задают значение, например 0, ЭТАП 782.

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

В одной реализации заданная z/Архитектурой команда шифрования задает длину сообщения с помощью 64-битвого регистра, таким образом, длина сообщения может составлять до 18,446,744,073,709,551,616 (16Е) байтов. Спецификация GCM ограничивает длину сообщения 68,719,476,736 (64G) байтами, то есть, максимальным значением 32-битового счетчика, умноженным на размер 128-битового (16-байтового) блока сообщения. Однако с целью предотвращения чрезмерно продолжительного выполнения команды, обработка любой отдельной команды шифрования ограничена намного меньшим объемом, обычно, самое большее 4 096 байтами. Когда команда шифрования завершается, она обновляет регистры, задающие адрес и длину операндов сообщения на основании числа обработанных байтов. Если команда обрабатывает сообщение только частично, она завершается путем задания индикативного условного кода (например, СС3). Если команда обрабатывает сообщение полностью, она завершается путем задания дополнительного индикативного условного кода (например, СС0).

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

Последний элемент управления дополнительных данных аутентификации (LAAD) указывает на то, предоставила ли программа операнд дополнительных аутентифицированных данных полностью.

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

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

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

Один вариант осуществления обеспечения обработки в вычислительной среде, включающий в себя выполнение команды на шифрование сообщения с аутентификацией, описан с отсылками на фиг. 8А-8Б.

Как показано на фиг. 8А, в одном варианте осуществления получают команду на выполнение нескольких операций, включая шифрование и аутентификацию, ЭТАП 800, и команду выполняют, ЭТАП 802. Выполнение включает в себя, например, шифрование одного набора данных, который предоставлен посредством команды, для получения зашифрованных данных, ЭТАП 804, размещение зашифрованных данных в обозначенном местоположении ЭТАП 806, аутентификацию дополнительного набора данных, который предоставлен посредством команды, причем аутентификация генерирует, по меньшей мере, часть тега аутентификации сообщения, ЭТАП 808, и сохранение, по меньшей мере, части тега аутентификации сообщения в выбранном местоположении, ЭТАП 810. В другом варианте осуществления выполнение также включает в себя аутентификацию зашифрованных данных, ЭТАП 812.

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

Выявление включает в себя, например, проверку последнего элемента управления дополнительными аутентифицированными данными в составе команды для выявления, включает ли в себя дополнительный набор данных последний подлежащий аутентификации блок данных, ЭТАП 820.

Кроме того, например, как показано на фиг. 8Б, один набор данных включает в себя по меньшей мере один блок данных из числа одного или нескольких блоков данных (822), и выполнение также включает в себя выявление, включает ли в себя один набор данных последний подлежащий шифрованию блок данных, ЭТАП 824, а также выполнение шифрования на основании, включает ли в себя один набор данных последний подлежащий шифрованию блок данных, ЭТАП 826.

Выявление включает в себя, например, проверку последнего элемента управления текстом команды для выявления, включает ли в себя один набор данных последний подлежащий шифрованию блок данных, ЭТАП 828.

Например, шифрование включает в себя кодирование одного набора данных на основании предоставленного командой элемента управления, которому задано выбранное значение, ЭТАП 830, или декодирование одного набора данных на основании предоставленного командой элемента управления, которому задано конкретное значение, ЭТАП 832.

В одном варианте осуществления аутентификация дополнительного набора данных включает в себя использование технологии хеширования для генерации, по меньшей мере, части тега аутентификации сообщения, ЭТАП 834. Кроме того, в одном варианте осуществления технология хеширования использует подключ хеша, сохраненный в используемом командой блоке параметров, на основании предоставленного подключом хеша элемента управления в составе команды, которому задано выбранное значение, ЭТАП 836.

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

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

В одном примере команда использует:

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

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

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

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

Возможными являются многочисленные изменения, в том числе, но не ограничиваясь, с помощью других методов шифрования, таких как Стандарт кодирования данных (DES) и прочее, и/или другие методы хеширования, такие как SHA (Алгоритм безопасного хеширования)-2, SHA-3 и прочее.

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

Машиночитаемый информационный носитель может быть представлен материальным устройством, которое выполнено с возможностью удержания и сохранения команд для использования посредством устройства выполнения команд. Машиночитаемый информационный носитель может быть представлен, например, в том числе, но не ограничиваясь, устройством электронной памяти, магнитным запоминающим устройством, оптическим запоминающим устройством, электромагнитным запоминающим устройством, полупроводниковым запоминающим устройством или любой подходящей комбинацией из вышеупомянутого. Неисчерпывающий список более конкретных примеров машиночитаемых информационных носителей включает в себя следующее: портативная компьютерная дискета, жесткий диск, оперативная память (RAM), постоянная память (ROM), стираемая программируемая постоянная память (EPROM или флэш-память), статическая оперативная память (SRAM), переносной компакт-диск для однократной записи данных (CD-ROM), цифровой универсальный диск (DVD), карта памяти, гибкий диск, механически закодированное устройство, такое как перфокарты или выступающие структуры в канавке с записанными на них командами, а также любая подходящая комбинация из вышеупомянутого. Машиночитаемый информационный носитель, как он рассматривается в настоящем документе, не подлежит истолкованию в качестве представленного преходящими сигналами как таковыми, такими как радиоволны или другие свободно распространяющиеся электромагнитные волны, электромагнитные волны, распространяющиеся через волновод или другие среды передачи (например, проходящие через волоконно-оптический кабель световые импульсы), или передаваемые через провода электрические сигналы.

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

Машиночитаемые программные команды для выполнения операций настоящего изобретения могут быть представлены командами ассемблера, командами архитектуры системы команд (ISA), машинными командами, машинно-зависимыми командами, микрокодом, командами встроенного программного обеспечения, присваивающими значение состоянию данными, конфигурационными данными для интегральной схемотехники, или иным исходным кодом или объектным кодом, записанным на любой комбинации из одного или нескольких языков программирования, включая объектно-ориентированные языки программирования, такие как Smalltalk, С++ и т.п., а также языки процедурного программирования, такие как язык программирования «С» или подобные языки программирования.

Машиночитаемые программные команды могут выполняться полностью на компьютере пользователя, частично на компьютере пользователя, как автономный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью на удаленном компьютере или сервере. В последнем сценарии удаленный компьютер может быть присоединен к компьютеру пользователя через любой тип сети, включая локальную сеть (LAN) или глобальную сеть (WAN), или присоединение может быть сделано к внешнему компьютеру (например, через Интернет с использованием Интернет-провайдера). В некоторых вариантах осуществления электронные схемы, включающие в себя, например, программируемые логические схемы, программируемые на месте вентильные матрицы (FPGA) или программируемые логические матрицы (PLA) могут выполнять машиночитаемые программные команды посредством использования информации о состоянии машиночитаемых программных команд для настройки электронной схемы с целью выполнения аспектов настоящего изобретения.

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

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

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

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

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

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

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

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

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

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

Устройства ввода-вывода или устройства I/O (в том числе, но не ограничиваясь, клавиатуры, дисплеи, позиционирующие устройства, DASD (запоминающее устройство прямого доступа), устройство записи на ленту, CD, DVD, карты флэш-памяти и другие носители памяти и т.д.) могут быть соединены с системой или непосредственно или через переходные контроллеры I/O. С системой также могут быть соединены сетевые адаптеры для предоставления системе обработки данных возможности установления соединения с другими системами обработки данных или с удаленными принтерами или с запоминающими устройствами посредством переходных частных сетей или сетей общего пользования. Модемы, кабельные модемы и платы Ethernet являются всего несколькими примерами из числа доступных типов сетевых адаптеров.

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

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

Похожие патенты RU2727152C1

название год авторы номер документа
Способ обеспечения идентичности балансировки для двунаправленного потока данных сетевой сессии 2022
  • Бадин Михаил Викторович
  • Михайлов Алексей Михайлович
  • Плотко Сергей Алексеевич
RU2786629C1
Способ отслеживания фрагментов пакетов в сетевом трафике 2022
  • Бадин Михаил Викторович
  • Михайлов Алексей Михайлович
  • Плотко Сергей Алексеевич
RU2778462C1
УЛУЧШЕНИЕ БЕЗОПАСНОСТИ ПАССИВНОЙ ОПТИЧЕСКОЙ СЕТИ, ОСНОВАННОЙ НА ИНТЕРФЕЙСЕ АДМИНИСТРАТИВНОГО УПРАВЛЕНИЯ ТЕРМИНАЛОМ ОПТИЧЕСКОЙ СЕТИ 2010
  • Фрэнк Дж. Эффенбергер
RU2507691C2
Способ аутентифицированного шифрования 2018
  • Бабуева Александра Алексеевна
  • Ефимов Дмитрий Владимирович
  • Науменко Антон Павлович
  • Калистру Илья Иванович
RU2694336C1
ЭФФЕКТИВНОЕ ШИФРОВАНИЕ И АУТЕНТИФИКАЦИЯ ДЛЯ СИСТЕМ ОБРАБОТКИ ДАННЫХ 2003
  • Хокс Филип Майкл
  • Роуз Грегори Дж.
RU2336646C2
ЭФФЕКТИВНОЕ ШИФРОВАНИЕ И АУТЕНТИФИКАЦИЯ ДЛЯ СИСТЕМ ОБРАБОТКИ ДАННЫХ 2003
  • Хокс Филип Майкл
  • Роуз Грегори Дж.
RU2340108C2
КОМАНДА И ЛОГИКА ДЛЯ ОБЕСПЕЧЕНИЯ ФУНКЦИОНАЛЬНЫХ ВОЗМОЖНОСТЕЙ ЦИКЛА ЗАЩИЩЕННОГО ХЕШИРОВАНИЯ С ШИФРОМ 2014
  • Гопал Виндох
  • Фегхали Важди К.
RU2637463C2
Способ обеспечения передачи зашифрованных данных в цифровой системе передачи данных (варианты) 2018
  • Калистру Илья Иванович
RU2686005C1
ВЗАИМНАЯ АУТЕНТИФИКАЦИЯ ПРОГРАММНЫХ УРОВНЕЙ 2016
  • Мансур Раста
  • Баттачарья Сумендра
  • Юдэйл Роберт
RU2715032C2
ОБРАБОТКА УПРАВЛЯЮЩЕЙ КОМАНДЫ АУТЕНТИФИКАЦИИ СООБЩЕНИЯ ДЛЯ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ ДАННЫХ 2004
  • Шон Лундвалл
  • Роналд Смит
  • Фил Чичун Е.
RU2327204C2

Иллюстрации к изобретению RU 2 727 152 C1

Реферат патента 2020 года КОМАНДА НА ШИФРОВАНИЕ СООБЩЕНИЯ С АУТЕНТИФИКАЦИЕЙ

Изобретение относится к обработке данных в вычислительной среде, связанной с шифрованием и аутентификацией данных. Технический результат заключается в расширении арсенала технических средств. Способ обеспечения обработки в вычислительной среде, отличающийся получением исполняемой команды, при выполнении которой осуществляется шифрование и аутентификация, причем команда является отдельной архитектурно выполненной аппаратной машинной командой на аппаратном/программном интерфейсе и выполнением команды, включающим в себя шифрование одного набора данных, предоставленного с помощью регистра, размещение зашифрованных данных в обозначенном местоположении, аутентификацию предоставленного посредством команды дополнительного набора данных и сохранение по меньшей мере части тега аутентификации сообщения в выбранном местоположении. 2 н. и 10 з.п. ф-лы, 28 ил.

Формула изобретения RU 2 727 152 C1

1. Способ обеспечения обработки в вычислительной среде, отличающийся:

получением исполняемой команды (300), при выполнении которой осуществляется несколько операций, включая шифрование и аутентификацию, причем команда (300) является отдельной архитектурно выполненной аппаратной машинной командой на аппаратном/программном интерфейсе и включает в себя: (i) поле (302) кода операции, имеющее операционный код для указания на операцию шифрования сообщения с аутентификацией, а также (ii) одно или несколько полей (304, 306) регистров, используемых для обозначения одного или нескольких подлежащих использованию командой (300) регистров, и

выполнением команды, включающим в себя:

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

- размещение зашифрованных данных в обозначенном местоположении,

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

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

2. Способ по п. 1, причем выполнение также включает в себя аутентификацию зашифрованных данных.

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

- выявление, включает ли в себя дополнительный набор данных последний подлежащий аутентификации блок данных, и

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

4. Способ по п. 3, причем команда содержит элемент управления последних дополнительных аутентифицированных данных, проверяемый для выявления, включает ли в себя дополнительный набор данных последний подлежащий аутентификации блок данных.

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

- выявление, включает ли в себя один набор данных последний подлежащий шифрованию блок данных, и

- выполнение шифрования на основании, включает ли в себя один набор данных последний подлежащий шифрованию блок данных.

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

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

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

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

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

11. Способ по п. 1, причем один набор данных включает в себя по меньшей мере часть сообщения, а дополнительный набор данных включает в себя маршрутную информацию для сообщения.

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

Документы, цитированные в отчете о поиске Патент 2020 года RU2727152C1

Приспособление для точного наложения листов бумаги при снятии оттисков 1922
  • Асафов Н.И.
SU6A1
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок 1923
  • Григорьев П.Н.
SU2008A1
Способ приготовления мыла 1923
  • Петров Г.С.
  • Таланцев З.М.
SU2004A1
СПОСОБ И УСТРОЙСТВО ДЛЯ ОБРАБОТКИ ОПЕРАНДОВ В ПРОЦЕССОРЕ 2004
  • Вайберле Райнхард
  • Коттке Томас
  • Штайнингер Андреас
RU2360280C2

RU 2 727 152 C1

Авторы

Грайнер Дэн

Следжел Тимоти

Цёллин Кристиан

Джекоби Кристиан

Папроцкий Володимир

Вишегради Тамаш

Бюндген Райнхард Теодор

Брэдбери Джонатан

Пураник Адитья Нитин

Даты

2020-07-21Публикация

2017-10-02Подача