УСТРОЙСТВО АУТЕНТИФИЦИРОВАННОГО ШИФРОВАНИЯ, СПОСОБ АУТЕНТИФИЦИРОВАННОГО ШИФРОВАНИЯ И ПРОГРАММА ДЛЯ АУТЕНТИФИЦИРОВАННОГО ШИФРОВАНИЯ
AUTHENTICATED ENCRYPTION DEVICE, AUTHENTICATED ENCRYPTION METHOD AND PROGRAM FOR AUTHENTICATED ENCRYPTION

Область техники
[0001] Настоящее изобретение относится к устройству аутентифицированного шифрования для выполнения аутентифицированного шифрования путем использования общего ключа, устройства шифрования, устройства расшифрования, способа аутентифицированного шифрования и программы для аутентифицированного шифрования.
Уровень техники
[0002] Аутентифицированное шифрование (AE) представляет собой способ шифрования открытого сообщения одновременно с присваиванием к нему кода аутентификации сообщения (MAC) путем использования ранее доступного секретного ключа. Использование аутентифицированного шифрования позволяет защитить содержимое (контент) от перехвата и обнаружить несанкционированное манипулирование. При применении аутентифицированного шифрования к каналам связи может быть достигнута надежная защита передаваемого контента.
[0003] Основные ввод и вывод аутентифицированного шифрования будут описаны далее. Два лица, совместно использующие секретный ключ K, будут представляться далее как Алиса и Боб, а сообщение, зашифрованное аутентифицированным шифрованием, предполагается передаваемым от Алисы к Бобу.
[0004] Функция шифрования и функция расшифрования для аутентифицированного шифрования представляются как AEnc_K и ADec_K соответственно. Открытый текст, подлежащий шифрованию, представляется через переменную M, также вводится переменная N, называемая начальным вектором. Начальный вектор N, как правило, является случайным числом с короткой фиксированной длиной или счетчиком, генерируемым Алисой.
[0005] Сначала будет описана обработка шифрования со стороны Алисы. Алиса генерирует начальный вектор N, а затем выполняет (C, T)=AEnc_K(N, M). Здесь AEnc_K называется функцией шифрования, использующей ключ K в качестве параметра, C называется зашифрованным текстом, а T - тегом аутентификации, они являются переменными для обнаружения измененной фиксированной длины. Алиса передает Бобу комбинацию (N, C, T) из начального вектора N, получившегося зашифрованного текста C и результирующего тега аутентификации T.
[0006] Далее будет описана обработка расшифрования со стороны Боба. Здесь информация, которую Боб получает от Алисы, представляется в виде (N’, C’, T’). При получении информации от Алисы Боб выполняет ADec_K(N’, C’, T’) в качестве обработки расшифрования. ADec_K является функцией расшифрования, использующей ключ K в качестве параметра. Если в середине передача данных изменена, и (N’, C’, T’) отличается от (N, C, T), то ADec_K(N’, C’, T’) выводит ¥bot, где ¥bot выбирается в качестве символа, указывающего на изменение. При отсутствии изменения и в случае (N’, C’, T’)=(N, C, T) ADec_K(N’, C’, T’) выводит расшифрованный открытый текст M’, имеющий то же содержимое, что и открытый текст M, зашифрованный Алисой. Таким образом, M расшифрован правильно.
[0007] mВ действительности ввод и вывод включают в себя переменную, называемую во многих случаях заголовком H. Заголовок H не подлежит шифрованию, это информация для аутентификации сообщений, которая используется, например, для представления версии протокола и т. п.
[0008] Вместе с включенным заголовком H функция шифрования является вводом/выводом (C, T)=AEnc_K(N, M, H), зашифровывает открытый текст M и присваивает код аутентификации сообщения к комбинации открытого текста M и заголовка H. Алиса передает Бобу комбинацию (N, H, C, T) из начального вектора N, заголовка H, получившегося зашифрованного текста C и результирующего тега аутентификации T.
[0009] Если ввод/вывод ADec_K(N’, C’, T’, H’) получен, и (N’, C’, T’, H’) отличается от (N, H, C, T), то функция расшифрования выводит символ ¥bot, указывающий на изменение. Когда же полученный набор (N’, C’, T’, H’) не изменен, или устанавливается, что (N’, H’, C’, T’)=(N, H, C, T), Боб на стороне приема может правильно расшифровать M и подтвердить, что заголовок H не изменен.
[0010] Аутентифицированное шифрование с вводом/выводом, дополненным заголовком H, может называться аутентифицированным шифрованием с присоединенными данными (AEAD) и далее будет указываться просто как "аутентифицированное шифрование", если не оговорено иное.
[0011] Один из способов реализации аутентифицированного шифрования основывается на обобщенной композиции. Это способ, использующий комбинацию безопасной системы шифрования и безопасной системы MAC. Например, в известной комбинации Enc-then-Auth для реализации аутентифицированного шифрования с (C, T)=MAC_K2(N, Enc_K1(M)) используются два ключа K1 и K2. В данном случае Enc_XX обозначает функцию шифрования, используемую в системе шифрования, а MAC_XX обозначает заданную функцию MAC, используемую в системе MAC.
[0012] При использовании блочного шифрования, такого как, например, AES (улучшенный стандарт шифрования) шифрование, система шифрования может использовать шифрование AES в режиме счетчика, а система MAC может использовать CMAC-AES (MAC-AES на основе шифра). Кроме того, в качестве способа выполнения аутентифицированного шифрования без использования двух ключей, а путем использования ключа шифрования одного блока имеется известная система аутентифицированного шифрования, называемая режимом CCM (Counter with CBC-MAC) (непатентный документ 1, например).
[0013] Однако, все вышеуказанные способы требуют двухпроходных обработок, включая шифрование и присваивание MAC. То есть данные должны быть полностью сканированы по меньшей мере два раза. Кроме того, когда входной открытый текст состоит из m блоков, для функций шифрования и MAC, используемых в системе CCM, блочное шифрование должно быть вызвано m раз. Таким образом, для обработки аутентифицированного шифрования m-блочного текста блочное шифрование должно быть вызвано 2m раза. То есть функция обработки, такая как функция шифрования или заданная функция MAC, должна быть вызвана дважды на каждый блок открытого текста. Система, в которой функция обработки вызывается дважды для каждого блока, также называется двухскоростной системой. Двухпроходная или двухскоростная система имеет проблему, состоящую в том, что обработка занимает много времени и имеет высокую загрузку.
[0014] Одним из подходов к решению этой проблемы является однопроходная система аутентифицированного шифрования, использующая блочное шифрование.
[0015] Сначала предлагается система аутентифицированного шифрования, называемая режимом OCB, которая описана в патентном документе 1 (которая далее будет называться системой OCB). Система OCB представляет собой систему такого рода, в которой описанное в непатентном документе 2 блочное шифрование, называемое настраиваемым блочным шифрованием, является расширенным.
[0016] Настраиваемое блочное шифрование является системой аутентифицированного шифрования, в которой для шифрования и расшифрования вводится вспомогательная переменная, называемая Tweak. Когда блочный размер составляет n бит, шифрование с настраиваемым блочным шифрованием может быть выражено как “TE_K(Tw, M)=C”, а расшифрование может быть выражено как “TD_K(Tw, C)=M”. Для любой комбинации (K, Tw), TE_K(Tw, *) выполняет подстановку в n-битном пространстве. Его обратная подстановка есть TD_K(Tw, *). Tw обозначает вспомогательную переменную Tweak, а * обозначает переменную. Вспомогательная переменная Tw требуется для расшифрования, но если она реализована, это не влияет на безопасность в настраиваемом блочном шифровании.
[0017] Сначала в системе OCB функция шифрования типового блочного шифрования преобразуется в функцию шифрования настраиваемого блочного шифрования или в Tweak-снабженную функцию шифрования путем использования режима XEX, описанного в непатентном документе 3. Затем для шифрования начального вектора N и открытого текста M=(M[1], M[2], •••, M[m]) вызывается следующая функция TE_K. Каждый M[i] предполагается n-битным блоком. Функция TE_K, используемая в системе OCB, в качестве переменной, соответствующей Tweak, использует переменную (N, i). N обозначает начальный вектор, а i - идентификационный номер блока.
[0018] C[1]=TE_K((N, 1), M[1]),
C[2]=TE_K((N, 2), M[2]),
•••,
C[m]=TE_K((N, m), M[m])
[0019] Тег аутентификации T находится путем вызова той же функции TE_K в виде сообщения следующим образом, например, для SUM=M[1] xor M[2] xor •••• xor M[m], которое является XOR (исключающим ИЛИ) всех блоков открытого текста.
[0020] T=TE_K((N, m+1), SUM)
[0021] Функция TE_K, используемая в системе OCB, реализуется путем добавления Tw = (N, i) и последовательности mask_K(N, i), вычисляемой с помощью секретного ключа K, к вводу/выводу функции шифрования E_K блочного шифрования (преобразуемой в режиме XEX). Уравнение преобразования в режиме XEX выражается следующим образом. Данное уравнение преобразования может называться далее уравнением XEX-преобразования.
[0022] TE_K((N, i), M[i])=E_K(M[i] xor mask_K(N, i) xor mask_K(N, i)
[0023] E_K используется для вычисления маски, и в системе OCB доступны эффективные последовательные обработки. То есть вычисления от mask_K(N, i) к mask_K(N, i+1) могут проводиться эффективно.
[0024] Фиг.19 представляет собой пояснительную диаграмму, схематически иллюстрирующую обработку шифрования в системе OCB. Блоки в пунктирных линиях на фиг.19 отвечают TE_K((N, i), *). Ход выполнения обработки вычисления последовательности маски на фиг.19 опущен.
[0025] Как показано на фиг.19, E_K вызывается один раз для вычисления L, для нахождения последовательности маски и тега аутентификации T в системе OCB соответственно, но в целом возможна и однопроходная обработка. Кроме того, обработка в каждом блоке может выполняться параллельно, за исключением вычисления последовательности маски. Более конкретно количество вызовов блочного шифрования для m-блочного открытого текста составляет почти m и почти половину от того числа, которое имеется в других двухпроходных системах аутентифицированного шифрования, таких как системы CCM и GCM (Galois/Counter mode).
Список литературы
Патентная литература
[0026] Патентный документ 1: U. S. Patent No. 8321675 Specification
Непатентная литература
[0027] Непатентный документ 1: Morris Dworkin, “Recommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentiality”, [online] May 2005, NIST Special Publication 800-38C, Internet <URL: http://csrc.nist.gov/publications/nistpubs/800-38C/SP800-38C_updated-July20_2007.pdf>
Непатентный документ 2: Moses Liskov, Ronald L. Rivest, David Wagner, “Tweakable Block Ciphers.”, 2002, Advances in Cryptology-CRYPTO 2002, Lecture Notes in Computer Science 2442 Springer 2002, p. 31-46.
Непатентный документ 3: P. Rogaway, “Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC.”, 2004, Advances in Cryptology-ASIACRYPT’04, LNCS 3329, p. 16-31.
Сущность изобретения
Техническая задача
[0028] Фиг.20 представляет собой пояснительную диаграмму, схематически иллюстрирующую обработку расшифрования в системе OCB. В режиме CCM или GCM обработка расшифрования, как аутентифицированное шифрование, выполняется только с помощью функции шифрования E_K блочного шифрования, в то время как в системе OCB, как показано на фиг.20, помимо функции шифрования E_K блочного шифрования для обработки расшифрования настраиваемого блочного шифрования требуется еще и функция расшифрования D_K блочного шифрования.
[0029] Когда обе функции шифрования и расшифрования блочного шифрования как части необходимы для шифрования и расшифрования аутентифицированного шифрования, нагрузки на сборку ввиду размера памяти или канала возрастают. Типовое блочное шифрование AES, как правило, медленнее в обработке расшифрования, чем шифрования, и этот факт обуславливает разницу в выполнении между обработкой шифрования и обработкой расшифрования в системе OCB, использующей AES или т. п.
[0030] Система OCB и аналогичные ей однопроходные системы аутентифицированного шифрования не могут решить вышеуказанную проблему.
[0031] В связи с этим задачей настоящего изобретения является создание устройства аутентифицированного шифрования для достижения однопроходного и односкоростного аутентифицированного шифрования, способного выполнять параллельные обработки и полностью выполнять обработки шифрования и расшифрования путем использования только одной функции шифрования, а также создание устройства шифрования, устройства расшифрования, способа аутентифицированного шифрования и программы для аутентифицированного шифрования.
Решение задачи
[0032] Устройство аутентифицированного шифрования в соответствии с настоящим изобретением характеризуется включением средства аутентифицированного шифрования для применения двухраундовой структуры Фейстеля, использующей функцию шифрования, которой присвоена вспомогательная переменная, для раундовой функции на каждые два блока, к входным открытому или зашифрованному текстам для генерации посредством этого зашифрованного текста или расшифрованного открытого текста.
[0033] Устройство шифрования в соответствии с настоящим изобретением характеризуется включением средства шифрования для применения двухраундовой структуры Фейстеля, использующей функцию шифрования, которой присвоена вспомогательная переменная, для раундовой функции на каждые два блока, к входному открытому тексту для генерации посредством этого зашифрованного текста.
[0034] Устройство расшифрования в соответствии с настоящим изобретением характеризуется включением средства расшифрования для применения двухраундовой структуры Фейстеля, использующей функцию шифрования, которой присвоена вспомогательная переменная, для раундовой функции на каждые два блока, к входному зашифрованному тексту для генерации посредством этого расшифрованного открытого текста.
[0035] Способ аутентифицированного шифрования в соответствии с настоящим изобретением характеризуется тем, что устройство обработки информации применяет двухраундовую структуру Фейстеля, использующую функцию шифрования, которой присвоена вспомогательная переменная, для раундовой функции на каждые два блока, к входным открытому или зашифрованному текстам для генерации посредством этого зашифрованного текста или расшифрованного открытого текста.
[0036] Программа для аутентифицированного шифрования в соответствии с настоящим изобретением характеризуется предписыванием компьютеру выполнять обработку применения двухраундовой структуры Фейстеля, использующей функцию шифрования, которой присвоена вспомогательная переменная, для раундовой функции на каждые два блока, к входным открытому или зашифрованному текстам для генерации посредством этого зашифрованного текста или расшифрованного открытого текста.
Полезные эффекты изобретения
[0037] В соответствии с настоящим изобретением можно достичь однопроходное и односкоростное аутентифицированное шифрование, способное выполнять параллельные обработки и полностью выполнять обработки шифрования и расшифрования путем использования только одной функции шифрования.
Краткое описание чертежей
[0038] [Фиг.1] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки шифрования в соответствии с настоящим изобретением.
[Фиг.2] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки расшифрования в соответствии с настоящим изобретением.
[Фиг.3] Данный чертеж изображает структурную схему, иллюстрирующую типовое устройство, обеспеченное в системе аутентифицированного шифрования.
[Фиг.4] Данный чертеж изображает структурную схему, иллюстрирующую типовую функциональную структуру системы аутентифицированного шифрования.
[Фиг.5] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую пример, в котором реализуется псевдослучайная функция с двумя входными переменными.
[Фиг.6] Данный чертеж изображает (а) пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки шифрования с псевдослучайной функцией с использованием блочного шифрования в режиме XEX, и (б) пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки расшифрования с псевдослучайной функцией с использованием блочного шифрования в режиме XEX.
[Фиг.7] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую другой пример, в котором реализуется псевдослучайная функция с двумя входными переменными.
[Фиг.8] Данный чертеж изображает блок-схему, иллюстрирующую типовую операцию шифрования системы аутентифицированного шифрования в соответствии с первым типовым вариантом осуществления.
[Фиг.9] Данный чертеж изображает блок-схему, иллюстрирующую типовую операцию расшифрования системы аутентифицированного шифрования в соответствии с первым типовым вариантом осуществления.
[Фиг.10] Данный чертеж изображает структурную схему, иллюстрирующую другую типовую структуру системы аутентифицированного шифрования.
[Фиг.11] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки шифрования в соответствии со вторым типовым вариантом осуществления.
[Фиг.12] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки расшифрования в соответствии со вторым типовым вариантом осуществления.
[Фиг.13] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки шифрования в соответствии с третьим типовым вариантом осуществления.
[Фиг.14] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки расшифрования в соответствии с третьим типовым вариантом осуществления.
[Фиг.15] Данный чертеж изображает структурную схему, иллюстрирующую типовую структуру устройства шифрования 100 для параллельных обработок.
[Фиг.16] Данный чертеж изображает структурную схему, иллюстрирующую типовую структуру устройства расшифрования 200 для параллельных обработок.
[Фиг.17] Данный чертеж изображает структурную схему, иллюстрирующую минимальную типовую структуру устройства аутентифицированного шифрования в соответствии с настоящим изобретением.
[Фиг.18] Данный чертеж изображает структурную схему, иллюстрирующую другую типовую структуру устройства аутентифицированного шифрования в соответствии с настоящим изобретением.
[Фиг.19] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки шифрования в системе OCB.
[Фиг.20] Данный чертеж изображает пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки расшифрования в системе OCB.
Описание вариантов осуществления
[0039] Сначала настоящее изобретение будет описано в целом. Настоящее изобретение относится к системе шифрования, использующей общий секретный ключ, которая основывается на системе блочного шифрования для проведения шифрования для каждого заданного размера. Настоящее изобретение применяет двухраундовую структуру Фейстеля на каждые два блока. Для раундовой функции двухраундовой структуры Фейстеля используется функция шифрования, которой присвоена вспомогательная переменная Tw, называемая Tweak (настраиваемый параметр). Структура Фейстеля, таким образом, используется для аутентифицированного шифрования в единицах двух блоков, решая тем самым вышеуказанную проблему.
[0040] Далее система аутентифицированного шифрования в соответствии с настоящим изобретением будет описана более подробно. Настоящее изобретение использует следующие последовательности переменных, предполагая вспомогательную переменную Tw вводимой в функцию шифрования. Последовательность переменных, используемая в качестве вспомогательной переменной Tw, может назваться далее "вспомогательной последовательностью". Вспомогательная последовательность устроена так, что во все вызываемые функции шифрования вводятся различные значения, тогда как шифрование проводится с помощью одного ключа. Далее будет описан случай, в котором вспомогательная последовательность в комбинации с начальным вектором N с отличительным значением для шифрования некоторого открытого текста, идентификатором i для идентификации фрагмента в единицах двух блоков и j для идентификации блока в фрагменте от другой обработки или комбинация (N, i, j) используется в качестве вспомогательной переменной Tw, но вспомогательная последовательность этим не ограничивается. Вспомогательная последовательность выполнена с возможностью генерировать одно и то же значение для некоторого открытого текста как при шифровании, так и расшифровании. Например, значение для генерации вспомогательной последовательности определяется заранее. Приведенный выше пример удовлетворяет вышеуказанному условию, так как значение вспомогательной последовательности может быть однозначно определено на основе начального вектора и длины открытого или зашифрованного текста.
[0041] Например, когда количество блоков в открытом или зашифрованном тексте, подлежащем обработке, равняется 2m с предположением, что каждый блок имеет n битов, можно считать, что (N, 1, 1), (N, 1, 2), (N, 2, 1), (N, 2, 2), •••, (N, m, 1), (N, m, 2) используются в качестве вспомогательных последовательностей, зависящих от индекса каждого блока, а (N, m, 3) используется в качестве вспомогательной последовательности для генерации тега аутентификации.
[0042] С вспомогательными последовательностями, определенными таким образом, открытый текст M, подлежащий шифрованию, обрабатывается в обработке шифрования в двухблочных фрагментах. i-й фрагмент зашифрованного текста (C[2i], C[2i-1]) генерируется для i-го фрагмента открытого текста (M[2i-1], M[2i], где (i=1, •••, m)) путем использования вспомогательных последовательностей (N, i, 1), (N, i, 2) и псевдослучайной функции F_K(*, *) с ключом в качестве псевдослучайной функции с двумя входными переменными. "Псевдослучайная функция" - это название для функции шифрования, отражающее ее свойства. Псевдослучайной функцией может быть функция шифрования блочного шифрования или, например, снабженная ключом хэш-функция.
[0043] Фиг.1 представляет собой пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки шифрования в соответствии с настоящим изобретением. Блоки в пунктирных линиях на фиг.1 находятся в двухраундовой структуре Фейстеля и отвечают блокам обработки в обработке шифрования в единицах двух блоков. Например, вместе с вспомогательной последовательностью в качестве первой входной переменной i-й фрагмент зашифрованного текста (C[2i], C[2i-1]) получается в каждом блоке обработки путем использования F_K((N, i, 1), *) с вспомогательной последовательностью (N, i, 1) в качестве первой входной переменной и F_K((N, i, 2), *) с вспомогательной последовательностью (N, i, 2) в качестве первой входной переменной следующим образом. XOR обозначает побитовое исключающее ИЛИ.
[0044] C[2i-1] = F_K((N, i,1), M[2i-1]) xor M[2i],
C[2i]=F_K((N, i, 2), C[2i-1]) xor M[2i-1]
••• Уравнение (1)
[0045] Уравнение (1) показывает, что XOR результата, полученного путем работы псевдослучайной функции F_K на нечетном блоке M[2i-1] в i-м фрагменте открытого текста с использованием вспомогательной последовательности (N, i, 1), отвечающей нечетному блоку в i-м фрагменте открытого текста, и четного блока M[2i] в i-м фрагменте открытого текста представляется как нечетный блок зашифрованного текста C[2i-1] в i-м фрагменте зашифрованного текста, а XOR результата, полученного путем работы псевдослучайной функции F_K на таким образом полученном блоке зашифрованного текста C[2i-1] с использованием вспомогательной последовательности (N, i, 2), отвечающей четному блоку в i-м фрагменте открытого текста, и нечетного блока M[2i-1] в i-м фрагменте открытого текста представляется как четный блок зашифрованного текста C[2i] в i-м фрагменте зашифрованного текста. Данная обработка выполняется на всех фрагментах.
[0046] В дополнение к вышеописанной обработке тег аутентификации T генерируется для контрольной суммы открытого текста SUM=M[2] xor M[4] xor ••• xor M[2m] с взятием XOR для всех четных блоков M[2], M[4], •••, M[2m] в открытом тексте с использованием вспомогательной последовательности (N, m, 3) для генерации тега аутентификации открытого текста и псевдослучайной функции F_K с ключом K и двумя входными переменными. Блок в штрихпунктирной линии на фиг.1 отвечает блоку обработки для обработки генерации тега аутентификации. Тег аутентификации T получается, например, путем использования F_K((N, m, 3), *) с вспомогательной последовательностью (N, m, 3) в качестве первой входной переменной следующим образом. XOR в вычислении SUM может быть сложением в любой группе, например, арифметическим сложением.
[0047] T=F_K((N, m, 3), SUM) ••• Уравнение (2)
[0048] Обработки для четных и нечетных блоков могут быть взаимозаменены. В этом случае контрольная сумма открытого текста может быть сформирована из каждого нечетного блока. Кроме того, разбиение на фрагменты в единицах двух блоков этим не ограничивается. Когда потребность в последовательной обработке относительно невысокая, к примеру при отсутствии онлайн вычисления, один фрагмент может быть создан, скажем, с первым и третьим блоками. Вспомогательная последовательность может быть устроена так, что во все псевдослучайные функции на чертеже вводятся различные значения, тогда как шифрование проводится с помощью одного ключа. Обведенный кружком символ + на чертеже обозначает XOR.
[0049] Зашифрованный текст C, начальный вектор N и тег аутентификации T передаются стороне расшифрования.
[0050] Когда зашифрованный текст C, подлежащий расшифрованию, начальный вектор N и тег аутентификации T вводятся на стороне расшифрования, сначала определяются вспомогательные последовательности в соответствии с тем же правилом. Например, полагая зашифрованный текст в виде C=(C[1], C[2], •••, C[2m]) с каждым блоком в n бит, в качестве вспомогательных последовательностей, зависящих от индекса каждого блока в зашифрованном тексте C, на основе информации о начальном векторе N и длине зашифрованного текста можно определить (N, 1, 1), (N, 1, 2), (N, 2, 1), (N, 2, 2), •••, (N, m, 1), (N, m, 2), а (N, m, 3) может быть определена для использования в качестве вспомогательной последовательности для генерации тега аутентификации.
[0051] Также в обработке расшифрования зашифрованный текст C, подлежащий расшифрованию, разбивается на фрагменты в единицах двух блоков, и обработка расшифрования, использующая двухраундовую структуру Фейстеля, состоящую из псевдослучайной функции F_K(*, *) с той же вспомогательной последовательностью, что и введенной при шифровании, выполняется на i-м фрагменте зашифрованного текста (C[2i-1], C[2i], где (i=1, •••, m)). Посредством чего может быть получен фрагмент расшифрованного открытого текста (M’[2i], M’[2i-1]).
[0052] Кроме того, когда та же обработка, что и обработка, выполняемая при шифровании, выполняется на основе контрольной суммы открытого текста с XOR для всех получившихся четных блоков M’[2], M’[4], •••, M’[2m] в открытом тексте, получается проверяющий расшифрование тег аутентификации T.
[0053] Фиг.2 представляет собой пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки расшифрования в соответствии с настоящим изобретением. Блоки в пунктирных линиях на фиг.2 находятся в двухраундовой структуре Фейстеля и отвечают блокам обработки в обработке расшифрования в единицах двух блоков. В каждом блоке обработки блоки открытого текста M’[2i] и M’[2i-1], расшифровываемые следующим образом, получаются путем использования F_K((N, i, 1), *) с вспомогательной последовательностью (N, i, 1) в качестве первой входной переменной и F_K((N, i, 2), *) с вспомогательной последовательностью (N, i, 2) в качестве первой входной переменной.
[0054] M’[2i-1]=F_K((N, i, 2), C[2i-1]) xor C[2i],
M’[2i]=F_K((N, i, 1), M’[2i-1]) xor C[2i-1]
••• Уравнение (3)
[0055] Эти обработки выполняются на всех фрагментах зашифрованного текста. Проверяющий расшифрование тег аутентификации T’ генерируется для контрольной суммы открытого текста SUM’=M[2] xor M’[4] xor ••• xor M’[2m] для проверки расшифрования с взятием XOR для всех четных блоков M’[2], M’[4], •••, M’[2m] в расшифрованном открытом тексте с использованием вспомогательной последовательности (N, m, 3) для генерации тега аутентификации расшифрованного открытого текста и псевдослучайной функции F_K с ключом K и двумя входными переменными. Блок в штрихпунктирной линии на фиг.2 отвечает блоку обработки для обработки генерации тега аутентификации. Проверяющий расшифрование тег аутентификации T’ получается путем использования F_K((N, m, 3), *) с вспомогательной последовательностью (N, m, 3) в качестве первой входной переменной следующим образом.
[0056] T’=F_K((N, m, 3), SUM’) ••• Уравнение (4)
[0057] Когда проверяющий расшифрование тег аутентификации T’ получен, производится проверка, совпадает ли входной тег аутентификации T с проверяющим расшифрование тегом аутентификации T’, и в случае совпадения выводится расшифрованный открытый текст M’=(M’[1], M’[2], •••, M’[2m]). Когда же они не совпадают, выводится сообщение об ошибке, указывающее на ошибку расшифрования.
[0058] Зашифрованный текст в настоящей системе расшифрования может быть расшифрован правильно, поскольку двухраундовая структура Фейстеля устанавливает замену для любой раундовой функции, так что, когда для функции шифрования определяются ключ и вспомогательная переменная, фрагменты открытого и зашифрованного текстов соответствуют друг другу взаимно однозначным образом, вспомогательная последовательность выполнена с возможностью однозначного определения на основе начального вектора и длины открытого или зашифрованного текста, и одна и та же вспомогательная последовательность используется как для шифрования, так и для расшифрования.
[0059] Кроме того, в обработках на отдельных раундах в двухраундовой структуре Фейстеля обратной обработки (обработки нахождения ввода по выводу функции) самой раундовой функции не требуется, и в обратной обработке раундовой функции вообще нет необходимости. В настоящей системе для раундовой функции используется функция шифрования, поэтому для преобразования открытого текста в зашифрованный текст обратной обработки функции шифрования не требуется. Кроме того, в обработке генерации тега аутентификации как при шифровании, так и при расшифровании выполняется одна и та же обработка, поэтому и в этой обработке нет необходимости в обратной обработки функции шифрования.
[0060] Безопасность настоящей системы приводит к безопасности функции шифрования. Это обусловлено тем, что настоящая система выполнена с возможностью генерировать тег аутентификации на основе суммы четных блоков, к которым в двухраундовой структуре Фейстеля функция шифрования применяется дважды. При расшифровании измененного зашифрованного текста в любом из четных блоков с большой вероятностью возникает случайное число, которое злоумышленник, изменяющий данные (и, конечно, не знающий ключа), предсказать не может, и его XOR, таким образом, или контрольная сумма открытого текста также не может быть предсказана. Поэтому проверяющий расшифрование тег аутентификации T’, который получается путем ввода контрольной суммы открытого текста в функцию шифрования, также непредсказуем.
[0061] В соответствии с настоящей системой аутентифицированное шифрование достигается только за счет функции шифрования, и, следовательно, может быть задействована снабженная ключом хэш-функция, такая как HMAC. Кроме того, в дополнение к блочному шифрованию или хэш-шифрованию могут быть основаны различные способы шифрования.
[0062] В соответствии с настоящей системой обработки в единицах двух блоков являются независимыми, и блоки открытого текста, для которых также может быть получена контрольная сумма открытого текста для тега аутентификации, могут быть получены в последовательных обработках вычислений, а значит, имеется возможность проведения онлайн вычисления.
[0063] Система аутентифицированного шифрования, применяющая систему аутентифицированного шифрования для открытого текста, подлежащего разбиению на четное число блоков, будет описана далее в соответствии с первым типовым вариантом осуществления. Более развернуто в соответствии со вторым и последующими типовыми вариантами осуществления будет описана система аутентифицированного шифрования, применяющая систему аутентифицированного шифрования, способную справляться со случаем, в котором размер последнего блока меньше заданного размера блока или в котором возникает нечетное количество блоков.
[0064] Первый типовой вариант осуществления
Типовая структура системы аутентифицированного шифрования в соответствии с первым типовым вариантом осуществления настоящего изобретения будет описана со ссылкой на фиг.3, фиг.4 и фиг.5. Фиг.3 представляет собой структурную схему, иллюстрирующую типовое устройство, обеспеченное в системе аутентифицированного шифрования в соответствии с данным типовым вариантом осуществления. Как показано на фиг.3, система в соответствии с данным типовым вариантом осуществления включает в себя устройство обработки информации 50. Устройство обработки информации 50 содержит блок вычислений 51, блок хранения данных 52 и блок ввода/вывода 53. Устройство обработки информации 50 является, например, персональным компьютером, работающим в соответствии с программой, или т. п. В этом случае блок вычислений 51, блок хранения данных 52 и блок ввода/вывода 53 реализуются центральным процессором, памятью и различными устройствами ввода/вывода (такими как клавиатура, мышь и блок сетевого интерфейса) соответственно. Фиг.3 иллюстрирует, что блок вычислений 51, блок хранения данных 52 и блок ввода/вывода 53 содержатся в одном устройстве, но они могут быть распределены и на множестве устройств.
[0065] Фиг.4 представляет собой структурную схему, иллюстрирующую типовую функциональную структуру системы аутентифицированного шифрования в соответствии с данным типовым вариантом осуществления. Как показано на фиг.4, система аутентифицированного шифрования может включать в себя устройство шифрования 100, содержащее средство шифрования 10, и устройство расшифрования 200, содержащее средство расшифрования 20. Устройство шифрования 100 и устройство расшифрования 200 реализуются, например, с помощью устройства обработки информации 50, проиллюстрированного на фиг.3.
[0066] Сначала будет описано средство шифрования 10, обеспеченное в устройстве шифрования 100. Средство шифрования 10 имеет средство ввода 101, средство генерации вспомогательной переменной 102, средство двухраундового шифрования Фейстеля 103, средство вычисления тега 104 и средство вывода 105.
[0067] Далее длина одного блока будет предполагаться равной n битам, если не оговорено иное.
[0068] Средство ввода 101 вводит открытый текст M, подлежащий шифрованию, и начальный вектор N. Средство ввода 101 реализуется с помощью устройства ввода символов, такого как клавиатура. Далее будет предполагается, что вводится открытый текст M=(M[1], •••, M[2m]), имеющий четное число блоков. Начальный вектор N для простоты полагается содержащим n бит, но если он короче, выполняется надлежащее дополнение, или для сведения к n битам дополнительно применяется псевдослучайная функция с n-битным выводом и вводом переменной длины (которая может быть реализована с помощью CMAC или HMAC, например). Дополнение здесь присоединяет фиксированную последовательность к хвосту двоичной последовательности для достижения посредством этого заданной длины. Например, применяется дополнение нулями или дополнение вида 10* (1 с последующими нулями 00•••0). Последнее является эффективным в предотвращении последовательностей с различными длинами от наличия того же значения после дополнения. В данном случае может быть использовано дополнение нулями.
[0069] Средство генерации вспомогательной переменной 102 на основе информации о начальном векторе N и длине открытого текста M генерирует вспомогательную переменную, как правило называемую Tweak или настраиваемым параметром, задаваемую для псевдослучайной функции в обработке расшифрования. В соответствии с данным типовым вариантом осуществления последовательность переменных (вспомогательная последовательность), как описано далее, генерируется в качестве вспомогательных переменных. Некоторая вспомогательная последовательность выражается вектором с тремя элементами в виде (N, i, j) с положительными целыми i и j. Когда открытый текст состоит из 2m блоков, вспомогательными последовательностями являются (N, 1, 1), (N, 1, 2), (N, 2, 1), (N, 2, 2), •••, (N, m-1, 1), (N, m-1, 2), (N, m, 1), (N, m, 2), (N, m, 3). Все переменные, за исключением последней, используются для шифрования, и только последняя переменная используется для генерации тега аутентификации.
[0070] Средство двухраундового шифрования Фейстеля 103 направлено на выполнение обработки каждого блока в пунктирной линии на фиг.1, оно выполняет шифрование путем разбиения открытого текста M на единицы по два блока и использования псевдослучайной функции F_K(*, *) с дополнительным входом и двумя входными переменными. Псевдослучайная функция F_K(*, *) с двумя входными переменными является снабженной ключом функцией с n-битным выводом, где для произвольных x и y F_K(x, y) является выводом, который лицо, не знающее ключ K, не сможет отличить от случайного числа.
[0071] Далее будет описан случай, в котором любая из вспомогательных последовательностей подается на вход в первую входную переменную в F_K(*, *), в то время как во вторую подается n-битная переменная, являющаяся блоком открытого текста, подлежащим шифрованию. Также в данном типовом варианте осуществления полагается MC[i]=(M[2i-1], M[2i]) для открытого текста M=(M[1], •••, M[2m]), где MC[i] называется i-м фрагментом открытого текста. Кроме того, полагается CC[i]=(C[2i-1], C[2i]), где CC[i] называется i-м фрагментом зашифрованного текста.
[0072] Средство двухраундового шифрования Фейстеля 103 обрабатывает фрагмент открытого текста MC[i] для каждого i=1, •••, m, как, например, в уравнении (1), получая, таким образом, фрагмент зашифрованного текста CC[i].
[0073] Как описано выше, F_K(*, *) может быть реализована с помощью различных функций шифрования. Например, может быть использована функция шифрования блочного шифрования. Когда используется функция шифрования E(*) n-битного блочного шифрования, Y=F_K((N, i, j), X) может быть эффективно вычислена с помощью расширенного блочного шифрования, называемого настраиваемым блочным шифрованием.
[0074] В частности, вычисление может быть реализовано путем добавления Tweak (N, i, j) и последовательности mask_K(N, i, j), вычисляемой по секретному ключу K, на вход блочного шифрования с использованием режима XEX, описанного в непатентном документе 2, как в уравнении XEX-преобразования. Уравнение преобразования в этом режиме выражается следующим образом. Данное уравнение преобразования может называться далее уравнением XE-преобразования.
[0075] TE_K((N, i, j), X)=E_K(X xor mask_K(N, i, j)) ••• Уравнение (5)
[0076] Уравнение XE-преобразования в уравнении (5) применяется, таким образом, для вычисления, отвечающего Y=F((N, i, j), X). Конкретный способ вычисления mask_K(N, i, j) может использовать, например, следующий способ.
[0077] mask_K(N, i, j)=2^i 3^(j-1) L, где L=E_K(N) ••• Уравнение (6)
[0078] 2^i или 3^j здесь обозначают операцию возведения в степень в предположении, что 2 или 3 являются константами конечного поля GF(2^n), а 2^i 3^j L обозначает умножение (на 2^i 3^j) в предположении, что L является элементом конечного поля GF(2^n). Фиг.5 представляет собой пояснительную диаграмму, схематически иллюстрирующую пример, в котором псевдослучайная функция с двумя входными переменными, используемая в данном типовом варианте осуществления, реализуется путем использования блочного шифрования в режиме XEX. Фиг.5 иллюстрирует типовую псевдослучайную функцию с двумя входными переменными, реализуемую в вышеуказанном способе. Фиг.6(а) представляет собой пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки шифрования в соответствии с данным типовым вариантом осуществления, в котором псевдослучайная функция с двумя входными переменными реализуется путем использования блочного шифрования в режиме XEX.
[0079] L здесь является L=E_K(N), как указано в оговорке уравнения (6). Таким образом, каждый раз, когда определяется N, E_K может работать один раз. Когда L не меняется, и i или j изменяется последовательно, B=2^i 3^j L может эффективно вычисляться путем использования результатов последнего вычисления, таким образом, сначала находится L=E(N), после чего количество вычислений можно считать почти равным Y=E(B xor X). Кроме того, константы конечного поля GF(2^n) могут быть заданы в различных системах, использующих режим XEX, описанный в непатентном документе 2.
[0080] Уравнение XE-преобразования отличается от уравнения XEX-преобразования, используемого в системе OCB, тем, что вывод mask_K не добавляется снаружи, поскольку система OCB требует функцию расшифрования TD_K функции TE_K, в то время как в соответствии с настоящим изобретением обработка может быть выполнена только с помощью TE_K.
[0081] В дополнение к режиму XEX могут быть задействованы настраиваемое блочное шифрование, описанное в литературе “Kazuhiko Minematsu, “Improved Security Analysis of XEX and LRW Modes.”, selected Areas in Cryptography 2006, p. 96-113.” (Непатентный документ 4), или функция шифрования Threefish настраиваемого блочного шифрования, описанная в литературе “Niels ferguson, et al., “The Skein Hash Function Family.”, [online] 2008, Internet <URL: http://www.skein-hash.info/sites/default/files/skein1.1.pdf”>” (Непатентный документ 5).
[0082] В качестве другого примера реализации для F_K(*, *) может быть задействована снабженная ключом хэш-функция, такая как HMAC. В этом случае Y=F_K((N, i, j), X) может быть вычислено путем выполнения надлежащего шифрования без потерь на (N, i, j), а затем связывания с X для ввода в HMAC.
[0083] Например, переменные N, i, j, используемые для вспомогательной последовательности, могут быть выражены в двоичном виде с надлежащей фиксированной длиной (например, 128 бит) и связаны. Фиг.7 представляет собой пояснительную диаграмму, схематически иллюстрирующую пример, в котором псевдослучайная функция с двумя входными переменными, используемая в данном типовом варианте осуществления, реализуется с помощью снабженной ключом хэш-функции. Фиг.7 иллюстрирует типовую псевдослучайную функцию с двумя входными переменными, реализуемую в вышеуказанном способе. Символ “| |” на фиг.7 обозначает побитовое связывание. Входная переменная Х и вспомогательная входная переменная (N, i, j) выводятся как HMAC_K(N | | i | | j | | X).
[0084] Функция F_K(*, *) может быть реализована, например, с помощью HMAC_K вместо E_K, приведенной на фиг. 5.
[0085] Описанная выше обработка выполняется на i=1, •••, m, и получаемый в результате C=(C[1], •••, C[2m]) является зашифрованным текстом.
[0086] Средство вычисления тега 104 направлено на выполнение обработки блока в штрихпунктирной линии на фиг.1, оно вычисляет тег аутентификации для аутентификации сообщений путем использования вспомогательной последовательности, выводимой средством генерации вспомогательной переменной 102, и входного открытого текста.
[0087] Средство вычисления тега 104 в соответствии с данным типовым вариантом осуществления сначала находит контрольную сумму SUM открытого текста, используемую для генерации тега аутентификации, с помощью четных блоков M[2], M[4], •••, M[2m] открытого текста следующим образом. XOR в вычислении SUM может быть сложением в любой группе, например, арифметическим сложением.
[0088] SUM=M[2] xor M[4] xor ••• xor M[2m] ••• Уравнение (7)
[0089] То есть находится сумма всех четных блоков M[2], M[4], •••, M[2m] открытого текста, называемая SUM. Затем на найденной контрольной сумме открытого текста с использованием псевдослучайного функции F_K(*, *) с двумя входными переменными и вспомогательной последовательности (N, m, 3) для генерации тега аутентификации выполняется обработка, выраженная уравнением (2), посредством чего находится тег аутентификации T.
[0090] Средство вывода 105 выводит зашифрованный текст C=(C[1], •••, C[2m]), полученный средством двухраундового шифрования Фейстеля 103, и тег аутентификации T, полученный средством вычисления тега 104. Средство вывода 105 может осуществлять вывод на приложение вышестоящего уровня, запрашивающее шифрование, или на канал связи, например, через устройство связи или т. п. Кроме того, оно может осуществлять вывод на дисплей компьютера или принтер.
[0091] Далее будет описано средство расшифрования 20, обеспеченное в устройстве расшифрования 200. Средство расшифрования 20 имеет средство ввода 201, средство генерации вспомогательной переменной 202, средство двухраундового расшифрования Фейстеля 203, средство вычисления проверяющего расшифрование тега 204, средство определения 205 и средство вывода 206.
[0092] Средство ввода 201 вводит зашифрованный текст C, подлежащий расшифрованию, начальный вектор N и тег аутентификации T, связанный с зашифрованным текстом. Аналогично средству шифрования 10 далее будет считаться, что вводится зашифрованный текст C=(C[1], •••, C[2m]), состоящий из множества блоков. Начальный вектор N для простоты полагается содержащим n бит, но если он короче, выполняется надлежащее дополнение, или для сведения к n битам дополнительно применяется псевдослучайная функция с n-битным выводом.
[0093] Средство генерации вспомогательной переменной 202 на основе информации о начальном векторе N и длине зашифрованного текста C генерирует вспомогательную переменную, задаваемую для псевдослучайной функции в обработке расшифрования. В соответствии с данным типовым вариантом осуществления оно выводит ту же вспомогательную переменную, что и средство генерации вспомогательной переменной 102 в средстве шифрования 10.
[0094] Средство двухраундового расшифрования Фейстеля 203 отвечает каждому блоку в пунктирной линии на фиг.2 и расшифровывает зашифрованный текст C путем разбиения его на единицы по два блока и использования вспомогательных последовательностей, выводимых средством генерации вспомогательной переменной 202, и псевдослучайной функции F_K(*, *) с двумя входными переменными. Здесь псевдослучайная функция F_K(*, *) с двумя входными переменными, используемая средством двухраундового расшифрования Фейстеля 203, является такой же, как и функция F_K(*, *), используемая средством двухраундового шифрования Фейстеля 103 в средстве шифрования 10.
[0095] Средство двухраундового расшифрования Фейстеля 203 обрабатывает фрагмент зашифрованного текста CC[i] для каждого i=1, •••, m, как, например, в уравнении (3), получая посредством этого фрагмент расшифрованного открытого текста MC’[i]=(M’[2i-1], M’[2i]).
[0096] Описанная выше обработка выполняется на каждом i, так что получаемый в результате M’=(M’[1], ••, M’[2m]) расшифровывается в открытый текст.
[0097] Средство вычисления проверяющего расшифрование тега 204 отвечает блоку в штрихпунктирной линии на фиг.2 и вычисляет проверяющий расшифрование тег аутентификации T’ для проверки результата расшифрования путем использования вспомогательной последовательности, выводимой средством генерации вспомогательной переменной 202, и открытого текста M’, расшифровываемого средством двухраундового расшифрования Фейстеля 203. Здесь псевдослучайная функция F_K(*, *) с двумя входными переменными, используемая средством вычисления проверяющего расшифрование тега 204, является такой же, как и функция F_K(*, *), используемая средством вычисления тега 104 в средстве шифрования 10.
[0098] Средство вычисления проверяющего расшифрование тега 204 сначала находит контрольную сумму SUM’ открытого текста для проверки расшифрования с помощью расшифрованного открытого текста M’ путем использования четных блоков M’[2], M’[4], •••, M’[2m] в расшифрованном открытом тексте следующим образом.
[0099] SUM’=M’[2] xor M’[4] xor ••• xor M’[2m] ••• Уравнение (8)
[0100] То есть находится сумма всех четных блоков M’[2], M’[4], •••, M’[2m] в расшифрованном открытом тексте, называемая SUM’. Затем на найденной контрольной сумме SUM’ открытого текста для проверки расшифрования с использованием псевдослучайной функции F_K(*, *) с двумя входными переменными и вспомогательной последовательности (N, m, 3) для генерации тега аутентификации выполняется обработка, указанная в уравнении (4), посредством чего находится тег аутентификации T’. XOR в вычислении SUM’ может быть сложением в любой группе, например, арифметическим сложением.
[0101] Фиг.6(б) представляет собой пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки расшифрования в соответствии с данным типовым вариантом осуществления, когда псевдослучайная функция с двумя входными переменными реализуется путем использования блочного шифрования в режиме XEX. Также в примере, показанном на фиг.6(б), можно видеть, что расшифрованный открытый текст M’ и проверяющий расшифрование тег аутентификации T’ могут быть получены с помощью такой же обработки, как и обработка шифрования, приведенная на фиг.6(а), лишь путем изменения извне параметра, задаваемого для псевдослучайной функции с двумя входными переменными.
[0102] Средство определения 205 сравнивает входной тег аутентификации T с проверяющим расшифрование тегом аутентификации T’, генерируемым средством вычисления проверяющего расшифрование тега 204, и когда они совпадают, определяет, что расшифрование удалось, подразумевая, что расшифрованный открытый текст M’=(M’[1], •••, M’[2m]), выводимый средством двухраундового расшифрования Фейстеля 203, является правильным. С другой стороны, если T’ и T отличаются друг от друга, то определяется, что расшифрование не удалось, где подразумевается, что (N, C, T), вводимое средством ввода 201, изменено.
[0103] Когда средство определения 205 определяет, что расшифрование удалось как результат определения, средство вывода 206 выводит расшифрованный открытый текст M’=(M’[1], •••, M’[2m]). С другой стороны, когда определяется, что расшифрование не удалось, расшифрованный открытый текст M’=(M’[1], •••, M’[2m]) не выводится, но выводится сообщение об ошибке, указывающее на ошибку расшифрования. Результат выводится на приложение вышестоящего уровня, канал связи, устройство отображения, принтер или т. п.
[0104] В соответствии с данным типовым вариантом осуществления средство ввода 101 и средство ввода 201 реализуются с помощью различных устройств ввода, таких как клавиатура, мышь или блок сетевого интерфейса, обеспеченные в устройстве, и их блоков управления. Кроме того, средство вывода 105 и средство вывода 206 реализуются с помощью различных устройств вывода, таких как устройство отображения, блок интерфейса устройства с принтером или блок сетевого интерфейса, обеспеченные в устройстве, и их блоков управления. Средство генерации вспомогательной переменной 102, средство генерации вспомогательной переменной 202, средство двухраундового шифрования Фейстеля 103, средство двухраундового расшифрования Фейстеля 203, средство вычисления тега 104, средство вычисления проверяющего расшифрование тега 204 и средство определения 205 реализуются, например, с помощью центрального процессора, работающего в соответствии с программой, обеспеченной в устройстве.
[0105] Хотя это и не проиллюстрировано на чертежах, средство шифрования 10 и средство расшифрования 20 включают в себя средства управления для управления обработкой шифрования или обработкой расшифрования, например, для вызова каждого средства по мере необходимости.
[0106] Далее в соответствии с данным типовым вариантом осуществления будут описаны операции. Фиг.8 и фиг.9 представляют собой блок-схемы, иллюстрирующие типовые операции системы аутентифицированного шифрования в соответствии с данным типовым вариантом осуществления. На фиг.8 представлена блок-схема, иллюстрирующая типовую операцию шифрования, а на фиг.9 представлена блок-схема, иллюстрирующая типовую операцию расшифрования.
[0107] Сначала в соответствии с данным типовым вариантом осуществления будет описана операция шифрования со ссылкой на фиг.8. В примере, показанном на фиг.8, сначала средство ввода 101 вводит открытый текст M=(M[1], •••, M[2m]), содержащий четное число блоков, подлежащих шифрованию, и начальный вектор N (этап S101).
[0108] Затем средство генерации вспомогательной переменной 102 на основе информации о начальном векторе N и длине открытого текста M генерирует вспомогательные последовательности (этап S102). В данном примере, предполагающем 2m разделенных блоков, выводятся (N, 1, 1,), (N, 1, 2), (N, 2, 1), (N, 2, 2), •••, (N, m-1, 1), (N, m-1, 2), (N, m, 1), (N, m, 2), (N, m, 3). Вспомогательные последовательности не обязательно должны быть сгенерированы все в одно время, и если некоторая вспомогательная последовательность к применению предварительно определена, вспомогательная последовательность, зависящая от функции шифрования, может генерироваться и выводиться каждый раз, когда вызывается функция шифрования.
[0109] Далее средство двухраундового шифрования Фейстеля 103 разбивает открытый текст M на единицы по два блока и проводит шифрование путем использования вспомогательных последовательностей, генерируемых средством генерации вспомогательной переменной 102, и заданной псевдослучайной функции F_K(*, *), находя посредством этого зашифрованный текст C=(C[1], •••, C[2m]) (этапы S103-S106). После первой инициализации i, например, i=1 (этап S103), средство двухраундового шифрования Фейстеля 103 может многократно выполнять обработку шифрования Фейстеля в единицах двух блоков или обработку выполнения уравнения (1) (этап S104) на фрагменте открытого текста MC[i]=(M[2i-1], M[2i]), задаваемого i, до тех пор, пока не выполнится ++i>m.
[0110] Затем средство вычисления тега 104 вычисляет контрольную сумму SUM открытого текста путем использования четных блоков в открытом тексте M (этап S107) и вычисляет тег аутентификации T путем использования полученной суммы SUM и вспомогательной последовательности (N, m, 3) для генерации тега аутентификации (этап S108).
[0111] Наконец, средство вывода 105 выводит полученный в результате зашифрованный текст C и тег T (этап S109).
[0112] Далее в соответствии с данным типовым вариантом осуществления будет описана операция расшифрования со ссылкой на фиг.9. В примере, показанном на фиг.9, сначала средство ввода 201 вводит зашифрованный текст C=(C[1], •••, C[2m]) с четным числом блоков, подлежащих шифрованию, начальный вектор N и тег аутентификации T (этап S201).
[0113] Затем средство генерации вспомогательной переменной 202 на основе информации о начальном векторе N и длине зашифрованного текста C генерирует вспомогательные последовательности (этап S202). В данном примере, предполагающем 2m разделенных блоков, выводятся (N, 1, 1), (N, 1, 2), (N, 2, 1), (N, 2, 2), •••, (N, m-1, 1), (N, m-1, 2), (N, m, 1), (N, m, 2), (N, m, 3). Вспомогательные последовательности не обязательно должны быть сгенерированы все в одно время, и если некоторая вспомогательная последовательность к применению предварительно определена, вспомогательная последовательность, зависящая от функции шифрования, может генерироваться и выводиться каждый раз, когда вызывается функция шифрования.
[0114] Далее средство двухраундового расшифрования Фейстеля 203 разбивает зашифрованный текст C на единицы по два блока и расшифровывает его путем использования вспомогательных последовательностей, генерируемых средством генерации вспомогательной переменной 202, и заданной псевдослучайной функции F_K(*, *), находя посредством этого расшифрованный открытый текст M’=(M’[1], •••, M’[2m]) (этапы S203-S206). После первой инициализации i, например, i=1 (этап S203), средство двухраундового расшифрования Фейстеля 203 может многократно выполнять обработку расшифрования Фейстеля в единицах двух блоков или обработку выполнения уравнения (3) (этап S204) на фрагменте зашифрованного текста CC[i]=(C[2i-1], C[2i]), задаваемого i, до тех пор, пока не выполнится ++i>m.
[0115] Затем средство вычисления проверяющего расшифрование тега 204 вычисляет контрольную сумму SUM’ для проверки расшифрования путем использования расшифрованного открытого текста M’ (этап S207) и вычисляет проверяющий расшифрование тег аутентификации T’ путем использования полученной суммы SUM’ и вспомогательной последовательности (N, m, 3) для генерации тега аутентификации (этап S208).
[0116] Далее средство определения 205 сравнивает входной тег аутентификации T с проверяющим расшифрование тегом аутентификации T’ (этап S209) и, когда они совпадают, определяет, что расшифрование удалось, а когда они не совпадают, определяет, что расшифрование не удалось.
[0117] Наконец, на основе результата определения средства определения 205 средство вывода 206 выводит расшифрованный открытый текст M’ или сообщение об ошибке. Средство вывода 206 выводит расшифрованный открытый текст M’, когда расшифрование удалось (этап S210), и сообщение об ошибке, когда расшифрование не удалось (этап S211), как результат определения средства определения 205.
[0118] Выше был описан случай, в котором устройство шифрования и устройство расшифрования реализуются разными устройствами, но, как показано на фиг.10, одно устройство может включать в себя как средство шифрования 10, так и средство расшифрования 20. В этом случае обеспечивается средство аутентифицированного шифрования 30, включающее в себя средство шифрования 10 и средство расшифрования 20, и в средстве аутентифицированного шифрования 30 средство расшифрования 20 может использовать средство генерации вспомогательной переменной 102, средство двухраундового шифрования Фейстеля 103 и средство вычисления тега 104 в средстве шифрования 10 вместо средства генерации вспомогательной переменной 202, средства двухраундового расшифрования Фейстеля 203 и средства вычисления проверяющего расшифрование тега 204. Кроме того, когда одно устройство включает в себя как средство шифрования 10, так и средство расшифрования 20, каждое средство может быть установлено и отдельно на множестве устройств.
[0119] Когда средство шифрования 10 и средство расшифрования 20 совместно используют средство генерации вспомогательной переменной 102, инициатор вызова может быть выполнен, например, с возможностью определять начальный вектор или длину. Аналогично, когда совместно используется средство двухраундового шифрования Фейстеля 103, инициатор вызова может быть выполнен, например, с возможностью определять ввод в верхнюю псевдослучайную функцию F_K(*, *) с двумя входными переменными и ввод в нижнюю псевдослучайную функцию F_K(*, *) с двумя входными переменными. Аналогично, когда совместно используется средство вычисления тега 104, инициатор вызова может быть выполнен, например, с возможностью определять контрольную сумму открытого текста.
[0120] Как описано выше, в соответствии с данным типовым вариантом осуществления может быть реализовано высокоскоростное и компактное аутентифицированное шифрование. Это обусловлено тем, что система аутентифицированного шифрования в соответствии с настоящим изобретением проводит шифрование и расшифрование путем вызова псевдослучайной функции F_K(*, *) с двумя входными переменными S + 1 раз для открытого текста с S блоками.
[0121] Например, когда используется функция шифрования E(*) блочного шифрования, псевдослучайная функция F_K(*, *) с двумя входными переменными может быть реализована путем преобразования функции шифрования E в функцию шифрования TE(*, *) для настраиваемого блочного шифрования, но в случае применения системы преобразования E->TE, функция шифрования E(*) блочного шифрования вызывается только S+h раз, так что может быть реализовано как шифрование, так и расшифрование.
[0122] С другой стороны, функция шифрования должна быть вызвана 2×2m или более раз в существующей двухпроходной системе аутентифицированного шифрования. В системе OCB, как в однопроходной системе аутентифицированного шифрования, количество вызовов составляет почти от S+2 до S+3 раза в соответствии с настоящим изобретением, но в обработке расшифрования требуется функция расшифрования блочного шифрования и, таким образом, происходит увеличение использования ПЗУ/ОЗУ в сборке программного обеспечения или на уровне схемы в сборке аппаратного обеспечения.
[0123] С системой аутентифицированного шифрования в соответствии с настоящим изобретением полностью возможны параллельные обработки в единицах двух блоков, реализующие, таким образом, более высокую скорость в сборке программного или аппаратного обеспечения в многоядерных процессорах.
[0124] Второй типовой вариант осуществления
Система аутентифицированного шифрования в соответствии со вторым типовым вариантом осуществления такова, что объект, подлежащий шифрованию или расшифрованию, имеет четное число блоков с длиной последнего блока, составляющей меньше n бит. Основная структура является такой же, как и в первом типовом варианте осуществления, поэтому далее будут описаны только отличия.
[0125] В следующих примерах размер некоторого блока предполагается равным n бит, а битовая длина s последнего блока M[2m] открытого текста, имеющего четное число блоков, предполагается равной s<n.
[0126] В данном типовом варианте осуществления впервые будет определена вторая вспомогательная последовательность для генерации тега аутентификации. В следующем примере (N, m, 4) определяется впервые.
[0127] В обработке шифрования Фейстеля и обработке расшифрования Фейстеля в единицах двух блоков, m-й фрагмент обрабатывается следующим образом. i=1, •••, m-1-й фрагмент может быть обработан аналогично, как в первом типовом варианте осуществления.
[0128] Сначала процесс шифрования применяет псевдослучайную функцию F_K(*, *) с двумя входными переменными, которой дается вспомогательная последовательность (N, m, 1), к блоку открытого текста M[2m-1], как к нечетному блоку в m-м фрагменте открытого текста. Затем полученный вывод предполагается в качестве промежуточного вывода Z, и берется XOR s-битной двоичной последовательности Z_s, в которой s бит берутся из фиксированной части в промежуточном выводе z, и блока открытого текста M[2m], как четного блока в m-м фрагменте открытого текста, посредством чего находится блок зашифрованного текста C_s[2m], как четный блок в m-м фрагменте зашифрованного текста. C_s[*] означает, что размер соответствующего блока зашифрованного текста составляет s бит.
[0129] Далее выполняется s→n битовое дополнение на таким образом полученном s-битном блоке зашифрованного текста C_s[2m], и псевдослучайная функция F_K(*, *) с двумя входными переменными, которой дается вспомогательная последовательность (N, m, 2), применяется к полученному в результате блоку C_n[2m], после чего берется XOR с блоком открытого текста M[2m-1], как нечетным блоком в m-м фрагменте открытого текста, посредством чего находится блок зашифрованного текста C[2m-1], как нечетный блок в m-м фрагменте зашифрованного текста. В соответствии с данным типовым вариантом осуществления таким образом получается m-й фрагмент зашифрованного текста CC[m]=(C[2m-1], C_s[2m]). Типовая обработка получения m-ого фрагмента зашифрованного текста в соответствии с данным типовым вариантом осуществления выражается следующим образом.
[0130] C_s[2m]=cut_s(Z) xor M[2m],
C[2m-1]=F_K((N, m, 2), pad_n(C_s[2m]))) xor M[2m-1]
где Z=F_K((N, m, 1), M[2m-1])
••• Уравнение (9)
[0131] cut_s(A) обозначает обработку взятия s битов из фиксированной части в двоичной последовательности A. cut_s(A) может быть, например, msb_s(A). msb_s(A) представляет собой обработку взятия s битов с уровня самых старших битов в двоичной последовательности A. Кроме того, pad_n(A) обозначает обработку дополнения путем использования фиксированной битовой последовательности так, чтобы двоичная последовательность A имела n бит. В данном примере предполагается дополнение вида 10*. Выбирая дополнение вида 10*, можно предотвратить последовательности с различными длинами от наличия того же значения после дополнения. Может быть использован любой, не ограниченный вышеописанным примером способ, в результате которого последовательности с различными длинами не обладают тем же значением после дополнения.
[0132] Тег аутентификации T можно найти следующим образом. Сначала находится контрольная сумма SUM открытого текста путем использования четных блоков M[2], •••, M[2(m-1)] до m-1-ого фрагмента открытого текста, промежуточного вывода Z, полученного в вышеописанной обработке, и блока C_n[2m], где блок зашифрованного текста C_s[2m], как четный блок в m-м фрагменте зашифрованного текста, полученный в вышеупомянутой обработке, дополняется до n бит. Как указано, например, в следующем уравнении (10), контрольная сумма находится взятием их XOR.
[0133] SUM=M[2] xor M[4] xor ••• xor M[2m-2] xor C_n[2m] xor Z
••• Уравнение (10)
[0134] Контрольная сумма SUM открытого текста отличается от контрольной суммы открытого текста, формируемой в соответствии с первым типовым вариантом осуществления, тем, что вместо M[2m] используется “C_n[2m] xor Z”.
[0135] Псевдослучайная функция F_K((N, m, 4), *) с двумя входными переменными, использующая вспомогательную переменную (N, m, 4), применяется к таким образом полученной контрольной сумме SUM открытого текста, посредством чего находится тег аутентификации T.
[0136] Фиг.11 представляет собой пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки шифрования в соответствии с данным типовым вариантом осуществления. Как показано на фиг.11, обработка шифрования в соответствии с данным типовым вариантом осуществления является такой же, как и в первом типовом варианте осуществления, за исключением вспомогательной последовательности, используемой для генерации тега аутентификации, обработки шифрования на фрагментах, включающих четные блоки с битовым размером меньшим n, и способа вычисления контрольной суммы открытого текста. На фиг.11 “C_s[2m] | | 10*” обозначает результат, полученный путем выполнения дополнения вида 10* на C_s[2m].
[0137] Средство шифрования 10 в соответствии с данным типовым вариантом осуществления может быть таким, что, когда последний блок M[2m] в открытом тексте, имеющем четное число блоков, имеет s(s<n) бит, средство генерации вспомогательной переменной 102 генерирует вспомогательные последовательности (N, 1, 1), (N, 1, 2), (N, 2, 1), (N, 2, 2), •••, (N, m, 1), (N, m, 2), (N, m, 4), и может включать в себя второе средство двухраундового шифрования Фейстеля для выполнения вышеописанной обработки на m-м фрагменте открытого текста и вывода фрагмента зашифрованного текста CC[m] и промежуточного вывода Z, а также второе средство вычисления тега для вычисления тега аутентификации T в вышеупомянутой обработке. В качестве альтернативы вместо обеспечения второго средства двухраундового шифрования Фейстеля и второго средства вычисления тега средство двухраундового шифрования Фейстеля 103 и средство вычисления тега 104 могут переключаться и выполнять операции в соответствии с первым типовым вариантом осуществления, а также вышеуказанные операции в зависимости от размера открытого текста.
[0138] При обработке расшифрования сначала выполняется s → n битовое дополнение на s-битном блоке зашифрованного текста C_s[2m], как четном блоке в m-м фрагменте зашифрованного текста. Затем псевдослучайная функция F_K(*, *) с двумя входными переменными, которой дается вспомогательная последовательность (N, m, 2), применяется к n-битному блоку зашифрованного текста C_n[2m], полученному путем дополнения. Далее берется XOR этого результата и блока зашифрованного текста C[2m-1], соответствующего нечетному блоку в m-м фрагменте зашифрованного текста, посредством чего находится блок расшифрованного открытого текста M’[2m-1], соответствующий нечетному блоку в m-м фрагменте расшифрованного открытого текста.
[0139] Затем псевдослучайная функция F_K(*, *) с двумя входными переменными, которой дается вспомогательная последовательность (N, m, 1), применяется к таким образом полученному блоку расшифрованного открытого текста M’[2m-1]. Далее полученный вывод предполагается в качестве промежуточного вывода Z’ для расшифрования, и берется XOR s-битной двоичной последовательности Z_s’, в которой s бит берутся из фиксированной части в промежуточном выводе Z’ для расшифрования, и блока зашифрованного текста блок C_s[2m], как четного блока в m-м фрагменте зашифрованного текста, посредством чего находится блок расшифрованного открытого текста M_s’[2m], соответствующий четному блоку в m-м фрагменте расшифрованного открытого текста. M_s’[*] означает, что размер соответствующего блока расшифрованного открытого текста составляет s бит. В соответствии с данным типовым вариантом осуществления таким образом получается m-й фрагмент расшифрованного открытого текста MC’[m]=(M’[2m-1], M_s’[2m]). Типовая обработка получения m-ого фрагмента расшифрованного открытого текста в соответствии с данным типовым вариантом осуществления выражается следующим образом.
[0140] M’[2m-1]=F_K((N, m, 2), pad_n(C_s[2m]))) xor C[2m-1],
M_s’[2m] = cut_s(Z’) xor C_s[2m]
где Z’=F_K((N, m, 1), M’[2m-1])
••• Уравнение (11)
[0141] Проверяющий расшифрование тег аутентификации можно найти следующим образом. Сначала находится контрольная сумма SUM’ открытого текста для проверки расшифрования с помощью расшифрованного открытого текста путем использования четных блоков M’[2], •••, M’[2(m-1)] до m-1-ого фрагмента расшифрованного открытого текста, промежуточного вывода Z’ для расшифрования, полученного в вышеописанной обработке, и блока C_n[2m], полученного путем дополнения блока зашифрованного текста C_s[2m], как четного блока в m-м фрагменте зашифрованного текста, до n бит. Например, контрольная сумма находится взятием их XOR, как указано в следующем уравнении (12).
[0142] SUM’=M’[2] xor M’[4] xor ••• xor M’[2m-2] xor C_n[2m] xor Z’
••• Уравнение (12)
[0143] Контрольная сумма SUM’ открытого текста отличается от контрольной суммы открытого текста для проверки расшифрования, формируемой в соответствии с первым типовым вариантом осуществления, тем, что вместо M’[2m] используется “C_n[2m] xor Z’”.
[0144] Псевдослучайная функция F_K((N, m, 4), *) с двумя входными переменными, имеющая вспомогательную последовательность (N, m, 4), применяется к таким образом полученной контрольной сумме SUM’ открытого текста для проверки расшифрования, посредством чего находится проверяющий расшифрование тег аутентификации T’.
[0145] Фиг.12 представляет собой пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки расшифрования в соответствии с данным типовым вариантом осуществления. Как показано на фиг.12, обработка расшифрования в соответствии с данным типовым вариантом осуществления может быть такой же, как и в первом типовом варианте осуществления, за исключением вспомогательной последовательности для генерации тега аутентификации, обработки расшифрования на фрагментах, включающих четные блоки с битовым размером меньшим n, и способа вычисления проверяющей расшифрование контрольной суммы открытого текста. На фиг.12 “C_s[2m] | | 10*” обозначает результат, полученный путем выполнения дополнения вида 10* на C_s[2m].
[0146] Средство расшифрования 20 в соответствии с данным типовым вариантом осуществления, когда последний блок C[2m] в зашифрованном тексте, имеющем четное число блоков, составляет s (s<n) бит, может включать в себя второе средство двухраундового расшифрования Фейстеля для вывода фрагмента открытого текста MC’, расшифровываемого путем выполнения вышеописанной обработки на m-м фрагменте зашифрованного текста, и промежуточного вывода Z’ для расшифрования, а также второе средство вычисления проверяющего расшифрование тега для вычисления проверяющего расшифрование тега аутентификации T’ в вышеупомянутой обработке, и средство генерации вспомогательной переменной 202 может быть выполнено с возможностью генерировать вспомогательные последовательности (N, 1, 1), (N, 1, 2), (N, 2, 1), (N, 2, 2), •••, (N, m, 1), (N, m, 2), (N, m, 4). Кроме того, средство двухраундового расшифрования Фейстеля 203 и средство вычисления проверяющего расшифрование тега 204, описанные ранее, могут быть выполнены с возможностью переключения и выполнения операций в соответствии с первым типовым вариантом осуществления, а также вышеуказанных операций в зависимости от размера открытого текста.
[0147] Также в данном типовом варианте осуществления обработка шифрования и обработка расшифрования на m-м блоке переключаются только между верхней ступенью и нижней ступенью, и, таким образом, если верхняя ступень и нижняя ступень разделены на части, они могут быть совместно используемыми обработкой шифрования и обработкой расшифрования. Также для генерации тега аутентификации, если задаваемый параметр определяется на инициаторе вызова, как в первом типовом варианте осуществления, он может быть совместно используемым ими.
[0148] Данный типовой вариант осуществления также выполнен таким образом, что, если вспомогательный вход и ключ определены, то фрагменты открытого текста и фрагменты зашифрованного текста находятся во взаимно однозначном соответствии, и, следовательно, последний фрагмент может быть расшифрован правильно. Кроме того, саму функцию шифрования F_K не нужно подвергать обратной обработке в обработках на отдельных раундах в структуре Фейстеля, а также в данном типовом варианте осуществления проверяющий расшифрование тег аутентификации находится тем же способом, как и при обработке шифрования, и, следовательно, данный типовой вариант осуществления является таким же, как и первый типовой вариант осуществления, в том смысле, что саму функцию шифрования F_K полностью не нужно подвергать обратной обработке.
[0149] Третий типовой вариант осуществления
Система аутентифицированного шифрования в соответствии с третьим типовым вариантом осуществления такова, что объект, подлежащий шифрованию или расшифрованию, имеет нечетное число блоков. Основная структура является такой же, как и в первом типовом варианте осуществления, поэтому далее будут описаны только отличия.
[0150] В соответствии с данным типовым вариантом осуществления, когда в открытом тексте имеется нечетное число (2m-1) блоков с предположением, что один блок имеет n бит, а битовая длина s последнего блока s≤n, аутентифицированное шифрование выполняется следующим образом.
[0151] Впервые будут определены третья и четвертая вспомогательные последовательности для генерации тега аутентификации. В следующих примерах, (N, m, 5) и (N, m, 6) определяются впервые. Для открытого текста, имеющего нечетное число блоков, вспомогательная последовательность (N, m, 2), соответствующая четному блоку в последнем фрагменте, не требуется.
[0152] В обработке шифрования Фейстеля и обработке расшифрования Фейстеля в единицах двух блоков, m-й фрагмент обрабатывается следующим образом. Кроме того, i=1, •••, m-1-й фрагмент может быть обработан как в первом типовом варианте осуществления.
[0153] При обработке шифрования подготавливается n-битная двоичная последовательность, состоящая вся из нулей, и к этой двоичной последовательности применяется псевдослучайная функция F_K(*, *) с двумя входными переменными, которой дается вспомогательная последовательность (N, m, 1). Затем берется XOR s-битной двоичной последовательности Z_s, в которой s бит берутся из фиксированной части в полученном выводе, и s-битного блока открытого текста M_s[2m-1], как последнего блока в открытом тексте или как нечетного блока в m-м фрагменте открытого текста, посредством чего находится блок зашифрованного текста C_s[2m-1], соответствующий нечетному блоку в m-м фрагменте зашифрованного текста или последнему блоку в зашифрованном тексте.
[0154] В соответствии с данным типовым вариантом осуществления таким образом получается m-й фрагмент зашифрованного текста CC[m]=(C_s[2m-1]). Типовая обработка получения m-ого фрагмента зашифрованного текста в соответствии с данным типовым вариантом осуществления выражается следующим образом.
[0155] C_s[2m-1]=cut_s(F_K((N, m, 1), 0^n)) xor M_s[2m-1]
••• Уравнение (13)
[0156] Если размер последнего блока s=n, то cut_s() опускается, и для получения CC[m]=(C[2m-1]) выполняется обработка в следующем уравнении (14).
[0157] C[2m-1]=F_K((N, m, 1), 0^n) xor M[2m-1]
••• Уравнение (14)
[0158] Тег аутентификации T находится следующим образом. В соответствии с данным типовым вариантом осуществления в случае, когда размер последнего блока s=n, контрольная сумма SUM открытого текста находится путем использования четных блоков M[2], •••, M[2(m-1)] до m-1-ого фрагмента открытого текста и блока открытого текста M[2m-1], как последнего блока. Например, контрольная сумма находится взятием их XOR, как выражено следующим уравнением (15).
[0159] SUM=M[2] xor M[4] xor ••• xor M[2m-2] xor M[2m-1]
••• Уравнение (15)
[0160] С другой стороны, когда размер последнего блока s<n, контрольная сумма SUM открытого текста находится путем использования четных блоков M[2], •••, M[2(m-1)] до m-1-ого фрагмента открытого текста и M_n[2m-1], полученного дополнением s-битного блока M_s[2m-1] открытого текста, как последнего блока, до n бит. Например, контрольная сумма находится взятием их XOR, как выражено следующим уравнением (16).
[0161] SUM=M[2] xor M[4] xor ••• xor M[2m-2] xor pad_n(M_s[2m-1])
••• Уравнение (16)
[0162] Контрольная сумма SUM открытого текста отличается от контрольной суммы открытого текста, формируемой в соответствии с первым типовым вариантом осуществления, тем, что вместо M[2m] используется M_n[2m-1] (M[2m-1] или M_s[2m-1], дополненный до n бит).
[0163] Псевдослучайная функция F_K((N, m, 5), *) с двумя входными переменными, имеющая вспомогательную последовательность (N, m, 5), применяется к таким образом полученной контрольной сумме SUM открытого текста при s=n, а при s<n к ней применяется псевдослучайная функция F_K((N, m, 6), *) с двумя входными переменными, имеющая вспомогательную последовательность (N, m, 6), посредством чего находится тег аутентификации T.
[0164] Фиг.13 представляет собой пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки шифрования в соответствии с данным типовым вариантом осуществления. Как показано на фиг.13, обработка шифрования в соответствии с данным типовым вариантом осуществления является такой же, как и в первом типовом варианте осуществления, за исключением обработки шифрования на m-м фрагменте и обработки генерации тега аутентификации. На фиг.13 “M_s[2m-1] | | 10*” обозначает результат, полученный путем выполнения дополнения вида 10* на s-битном блоке открытого текста M_s[2m]. Фиг.13 иллюстрирует случай, в котором размер последнего блока s<n, но в случае s=n обрезание в обработке на m-м блоке (“cut_s” на чертеже) и дополнение в обработке генерации тега аутентификации (“| | 10*” на чертеже) могут быть опущены. В случае s=n устанавливается M_s[m-1]=M[m-1] и C_s[2m-1]=C[2m-1], и даже если cut_s() или pad_n() выполняются, то никакой обработки, по сути, не выполняется, и, таким образом, никакой проблемы в случае без опускания cut_s() или pad_n() не возникает.
[0165] Средство шифрования 10 в соответствии с данным типовым вариантом осуществления может быть таким, что, когда открытый текст имеет 2m-1 блоков, средство генерации вспомогательной переменной 102 генерирует вспомогательные последовательности (N, 1, 1), (N, 1, 2), (N, 2, 1), (N, 2, 2), •••, (N, m, 1), (N, m, 5), (N, m, 6), и может включать в себя средство однораундового шифрования Фейстеля для выполнения вышеописанной обработки на m-м фрагменте открытого текста и вывода фрагмента зашифрованного текста CC[m]=(C_s[2m-1]), а также третье средство вычисления тега для вычисления тега аутентификации T в вышеупомянутой обработке. Кроме того, средство двухраундового шифрования Фейстеля 103 и средство вычисления тега 104 могут быть выполнены с возможностью переключения и выполнения операций в соответствии с первым типовым вариантом осуществления, а также вышеуказанных операций в зависимости от размера открытого текста вместо обеспечения средства однораундового шифрования Фейстеля и третьего средства вычисления тега. Если средство генерации вспомогательной переменной 102, средство двухраундового шифрования Фейстеля 103 и средство вычисления тега 104 выполнены с возможностью переключения и выполнения операций в соответствии с первым типовым вариантом осуществления, а также операций в соответствии со вторым типовым вариантом осуществления в зависимости от размера открытого текста, то может быть разрешен любой случай с четным числом блоков, нечетным числом блоков или с последним блоком, имеющим размер менее n бит.
[0166] Также при обработке расшифрования подготавливается n-битная двоичная последовательность, состоящая вся из нулей, и к этой двоичной последовательности применяется псевдослучайная функция F_K(*, *) с двумя входными переменными, которой дается вспомогательная последовательность (N, m, 1). Затем берется XOR s-битной двоичной последовательности Z_s, в которой s бит берутся из фиксированной части в полученном выводе, и s-битного блока зашифрованного текста C_s[2m-1], как нечетного блока в m-м фрагменте зашифрованного текста или как последнего блока в зашифрованном тексте, посредством чего находится блок расшифрованного открытого текста M_s’[2m-1], соответствующий нечетному блоку в m-м фрагменте расшифрованного открытого текста или последнему блоку в расшифрованном открытом тексте.
[0167] В соответствии с данным типовым вариантом осуществления таким образом получается m-й фрагмент расшифрованного открытого текста MC’[m]=(M_s’[2m-1]). Типовая обработка получения m-ого фрагмента расшифрованного открытого текста в соответствии с данным типовым вариантом осуществления выражается следующим образом.
[0168] M_s’[2m-1]=cut_s(F_K((N, m, 1), 0^n)) xor C_s[2m-1]
••• Уравнение (17)
[0169] Если размер последнего блока s=n, то cut_s() опускается, и для получения MC’[m]=(M’[2m-1]) выполняется обработка, выраженная следующим уравнением (18).
[0170] M’[2m-1]=F_K((N, m, 1), 0^n) xor C[2m-1]
••• Уравнение (18)
[0171] Проверяющий расшифрование тег аутентификации T’ может быть найден путем замены в обработке шифрования открытого текста расшифрованным открытым текстом. То есть в случае, когда размер последнего блока s=n, контрольная сумма SUM’ открытого текста для проверки расшифрования находится путем использования четных блоков M’[2], •••, M’[2(m-1)] до m-1-ого фрагмента расшифрованного открытого текста и блока расшифрованного открытого текста M’[2m-1], как последнего блока. Например, контрольная сумма находится взятием их XOR, как выражено следующим уравнением (19).
[0172] SUM’=M’[2] xor M[4] xor •••M’[2m-2] xor M’[2m-1]
••• Уравнение (19)
[0173] С другой стороны, когда размер последнего блока s<n, контрольная сумма SUM’ открытого текста для проверки расшифрования находится путем использования четных блоков M’[2], •••, M’[2(m-1)] до m-1-ого фрагмента расшифрованного открытого текста и M_n’[2m-1], полученного дополнением s-битного блока M_s’[2m-1] открытого текста, как последнего блока, до n бит. Например, контрольная сумма находится взятием их XOR, как выражено следующим уравнением (20).
[0174] SUM’=M’[2] xor M’[4] xor ••• M’[2m-2] xor pad_n(M_s’[2m-1])
••• Уравнение (20)
[0175] Контрольная сумма SUM’ открытого текста для проверки расшифрования отличается от контрольной суммы открытого текста для проверки расшифрования, формируемой в соответствии с первым типовым вариантом осуществления, тем, что вместо M’[2m] используется M_n’[2m-1] (M’[2m-1] или M_s’[2m-1], дополненный до n бит).
[0176] Псевдослучайная функция F_K((N, m, 5), *) с двумя входными переменными, имеющая вспомогательную последовательность (N, m, 5), применяется к таким образом полученной контрольной сумме SUM’ открытого текста для проверки расшифрования при s=n, а при s<n к ней применяется псевдослучайная функция F_K((N, m, 6), *) с двумя входными переменными, имеющая вспомогательную последовательность (N, m, 6), посредством чего находится проверяющий расшифрование тег аутентификации T’.
[0177] Фиг.14 представляет собой пояснительную диаграмму, схематически иллюстрирующую типовое выполнение обработки всей обработки расшифрования в соответствии с данным типовым вариантом осуществления. Как показано на фиг.14, обработка расшифрования в соответствии с данным типовым вариантом осуществления может быть такой же, как и в первом типовом варианте осуществления, за исключением обработки расшифрования на m-м фрагменте зашифрованного текста и обработки генерации проверяющего расшифрование тега аутентификации. На фиг.14 “M_s’[2m-1] | | 10*” обозначает результат, полученный путем выполнения дополнения вида 10* на s-битном блоке расшифрованного открытого текста M_s’[2m-1]. Фиг.14 иллюстрирует случай, в котором размер последнего блока s<n, но в случае s=n обрезание в обработке на m-м блоке (“cut_s” на чертеже) и дополнение в обработке генерации тега аутентификации (“| | 10*” на чертеже) могут быть опущены. В случае s=n устанавливается C_s[2m-1]=C[2m-1] и M_s’[m-1]=M’[m-1], и даже если cut_s() или pad_n() выполняются, то никакой обработки, по сути, не выполняется, и, таким образом, никакой проблемы в случае без опускания cut_s() или pad_n() не возникает.
[0178] Средство расшифрования 20 в соответствии с данным типовым вариантом осуществления может быть таким, что, когда зашифрованный текст имеет 2m-1 блоков, средство генерации вспомогательной переменной 202 генерирует вспомогательные последовательности (N, 1, 1), (N, 1, 2), (N, 2, 1), (N, 2, 2), •••, (N, m, 1), (N, m, 5), (N, m, 6), и может включать в себя средство однораундового расшифрования Фейстеля для выполнения вышеописанной обработки на m-м фрагменте зашифрованного текста и вывода фрагмента расшифрованного открытого текста MC’[m]=(M_s’[2m-1]), а также третье средство вычисления проверяющего расшифрование тега для вычисления проверяющего расшифрование тега аутентификации T’ в вышеупомянутой обработке. В качестве альтернативы средство двухраундового расшифрования Фейстеля 203 и средство вычисления проверяющего расшифрование тега 204 могут быть выполнены с возможностью переключения и выполнения операций в соответствии с первым типовым вариантом осуществления, а также вышеуказанных операций в зависимости от размера зашифрованного текста вместо обеспечения средства однораундового расшифрования Фейстеля и третьего средства вычисления проверяющего расшифрование тега. Если средство генерации вспомогательной переменной 202, средство двухраундового расшифрования Фейстеля 203 и средство вычисления проверяющего расшифрование тега 204 выполнены с возможностью переключения и выполнения операций в соответствии с первым типовым вариантом осуществления, а также операций в соответствии со вторым типовым вариантом осуществления в зависимости от размера зашифрованного текста, то может быть разрешен любой случай с четным числом блоков, нечетным числом блоков или с последним блоком, имеющим размер менее n бит.
[0179] Также в данном типовом варианте осуществления обработка шифрования и обработка расшифрования на m-м блоке отличаются друг от друга задаваемыми параметрами, но схожи в содержании обработки, и, следовательно, если задаваемый параметр определяется на инициаторе вызова, он может быть совместно используемым ими, как в первом типовом варианте осуществления. Кроме того, для генерации тега аутентификации, если задаваемый параметр определяется на инициаторе вызова, он может быть совместно используемым ими, как в первом типовом варианте осуществления.
[0180] Данный типовой вариант осуществления также выполнен таким образом, что, если вспомогательный вход и ключ определены, то фрагменты открытого текста и фрагменты зашифрованного текста находятся во взаимно однозначном соответствии, и, следовательно, последний фрагмент может быть расшифрован правильно. Кроме того, саму функцию шифрования F_K не нужно подвергать обратной обработке в обработках на отдельных раундах в структуре Фейстеля, а также в данном типовом варианте осуществления проверяющий расшифрование тег аутентификации находится тем же способом, как и при обработке шифрования, и, следовательно, саму функцию шифрования F_K в целом не нужно подвергать обратной обработке, так же как и в первом и во втором типовых вариантах осуществления.
[0181] Фиг.15 представляет собой структурную схему, иллюстрирующую типовую структуру устройства шифрования 100 для параллельных обработок. Фиг.16 представляет собой структурную схему, иллюстрирующую типовую структуру устройства расшифрования 200 для параллельных обработок. Как показано на фиг.15, множество средств двухраундового шифрования Фейстеля 103 обеспечено для выполнения посредством них обработки шифрования на каждом фрагменте открытого текста в единицах двух блоков в параллельном режиме. На фиг.15 некоторые из средств двухраундового шифрования Фейстеля 103 работают как вторые средства двухраундового шифрования Фейстеля или как средства однораундового шифрования Фейстеля в зависимости от размера открытого текста. Кроме того, средство вычисления тега 104 работает как второе средство вычисления тега или как третье средство вычисления тега в зависимости от размера открытого текста. Кроме того, как показано на фиг.16, множество средств двухраундового расшифрования Фейстеля 203 обеспечено для выполнения посредством них обработки расшифрования на каждом фрагменте зашифрованного текста в единицах двух блоков в параллельном режиме. На фиг.16 некоторые из средств двухраундового расшифрования Фейстеля 203 работают как вторые средства двухраундового расшифрования Фейстеля или как средства однораундового расшифрования Фейстеля в зависимости от размера зашифрованного текста. Кроме того, средство вычисления проверяющего расшифрование тега 204 работает как второе средство вычисления проверяющего расшифрование тега или как третье средство вычисления проверяющего расшифрование тега в зависимости от размера зашифрованного текста.
[0182] Для того чтобы справиться с аутентифицированным шифрованием с присоединенными данными (AEAD) в соответствии с каждым типовым вариантом осуществления, на вход добавляется заголовок H, затем подготавливается псевдослучайная функция g_K’(*) с вводом любой переменной длины, и XOR генерируемого тега аутентификации (T или T’) и вывода псевдослучайной функции g_K’(H) с вводом любой переменной длины может быть взят в качестве итогового тега аутентификации (T2 или T2’). То есть при обработке шифрования тег аутентификации T находится, как описано выше, а итоговый тег аутентификации T2 может быть затем найден как T2=T xor g_K’(H) путем использования g_K’(*). Тогда результат шифрования можно полагать в виде (N, C, H, T2). При обработке расшифрования проверяющий расшифрование тег аутентификации T’ находится, как описано выше, а итоговый проверяющий расшифрование тег аутентификации T2’=T’ xor g_K(H) находится затем путем использования g_K’(*) для определения, совпадает ли он с принятым тегом T2.
[0183] В данном случае K’ является ключом, который выбирается независимо от ключа псевдослучайной функции F_K(*, *) с двумя входными переменными. В этом случае ключи всей обработки составляют пару (K, K’).
[0184] Псевдослучайная функция g_K’ с вводом любой переменной длины может быть реализована, например, с помощью CMAC или HMAC. CMAC или HMAC является функцией шифрования для сведения любого ввода к выводу фиксированной длины путем использования ключа. Например, CMAC выполнена с возможностью цепной обработки под названием CBC_MAC на каждом блоке (например, H[1], •••, H[h]) в заголовке H и обработки завершения с использованием блочной функции E_K’, имеющей ключ K’.
[0185] В качестве конкретного примера, в котором используемое блочное шифрование задействует n-битный блок, выполняется следующая обработка:
Y[0]=00..0,
Y[i]=E_K’(H[1] xor Y[i-1]), for i=1, 2, •••, (h-1)
Y[h]=E_K’(H[h] xor Y[i-1] xor 2*E_K’(00..0)), если H[h] является n-битным
Y[h]=E_K’((H[h] | | 10*) xor Y[h-1] xor 4*E_K’(00..0)), если H[h] менее n бит. 2* и 4* обозначают обработку умножения на константу над конечным полем.
[0186] Далее будет описана минимальная структура настоящего изобретения. Фиг.17 представляет собой структурную схему, иллюстрирующую минимальную типовую структуру устройства аутентифицированного шифрования в соответствии с настоящим изобретением. Как показано на фиг.17, устройство аутентифицированного шифрования в соответствии с настоящим изобретением включает в себя средство аутентифицированного шифрования 60 в качестве минимального компонента.
[0187] В устройстве аутентифицированного шифрования, показанном на фиг.17, средство аутентифицированного шифрования 60 применяет двухраундовую структуру Фейстеля, в которой для раундовой функции в единицах двух блоков используется функция шифрования, которой присвоена вспомогательная переменная, к входным открытому или зашифрованному текстам, генерируя посредством этого зашифрованный или расшифрованный открытый тексты.
[0188] С устройством аутентифицированного шифрования, имеющим минимальную структуру, функция шифрования используется только в одном направлении для обработки шифрования и обработки расшифрования, и, таким образом, имеется возможность достичь однопроходное и односкоростное аутентифицированное шифрование, способное выполнять параллельные обработки и полностью выполнять обработки шифрования и расшифрования путем использования только одной функции шифрования.
[0189] Фиг.18(а) и 18(б) являются структурными схемами, иллюстрирующими более конкретную структуру средства аутентифицированного шифрования 60 в качестве примера, где фиг.18(а) иллюстрирует типовую структуру средства аутентифицированного шифрования 60, когда устройство аутентифицированного шифрования предполагается в качестве устройства шифрования, а фиг.18 (б) иллюстрирует типовую структуру средства аутентифицированного шифрования 60, когда устройство аутентифицированного шифрования предполагается в качестве устройства расшифрования.
[0190] Как показано на фиг.18(а), средство аутентифицированного шифрования 60 может включать в себя средство шифрования 61 (средство шифрования 10, например), а средство шифрования 61 может иметь средство ввода открытого текста 611, средство генерации вспомогательной переменной 612, средство двухраундового шифрования Фейстеля 613 и средство вычисления тега 614.
[0191] Средство ввода открытого текста 611 (средство ввода 101, например) вводит открытый текст, подлежащий шифрованию, и начальный вектор.
[0192] Средство генерации вспомогательной переменной 612 (средство генерации вспомогательной переменной 102, например) на основе начального вектора и размера входного открытого текста генерирует вспомогательную переменную, задаваемую для каждой из функций шифрования.
[0193] Средство двухраундового шифрования Фейстеля 613 (средство двухраундового шифрования Фейстеля 103, например) применяет двухраундовую структуру Фейстеля к каждому фрагменту открытого текста, когда открытый текст разбит на фрагменты по два блока, генерируя посредством этого фрагменты зашифрованного текста, соответствующие фрагментам открытого текста.
[0194] Исходя из начального вектора N, индекса фрагмента i, i-го фрагмента открытого текста MC[i]=(M[i_1], M[i_2]), пары вспомогательных переменных (N, Tw_i_1) и (N, Tw_i_2), соответствующих двум блокам открытого текста, содержащимся в фрагменте открытого текста MC[i], и функции шифрования F_K(*, *), средство двухраундового шифрования Фейстеля 613 может находить i-й фрагмент зашифрованного текста CC[i] = (C[i_1], C[i_2]) как:
C[i_1]=F_K((N, Tw_i_1), M[i_1]) xor M[i_2],
C[i_2]=F_K((N, Tw_i_2), C[i_1]) xor M[i_1].
[0195] Средство вычисления тега 614 (средство вычисления тега 104, например) вычисляет контрольную сумму открытого текста и применяет функцию шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме для генерации посредством этого тега аутентификации.
[0196] Средство вычисления тега 614 вычисляет контрольную сумму открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, и, исходя из полученной контрольной суммы SUM, задаваемой для функции шифрования вспомогательной переменной (N, Tw_T_1), используемой для генерации тега аутентификации, и функции шифрования F_K(*, *), может находить тег аутентификации T как T=F_K((N, Tw_T_1), SUM).
[0197] Как показано на фиг.18(б), средство аутентифицированного шифрования 60 может включать в себя средство расшифрования 62 (средство расшифрования 20, например), а средство расшифрования 62 может иметь средство ввода зашифрованного текста 621, средство генерации вспомогательной переменной для расшифрования 622, средство двухраундового расшифрования Фейстеля 623, средство вычисления проверяющего расшифрование тега 624 и средство определения 625.
[0198] Средство ввода зашифрованного текста 621 (средство ввода 201, например) вводит зашифрованный текст, подлежащий расшифрованию, начальный вектор и тег аутентификации.
[0199] Средство генерации вспомогательной переменной для расшифрования 622 (средство генерации вспомогательной переменной 202, например) на основе начального вектора и размера входного зашифрованного текста генерирует такую же, как и при шифровании, вспомогательную переменную, задаваемую для каждой из функций шифрования.
[0200] Средство двухраундового расшифрования Фейстеля 623 (средство двухраундового расшифрования Фейстеля 203, например) применяет двухраундовую структуру Фейстеля к каждому фрагменту зашифрованного текста при разбиении зашифрованного текста на фрагменты по два блока, генерируя посредством этого фрагменты расшифрованного открытого текста, соответствующие фрагментам зашифрованного текста.
[0201] Исходя из начального вектора N, индекса фрагмента i, i-го фрагмента зашифрованного текста CC[i]=(C[i_1], C[i_2]), пары вспомогательных переменных (N, Tw_i_1) и (N, Tw_i_2), соответствующих двум блокам зашифрованного текста, содержащимся в фрагменте зашифрованного текста CC[i], и функции шифрования F_K(*, *), средство двухраундового расшифрования Фейстеля 623 может находить i-й фрагмент расшифрованного открытого текста MC’[i]=(M’[i_1], M’[i_2]) как:
M’[i_1]=F_K((N, Tw_i_2), C[i_1]) xor C[i_2],
M’[i_2]=F_K((N, Tw_i_1), M’[i_1]) xor C[i_1].
[0202] Средство вычисления проверяющего расшифрование тега 624 (средство вычисления проверяющего расшифрование тега 204, например) вычисляет контрольную сумму расшифрованного открытого текста и применяет функцию шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме, генерируя посредством этого проверяющий расшифрование тег аутентификации.
[0203] Средство вычисления проверяющего расшифрование тега 624 вычисляет контрольную сумму расшифрованного открытого текста путем использования каждого блока расшифрованного открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, и, исходя из полученной контрольной суммы SUM’, задаваемой для функции шифрования вспомогательной переменной (N, Tw_T_1), используемой для генерации проверяющего расшифрование тега аутентификации, и функции шифрования F_K(*, *), может находить проверяющий расшифрование тег аутентификации T’ как T’=F_K((N, Tw_T_1), SUM’).
[0204] Средство определения 625 (средство определения 205, например) определяет, удалось ли расшифрование или не удалось, на основе проверяющего расшифрование тега аутентификации, генерируемого средством вычисления проверяющего расшифрование тега 624, и входного тега аутентификации.
[0205] Настоящее изобретение было описано выше со ссылкой на типовые варианты осуществления и примеры, но настоящее изобретение не ограничивается вышеописанными типовыми вариантами осуществления. Структура и детали настоящего изобретения могут быть изменены различным образом в пределах объема настоящего изобретения, понятного специалистам в данной области.
[0206] Некоторые или все из вышеперечисленных типовых вариантов осуществления могут быть описаны таким образом, как в следующих примечаниях, но не ограничиваются ими.
[0207] (Примечание 1) Устройство шифрования, включающее в себя средство шифрования для применения двухраундовой структуры Фейстеля, использующей функцию шифрования, которой присвоена вспомогательная переменная, для раундовой функции на каждые два блока, к входному открытому тексту для генерации посредством этого зашифрованного текста.
[0208] (Примечание 2) Устройство шифрования по примечанию 1, в котором средство шифрования содержит средство ввода открытого текста для ввода открытого текста, подлежащего шифрованию, и начального вектора, средство генерации вспомогательной переменной для генерации на основе начального вектора и размера входного открытого текста вспомогательной переменной, задаваемой для каждой из функций шифрования, средство двухраундового шифрования Фейстеля для применения двухраундовой структуры Фейстеля к каждому фрагменту открытого текста при разбиении открытого текста на фрагменты по два блока для генерации посредством этого фрагментов зашифрованного текста, соответствующих фрагментам открытого текста, и средство вычисления тега для вычисления контрольной суммы открытого текста и применения функции шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме для генерации посредством этого тега аутентификации, средство двухраундового шифрования Фейстеля находит i-й фрагмент зашифрованного текста CC[i]=(C[i_1], C[i_2]), исходя из начального вектора N, индекса фрагмента i, i-го фрагмента открытого текста MC[i]=(M[i_1], M[i_2]), пары вспомогательных переменных (N, Tw_i_1) и (N, Tw_i_2), соответствующих двум блокам открытого текста, содержащимся в фрагменте открытого текста MC[i], и функции шифрования F_K(*, *), как:
C[i_1]=F_K((N, Tw_i_1), M[i_1]) xor M[i_2],
C[i_2]=F_K((N, Tw_i_2), C[i_1]) xor M[i_1], и средство вычисления тега вычисляет контрольную сумму открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, и исходя из полученной контрольной суммы SUM, задаваемой для функции шифрования вспомогательной переменной (N, Tw_T_1), используемой для генерации тега аутентификации, и функции шифрования F_K(*, *), находит тег аутентификации T как:
T=F_K((N, Tw_T_1), SUM).
[0209] (Примечание 3) Устройство шифрования по примечанию 2, в котором, когда входной открытый текст разбит на четное число блоков и размер последнего блока меньше заданного размера блока, средство генерации вспомогательной переменной генерирует вторую вспомогательную переменную для тега аутентификации как задаваемую для функции шифрования вспомогательную переменную, используемую для генерации тега аутентификации, и
средство шифрования содержит:
второе средство двухраундового шифрования Фейстеля для применения заданной двухраундовой структуры Фейстеля к последнему фрагменту открытого текста, содержащему последний блок открытого текста, для генерации посредством этого последнего фрагмента зашифрованного текста, содержащего последний блок зашифрованного текста; и
второе средство вычисления тега для вычисления контрольной суммы открытого текста путем использования входного открытого текста и вывода из второго средства двухраундового шифрования Фейстеля и применения функции шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме для генерации посредством этого тега аутентификации,
исходя из индекса m последнего фрагмента открытого текста, последнего блока открытого текста M[m_2], последнего фрагмента открытого текста MC[m]=(M[m_1], M[m_2]), пары вспомогательных переменных (N, Tw_m_1) и (N, Tw_m_2), соответствующих двум блокам открытого текста, содержащимся в последнем фрагменте открытого текста MC[m], функции шифрования F_K(*, *), размера s последнего блока открытого текста, блочного размера n, обработки дополнения pad_n() от размера s до размера n и обработки обрезания cut_s() от размера n до размера s, второе средство двухраундового шифрования Фейстеля находит последний фрагмент зашифрованного текста CC[m]=(C[m_1], C[m_2]), содержащий последний блок зашифрованного текста C[m_2], как:
C[m_2]=cut_s(Z) xor M[m_2],
C[m_1]=F_K((N, Tw_m_2), pad_n(C[m_2])) xor M[m_1]
где Z=F_K((N, Tw_m_1), M[m_1]), и
второе средство вычисления тега вычисляет контрольную сумму открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, за исключением последнего фрагмента открытого текста, вывода Z и блока C_n[m_2], полученного путем дополнения блока C[m_2] до размера n, после чего находит тег аутентификации T как:
T=F_K((N, Tw_T_2), SUM), исходя из полученной контрольной суммы SUM, второй вспомогательной переменной (N, Tw_T_2) для тега аутентификации и функции шифрования F_K(*, *).
[0210] (Примечание 4) Устройство шифрования по примечанию 2 или 3, в котором средство генерации вспомогательной переменной генерирует третью вспомогательную переменную для тега аутентификации как задаваемую для функции шифрования вспомогательную переменную, используемую для генерации тега аутентификации, в случае, когда входной открытый текст разбит на нечетное число блоков, и размер последнего блока является таким же, как заданный размер блока, и генерирует четвертую вспомогательную переменную для тега аутентификации как задаваемую для функции шифрования вспомогательную переменную, используемую для генерации тега аутентификации, в случае, когда входной открытый текст разбит на нечетное число блоков, а размер последнего блока меньше заданного размера блока, средство шифрования содержит средство однораундового шифрования Фейстеля для применения заданной однораундовой структуры Фейстеля к последнему фрагменту открытого текста, содержащему последний блок открытого текста, для генерации посредством этого последнего фрагмента зашифрованного текста, содержащего последний блок зашифрованного текста, и третье средство вычисления тега для вычисления контрольной суммы открытого текста путем использования входного открытого текста и вывода из средства однораундового шифрования Фейстеля и применения функции шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме для генерации посредством этого тега аутентификации, средство однораундового шифрования Фейстеля находит последний фрагмент зашифрованного текста CC[m] = (C[m_1]), содержащий последний блок зашифрованного текста C[m_1] с размером s, исходя из индекса m последнего фрагмента открытого текста, последнего блока открытого текста M[m1], последнего фрагмента открытого текста MC[m]=(M[m_1]), вспомогательной переменной (N, Tw_m_1), соответствующей последнему блоку открытого текста, функции шифрования F_K(*, *), размера s последнего блока открытого текста, блочного размера n и обработки обрезания cut_s() от размера n до размера s, как:
C[m_1]=cut_s(F_K((N, Tw_m_1), 0^n)) xor M[m_1]
где в случае s=n cut_s() может быть опущено, и третье средство вычисления тега находит контрольную сумму открытого текста при s=n путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, за исключением последнего фрагмента открытого текста, и блока C[m_1], после чего находит тег аутентификации T как:
T=F_K((N, Tw_T_3), SUM), исходя из полученной контрольной суммы SUM, третьей вспомогательной переменной (N, Tw_T_3) для тега аутентификации и функции шифрования F_K(*, *), а при s<n вычисляет контрольную сумму открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, за исключением последнего фрагмента открытого текста, и блока C_n[m_1], полученного путем дополнения блока C[m_1] до размера n, после чего находит тег аутентификации T как:
T=F_K((N, Tw_T_4), SUM), исходя из полученной контрольной суммы SUM, четвертой вспомогательной переменной (N, Tw_T_4) для тега аутентификации и функции шифрования F_K(*, *).
[0211] (Примечание 5) Устройство шифрования по любому из примечаний 1-4, в котором функция шифрования является настраиваемым блочным шифрованием с двумя входными переменными, включая вспомогательную переменную под названием Tweak.
[0212] (Примечание 6) Устройство шифрования по любому из примечаний 1-4, в котором функция шифрования является снабженной ключом хэш-функцией со связанным вводом первой переменной и второй переменной.
[0213] (Примечание 7) Устройство расшифрования содержит: средство расшифрования для применения двухраундовой структуры Фейстеля, использующей функцию шифрования, которой присвоена вспомогательная переменная, для раундовой функции на каждые два блока, к входному зашифрованному тексту для генерации посредством этого расшифрованного открытого текста.
[0214] (Примечание 8) Устройство расшифрования по примечанию 7, в котором средство расшифрования содержит средство ввода зашифрованного текста для ввода зашифрованного текста, подлежащего расшифрованию, начального вектора и тега аутентификации, средство генерации вспомогательной переменной для расшифрования для генерации на основе начального вектора и размера входного зашифрованного текста такой же, как и при шифровании, вспомогательной переменной, задаваемой для каждой из функций шифрования, средство двухраундового расшифрования Фейстеля для применения двухраундовой структуры Фейстеля к каждому фрагменту зашифрованного текста при разбиении зашифрованного текста на фрагменты по два блока для генерации посредством этого фрагментов расшифрованного открытого текста, соответствующих фрагментам зашифрованного текста, средство вычисления проверяющего расшифрование тега для вычисления контрольной суммы расшифрованного открытого текста и применения функции шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме для генерации посредством этого проверяющего расшифрование тега аутентификации и средство определения для определения, удалось ли расшифрование или не удалось, на основе проверяющего расшифрование тега аутентификации, генерируемого средством вычисления проверяющего расшифрование тега, и входного тега аутентификации,
средство двухраундового расшифрования Фейстеля находит i-й фрагмент расшифрованного открытого текста MC’[i]=(M’[i_1], M’[i_2]), исходя из начального вектора N, индекса фрагмента i, i-го фрагмента зашифрованного текста CC[i]=(C[i_1], C[i_2]), пары вспомогательных переменных (N, Tw_i_1) и (N, Tw_i_2), соответствующих двум блокам зашифрованного текста, содержащимся в фрагменте зашифрованного текста CC[i], и функции шифрования F_K(*, *), как:
M’[i_1]=F_K((N, Tw_i_2), C[i_1]) xor C[i_2],
M’[i_2]=F_K((N, Tw_i_1), M’[i_1]) xor C[i_1], и средство вычисления проверяющего расшифрование тега вычисляет контрольную сумму расшифрованного открытого текста путем использования каждого блока расшифрованного открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, после чего находит проверяющий расшифрование тег аутентификации T’ как:
T’=F_K((N, Tw_T_1), SUM’), исходя из полученной контрольной суммы SUM’, задаваемой для функции шифрования вспомогательной переменной (N, Tw_T_1), используемой для генерации проверяющего расшифрование тега аутентификации, и функции шифрования F_K(*, *).
[0215]
(Примечание 9) Устройство расшифрования по примечанию 8, в котором, когда входной зашифрованный текст разбит на четное число блоков и размер последнего блока меньше заданного размера блока, средство генерации вспомогательной переменной для расшифрования генерирует такую же, как и при шифровании, вторую вспомогательную переменную для тега аутентификации как задаваемую для функции шифрования вспомогательную переменную, используемую для генерации проверяющего расшифрование тега аутентификации, средство расшифрования содержит:
второе средство двухраундового расшифрования Фейстеля для применения заданной двухраундовой структуры Фейстеля к последнему фрагменту зашифрованного текста, содержащему последний блок зашифрованного текста, для генерации посредством этого последнего фрагмента расшифрованного открытого текста, содержащего блок расшифрованного открытого текста последнего блока зашифрованного текста; и
второе средство вычисления проверяющего расшифрование тега для вычисления контрольной суммы расшифрованного открытого текста путем использования вывода из средства двухраундового расшифрования Фейстеля, вывода из второго средства двухраундового расшифрования Фейстеля и последнего блока зашифрованного текста и применения функции шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме для генерации посредством этого проверяющего расшифрование тега аутентификации,
исходя из индекса m последнего фрагмента зашифрованного текста, последнего блока зашифрованного текста C[m_2], последнего фрагмента зашифрованного текста CC[m]=(C[m_1], C[m_2]), пары вспомогательных переменных (N, Tw_m_1) и (N, Tw_m_2), соответствующих двум блокам зашифрованного текста, содержащимся в последнем фрагменте зашифрованного текста CC[m], функции шифрования F_K(*, *), размера s последнего блока зашифрованного текста, блочного размера n, обработки дополнения pad_n() от размера s до размера n и обработки обрезания cut_s() от размера n до размера s, второе средство двухраундового расшифрования Фейстеля находит последний фрагмент расшифрованного открытого текста MC’[m]=(M’[m_1], M’[m_2]), содержащий последний блок расшифрованного открытого текста M’[m_2] с размером s, как:
M’[m_1]=F_K((N, Tw_m_2), pad_n(C[m_2])) xor C[m_1],
M’[m_2]=cut_s(Z’) xor C[m_2],
где Z’=F_K((N, Tw_m_1), M’[m_1]), и
второе средство вычисления проверяющего расшифрование тега вычисляет контрольную сумму расшифрованного открытого текста путем использования блока расшифрованного открытого текста M[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, за исключением последнего фрагмента расшифрованного открытого текста, вывода Z’ и блока M_n’[m_2], полученного путем дополнения блока M’[m_2] до размера n, после чего находит проверяющий расшифрование тег аутентификации T’ как:
T’=F_K((N, Tw_T_2), SUM’), исходя из полученной контрольной суммы SUM’, второй вспомогательной переменной (N, Tw_T_2) для тега аутентификации и функции шифрования F_K(*, *).
[0216] (Примечание 10) Устройство расшифрования по примечанию 8 или 9, в котором средство генерации вспомогательной переменной генерирует такую же, как и при шифровании, третью вспомогательную переменную для тега аутентификации как задаваемую для функции шифрования вспомогательную переменную, используемую для генерации проверяющего расшифрование тега аутентификации, в случае, когда входной зашифрованный текст разбит на нечетное число блоков, и размер последнего блока является таким же, как заданный размер блока, и генерирует такую же, как и при шифровании, четвертую вспомогательную переменную для тега аутентификации как задаваемую для функции шифрования вспомогательную переменную, используемую для генерации тега аутентификации, в случае, когда входной зашифрованный текст разбит на нечетное число блоков, а размер последнего блока меньше заданного размера блока, средство расшифрования содержит средство однораундового расшифрования Фейстеля для применения заданной однораундовой структуры Фейстеля к последнему фрагменту зашифрованного текста, содержащему последний блок зашифрованного текста, для генерации посредством этого последнего фрагмента открытого текста, содержащего последний блок расшифрованного открытого текста, и третье средство вычисления проверяющего расшифрование тега для вычисления контрольной суммы расшифрованного открытого текста путем использования вывода из средства двухраундового расшифрования Фейстеля и вывода из средства однораундового расшифрования Фейстеля и применения функции шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме для генерации посредством этого проверяющего расшифрование тега аутентификации, средство однораундового расшифрования Фейстеля находит последний фрагмент расшифрованного открытого текста MC’[m]=(M’[m_1]), содержащий последний блок расшифрованного открытого текста M’[m_1] с размером s, исходя из индекса m последнего фрагмента зашифрованного текста, последнего блока зашифрованного текста C[m_1], последнего фрагмента зашифрованного текста CC[m]=(C[m_1]), вспомогательной переменной (N, Tw_m_1), соответствующей последнему блоку зашифрованного текста, функции шифрования F_K(*, *), размера s последнего блока зашифрованного текста, блочного размера n и обработки обрезания cut_s() от размера n до размера s, как:
M’[m_1]=cut_s(F_K((N, Tw_m_1), 0^n)) xor [m_1],
где в случае s=n cut_s() может быть опущено, и третье средство вычисления проверяющего расшифрование тега вычисляет контрольную сумму расшифрованного открытого текста при s=n путем использования блока открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, за исключением последнего фрагмента расшифрованного открытого текста, и блока M’[m_1], после чего находит проверяющий расшифрование тег аутентификации T’ как:
T’=F_K((N, Tw_T_3), SUM’), исходя из полученной контрольной суммы SUM’, третьей вспомогательной переменной (N, Tw_T_3) для тега аутентификации и функции шифрования F_K(*, *), а при s<n вычисляет контрольную сумму расшифрованного открытого текста путем использования блока открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, за исключением последнего фрагмента расшифрованного открытого текста, и блока M_n’[m_1], полученного путем дополнения блока M’[m_1] до размера n, после чего находит тег аутентификации T’ как:
T’=F_K((N, Tw_T_4), SUM’), исходя из полученной контрольной суммы SUM’, четвертой вспомогательной переменной (N, Tw_T_4) для тега аутентификации и функции шифрования F_K(*, *).
[0217] (Примечание 11) Устройство расшифрования по любому из примечаний 7-10, в котором функция шифрования является настраиваемым блочным шифрованием с двумя входными переменными, включая вспомогательную переменную под названием Tweak.
[0218] (Примечание 12) Устройство расшифрования по любому из примечаний 7-10, в котором функция шифрования является снабженной ключом хэш-функцией со связанным вводом первой переменной и второй переменной.
[0219] (Примечание 13) Способ аутентифицированного шифрования, в котором в обработке двухраундового шифрования Фейстеля, состоящей из ввода открытого текста, подлежащего шифрованию, и исходного вектора, генерации на основе начального вектора и размера входного открытого текста вспомогательной переменной, задаваемой для каждой из функций шифрования, и применения двухраундовой структуры Фейстеля к каждому фрагменту открытого текста при разбиении открытого текста на фрагменты по два блока для генерации посредством этого фрагментов зашифрованного текста, соответствующих фрагментам открытого текста, устройство обработки информации находит i-й фрагмент зашифрованного текста CC[i]=(C[i_1], C[i_2]), исходя из начального вектора N, индекса фрагмента i, i-го фрагмента открытого текста MC[i=(M[i_1], M[i_2]), пары вспомогательных переменных (N, Tw_i_1) и (N, Tw_i_2), соответствующих двум блокам открытого текста, содержащимся в фрагменте открытого текста MC[i], и функции шифрования F_K(*, *), как:
C[i_1]=F_K((N, Tw_i_1), M[i_1]) xor M[i_2],
C[i_2]=F_K((N, Tw_i_2), C[i_1]) xor M[i_1], вычисляет контрольную сумму открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, и исходя из полученной контрольной суммы SUM, задаваемой для функции шифрования вспомогательной переменной (N, Tw_T_1), используемой для генерации тега аутентификации, и функции шифрования F_K(*, *), находит тег аутентификации T как:
T = F_K((N, Tw_T_1), SUM).
[0220] (Примечание 14) Способ аутентифицированного шифрования по примечанию 13, в котором во второй обработке двухраундового шифрования Фейстеля, состоящей из генерации второй вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации тега аутентификации, когда входной открытый текст разбит на четное число блоков и размер последнего блока меньше заданного размера блока, и применения заданной двухраундовой структуры Фейстеля к последнему фрагменту открытого текста, содержащему последний блок открытого текста, для генерации посредством этого последнего фрагмента зашифрованного текста, содержащего последний блок зашифрованного текста, устройство обработки информации находит последний фрагмент зашифрованного текста CC[m]=(C[m_1], C[m_2]), содержащий последний блок зашифрованного текста C[m_2] размера s, исходя из индекса m последнего фрагмента открытого текста, последнего блока открытого текста M[m_2], последнего фрагмента открытого текста MC[m]=(M[m_1], M[m_2]), пары вспомогательных переменных (N, Tw_m_1) и (N, Tw_m_2), соответствующих двум блокам открытого текста, содержащимся в последнем фрагменте открытого текста MC[m], функции шифрования F_K(*, *), размера s последнего блока открытого текста, блочного размера n, обработки дополнения pad_n() от размера s до размера n и обработки обрезания cut_s() от размера n до размера s, как:
C[m_2]=cut_s(Z) xor M[m_2],
C[m_1]=F_K((N, Tw_m_2), pad_n(C[m_2])) xor M[m_1]
где Z=F_K((N, Tw_m_1), M[m_1]), вычисляет контрольную сумму открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, за исключением последнего фрагмента открытого текста, вывода Z и блока C_n[m_2], полученного путем дополнения блока C[m_2] до размера n, после чего находит тег аутентификации T как:
T=F_K((N, Tw_T_2), SUM), исходя из полученной контрольной суммы SUM, второй вспомогательной переменной (N, Tw_T_2) для тега аутентификации и функции шифрования F_K(*, *).
[0221] (Примечание 15) Способ аутентифицированного шифрования по примечанию 13 или 14, в котором в обработке однораундового шифрования Фейстеля, состоящей из генерации третьей вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации тега аутентификации, в случае, когда входной открытый текст разбит на нечетное число блоков, и размер последнего блока является таким же, как заданный размер блока, генерации четвертой вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации тега аутентификации, в случае, когда входной открытый текст разбит на нечетное число блоков, а размер последнего блока меньше заданного размера блока, и применения заданной однораундовой структуры Фейстеля к последнему фрагменту открытого текста, содержащему последний блок открытого текста, для генерации посредством этого последнего фрагмента зашифрованного текста, содержащего последний блок зашифрованного текста, способ включает в себя следующие этапы, исходящий из индекса m последнего фрагмента открытого текста, последнего блока открытого текста M[m_1], последнего фрагмента открытого текста MC[m]=(M[m_1]), вспомогательной переменной (N, Tw_m_1), соответствующей последнему блоку открытого текста, функции шифрования F_K(*, *), размера s последнего блока открытого текста, блочного размера n и обработки обрезания cut_s() от размера n до размера s этап нахождения последнего фрагмента зашифрованного текста CC[m]=(C[m_1]), содержащего последний блок зашифрованного текста C[m_1] с размером s, как:
C[m_1]=cut_s(F_K((N, Tw_m_1), 0^n)) xor M[m_1],
где в случае s=n cut_s() может быть опущено, этап вычисления контрольной суммы открытого текста при s=n путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, за исключением последнего фрагмента открытого текста, и блока C[m_1], и нахождения тега аутентификации T как:
T=F_K((N, Tw_T_3), SUM), исходя из полученной контрольной суммы SUM, третьей вспомогательной переменной (N, Tw_T_3) для тега аутентификации и функции шифрования F_K(*, *), а при s<n этап вычисления контрольной суммы открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, за исключением последнего фрагмента открытого текста, и блока C_n[m_1], полученного путем дополнения блока C[m_1] до размера n, и нахождения тега аутентификации T как:
T=F_K((N, Tw_T_4), SUM), исходя из полученной контрольной суммы SUM, четвертой вспомогательной переменной (N, Tw_T_4) для тега аутентификации и функции шифрования F_K(*, *).
[0222] (Примечание 16) Способ аутентифицированного шифрования, в котором в обработке двухраундового расшифрования Фейстеля, состоящей из ввода зашифрованного текста, подлежащего расшифрованию, начального вектора и тега аутентификации, генерации на основе начального вектора и размера входного зашифрованного текста такой же, как и при шифровании, вспомогательной переменной, задаваемой для каждой из функций шифрования, и применения двухраундовой структуры Фейстеля к каждому фрагменту зашифрованного текста при разбиении зашифрованного текста на фрагменты по два блока для генерации посредством этого фрагментов расшифрованного открытого текста, соответствующих фрагментам зашифрованного текста, устройство обработки информации находит i-й фрагмент расшифрованного открытого текста MC’[i]=(M’[i_1], M’[i_2]), исходя из начального вектора N, индекса фрагмента i, i-го фрагмента зашифрованного текста CC[i]=(C[i_1], C[i_2]), пары вспомогательных переменных (N, Tw_i_1) и (N, Tw_i_2), соответствующих двум блокам зашифрованного текста, содержащимся в фрагменте зашифрованного текста CC[i], и функции шифрования F_K(*, *), как:
M’[i_1]=F_K((N, Tw_i_2), C[i_1]) xor C[i_2],
M’[i_2]=F_K((N, Tw_i_1), M’[i_1]) xor C[i_1], вычисляет контрольную сумму расшифрованного открытого текста путем использования каждого блока расшифрованного открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, после чего находит проверяющий расшифрование тег аутентификации T’ как:
T’=F_K((N, Tw_T_1), SUM’), исходя из полученной контрольной суммы SUM’, задаваемой для функции шифрования вспомогательной переменной (N, Tw_T_1), используемой для генерации проверяющего расшифрование тега аутентификации, и функции шифрования F_K(*, *).
[0223] (Примечание 17) Способ аутентифицированного шифрования по примечанию 16, в котором во второй обработке двухраундового расшифрования Фейстеля, состоящей из генерации такой же, как и при шифровании, второй вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации проверяющего расшифрование тега аутентификации, когда входной зашифрованный текст разбит на четное число блоков и размер последнего блока меньше заданного размера блока, и применения заданной двухраундовой структуры Фейстеля к последнему фрагменту зашифрованного текста, содержащему последний блок зашифрованного текста, для генерации посредством этого последнего фрагмента расшифрованного открытого текста, содержащего блок расшифрованного открытого текста последнего блока зашифрованного текста, способ включает в себя следующие этапы, исходящий из индекса m последнего фрагмента зашифрованного текста, последнего блока зашифрованного текста C[m_2], последнего фрагмента зашифрованного текста CC[m]=(C[m_1], C[m_2]), пары вспомогательных переменных (N, Tw_m_1) и (N, Tw_m_2), соответствующих двум блокам зашифрованного текста, содержащимся в последнем фрагменте зашифрованного текста CC[m], функции шифрования F_K(*, *), размера s последнего блока зашифрованного текста, блочного размера n, обработки дополнения pad_n() от размера s до размера n и обработки обрезания cut_s() от размера n до размера s этап нахождения последнего фрагмента расшифрованного открытого текста MC’[m]=(M’[m_1], M’[m_2]), содержащего последний блок расшифрованного открытого текста M’[m_2] с размером s, как:
M’[m_1]=F_K((N, Tw_m_2), pad_n(C[m_2])) xor C[m_1],
M’[m_2]=cut_s(Z’) xor C[m_2],
где Z’=F_K((N, Tw_m_1), M’[m_1]), этап вычисления контрольной суммы расшифрованного открытого текста путем использования блока расшифрованного открытого текста M[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, за исключением последнего фрагмента расшифрованного открытого текста, вывода Z’ и блока M_n’[m_2], полученного путем дополнения блока M’[m_2] до размера n, и нахождения проверяющего расшифрование тега аутентификации T’ как:
T’=F_K((N, Tw_T_2), SUM’), исходя из полученной контрольной суммы SUM’, второй вспомогательной переменной (N, Tw_T_2) для тега аутентификации и функции шифрования F_K(*, *).
[0224] (Примечание 18) Способ аутентифицированного шифрования по примечанию 16 или 17, в котором в обработке однораундового расшифрования Фейстеля, состоящей из генерации такой же, как и при шифровании, третьей вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации проверяющего расшифрование тега аутентификации, в случае, когда входной зашифрованный текст разбит на нечетное число блоков, и размер последнего блока является таким же, как заданный размер блока, генерации такой же, как и при шифровании, четвертой вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации тега аутентификации, в случае, когда входной зашифрованный текст разбит на нечетное число блоков, а размер последнего блока меньше заданного размера блока, и применения заданной однораундовой структуры Фейстеля к последнему фрагменту зашифрованного текста, содержащему последний блок зашифрованного текста, для генерации посредством этого последнего фрагмента открытого текста, содержащего последний блок расшифрованного открытого текста, способ включает в себя следующие этапы, исходящий из индекса m последнего фрагмента зашифрованного текста, последнего блока зашифрованного текста C[m_1], последнего фрагмента зашифрованного текста CC[m]=(C[m_1]), вспомогательной переменной (N, Tw_m_1), соответствующей последнему блоку зашифрованного текста, функции шифрования F_K(*, *), размера s последнего блока зашифрованного текста, блочного размера n и обработки обрезания cut_s() от размера n до размера s этап нахождения последнего фрагмента расшифрованного открытого текста MC’[m]=(M’[m_1]), содержащего последний блок расшифрованного открытого текста M’[m_1] с размером s, как:
M’[m_1]=cut_s(F_K((N, Tw_m_1), 0^n)) xor [m_1],
где в случае s=n cut_s() может быть опущено, этап вычисления контрольной суммы расшифрованного открытого текста при s=n путем использования блока открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, за исключением последнего фрагмента расшифрованного открытого текста, и блока M’[m_1], и нахождения проверяющего расшифрование тега аутентификации T’ как:
T’=F_K((N, Tw_T_3), SUM’), исходя из полученной контрольной суммы SUM’, третьей вспомогательной переменной (N, Tw_T_3) для тега аутентификации и функции шифрования F_K(*, *), а при s<n этап вычисления контрольной суммы расшифрованного открытого текста путем использования блока открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, за исключением последнего фрагмента расшифрованного открытого текста, и блока M_n’[m_1], полученного путем дополнения блока M’[m_1] до размера n, и нахождения тега аутентификации T’ как:
T’=F_K((N, Tw_T_4), SUM’), исходя из полученной контрольной суммы SUM’, четвертой вспомогательной переменной (N, Tw_T_4) для тега аутентификации и функции шифрования F_K(*, *).
[0225] (Примечание 19) Способ аутентифицированного шифрования по любому из примечаний 13-18, в котором функция шифрования является настраиваемым блочным шифрованием с двумя входными переменными, включая вспомогательную переменную под названием Tweak.
[0226] (Примечание 20) Способ аутентифицированного шифрования по любому из примечаний 13-18, в котором функция шифрования является снабженной ключом хэш-функцией со связанным вводом первой переменной и второй переменной.
[0227] (Примечание 21) Программа для аутентифицированного шифрования, предписывающая компьютеру выполнять обработку ввода открытого текста, состоящую из ввода открытого текста, подлежащего шифрованию, и начального вектора, обработку генерации вспомогательной переменной, состоящую из генерации на основе начального вектора и размера входного открытого текста вспомогательной переменной, задаваемой для каждой из функций шифрования, обработку двухраундового шифрования Фейстеля, состоящую из применения двухраундовой структуры Фейстеля к каждому фрагменту открытого текста при разбиении открытого текста на фрагменты по два блока для генерации посредством этого фрагментов зашифрованного текста, соответствующих фрагментам открытого текста, обработку вычисления тега, состоящую из вычисления контрольной суммы открытого текста и применения функции шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме для генерации посредством этого тега аутентификации, обработку двухраундового шифрования Фейстеля, состоящую из исходящего из начального вектора N, индекса фрагмента i, i-го фрагмента открытого текста MC[i]=(M[i_1], M[i_2]), пары вспомогательных переменных (N, Tw_i_1) и (N, Tw_i_2), соответствующих двум блокам открытого текста, содержащимся в фрагменте открытого текста MC[i], и функции шифрования F_K(*, *) нахождения i-го фрагмента зашифрованного текста CC[i]=(C[i_1], C[i_2]) как:
C[i_1]=F_K((N, Tw_i_1), M[i_1]) xor M[i_2],
C[i_2]=F_K((N, Tw_i_2), C[i_1]) xor M[i_1], и обработку вычисления тега, состоящую из вычисления контрольной суммы открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, и исходящего из полученной контрольной суммы SUM, задаваемой для функции шифрования вспомогательной переменной (N, Tw_T_1), используемой для генерации тега аутентификации, и функции шифрования fk (*, *) нахождения тега аутентификации T как:
T=F_K((N, Tw_T_1), SUM).
[0228] (Примечание 22) Программа для аутентифицированного шифрования по примечанию 21, предписывающая компьютеру выполнять обработку генерации вспомогательной переменной, состоящую из генерации второй вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации тега аутентификации, когда входной открытый текст разбит на четное число блоков и размер последнего блока меньше заданного размера блока, обработку двухраундового шифрования Фейстеля, состоящую из исходящего из индекса m последнего фрагмента открытого текста, последнего блока открытого текста M[m_2], последнего фрагмента открытого текста MC[m]=(M[m_1], M[m_2]), пары вспомогательных переменных (N, Tw_m_1) и (N, Tw_m_2), соответствующих двум блокам открытого текста, содержащимся в последнем фрагменте открытого текста MC[m], функции шифрования F_K(*, *), размера s последнего блока открытого текста, блочного размера n, обработки дополнения pad_n() от размера s до размера n и обработки обрезания cut_s() от размера n до размера s нахождения последнего фрагмента зашифрованного текста CC[m]=(C[m_1], C[m_2]), содержащего последний блок зашифрованного текста C[m_2] размера s, как:
C[m_2]=cut_s(Z) xor M[m_2],
C[m_1]=F_K((N, Tw_m_2), pad_n(C[m_2])) xor M[m_1],
где Z=F_K((N, Tw_m_1), M[m_1]), и вторую обработку вычисления тега, состоящую из вычисления контрольной суммы открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, за исключением последнего фрагмента открытого текста, вывода Z и блока C_n[m_2], полученного путем дополнения блока C[m_2] до размера n, и нахождения тега аутентификации T как:
T=F_K((N, Tw_T_2), SUM), исходя из полученной контрольной суммы SUM, второй вспомогательной переменной (N, Tw_T_2) для тега аутентификации и функции шифрования F_K(*, *).
[0229] (Примечание 23) Программа для аутентифицированного шифрования по примечанию 21 или 22, предписывающая компьютеру выполнять обработку генерации вспомогательной переменной, состоящую из генерации третьей вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации тега аутентификации, в случае, когда входной открытый текст разбит на нечетное число блоков, и размер последнего блока является таким же, как и заданный размер блока, и генерации четвертой вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации тега аутентификации, в случае, когда входной открытый текст разбит на нечетное число блоков, а размер последнего блока меньше заданного размера блока, обработку двухраундового шифрования Фейстеля, состоящую из исходящего из индекса m последнего фрагмента открытого текста, последнего блока открытого текста M[m_1], последнего фрагмента открытого текста MC[m]=(M[m_1]), вспомогательной переменной (N, Tw_m_1), соответствующей последнему блоку открытого текста, функции шифрования F_K(*, *), размера s последнего блока открытого текста, блочного размера n и обработки обрезания cut_s() от размера n до размера s нахождения последнего фрагмента зашифрованного текста CC[m]=(C[m_1]), содержащего последний блок зашифрованного текста C[m_1] с размером s, как:
C[m_1]=cut_s(F_K((N, Tw_m_1), 0^n)) xor M[m_1],
где в случае s=n cut_s() может быть опущено, и обработку вычисления тега, состоящую из вычисления контрольной суммы открытого текста при s = n путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, за исключением последнего фрагмента открытого текста, и блока C[m_1], и нахождения тега аутентификации T как:
T=F_K((N, Tw_T_3), SUM), исходя из полученной контрольной суммы SUM, третьей вспомогательной переменной (N, Tw_T_3) для тега аутентификации и функции шифрования F_K(*, *), а при s<n вычисления контрольной суммы открытого текста путем использования блока открытого текста M[i_2], содержащегося в каждом фрагменте открытого текста, за исключением последнего фрагмента открытого текста, и блока C_n[m_1], полученного путем дополнения блока C[m_1] до размера n, и нахождения тега аутентификации T как:
T=F_K((N, Tw_T_4), SUM), исходя из полученной контрольной суммы SUM, четвертой вспомогательной переменной (N, Tw_T_4) для тега аутентификации и функции шифрования F_K(*, *).
[0230] (Примечание 24) Программа для аутентифицированного шифрования, предписывающая компьютеру выполнять обработку ввода зашифрованного текста, состоящую из ввода зашифрованного текста, подлежащего расшифрованию, начального вектора и тега аутентификации, обработку генерации вспомогательной переменной для расшифрования, состоящую из генерации на основе начального вектора и размера входного зашифрованного текста такой же, как и при шифровании, вспомогательной переменной, задаваемой для каждой из функций шифрования, обработку двухраундового расшифрования Фейстеля, состоящую из применения двухраундовой структуры Фейстеля к каждому фрагменту зашифрованного текста при разбиении зашифрованного текста на фрагменты по два блока для генерации посредством этого фрагментов расшифрованного открытого текста, соответствующих фрагментам зашифрованного текста, обработку вычисления проверяющего расшифрование тега, состоящую из вычисления контрольной суммы расшифрованного открытого текста и применения функции шифрования, которой присвоена вспомогательная переменная, к полученной контрольной сумме для генерации посредством этого проверяющего расшифрование тега аутентификации, обработку определения, состоящую из определения, удалось ли расшифрование или не удалось, на основе проверяющего расшифрование тега аутентификации, генерируемого средством вычисления проверяющего расшифрование тега, и входного тега аутентификации, обработку двухраундового расшифрования Фейстеля, состоящую из исходящего из начального вектора N, индекса фрагмента i, i-го фрагмента зашифрованного текста CC[i]=(C[i_1], C[i_2]), пары вспомогательных переменных (N, Tw_i_1) и (N, Tw_i_2), соответствующих двум блокам зашифрованного текста, содержащимся в фрагменте зашифрованного текста CC[i], и функции шифрования F_K(*, *) нахождения i-го фрагмента расшифрованного открытого текста MC’[i]=(M’[i_1], M’[i_2]) как:
M’[i_1]=F_K((N, Tw_i_2), C[i_1]) xor C[i_2],
M’[i_2]=F_K((N, Tw_i_1), M’[i_1]) xor C[i_1], и обработку вычисления проверяющего расшифрование тега, состоящую из вычисления контрольной суммы расшифрованного открытого текста путем использования каждого блока расшифрованного открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, и нахождения проверяющего расшифрование тега аутентификации T’ как:
T’=F_K((N, Tw_T_1), SUM’), исходя из полученной контрольной суммы SUM’, задаваемой для функции шифрования вспомогательной переменной (N, Tw_T_1), используемой для генерации проверяющего расшифрование тега аутентификации, и функции шифрования F_K(*, *).
[0231] (Примечание 25) Программа для аутентифицированного шифрования по примечанию 24, предписывающая компьютеру выполнять обработку генерации вспомогательной переменной для расшифрования, состоящую из генерации такой же, как и при шифровании, второй вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации проверяющего расшифрование тега аутентификации, когда входной зашифрованный текст разбит на четное число блоков и размер последнего блока меньше заданного размера блока, обработку двухраундового расшифрования Фейстеля, состоящую из исходящего из индекса m последнего фрагмента зашифрованного текста, последнего блока зашифрованного текста C[m_2], последнего фрагмента зашифрованного текста CC[m]=(C[m_1], C[m_2]), пары вспомогательных переменных (N, Tw_m_1) и (N, Tw_m_2), соответствующих двум блокам зашифрованного текста, содержащимся в последнем фрагменте зашифрованного текста CC[m], функции шифрования F_K(*, *), размера s последнего блока зашифрованного текста, блочного размера n, обработки дополнения pad_n() от размера s до размера n и обработки обрезания cut_s() от размера n до размера s нахождения последнего фрагмента расшифрованного открытого текста MC’[m] = (M’[m_1], M’[m_2]), содержащего последний блок расшифрованного открытого текста M’[m_2] с размером s, как:
M’[m_1]=F_K((N, Tw_m_2), pad_n(C[m_2])) xor C[m_1],
M’[m_2]=cut_s(Z’) xor C[m_2],
где Z’=F_K((N, Tw_m_1), M’[m_1]), и обработку вычисления проверяющего расшифрование тега, состоящую из вычисления контрольной суммы расшифрованного открытого текста путем использования блока расшифрованного открытого текста M[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, за исключением последнего фрагмента расшифрованного открытого текста, вывода Z’ и блока M_n’[m_2], полученного путем дополнения блока M’[m_2] до размера n, и нахождения проверяющего расшифрование тега аутентификации T’ как:
T’=F_K((N, Tw_T_2), SUM’), исходя из полученной контрольной суммы SUM’, второй вспомогательной переменной (N, Tw_T_2) для тега аутентификации и функции шифрования F_K(*, *).
[0232] (Примечание 26) Программа для аутентифицированного шифрования по примечанию 24 или 25, предписывающая компьютеру выполнять обработку генерации вспомогательной переменной для расшифрования, состоящую из генерации такой же, как и при шифровании, третьей вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации проверяющего расшифрование тега аутентификации, в случае, когда входной зашифрованный текст разбит на нечетное число блоков, и размер последнего блока является таким же, как заданный размер блока, и генерации такой же, как и при шифровании, четвертой вспомогательной переменной для тега аутентификации как задаваемой для функции шифрования вспомогательной переменной, используемой для генерации тега аутентификации, в случае, когда входной зашифрованный текст разбит на нечетное число блоков, а размер последнего блока меньше заданного размера блока, обработку двухраундового расшифрования Фейстеля, состоящую из исходящего из индекса m последнего фрагмента зашифрованного текста, последнего блока зашифрованного текста C[m_1], последнего фрагмента зашифрованного текста CC[m]=(C[m_1]), вспомогательной переменной (N, Tw_m_1), соответствующей последнему блоку зашифрованного текста, функции шифрования F_K(*, *), размера s последнего блока зашифрованного текста, блочного размера n и обработки обрезания cut_s() от размера n до размера s нахождения последнего фрагмента расшифрованного открытого текста MC’[m]=(M’[m_1]), содержащего последний блок расшифрованного открытого текста M’[m_1] с размером s, как:
M’[m_1]=cut_s(F_K((N, Tw_m_1), 0^n)) xor [m_1],
где в случае s=n cut_s() может быть опущено, и обработку вычисления проверяющего расшифрование тега, состоящую из вычисления контрольной суммы расшифрованного открытого текста при s = n путем использования блока открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, за исключением последнего фрагмента расшифрованного открытого текста, и блока M’[m_1], и нахождения проверяющего расшифрование тега аутентификации T’ как:
T’=F_K((N, Tw_T_3), SUM’), исходя из полученной контрольной суммы SUM’, третьей вспомогательной переменной (N, Tw_T_3) для тега аутентификации и функции шифрования F_K(*, *), а при s<n вычисления контрольной суммы расшифрованного открытого текста путем использования блока открытого текста M’[i_2], содержащегося в каждом фрагменте расшифрованного открытого текста, за исключением последнего фрагмента расшифрованного открытого текста, и блока M_n’[m_1], полученного путем дополнения блока M’[m_1] до размера n, и нахождения тега аутентификации T’ как:
T’=F_K((N, Tw_T_4), SUM’), исходя из полученной контрольной суммы SUM’, четвертой вспомогательной переменной (N, Tw_T_4) для тега аутентификации и функции шифрования F_K(*, *).
[0233] (Примечание 27) Программа для аутентифицированного шифрования по любому из примечаний 21-26, в котором функция шифрования является настраиваемым блочным шифрованием с двумя входными переменными, включая вспомогательную переменную под названием Tweak.
[0234] (Примечание 28) Программа для аутентифицированного шифрования по любому из примечаний 21-26, в котором функция шифрования является снабженной ключом хэш-функцией со связанным вводом первой переменной и второй переменной.
[0235] Настоящая заявка испрашивает приоритет на основе японской патентной заявки 2013-161446, поданной 2 августа 2013, раскрытие которой полностью включено в настоящую заявку посредством ссылки.
Промышленная применимость
[0236] Настоящее изобретение относится соответственно к таким приложениям, как шифрование, аутентификация сообщений и защита хранилищ данных, таких как база данных, в беспроводной или проводной связи.
Список ссылочных позиций
[0237] 30, 60 Средство аутентифицированного шифрования
10, 61 Средство шифрования
101 Средство ввода
611 Средство ввода открытого текста
102, 612 Средство генерации вспомогательной переменной
103, 613 Средство двухраундового шифрования Фейстеля
104, 614 Средство вычисления тега
105 Средство вывода
20, 62 Средство расшифрования
201 Средство ввода
621 Средство ввода зашифрованного текста
202 Средство генерации вспомогательной переменной
622 Средство генерации вспомогательной переменной для расшифрования
203, 623 Средство двухраундового расшифрования Фейстеля
204, 624 Средство вычисления проверяющего расшифрование тега
205, 625 Средство определения
206 Средство вывода