(21), (22) Заявка: 2005121915/09, 04.05.2004
(24) Дата начала отсчета срока действия патента:
04.05.2004
(30) Конвенционный приоритет:
12.05.2003 US 10/435,916
(43) Дата публикации заявки: 20.06.2007
(46) Опубликовано: 20.09.2008
(56) Список документов, цитированных в отчете о поиске:
US 5666411 A, 09.09.1997. RU 2099779 С1, 20.12.1997. US 2003028765 A1, 06.02.2003. US 4864494 A, 05.09.1989.
(85) Дата перевода заявки PCT на национальную фазу:
12.12.2005
(86) Заявка PCT:
GB 2004/001928 (04.05.2004)
(87) Публикация PCT:
WO 2004/099950 (18.11.2004)
Адрес для переписки:
101000, Москва, М.Златоустинский пер., 10, кв.15, “ЕВРОМАРКПАТ”, пат.пов. И.А.Веселицкой, рег. № 11
|
(72) Автор(ы):
ЛУНДВАЛЛ Шон (US), СМИТ Роналд (US), ЧИЧУН Фил Е. (US)
(73) Патентообладатель(и):
ИНТЕРНЭШНЛ БИЗНЕС МАШИНЗ КОРПОРЕЙШН (US)
|
(54) КОМАНДЫ ДЛЯ ПОДДЕРЖКИ ОБРАБОТКИ ШИФРОВАННОГО СООБЩЕНИЯ
(57) Реферат:
Изобретение относится к архитектуре вычислительной системы, в частности к новым командам, которые расширяют z-архитектуру фирмы IBM и могут эмулироваться другими архитектурами. Техническим результатом является повышение эффективности и быстродействия обработки данных, обеспечение возможности использования заявленного формата команд для различных архитектур. Указанный результат достигается за счет того, что команда микропроцессора задает единицу памяти, подлежащую шифрованию или расшифрованию, и зашифровывает или расшифровывает эту единицу памяти. Указанная команда имеет поле, определяющее значение кода функции, поле, определяющее значение бита-модификатора, причем одно значение кода функции соответствует операции запроса, вызывающей сохранение в блоке параметров слова состояния, имеющего множество разрядов, причем значение определенного разряда слова состояния, равное двоичной «1», указывает на то, что функция установлена, значение, равное двоичному «0», указывает на то, что функция не установлена. 3 н. и 12 з.п. ф-лы, 30 ил.
Изобретение относится к архитектуре вычислительной системы и, в частности, к новым командам, которые расширяют z-архитектуру фирмы IBM и могут эмулироваться другими архитектурами.
До появления настоящего изобретения, начиная с 60-х годов прошлого века, когда были созданы компьютеры, получившие известность под именем системы S/360, и до настоящего времени трудом многих талантливых инженеров компании IBM была создана особая архитектура, которая в силу своей естественной принадлежности к вычислительным системам получила название “мэйнфрейм” (от англ. “mainframe” – мощный универсальный компьютер) и принципы работы которой определяют архитектуру машины, описывая реализуемые в мэйнфрейме команды, которые были изобретены в компании IBM и которые с учетом их признанного за прошедшие годы значительного вклада в усовершенствование вычислительных машин, представленных мэйнфреймами, были включены в принципы работы систем компании IBM. Первое издание “Принципов работы z-архитектуры” вышло в свет в декабре 2000 г. в виде опубликованного стандартного справочного руководства SA 22-7832-00.
Авторами установлено, что развитию данной области техники могут способствовать новые дополнительные команды, или инструкции, которые могут быть включены в компьютеры z-архитектуры, а также могут эмулироваться другими разработчиками в более простых машинах, о чем сказано ниже.
В настоящем изобретении предлагается способ шифрования и расшифрования памяти вычислительной среды, заключающийся в том, что посредством команды микропроцессора задают единицу памяти, подлежащую шифрованию или расшифрованию, и зашифровывают или расшифровывают эту единицу памяти. При осуществлении предлагаемого в изобретении способа (i) указанная команда соотнесена с полем, определяющим значение кода функции, и еще одним полем, определяющим значение бита-модификатора, а выполняющий команду процессор определяет, подлежит ли выполнению операция шифрования или операция расшифрования, на основании значения кода функции и значения бита-модификатора, и (ii) одно дополнительное значение кода функции соответствует операции запроса, вызывающей сохранение в блоке параметров слова состояния, имеющего множество разрядов, причем если определенный разряд слова состояния имеет первое двоичное значение, то этот разряд соответствует значению кода функции, соответствующему установленной функции, а если определенный разряд слова состояния имеет второе двоичное значение, то этот разряд соответствует значению кода функции, соответствующему неустановленной функции.
Особенности предпочтительных вариантов осуществления изобретения станут очевидными для специалиста из приведенного ниже подробного описания изобретения, сопровождаемого чертежами, на которых показано:
на фиг.1 – команда “шифрование сообщения” (КМ) в формате RRE,
на фиг.2 – команда “шифрование сообщения со сцеплением” (КМС) в формате RRE,
на фиг.3 – таблица, в которой приведены коды функций для команды “шифрование сообщения”, показанной на фиг.1,
на фиг.4 – таблица, в которой приведены коды функций для команды “шифрование сообщения со сцеплением”, показанной на фиг.2,
на фиг.5 – присвоение значений командам КМ и КМС в регистре общего назначения (GR),
на фиг.6 – символ, обозначающий побитовую операцию “исключающее ИЛИ” (XOR),
на фиг.7 – символы для шифрования и расшифрования по алгоритму шифрования данных (DEA),
на фиг.8 – формат блока параметров для КМ-запроса,
на фиг.9 – блок параметров KM-DEA,
на фиг.10 – операция шифрования KM-DEA,
на фиг.11 – операция расшифрования KM-DEA,
на фиг.12 – формат блока параметров для KM-TDEA-128,
на фиг.13 – операция шифрования KM-TDEA-128,
на фиг.14 – операция расшифрования KM-TDEA-128,
на фиг.15 – формат блока параметров для KM-TDEA-192,
на фиг.16 – операция шифрования KM-TDEA-192,
на фиг.17 – операция расшифрования KM-TDEA-192,
на фиг.18 – формат блока параметров для КМС-запроса,
на фиг.19 – формат блока параметров для KMC-DEA,
на фиг.20 – операция шифрования KMC-DEA,
на фиг.21 – операция расшифрования KMC-DEA,
на фиг.22 – формат блока параметров для KMC-TDEA-128,
на фиг.23 – операция шифрования KMC-TDEA-128,
на фиг.24 – операция расшифрования KMC-TDEA-128,
на фиг.25 – формат блока параметров для KMC-TDEA-192,
на фиг.26 – операция шифрования KMC-TDEA-192,
на фиг.27 – операция расшифрования KMC-TDEA-192,
на фиг.28 – таблица, в которой показан приоритет выполнения команд КМ и КМС,
на фиг.29 – криптографический сопроцессор,
на фиг.30 – обобщенный предпочтительный вариант осуществления памяти компьютера, в которой хранятся команды, соответствующие предпочтительному варианту изобретения, и данные, а также механизм выборки, дешифрации и выполнения таких команд либо в вычислительной системе, в которой используются команды этой архитектуры, либо при эмуляции таких команд.
Сначала рассматриваются команды “шифрование сообщения” (КМ) и “шифрование сообщения со сцеплением” (КМС), после чего описана предпочтительная вычислительная система для выполнения таких команд. В качестве альтернативы рассмотрена также вторая предпочтительная вычислительная система, которая для выполнения таких команд эмулирует другую вычислительную систему.
Команда “шифрование сообщения” (КМ)
На фиг.1 показана команда “шифрование сообщения” (КМ) в формате RRE.
Команда “шифрование сообщения со сцеплением” (КМС)
На фиг.2 показана команда “шифрование сообщения со сцеплением” (КМС) в формате RRE.
Выполняется функция, указываемая кодом функции в регистре 0 общего назначения.
Разряды 16-23 команды и поле R1 игнорируются. Разряды 57-63 регистра 0 общего назначения содержат код функции. На фиг.3 и 4 показаны коды функций, присвоенные командам “шифрование сообщения” и “шифрование сообщения со сцеплением”, соответственно. Все другие коды функций свободны (не присвоены). Для функций шифрования разряд 56 является битом-модификатором, который определяет, должна ли выполняться операция шифрования (т.е. зашифрования) или операция расшифрования. Для всех остальных функций бит-модификатор игнорируется. Все остальные разряды регистра 0 общего назначения игнорируются. Регистр 1 общего назначения содержит логический адрес крайнего левого байта блока параметров, хранящегося в памяти. В режиме 24-разрядной адресации содержимым разрядов 40-63 регистра 1 общего назначения является адрес, а содержимое разрядов 0-39 игнорируется. В режиме 31-разрядной адресации содержимым разрядов 33-63 регистра 1 общего назначения является адрес, а содержимое разрядов 0-32 игнорируется.
В режиме 64-разрядной адресации содержимым разрядов 0-63 регистра 1 общего назначения является адрес.
На фиг.3 показаны коды функций для команды “шифрование сообщения”.
На фиг.4 показаны коды функций для команды “шифрование сообщения со сцеплением”.
Все другие коды функций свободны (не присвоены). Функция запроса является средством указания доступности других функций. Для функции запроса содержимое регистров R1, R2 и R1+1 общего назначения игнорируется.
Для всех остальных функций второй операнд шифруется в соответствии с тем, как это задано кодом функции с использованием криптографического ключа в блоке параметров, и полученный результат помещается в местоположение первого операнда. Для команды “шифрование сообщения со сцеплением” при шифровании также используется начальное значение цепочки в блоке параметров, и в процессе выполнения операции происходит обновление значения цепочки.
Поле R1 обозначает регистр общего назначения и должно соответствовать регистру с четным номером, в противном случае определяется исключительная ситуация при нарушении заданных условий.
Поле R2 обозначает четно-нечетную пару регистров общего назначения и должно соответствовать регистру с четным номером, в противном случае определяется исключительная ситуация при нарушении заданных условий.
Местоположение крайнего левого байта первого и второго операндов задается соответственно содержимым регистров R1 и R2 общего назначения. Число байтов в местоположении второго операнда задается в регистре R2+1 общего назначения. Длина первого операнда равна длине второго операнда.
При выполнении операции адреса в регистрах R1 и R2 общего назначения увеличиваются на число обработанных байтов из второго операнда, а длина в регистре R2+1 общего назначения уменьшается на такое же число байтов. Формирование и обновление адресов и длины зависит от режима адресации.
В режиме 24-разрядной адресации содержимым разрядов 40-63 регистров R1 и R2 общего назначения являются адреса первого и второго операндов, соответственно, а содержимое разрядов 0-39 игнорируется; разряды 40-63 обновленных адресов заменяют собой соответствующие разряды в регистрах R1 и R2 общего назначения, переносы разряда 40 обновленного адреса игнорируются, а содержимое разрядов 32-39 регистров R1 и R2 общего назначения устанавливается на нуль. В режиме 31-разрядной адресации содержимым разрядов 33-63 регистров R1 и R2 общего назначения являются адреса первого и второго операндов, соответственно, а содержимое разрядов 0-32 игнорируется; разряды 33-63 обновленных адресов заменяют собой соответствующие разряды в регистрах R1 и R2 общего назначения, переносы разряда 33 обновленного адреса игнорируются, а содержимое разряда 32 регистров R1 и R2 общего назначения устанавливается на нуль. В режиме 64-разрядной адресации содержимым разрядов 0-63 регистров R1 и R2 общего назначения являются адреса первого и второго операндов, соответственно; разряды 0-63 обновленных адресов заменяют собой содержимое регистров R1 и R2 общего назначения, а переносы разряда 0 игнорируются.
В режимах как 24-разрядной, так и 31-разрядной адресации содержимым разрядов 32-63 регистра R2+1 общего назначения является 32-разрядное целое двоичное число без знака, которое задает число байтов в первом и втором операндах, а содержимое разрядов 0-31 игнорируется; разряды 32-63 с обновленным значением заменяют собой соответствующие разряды в регистре R2+1 общего назначения. В режиме 64-разрядной адресации содержимым разрядов 0-63 регистра R2+1 общего назначения является 64-разрядное целое двоичное число без знака, которое задает число байтов в первом и втором операндах, а обновленное значение заменяет собой содержимое регистра R2+1 общего назначения.
В режимах как 24-разрядной, так и 31-разрядной адресации содержимое разрядов 0-31 регистров R1, R2 и R2+1 общего назначения всегда остается неизменным. На фиг.5 показано содержимое описанных выше регистров общего назначения.
В режиме адресации с использованием регистров доступа (AR) регистры доступа 1, R1 и R2 определяют адресные пространства, содержащие соответственно блок параметров, первый операнд и второй операнд.
Получаемый результат аналогичен результату обработки, начинаемой с левого конца первого и второго операндов и продолжаемой вправо блок за блоком. Операция завершается, когда обработаны все исходные байты во втором операнде, указанные в регистре R2+1 общего назначения (что именуется нормальным завершением), или когда обработано заданное ЦП число блоков, которое меньше длины второго операнда (что именуется частичным завершением). Заданное ЦП число блоков зависит от модели и может быть различным при каждом выполнении команды. Как правило, заданное ЦП число блоков не равно нулю. В некоторых нештатных ситуациях такое число может равняться нулю, и может быть задан код условия 3 без продвижения вперед (зацикливание). Вместе с тем ЦП обеспечивает защиту от бесконечного повторения в таком случае зацикливания.
Результаты в местоположении первого операнда и поле значения цепочки являются непредсказуемыми при наступлении любой из следующих ситуаций:
1. Поле криптографического ключа перекрывает любую часть первого операнда.
2. Поле значения цепочки перекрывает любую часть первого или второго операнда.
3. Первый и второй операнды деструктивно перекрывают друг друга. Считается, что операнды перекрывают друг друга деструктивно, если местоположение первого операнда используется в качестве источника после перемещения в него данных при условии, что обработка осуществляется слева направо по одному байту за раз.
Если операция закончилась ввиду нормального завершения, устанавливается код условия 0, а полученное значение в регистре R2+1 равно нулю. Если операция закончилась ввиду частичного завершения, устанавливается код условия 3, и полученное значение в регистре R2+1 не равно нулю.
Если выявлено событие регистрации программных событий (PER-событие, от англ. “Program Event Recording”) с изменением памяти, в местоположениях первого операнда дополнительно сохраняется менее 4 Кбайт, после чего передается отчет о событии.
Если длина второго операнда изначально равна нулю, доступ к блоку параметров, первому и второму операндам не осуществляется, регистры R1, R2 и R2+1 общего назначения не меняются, и устанавливается код условия 0.
Если содержимое полей R1 и R2 одинаково, содержимое указанных регистров увеличивается лишь на количество обработанных байтов, а не на удвоенное число обработанных байтов.
С точки зрения других ЦП и канальных программ ссылки на блок параметров и хранимые в памяти операнды могут являться ссылками с множественным доступом, доступ к таким ячейкам в памяти необязательно должен быть осуществляться одновременно с доступом к блоку параметров, а последовательность таких доступов или ссылок не определена.
В некоторых необычных ситуациях выполнение команды может быть завершено путем установки кода условия 3 без обновления регистров и значения цепочки, чтобы отразить последнюю обработанную единицу первого и второго операндов. В таком случае размер обработанного блока зависит от ситуации и модели, но ограничен таким образом, чтобы части первого и второго обработанных операндов, о которых не был передан отчет, не перекрывали друг друга в памяти. В любом случае применительно ко всем обработанным местоположениям первого операнда применяются разряды изменений и передаются отчеты о PER-событиях с изменением памяти, когда это применимо.
О возникновении исключительных ситуаций по доступу (исключениях из доступа) может сообщаться в отношении более крупной части операнда, чем часть, обрабатываемая за одну операцию выполнения команды; вместе с тем, исключения из доступа не распознаются в отношении местоположений за пределами длины операнда, а также местоположений на расстоянии более 4 Кбайт от текущего обрабатываемого местоположения.
Символы, используемые при описании функций
При дальнейшем описании функций “шифрование сообщения” и “шифрование сообщения со сцеплением” используются следующие символы.
Для функций, задействующих алгоритм шифрования данных DEA (от англ. “Data Encryption Algorithm”), разряд четности ключа DEA в каждом байте ключа DEA игнорируется, и операция продолжается в нормальном режиме независимо от четности ключа DEA. Более подробно алгоритм шифрования данных описан в стандарте Data Encryption Algorithm, ANSI-X3.92.1981, American National Standard for Information Systems (Американский национальный стандарт для информационных систем).
На фиг.6 представлен символ для побитовой операции “исключающее ИЛИ”, а на фиг.7 – символы для шифрования и расшифрования по алгоритму шифрования данных (DEA).
КМ-запрос (код КМ-функции 0)
Местоположения операндов и адреса, используемые этой командой, соответствуют показанным на фиг.5.
На фиг.8 показан формат блока параметров, используемого для функции КМ-запроса.
В блоке параметров хранится 128-разрядное слово состояния. Разряды 0-127 данного поля соответствуют кодам функций соответственно 0-127 команды “шифрование сообщения”. Если разряд равен единице, соответствующая функция установлена; в противном случае функция не установлена.
По завершении выполнения функции КМ-запроса применяется код условия 0; код условия 3 к данной функции неприменим.
KM-DEA (код КМ-функции 1)
Местоположения операндов и адреса, используемые этой командой, соответствуют показанным на фиг.5.
На фиг.9 показан формат блока параметров, используемого для функции KM-DEA.
Если бит-модификатор в регистре 0 общего назначения равен нулю, выполняется операция шифрования; 8-разрядные блоки открытого текста (Р1, Р2…, Pn) в операнде 2 зашифровываются по алгоритму DEA с помощью 64-разрядного криптографического ключа в блоке параметров. Каждый блок открытого текста зашифровывается независимо от других (отдельно), т.е. операция шифрования выполняется без сцепления блоков. Блоки шифртекста (C1, C2…, Cn) сохраняются в операнде 1. Эта операция показана на фиг.10.
Если бит-модификатор в регистре 0 общего назначения равен единице, выполняется операция расшифрования; 8-разрядные блоки шифртекста (C1, C2…, Cn) в операнде 2 расшифровываются по алгоритму DEA с помощью 64-разрядного криптографического ключа в блоке параметров. Каждый блок шифртекста расшифровывается независимо от других (отдельно), т.е. операция расшифрования выполняется без сцепления блоков. Блоки открытого текста (Р1, Р2…, Pn) сохраняются в операнде 1. Операция расшифрования KM-DEA показана на фиг.11.
KM-TDEA-128 (код КМ-функции 2)
Местоположения операндов и адреса, используемые этой командой, соответствуют показанным на фиг.5. Блок параметров, используемый для функции KM-TDEA-128, показан на фиг.12.
Если бит-модификатор в регистре 0 общего назначения равен нулю, выполняется операция шифрования; 8-разрядные блоки открытого текста (Р1, Р2…, Pn) в операнде 2 зашифровываются по алгоритму TDEA (Triple DEA) с помощью двух 64-разрядных криптографических ключей в блоке параметров. Каждый блок открытого текста зашифровывается независимо от других (отдельно), т.е. операция шифрования выполняется без сцепления блоков. Блоки шифртекста (C1, C2…, Cn) сохраняются в операнде 1. Операция шифрования KM-TDEA-128 показана на фиг.13.
Если бит-модификатор в регистре 0 общего назначения равен единице, выполняется операция расшифрования; 8-разрядные блоки шифртекста (C1, C2…, Cn) в операнде 2 расшифровываются по алгоритму TDEA с помощью двух 64-разрядных криптографических ключей в блоке параметров. Каждый блок шифртекста расшифровывается независимо от других (отдельно), т.е. операция расшифрования выполняется без сцепления блоков. Блоки открытого текста (Р1, Р2…, Pn) сохраняются в операнде 1. Операция расшифрования KM-TDEA-128 показана на фиг.14.
KM-TDEA-192 (код КМ-функции 3)
Местоположения операндов и адреса, используемые этой командой, соответствуют показанным на фиг.5.
На фиг.15 показан формат блока параметров, используемого для функции KM-TDEA-192.
Если бит-модификатор в регистре 0 общего назначения равен нулю, выполняется операция шифрования; 8-разрядные блоки открытого текста (Р1, Р2…, Pn) в операнде 2 зашифровываются по алгоритму TDEA (Triple DEA) с помощью трех 64-разрядных криптографических ключей в блоке параметров. Каждый блок открытого текста зашифровывается независимо от других (отдельно), т.е. операция шифрования выполняется без сцепления блоков. Блоки шифртекста (C1, C2…, Cn) сохраняются в операнде 1. Операция шифрования KM-TDEA-192 показана на фиг.16.
Если бит-модификатор в регистре 0 общего назначения равен единице, выполняется операция расшифрования; 8-разрядные блоки шифртекста (C1, C2…, Cn) в операнде 2 расшифровываются по алгоритму TDEA с помощью трех 64-разрядных криптографических ключей в блоке параметров. Каждый блок шифртекста расшифровывается независимо от других (отдельно), т.е. операция расшифрования выполняется без сцепления блоков. Блоки открытого текста (Р1, Р2…, Pn) сохраняются в операнде 1. Операция расшифрования KM-TDEA-192 показана на фиг.17.
КМС-запрос (код КМС-функции 0)
Местоположения операндов и адреса, используемые этой командой, соответствуют показанным на фиг.5.
На фиг.18 показан формат блока параметров, используемого для функции КМС-запроса.
В блоке параметров хранится 128-разрядное слово состояния. Разряды 0-127 данного поля соответствуют кодам функций 0-127 команды “шифрование сообщения со сцеплением”. Если разряд равен единице, соответствующая функция установлена; в противном случае функция не установлена.
По завершении выполнения функции КМС-запроса применяется код условия 0; код условия 3 к данной функции неприменим.
KMC-DEA (код КМС-функции 1)
Местоположения операндов и адреса, используемые этой командой, соответствуют показанным на фиг.5.
На фиг.19 показан формат блока параметров, используемого для функции KMC-DEA.
Если бит-модификатор в регистре 0 общего назначения равен нулю, выполняется операция шифрования; 8-разрядные блоки открытого текста (Р1, Р2…, Pn) в операнде 2 шифруются по алгоритму DEA с помощью 64-разрядного криптографического ключа и 64-разрядного значения цепочки в блоке параметров.
Значением цепочки, называемым начальным значением цепочки ICV (от англ. “Initial Chaining Value”) и используемым для получения первого блока шифртекста, является значение цепочки в блоке параметров; значением цепочки для получения каждого последующего блока шифртекста является соответствующий предыдущий блок шифртекста. Блоки шифртекста (C1, C2…, Cn) сохраняются в операнде 1. Последний блок шифртекста является выходным значением цепочки OCV (от англ. “Output Chaining Value”) и сохраняется в поле значения цепочки блока параметров. Операция шифрования KMC-DEA показана на фиг.20.
Если бит-модификатор в регистре 0 общего назначения равен единице, выполняется операция расшифрования; 8-разрядные блоки шифртекста (C1, C2…, Cn) в операнде 2 расшифровываются по алгоритму DEA с помощью 64-разрядного криптографического ключа и 64-разрядного значения цепочки в блоке параметров.
Значением цепочки, называемым начальным значением цепочки (ICV) и используемым для получения первого блока открытого текста, является значение цепочки в блоке параметров; значением цепочки для получения каждого последующего блока открытого текста является соответствующий предыдущий блок шифртекста. Блоки открытого текста (P1, P2…, Pn) сохраняются в операнде 1. Последний блок шифртекста является выходным значением цепочки (OCV) и сохраняется в поле значения цепочки блока параметров. Операция расшифрования KMC-DEA показана на фиг.21.
KMC-TDEA-128 (код КМС-функции 2)
Местоположения операндов и адреса, используемые этой командой, соответствуют показанным на фиг.5.
На фиг.22 показан формат блока параметров, используемого для функции KMC-TDEA-128.
Если бит-модификатор в регистре 0 общего назначения равен нулю, выполняется операция шифрования; 8-разрядные блоки открытого текста (Р1, P2…, Pn) в операнде 2 зашифровываются по алгоритму TDEA с помощью двух 64-разрядных криптографических ключей и 64-разрядного значения цепочки в блоке параметров.
Значением цепочки, называемым начальным значением цепочки (ICV) и используемым для получения первого блока шифртекста, является значение цепочки в блоке параметров; значением цепочки для получения каждого последующего блока шифртекста является соответствующий предыдущий блок шифртекста. Блоки шифртекста (C1, C2…, Cn) сохраняются в операнде 1. Последний блок шифртекста является выходным значением цепочки (OCV) и сохраняется в поле значения цепочки блока параметров. Операция шифрования KMC-TDEA-128 показана на фиг.23.
Если бит-модификатор в регистре 0 общего назначения равен единице, выполняется операция расшифрования; 8-разрядные блоки шифртекста (C1, C2…, Cn) в операнде 2 расшифровываются по алгоритму TDEA с помощью двух 64-разрядных криптографических ключей и 64-разрядного значения цепочки в блоке параметров.
Значением цепочки, называемым начальным значением цепочки (ICV) и используемым для получения первого блока открытого текста, является значение цепочки в блоке параметров; значением цепочки для получения каждого последующего блока открытого текста является соответствующий предыдущий блок шифртекста. Блоки открытого текста (P1, P2…, Pn) сохраняются в операнде 1. Последний блок шифртекста является выходным значением цепочки (OCV) и сохраняется в поле значения цепочки блока параметров. Операция расшифрования KMC-TDEA-128 показана на фиг.24.
KMC-TDEA-192 (код КМС-функции 3)
Местоположения операндов и адреса, используемые этой командой, соответствуют показанным на фиг.5.
На фиг.25 показан формат блока параметров, используемого для функции KMC-TDEA-192.
Если бит-модификатор в регистре 0 общего назначения равен нулю, выполняется операция шифрования; 8-разрядные блоки открытого текста (Р1, P2…, Pn) в операнде 2 зашифровываются по алгоритму TDEA с помощью трех 64-разрядных криптографических ключей и 64-разрядного значения цепочки в блоке параметров.
Значением цепочки, называемым начальным значением цепочки (ICV) и используемым для получения первого блока шифртекста, является значение цепочки в блоке параметров; значением цепочки для получения каждого последующего блока шифртекста является соответствующий предыдущий блок шифртекста. Блоки шифртекста (C1, C2…, Cn) сохраняются в операнде 1. Последний блок шифртекста является выходным значением цепочки (OCV) и сохраняется в поле значения цепочки блока параметров. Операция шифрования KMC-TDEA-192 показана на фиг.26.
Если бит-модификатор в регистре 0 общего назначения равен единице, выполняется операция расшифрования; 8-разрядные блоки шифртекста (C1, C2…, Cn) в операнде 2 расшифровываются по алгоритму TDEA с помощью трех 64-разрядных криптографических ключей и 64-разрядного значения цепочки в блоке параметров.
Значением цепочки, называемым начальным значением цепочки (ICV) и используемым для получения первого блока открытого текста, является значение цепочки в блоке параметров; значением цепочки для получения каждого последующего блока открытого текста является соответствующий предыдущий блок шифртекста. Блоки открытого текста (Р1, P2…, Pn) сохраняются в операнде 1. Последний блок шифртекста является выходным значением цепочки (OCV) и сохраняется в поле значения цепочки блока параметров. Операция расшифрования KMC-TDEA-192 показана на фиг.27.
Особые условия для КМ и КМС
При наличии любого из нижеперечисленных условий определяется исключительная ситуация при нарушении заданных условий и не предпринимаются какие-либо действия:
1. Разряды 57-63 регистра 0 общего назначения указывают код неприсвоенной или неустановленной функции.
2. Поле R1 или R2 обозначает регистр с нечетным номером или регистр 0 общего назначения.
3. Длина второго операнда не является кратной размеру блока данных выбранной функции (для определения размера блоков данных для функций “шифрование сообщения” см. фиг.7-3 на стр.7-35; для определения размера блоков данных для функций “шифрование сообщения со сцеплением” см. фиг.7-4 на стр.7-35). Данное условие возникновения исключительной ситуации не распространяется на функции запроса.
Получаемый код условия:
0 нормальное завершение
1 —
2 —
3 частичное завершение
Программные исключительные ситуации:
по доступу (выборка, операнд 2 и криптографический ключ; сохранение, операнд 1, выборка и сохранение, значение цепочки);
при выполнении операции (если не установлена вспомогательная программа засекречивания сообщений);
при нарушении заданных условий.
На фиг.28 приведена таблица, иллюстрирующая приоритет выполнения команд КМ и КМС.
Примечания по программированию:
1. Если задан код условия 3, регистры общего назначения, содержащие адресы операндов и длину, а для команды “шифрование сообщения со сцеплением” – также значение цепочки в блоке параметров, обычно обновляют таким образом, что программа может легко вернуться к команде и продолжить выполнение операции.
В нештатных ситуациях ЦП защищает от бесконечного повторения операций в случаях зацикливания, а также защищает от установки кода условия 3, если первый и второй операнды, подлежащие повторной обработке, частично перекрывают друг друга в памяти. Таким образом, каждый раз, когда задан код условия 3, программа может успешно вернуться к команде, не зацикливаясь и не делая повторных попыток выполнить команду.
2. Если длина второго операнда изначально не равна нулю и задан код условия 0, обновление регистров происходит таким же образом, как и при коде условия 3. Для команды “шифрование сообщения со сцеплением” значение цепочки в данном случае таково, что обработка дополнительных операндов может осуществляться таким же образом, как если бы они были частью той же цепочки.
3. Для экономии объема памяти первый и второй операнды могут точно перекрывать друг друга либо исходная точка первого операнда может располагаться слева от исходной точки второго операнда. В любом случае взаимное наложение не является деструктивным (разрушающим).
Криптографический сопроцессор
В предпочтительном варианте осуществления изобретения предусматривается использование криптографического сопроцессора (сопроцессор криптографической поддержки), который может использоваться в сочетании с описанными выше командами, а также для выполнения шифрованных сообщений и как вспомогательное средство для решения разнообразных задач сцепления сообщений, которые могут использоваться при сцеплении и криптографическом применении в сочетании с соответствующими командами.
На фиг.29 показан криптографический сопроцессор, который непосредственно присоединен к тракту данных, общему для всех внутренних исполнительных устройств на универсальном микропроцессоре, который имеет несколько операционных конвейеров. Внутренняя шина 1 микропроцессора, которая является общей для всех остальных исполнительных устройств, соединена с криптографическим блоком 2 управления, который отслеживает на шине команды процессора, которые он должен выполнять.
Криптографический блок управления служит криптографическим сопроцессором, который непосредственно связан с трактом данных, общим для всех внутренних исполнительных устройств центрального процессора на универсальном микропроцессоре, обеспечивающих доступные аппаратные средства (E0…En) или из их сочетания в предпочтительном варианте с операционными конвейерами. При появлении в регистре 3 команд криптографической команды блок 2 управления вызывает из доступных аппаратных средств соответствующий алгоритм. Данные операнда через входной регистр 4, действующий по принципу обслуживания в порядке поступления (FIFO-регистр), поступают по той же внутренней шине микропроцессора. По завершении операции в регистре 6 состояния ставится флаг, а результаты становятся доступными для чтения с выходного FIFO-регистра 5.
В проиллюстрированном предпочтительном варианте осуществления изобретение рассчитано на возможность наращивания для включения стольких аппаратурных машин, сколько требуется конкретной реализацией в зависимости от задач, которые ставятся перед системой. Пути передачи данных в направлении входного и выходного регистров 7 являются общими для всех машин.
В предпочтительном варианте осуществления изобретения криптографические функции реализованы в аппаратном исполнительном устройстве на ЦП, чем достигается меньшее время ожидания (задержка) при вызове и выполнении операций шифрования и повышается эффективность.
За счет сокращения времени ожидания значительно расширяются возможности универсальных процессоров в системах, где часто выполняется много операций шифрования, в особенности, если при этом речь идет лишь о небольших объемах данных. Это делает возможной реализацию, способную существенно ускорить процессы, связанные с осуществлением защищенных онлайновых транзакций. Наиболее распространенные способы обеспечения безопасности онлайновых транзакций предусматривают применение набора из трех алгоритмов. Первый алгоритм используется один раз за сеанс и может быть реализован аппаратно или программно, а остальные алгоритмы вызываются при каждой транзакции во время сеанса, при этом настоящее изобретение исключает затраты времени, связанные и с задержкой при вызове внешних аппаратных средств, и с выполнением алгоритма программными средствами.
На фиг.30 концептуально показана реализация предпочтительного варианта осуществления изобретения на примере мэйнфрейма с описанным выше микропроцессором, который, как доказано экспериментальным путем в компании IBM, может эффективно использоваться в массовой реализации формата команд предложенной архитектуры для компьютеров с функциональностью длинного смещения, который используют программисты, в наши дни обычно программисты, работающие на языке “Си”. Такие форматы команд, которые хранятся в запоминающем устройстве, может реализовать “родной” для них сервер IBM z-архитектуры или же, как возможный вариант, вычислительные машины на базе других архитектур. Их могут эмулировать существующие и будущие серверы IBM класса мэйнфрейм и другие машины IBM (например, серверы серии p и серверы серии x). Их могут выполнять использующие оперативную систему Linux разнообразные компьютеры на базе аппаратных средств IBM, Intel, AMD, Sun Microsystems и других компаний. Помимо выполнения таким аппаратным обеспечением с z-архитектурой Linux также может применяться в машинах, использующих эмуляцию на базе Hercules, UMX, FXI или Platform Solutions, в которых режим выполнения в целом представляет собой режим эмуляции. В режиме эмуляции осуществляют дешифрацию конкретной эмулируемой команды и формируют стандартную подпрограмму для реализации отдельной команды в виде стандартной подпрограммы или драйвера на языке С или создают драйвер для определенного аппаратного обеспечения иным способом, доступным для специалистов в данной области техники, ознакомившихся с описанием предпочтительного варианта осуществления. Различные способы осуществления на целевом компьютере эмуляции формата команд, архитектура которых разработана для исполнения на другом компьютере, а также серийно выпускаемые средства программного обеспечения, используемые в этих целях, описаны в ряде патентов, раскрывающих программные и аппаратные средства эмуляции, включая, без ограничения, патенты US 5551013, US 6009261, US 5574873, US 6308255, US 6463532 и US 5790825.
В предпочтительном варианте осуществления существующие форматы несуперскалярной команды со значительным предварительным смещением образуют адрес хранения операнда, который состоит из базового регистра и 12-разрядного смещения без знака или базового регистра, индексного регистра и 12-разрядного смещения без знака, а новые форматы команды со значительным смещением образуют адрес хранения операнда, который состоит из базового регистра и 20-разрядного смещения со знаком или базового регистра, индексного регистра и 20-разрядного смещения со знаком.
В данном предпочтительном варианте осуществления изобретения форматы для несуперскалярной команды, предшествующие формату с длинным смещением, образуют адрес хранения операнда путем суммирования базового регистра и 12-разрядного смещения без знака либо базового регистра, индексного регистра и 12-разрядного смещения без знака, а новые форматы команды с длинным смещением образуют адрес хранения операнда путем суммирования базового регистра и 20-разрядного смещения со знаком либо базового регистра, индексного регистра и 20-разрядного смещения со знаком.
Как показано на фиг.30, такие команды выполняются аппаратно процессором или путем эмуляции такого набора команд программным обеспечением, установленным на компьютере с другим собственным, или “родным”, набором команд.
На фиг.30 позицией 501 обозначена память (запоминающее устройство) компьютера, в котором хранятся команды и данные. В таком компьютере изначально хранятся описанные в настоящем изобретении команды с длинным смещением. Позицией 502 обозначен механизм выборки команд из памяти компьютера, который также может предусматривать помещение выбранных команд в местное буферное запоминающее устройство. Затем команды в исходном виде поступают в дешифратор 503 команд, который определяет тип выбранной команды. Позицией 504 обозначен механизм выполнения команд. Он может предусматривать загрузку данных в регистр из памяти 501, сохранение данных из регистра в памяти или выполнение какой-либо арифметической или логической операции. Тип такой выполняемой операции предварительно определен дешифратором команд. В данном случае выполняются описанные в настоящем изобретении команды с длинным смещением. Если команды с длинным смещением выполняются в “родной” вычислительной системе, процесс завершается, как это описано выше. Если же набор команд со структурой, содержащей команды с длинным смещением, эмулирует другой компьютер, описанный процесс будет реализован в хост-компьютере 505 программно. В этом случае упомянутые выше механизмы, как правило, будут реализованы в виде одной или нескольких стандартных системных подпрограмм в рамках эмулирующего программного обеспечения. В обоих случаях происходят вызов, дешифрация (декодирование) и выполнение команды.
В частности, команды этой архитектуры можно использовать с компьютерной архитектурой, в которой применяются существующие форматы команд с 12-разрядным смещением без знака, используемым для формирования адреса хранения операнда, а также с архитектурой, в которой применяются дополнительные форматы команд, обеспечивающие дополнительные разряды смещения, предпочтительно на 20 разрядов, представляющего собой увеличенное смещение со знаком, используемое для формирования адреса хранения операнда. Команды такой архитектуры представляют собой компьютерное программное обеспечение, которое хранится в запоминающем устройстве компьютера и служит для генерации кода, исходящего из процессора, в котором используется компьютерное программное обеспечение, и содержит код команды, используемый компилятором или эмулятором/интерпретатором, хранящимся в запоминающем устройстве 501 компьютера, при этом первая часть кода команды содержит код операции, задающий операцию, которую нужно выполнить, а вторая часть назначает операнды для участия в ее выполнении. При использовании команд с длинным смещением становится возможным напрямую обращаться к дополнительным адресам.
Как показано на фиг.30, такие команды выполняются аппаратно процессором или – путем эмуляции указанного набора команд – программным обеспечением, работающим на компьютере с другим собственным набором команд.
В соответствии с компьютерной архитектурой, используемой в предпочтительном варианте изобретения, поле смещения состоит из двух частей, при этом наименьшая значимая часть состоит из 12 разрядов и обозначается DL, DL1 – для операнда 1 или DL2 – для операнда 2, а наибольшая значимая часть состоит из 8 разрядов и обозначается DH, DH1 – для операнда 1 или DH2 – для операнда 2.
Кроме того, в предпочтительной компьютерной архитектуре формат команды таков, что коду операции соответствуют разряды с 0 по 7 и с 40 по 47, целевому регистру, называемому R1, соответствуют разряды с 8 по 11, индексному регистру, называемому Х2, соответствуют разряды с 12 по 15, базовому регистру, называемому В2, соответствуют разряды с 16 по 19, первой части состоящего из двух частей смещения, которая называется DL2, соответствуют разряды с 20 по 31, а второй части, которая называется DH2, соответствуют разряды с 32 по 39.
Эта компьютерная архитектура имеет такой формат команды, что коду операции соответствуют разряды с 0 по 7 и с 40 по 47, целевому регистру, называемому R1, соответствуют разряды с 8 по 11, исходному регистру, называемому R3, соответствуют разряды с 12 по 15, базовому регистру, называемому В2, соответствуют разряды с 16 по 19, первой части состоящего из двух частей смещения, которая называется DL2, соответствуют разряды с 20 по 31, а второй части, которая называется DH2, соответствуют разряды с 32 по 39.
Кроме того, предложенные для архитектуры компьютера команды с длинным смещением имеют такой формат, что коду операции соответствуют разряды с 0 по 7 и с 40 по 47, целевому регистру, называемому R1, соответствуют разряды с 8 по 11, значению маски, называемому М3, соответствуют разряды с 12 по 15, базовому регистру, называемому В2, соответствуют разряды с 16 по 19, первой части состоящего из двух частей смещения, которая называется DL2, соответствуют разряды с 20 по 31, а второй части, которая называется DH2, соответствуют разряды с 32 по 39.
Как показано выше, предпочтительная архитектура компьютера с длинным смещением имеет такой формат команды, что коду операции соответствуют разряды с 0 по 7 и с 40 по 47, непосредственному значению, называемому 12, соответствуют разряды с 8 по 15, базовому регистру, называемому В2, соответствуют разряды с 16 по 19, первой части состоящего из двух частей смещения, которая называется DL1, соответствуют разряды с 20 по 31, а второй части, которая называется DH1, соответствуют разряды с 32 по 39.
Предложенная в изобретении архитектура компьютера с длинным смещением отличается эффективностью при работе с новыми создаваемыми командами, в которых применен только формат команды с новым 20-разрядным смещением без знака.
В особом варианте осуществления предложенной в изобретении архитектуры компьютера используются существующие команды, форматы которых имеют только 12-разрядное смещение без знака и которые в новых форматах определены как имеющие существующее 12-разрядное значение смещения без знака, если 8 старших разрядов в поле смещения DH являются нулевыми разрядами, или как имеющие 20-разрядное смещение со знаком, если 8 старших разрядов в поле смещения DH не являются нулевыми разрядами.
Еще одной формой осуществления изобретения является устройство для шифрования и расшифрования памяти вычислительной среды, содержащее средства задания единицы памяти, подлежащей шифрованию или расшифрованию, посредством команды микропроцессора и средства шифрования или расшифрования этой единицы памяти.
Формула изобретения
1. Способ шифрования и расшифрования памяти вычислительной среды, заключающийся в том, что посредством команды микропроцессора задают единицу памяти, подлежащую шифрованию или расшифрованию, и зашифровывают или расшифровывают эту единицу памяти, причем указанная команда соотнесена с полем, определяющим значение кода функции, и еще одним полем, определяющим значение бита-модификатора, а выполняющий команду процессор определяет, подлежит ли выполнению операция шифрования или операция расшифрования, на основании значения кода функции и значения бита-модификатора, и
одно дополнительное значение кода функции соответствует операции запроса, вызывающей сохранение в блоке параметров слова состояния, имеющего множество разрядов, причем, если определенный разряд слова состояния имеет первое двоичное значение, то этот разряд соответствует значению кода функции, соответствующему установленной функции, а если определенный разряд слова состояния имеет второе двоичное значение, то этот разряд соответствует значению кода функции, соответствующему не установленной функции.
2. Способ по п.1, в котором указанная команда при ее выполнении процессором сохраняет результат шифрования или расшифрования в первом операнде.
3. Способ по п.2, в котором команда включает в себя поле кода операции, поле R2, указывающее один из нескольких регистров общего назначения процессора, содержащий адрес второго операнда, представляющий собой единицу памяти, заданную посредством этой команды, поле R1, указывающее второй регистр общего назначения процессора, содержащий адрес первого операнда и задающий длину второго операнда, причем значение кода функции получают из заданного регистра из числа регистров общего назначения процессора, в заданном регистре из числа регистров общего назначения содержится адрес хранящегося в памяти блока параметров, содержащего пользовательский криптографический ключ, используемый для шифрования и расшифрования по алгоритму шифрования данных (DEA), часть первого операнда включает в себя по меньшей мере часть второго операнда.
4. Способ по п.3, в котором заданный регистр общего назначения, содержащий значение кода функции, является регистром 0 общего назначения, а заданный регистр общего назначения, содержащий адрес хранящегося в памяти блока параметров, является регистром 1 общего назначения.
5. Способ по п.1, в котором, если значение кода функции соответствует операции запроса, то указанная команда содержит поле кода операции и никаких иных полей.
6. Способ по п.1, в котором значение кода функции соответствует любой из следующих операций: операция запроса шифрования сообщения (КМ), криптографическая операция с 64-разрядным ключом по алгоритму DEA (KM-DEA), криптографическая операция с двумя 64-разрядными ключами по алгоритму Triple DEA (KM-TDEA) и криптографическая операция с тремя 64-разрядными ключами по алгоритму Triple TDEA (KM-TDEA).
7. Способ по п.1, в котором указанная команда имеет формат, соответствующий собственной архитектуре команды процессора.
8. Машиночитаемый носитель данных, содержащий компьютерный программный продукт, обеспечивающий при его выполнении в вычислительной системе осуществление способа по любому из пп.1-7.
9. Устройство для шифрования и расшифрования памяти вычислительной среды, содержащее средства задания единицы памяти, подлежащей шифрованию или расшифрованию, посредством команды микропроцессора и средства шифрования или расшифрования этой единицы памяти, причем указанная команда соотнесена с полем, определяющим значение кода функции, и еще одним полем, определяющим значение бита-модификатора, а выполняющий команду процессор определяет, подлежит ли выполнению операция шифрования или операция расшифрования, на основании значения кода функции и значения бита-модификатора, и одно дополнительное значение кода функции соответствует операции запроса, вызывающей сохранение в блоке параметров слова состояния, имеющего множество разрядов, причем если определенный разряд слова состояния имеет первое двоичное значение, то этот разряд соответствует значению кода функции, соответствующему установленной функции, а если определенный разряд слова состояния имеет второе двоичное значение, то этот разряд соответствует значению кода функции, соответствующему не установленной функции.
10. Устройство по п.9, в котором указанная команда при ее выполнении процессором сохраняет результат шифрования или расшифрования в первом операнде.
11. Устройство по п.10, в котором команда включает в себя поле кода операции, поле R2, указывающее один из нескольких регистров общего назначения процессора, содержащий адрес второго операнда, представляющий собой единицу памяти, заданную посредством этой команды, поле R1, указывающее второй регистр общего назначения процессора, содержащий адрес первого операнда и задающий длину второго операнда, причем значение кода функции получают из заданного регистра из числа регистров общего назначения процессора, в заданном регистре из числа регистров общего назначения содержится адрес хранящегося в памяти блока параметров, содержащего пользовательский криптографический ключ, используемый для шифрования и расшифрования по алгоритму шифрования данных (DEA), часть первого операнда включает в себя по меньшей мере часть второго операнда.
12. Устройство по п.11, в котором заданный регистр общего назначения, содержащий значение кода функции, является регистром 0 общего назначения, а заданный регистр общего назначения, содержащий адрес хранящегося в памяти блока параметров, является регистром 1 общего назначения.
13. Устройство по п.9, в котором, если значение кода функции соответствует операции запроса, то указанная команда содержит поле кода операции и никаких иных полей.
14. Устройство по п.9, в котором значение кода функции соответствует любой из следующих операций: операция запроса шифрования сообщения (КМ), криптографическая операция с 64-разрядным ключом по алгоритму DEA (KM-DEA), криптографическая операция с двумя 64-разрядными ключами по алгоритму Triple DEA (KM-TDEA) и криптографическая операция с тремя 64-разрядными ключами по алгоритму Triple TDEA (KM-TDEA).
15. Устройство по п.9, в котором указанная команда имеет формат, соответствующий собственной архитектуре команды процессора.
РИСУНКИ
|