эффективное шифрование и аутентификация для систем обработки данных
Классы МПК: | H04L9/14 с использованием нескольких ключей или алгоритмов |
Автор(ы): | ХОКС Филип Майкл (AU), РОУЗ Грегори Дж. (AU) |
Патентообладатель(и): | КВЭЛКОММ ИНКОРПОРЕЙТЕД (US) |
Приоритеты: |
подача заявки:
2003-07-24 публикация патента:
27.11.2008 |
Изобретение относится к области обработки данных. Технический результат заключается в уменьшении нагрузки на ресурсы, производящие обработку данных, требуемую для обеспечения защиты. Сущность изобретения заключается в том, что набор позиций открытого текста и/или набор позиций зашифрованного текста используются для определения того, какие блоки данных будут использоваться для генерации значения (470) контрольной суммы входного значения и значения (475) контрольной суммы выходного значения и эти контрольные суммы затем используются для генерации тега аутентификации. 15 н. и 11 з.п. ф-лы, 6 ил.
Формула изобретения
1. Способ шифрования и аутентификации данных как единого объекта, содержащий этапы, на которых упорядочивают данные в множество блоков открытого текста, каждый размером, равным размеру блока шифра; определяют по меньшей мере одну позицию открытого текста, для которого по меньшей мере один блок зашифрованного текста будет тем же самым, что и соответствующий блок открытого текста; определяют множество шумовых блоков с использованием произвольного одноразового числа и первого ключа; определяют множество промежуточных блоков зашифрованного текста, где первый промежуточный блок зашифрованного текста соответствует зашифрованному произвольному одноразовому числу, и оставшиеся промежуточные зашифрованные тексты вычисляются итерационно шифрованием множества промежуточных блоков открытого текста вторым ключом, при этом каждый промежуточный блок открытого текста является комбинацией одного из множества блоков открытого текста и предыдущего промежуточного блока зашифрованного текста; определяют множество блоков зашифрованного текста с использованием множества промежуточных блоков зашифрованного текста и множества шумовых блоков, где первый блок зашифрованного текста является тем же самым, что и первый промежуточный блок зашифрованного текста, и оставшиеся блоки зашифрованного текста получены объединением соответствующего промежуточного блока зашифрованного текста с соответствующим шумовым блоком; вычисляют значения контрольной суммы входного значения на основе множества блоков открытого текста и промежуточного блока зашифрованного текста, соответствующего последнему блоку открытого текста; вычисляют значения контрольной суммы выходного значения на основе множества блоков зашифрованного текста и шумового блока; вычисляют тег аутентификации путем шифрования значения контрольной суммы входного значения вторым ключом и объединения зашифрованного значения контрольной суммы входного значения с контрольной суммой выходного значения; заменяют каждый из множества блоков зашифрованного текста, который определен позицией открытого текста, на соответствующий блок открытого текста; и добавляют тег аутентификации.
2. Способ по п.1, в котором шифрование использует шифрование блочным шифром.
3. Способ по п.1, в котором шифрование содержит этапы, на которых выбирают применение шифрования блочным шифром или дешифрования блочного шифра; выбирают блочный шифр для использования, согласно набору предопределенных правил выбора; и формируют множество промежуточных блоков зашифрованного текста, применяя выбранное шифрование блочным шифром или дешифрование блочного шифра к одному из множества блоков открытого текста, объединенных с предыдущим промежуточным блоком зашифрованного текста.
4. Способ по п.1, в котором вычисление значения контрольной суммы входного значения содержит этапы, на которых объединяют все из множества блоков открытого текста, которые соответствуют позиции, которая не определена как, по меньшей мере, одна позиция открытого текста; и объединяют последний шумовой блок и объединенное множество блоков открытого текста.
5. Способ по п.1, в котором вычисление контрольной суммы выходного значения содержит этапы, на которых объединяют все из множества блоков зашифрованного текста, которые соответствуют, по меньшей мере, одной позиции открытого текста; и объединяют первый шумовой блок и объединенное множество блоков зашифрованного текста.
6. Способ по п.1, в котором объединение выполняется с использованием операции поразрядного "исключающее ИЛИ".
7. Способ по п.1, в котором объединение выполняется с использованием группового оператора.
8. Способ по п.7, в котором групповой оператор является целочисленной операцией сложения по модулю.
9. Способ дешифрования и аутентификации множества блоков данных, сопровождаемых тегом аутентификации, в котором определен набор позиций открытого текста, причем указанный способ содержит этапы, на которых используют произвольное одноразовое число и первый ключ для определения множество шумовых блоков; объединяют каждый из множества блоков данных, которые не определены позицией открытого текста в наборе позиций открытого текста, с соответствующим шумовым блоком для определения множества промежуточных блоков зашифрованного текста; обозначают каждый из множества блоков данных, которые определены позицией открытого текста в наборе позиций аутентификации, как блок открытого текста в множестве блоков открытого текста; для каждой позиции открытого текста в наборе позиций открытого текста объединяют соответствующий блок открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования промежуточного блока открытого текста, и шифруют промежуточный блок открытого текста для формирования промежуточного блока зашифрованного текста, соответствующего позиции открытого текста; для каждой позиции не в наборе позиций открытого текста дешифруют соответствующий промежуточный блок зашифрованного текста для формирования соответствующего промежуточного блока открытого текста, и объединяют соответствующий промежуточный блок открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования блока открытого текста для каждой позиции не в наборе позиций открытого текста; определяют множество вторичных блоков зашифрованного текста, в которых каждый из множества вторичных блоков зашифрованного текста соответствует позиции открытого текста в наборе позиций открытого текста и сформирован путем объединения соответствующего промежуточного блока зашифрованного текста с соответствующим шумовым блоком; вычисляют значение контрольной суммы входного значения путем объединения последнего промежуточного блока зашифрованного текста и множества блоков данных, которое не определены позицией открытого текста в наборе позиций открытого текста; вычисляют значение контрольной суммы выходного значения путем объединения шумового блока и множества вторичных блоков зашифрованного текста; и проверяют тег аутентификации.
10. Способ по п.9, в котором проверка тега аутентификации содержит этапы, на которых вычисляют тестовый тег аутентификации путем шифрования значения контрольной суммы входного значения вторым ключом и объединяют зашифрованное значение контрольной суммы входного значения со значением контрольной суммы выходного значения; и сравнивают тестовый тег аутентификации с тегом аутентификации, при этом тег открытого текста подтвержден, если тестовый тег аутентификации и тег аутентификации совпадают.
11. Способ по п.9, в котором проверка тега аутентификации содержит этапы, на которых объединяют тег аутентификации со значением контрольной суммой выходного значения для формирования тестового зашифрованного значения контрольной суммы входного значения; шифруют значения контрольной суммы входного значения; и сравнивают тестовое зашифрованное значение контрольной суммы входного значения с зашифрованным значением контрольной суммы входного значения, при этом тег аутентификации подтвержден, если тестовое зашифрованное значение контрольной суммы входного значения и зашифрованное значение контрольной суммы входного значения совпадают.
12. Способ по п.9, в котором проверка тега аутентификации содержит этапы, на которых объединяют тег аутентификации со значением контрольной суммы выходного значения для формирования тестового зашифрованного значения контрольной суммы входного значения; дешифруют тестовое зашифрованное значение контрольной суммы входного значения для получения тестового значения контрольной суммы входного значения; и сравнивают тестовое значение контрольной суммы входного значения со значением контрольной суммы входного значения, при этом тег аутентификации подтвержден, если тестовое значение контрольной суммы входного значения и значение контрольной суммы входного значения совпадают.
13. Устройство шифрования и аутентификации данных, содержащее по меньшей мере, один элемент памяти; и по меньшей мере, один элемент обработки, конфигурированный для выполнения набора команд, сохраненных в элементе памяти, причем указанный набор команд предназначен для выполнения этапов, на которых упорядочивают данные в множество блоков открытого текста, каждый размером, равным размеру блока шифра; определяют, по меньшей мере, одну позицию открытого текста, для которой, по меньшей мере, один блок зашифрованного текста будет тем же самым, что и соответствующий блок открытого текста; определяют множество шумовых блоков с использованием произвольного одноразового числа и первого ключа; определяют множество промежуточных блоков зашифрованного текста, в которых первый промежуточный блок зашифрованного текста соответствует зашифрованному произвольному одноразовому числу, и остальные промежуточные зашифрованные тексты вычисляются итерационно путем шифрования множества промежуточных блоков открытого текста вторым ключом, причем каждый промежуточный блок открытого текста является комбинацией одного из множества блоков открытого текста и предыдущего промежуточного блока зашифрованного текста; определяют множество блоков зашифрованного текста с использованием множества промежуточных блоков зашифрованного текста и множества шумовых блоков, в которых первый блок зашифрованного текста является тем же самым, что и первый промежуточный блок зашифрованного текста, и остальные блоки зашифрованного текста получают путем объединения соответствующего промежуточного блока зашифрованного текста с соответствующим шумовым блоком; вычисляют значение контрольной суммы входного значения на основе множества блоков открытого текста и промежуточного блока зашифрованного текста, соответствующего последнему блоку открытого текста; вычисляют значение контрольной суммы выходного значения на основе множества блоков зашифрованного текста и шумового блока; вычисляют тег аутентификации путем шифрования значения контрольной суммы входного значения вторым ключом, и объединяют зашифрованное значение контрольной суммы входного значения с контрольной суммой выходного значения; заменяют каждый из множества блоков зашифрованного текста, которые определены позицией открытого текста, с соответствующим блоком открытого текста; и добавляют тег аутентификации.
14. Устройство шифрования и аутентификации данных, содержащее по меньшей мере, один элемент памяти; и по меньшей мере, один элемент обработки, конфигурированный для выполнения набора команд, сохраненных в элементе памяти, причем указанный набор команд предназначен для использования произвольного одноразового числа и первого ключа для определения множества шумовых блоков; объединения каждого из множества блоков данных, которые не определены позицией открытого текста в наборе позиций открытого текста, с соответствующим шумовым блоком для определения множества промежуточных блоков зашифрованного текста; обозначения каждого из множества блоков данных, которые определены позицией открытого текста в наборе позиций открытого текста, как блока открытого текста в множестве блоков открытого текста; для каждой позиции открытого текста в наборе позиций открытого текста объединения соответствующего блока открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования промежуточного блока открытого текста, и шифрования промежуточного блока открытого текста для формирования промежуточного блока зашифрованного текста, соответствующего позиции открытого текста; для каждой позиции не в наборе позиций открытого текста, дешифрования соответствующего промежуточного блока зашифрованного текста для формирования соответствующего промежуточного блока открытого текста и объединения соответствующего промежуточного блока открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования блока открытого текста для каждой позиции не в наборе позиций открытого текста; определения множества вторичных блоков зашифрованного текста, где каждый из множества вторичных блоков зашифрованного текста соответствует позиции открытого текста в наборе позиций открытого текста и сформирован путем объединения соответствующего промежуточного блока зашифрованного текста с соответствующим шумовым блоком; вычисления значения контрольной суммы входного значения путем объединения последнего промежуточного блока зашифрованного текста и множества блоков данных, которое не определено позицией открытого текста в наборе позиций открытого текста; вычисления значения контрольной суммы выходного значения путем объединения шумового блока и множества вторичных блоков зашифрованного текста; и проверки тега аутентификации.
15. Способ шифрования и аутентификации данных как единого объекта, содержащий этапы, на которых определяют набор позиций открытого текста и набора позиций зашифрованного текста, причем набор позиций открытого текста предназначен для указания того, что блок в позиции открытого текста не зашифрован, и набор позиций зашифрованного текста предназначен для указания того, что блок в позиции зашифрованного текста зашифрован; если блок данных находится в позиции открытого текста, то устанавливают блок открытого текста равным блоку данных; выполняют операцию "исключающее ИЛИ" над блоком открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования промежуточного блока открытого текста; шифруют промежуточный блок открытого текста для формирования промежуточного блока зашифрованного текста; если блок данных находится в позиции зашифрованного текста, то выполняют операцию "исключающее ИЛИ" над блоком данных с последовательностью, соответствующей блоку данных из набора последовательностей, для формирования соответствующего промежуточного блока зашифрованного текста; дешифруют соответствующий промежуточный блок зашифрованного текста для формирования промежуточного блока открытого текста; выполняют операцию "исключающее ИЛИ" над промежуточным блоком открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования блока открытого текста; вычисляют тег аутентификации с использованием всех промежуточных блоков; вычисляют последний блок зашифрованного текста с использованием тега аутентификации, первой последовательности из набора последовательностей и последней последовательности из набора последовательностей; и передают блоки зашифрованного текста и тег аутентификации.
16. Способ защищенных передач данных, в котором первую часть передаваемых данных посылают как открытый текст, вторую часть передаваемых данных посылают как зашифрованный текст, и все передаваемые данные аутентифицируют, причем указанный способ содержит этапы, на которых генерируют набор позиций открытого текста; шифруют первую часть передаваемых данных и вторую часть передаваемых данных в зашифрованный текст, причем первая часть передаваемых данных определена набором позиций открытого текста, и вторая часть передаваемых данных не связана ни с одной из набора позиций открытого текста; генерируют значение контрольной суммы входного значения с использованием передаваемых данных, которые не связаны ни с одной из набора позиций открытого текста; генерируют значение контрольной суммы выходного значения с использованием зашифрованного текста первой части передаваемых данных; генерируют тег аутентификации с использованием значения контрольной суммы входного значения и значения контрольной суммы выходного значения; и передают открытый текст, зашифрованный текст и тег аутентификации, причем открытый текст является первой частью передаваемых данных, указанной набором позиций открытого текста.
17. Способ дешифрования и проверки множества полученных блоков передачи, содержащий этапы, на которых определяют, определен ли каждый из множества полученных блоков передачи позицией открытого текста из набора позиций открытого текста; дешифруют множество полученных блоков передачи, при этом дешифрование содержит этапы, на которых, если блок не указан позицией открытого текста, то генерируют набор промежуточных блоков зашифрованного текста, дешифруют набор промежуточных блоков зашифрованного текста для генерации набора промежуточных блоков открытого текста, и генерируют набор блоков открытого текста; если блок определен позицией открытого текста, то объединяют каждый из множества полученных блоков передачи, указанных позицией открытого текста, с предыдущим промежуточным блоком зашифрованного текста, для формирования промежуточного блока открытого текста, и шифруют промежуточный блок открытого текста для получения промежуточного блока зашифрованного текста; и проверяют множество полученных блоков передачи, причем проверка содержит этапы, на которых формируют значение контрольной суммы входного значения с использованием набора блоков открытого текста, не указанных позицией открытого текста; формируют значение контрольной суммы выходного значения с использованием набора вторичных блоков зашифрованного текста, причем вторичные блоки зашифрованного текста получены из набора промежуточных блоков зашифрованного текста, не связанных с позицией открытого текста; и используют значение контрольной суммы входного значения и значение контрольной суммы выходного значения для сравнения с тегом аутентификации.
18. Способ по п.17, в котором дешифрование выполняется параллельно проверке.
19. Устройство шифрования и аутентификации данных, содержащее по меньшей мере, один элемент памяти для сохранения набора блоков открытого текста; по меньшей мере, один элемент объединения для объединения входных блоков; по меньшей мере, один элемент шифрования для выполнения криптографической функции над входными значениями; по меньшей мере, один элемент выбора для выбора блока открытого текста или блока зашифрованного текста для передачи в определенной позиции в потоке передачи; по меньшей мере, два генератора контрольной суммы; и по меньшей мере, один элемент обработки, причем, по меньшей мере, одна обработка предназначена для управления, по меньшей мере, одним элементом памяти, по меньшей мере, одним элементом объединения, по меньшей мере, одним элементом шифрования, по меньшей мере, двумя генераторами контрольной суммы, и, по меньшей мере, одним элементом выбора, так что первая часть, по меньшей мере одного элемента объединения предназначена для объединения блока открытого текста с предыдущим промежуточным блоком зашифрованного текста, для получения промежуточного блока открытого текста, первая часть по меньшей мере одного элемента шифрования предназначена для генерации текущего промежуточного блока зашифрованного текста из промежуточного блока открытого текста, вторая часть, по меньшей мере, одного элемента объединения, предназначена для получения блока зашифрованного текста путем объединения текущего промежуточного блока зашифрованного текста с шумовым блоком, первый генератор контрольной суммы предназначен для вывода первой контрольной суммы из набора указанных блоков открытого текста, вторая часть, по меньшей мере, одного элемента шифрования предназначена для шифрования первой контрольной суммы, второй генератор контрольной суммы предназначен для вывода второй контрольной суммы из набора указанных блоков зашифрованного текста, и третья часть, по меньшей мере, одного элемента объединения предназначена для объединения зашифрованной первой контрольной суммы и второй контрольной суммы для формирования тега аутентификации.
20. Устройство дешифрования и проверки передачи данных, содержащее по меньшей мере, один элемент памяти для сохранения набора блоков передачи данных; по меньшей мере, один элемент объединения для объединения входных блоков; по меньшей мере, один элемент шифрования для выполнения первой криптографической функции над входным значением; по меньшей мере, один элемент дешифрования для выполнения второй криптографической функции над входным значением, причем вторая криптографическая функция является обратной первой криптографической функции; по меньшей мере, один переключающий элемент для выбора выходного значения, по меньшей мере, одного элемента шифрования или выходного значения, по меньшей мере, одного элемента объединения; по меньшей мере, два генератора контрольной суммы для генерации контрольной суммы входного значения на основе указанного набора блоков открытого текста, и контрольной суммы выходного значения на основе набора вторичных блоков зашифрованного текста; и по меньшей мере, один элемент обработки, при этом, по меньшей мере, одна обработка предназначена для управления по меньшей мере одним элементом памяти, по меньшей мере одним элементом объединения, по меньшей мере, одним элементом шифрования, по меньшей мере, одним элементом дешифрования, по меньшей мере, двумя генераторами контрольной суммы, и, по меньшей мере, одним переключающим элементом, так что первая часть, по меньшей мере, одного элемента объединения предназначена для объединения блока передачи данных с шумовым блоком для формирования промежуточного блока зашифрованного текста, по меньшей мере, один элемент дешифрования предназначен для дешифрования промежуточного блока зашифрованного текста для формирования промежуточного блока открытого текста, вторая часть, по меньшей мере, одного элемента объединения предназначена для объединения промежуточного блока открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования блока открытого текста, третья часть, по меньшей мере одного элемента объединения предназначена для объединения блока передаваемых данных с предыдущим промежуточным блоком зашифрованного текста для формирования второго промежуточного блока открытого текста, по меньшей мере, один элемент шифрования предназначен для шифрования второго промежуточного блока открытого текста для формирования второго промежуточного блока зашифрованного текста, по меньшей мере, один переключающий элемент предназначен для выбора первого промежуточного блока зашифрованного текста или второго промежуточного блока зашифрованного текста, и вторая часть, по меньшей мере, одного элемента объединения предназначена для объединения шумового блока со вторым промежуточным блоком зашифрованного текста для формирования вторичного блока зашифрованного текста.
21. Устройство шифрования и проверки данных для защищенных передач данных, причем первая часть передаваемых данных посылается как открытый текст, вторая часть передаваемых данных посылается как зашифрованный текст, и вся передача данных аутентифицируется, причем устройство содержит средство для генерации набора позиций открытого текста; средство для шифрования первой части передаваемых данных и второй части передаваемых данных в зашифрованный текст, причем первая часть передаваемых данных определена набором позиций открытого текста, и вторая часть передаваемых данных не связана ни с одной из набора позиций открытого текста; средство для генерации значения контрольной суммы входного значения с использованием передаваемых данных, которые не связаны ни с одной из набора позиций открытого текста; средство для генерации значения контрольной суммы выходного значения с использованием зашифрованного текста первой части передаваемых данных; средство для генерации тега аутентификации с использованием значения контрольной суммы входного значения и значения контрольной суммы выходного значения; и средство для передачи открытого текста, зашифрованного текста и тега аутентификации, причем открытый текст является первой частью передаваемых данных, указанных набором позиций открытого текста.
22. Устройство дешифрования и проверки данных для дешифрования и проверки множества полученных блоков передачи, содержащее средство для определения того, определен ли каждый из множества полученных блоков передачи позицией открытого текста из набора позиций открытого текста; средство для дешифрования множества полученных блоков передачи, причем дешифрование включает:
если блок не указан позицией открытого текста, то генерируется набор промежуточных блоков зашифрованного текста, дешифруется набор промежуточных блоков зашифрованного текста для генерации набора промежуточных блоков открытого текста, и генерируется набор блоков открытого текста;
если блок определен позицией открытого текста, то определяется каждый из множества полученных блоков передачи, указанных позицией открытого текста, с предыдущим промежуточным блоком зашифрованного текста для формирования промежуточного блока открытого текста, и промежуточный блок открытого текста зашифровывается для получения промежуточного блока зашифрованного текста; и
средство для проверки множества полученных блоков передачи путем формирования значения контрольной суммы входного значения с использованием набора блоков открытого текста, не указанных позицией открытого текста, формирования значения контрольной суммы выходного значения с использованием набора вторичных блоков зашифрованного текста, причем вторичные блоки зашифрованного текста получены из набора промежуточных блоков зашифрованного текста, не связанных с позицией открытого текста, и использования значения контрольной суммы входного значения и значения контрольной суммы выходного значения для сравнения с тегом аутентификации.
23. Машиночитаемый носитель, содержащий команды для защищенных передач данных, причем первая часть передаваемых данных посылается как открытый текст, вторая часть передаваемых данных посылается как зашифрованный текст, и вся передача данных аутентифицируется, причем при исполнении команд процессором процессор генерирует набор позиций открытого текста; шифрует первую части передаваемых данных и вторую части передаваемых данных в зашифрованный текст, причем первая часть передаваемых данных определена набором позиций открытого текста, и вторая часть передаваемых данных не связана ни с одной из набора позиций открытого текста; генерирует значение контрольной суммы входного значения с использованием передаваемых данных, которые не связаны ни с одной из набора позиций открытого текста;
генерирует значение контрольной суммы выходного значения с использование зашифрованного текста первой части передаваемых данных; генерирует тег аутентификации с использованием значения контрольной суммы входного значения и значения контрольной суммы выходного значения; передает открытый текст, зашифрованный текст и тег аутентификации, причем открытый текст является первой частью передаваемых данных, указанных набором позиций открытого текста.
24. Машиночитаемый носитель, содержащий команды для дешифрования и проверки множества полученных блоков передачи, причем при исполнении команд процессором процессор определяет, указан ли каждый из множества полученных блоков передачи позицией открытого текста из набора позиций открытого текста; дешифрует множество полученных блоков передачи, причем дешифрование включает:
если блок не указан позицией открытого текста, то генерирует набор промежуточных блоков зашифрованного текста, дешифрует набор промежуточных блоков зашифрованного текста для генерации набора промежуточных блоков открытого текста, и генерирует набор блоков открытого текста;
если блок указан позицией открытого текста, то соединяют каждый из множества полученных блоков передачи, указанных позицией открытого текста, с предыдущим промежуточных блоком зашифрованного текста для формирования промежуточного блока открытого текста, и зашифровывает промежуточных блок открытого текста для получения промежуточного блока зашифрованного текста; и
проверяет множество полученных блоков передачи путем формирования значения контрольной суммы входного значения с использованием набора блоков открытого текста, не указанных позицией открытого текста, формирует значение контрольной суммы выходного значения с использованием набора вторичных блоков зашифрованного текста, причем вторичные блоки зашифрованного текста получены из набора промежуточных блоков зашифрованного текста, не связанных с позицией открытого текста, и использования значения контрольной суммы входного значения и значения контрольной суммы выходного значения для сравнения с тегом аутентификации.
25. Схема шифрования и проверки данных для защищенных передач данных, причем первая часть передаваемых данных посылается как открытый текст, вторая часть передаваемых данных посылается как зашифрованный текст, и вся передача данных аутентифицируется, причем схема выполнена с возможностью генерировать набор позиций открытого текста; шифровать первую часть передаваемых данных и вторую часть передаваемых данных в зашифрованный текст, причем первая часть передаваемых данных определена набором позиций открытого текста, и вторая часть передаваемых данных не связана ни с одной из набора позиций открытого текста; генерировать значение контрольной суммы входного значения с использованием передаваемых данных, которые не связаны ни с одной из набора позиций открытого текста; генерировать значение контрольной суммы выходного значения с использованием зашифрованного текста первой части передаваемых данных; генерировать тег аутентификации с использованием значения контрольной суммы входного значения и значения контрольной суммы выходного значения; и
передавать открытый текст, зашифрованный текст и тег аутентификации, причем открытый текст является первой частью передаваемых данных, указанных набором позиций открытого текста.
26. Схема дешифрования и проверки данных для дешифрования и проверки множества полученных блоков передачи, причем схема выполнена с возможностью определять, указан ли каждый из множества полученных блоков передачи позицией открытого текста из набора позиций открытого текста; дешифровать множество полученных блоков передачи, причем дешифрование включает:
если блок не указан позицией открытого текста, то генерируется набор промежуточных блоков зашифрованного текста, дешифруется набор промежуточных блоков зашифрованного текста для генерации набора промежуточных блоков открытого текста, и генерируется набор блоков открытого текста;
если блок определен позицией открытого текста, то определяется каждый из множества полученных блоков передачи, указанных позицией открытого текста, с предыдущим промежуточным блоком зашифрованного текста для формирования промежуточного блока открытого текста, и промежуточный блок открытого текста зашифровывается для получения промежуточного блока зашифрованного текста;
проверять множество полученных блоков передачи путем формирования значения контрольной суммы входного значения с использованием набора блоков открытого текста, не указанных позицией открытого текста, формировать значение контрольной суммы выходного значения с использованием набора вторичных блоков зашифрованного текста, причем вторичные блоки зашифрованного текста получены из набора промежуточных блоков зашифрованного текста, не связанных с позицией открытого теста, и использования значения контрольной суммы входного значения и значения контрольной суммы выходного значения для сравнения с тегом аутентификации.
Описание изобретения к патенту
ОБЛАСТЬ ТЕХНИКИ
Данное изобретение относится к области систем обработки данных. В частности, к улучшенной защите в системах обработки данных.
УРОВЕНЬ ТЕХНИКИ
В множестве разнообразных областей, таких, например, как электронная торговля, связь и телекоммуникация, защита является главным фактором. Меры по защите способствуют идентифицируемости, равнодоступности, точности, конфиденциальности, удобству использования и другим критериям, которые желательны для систем обработки данных и информационных систем, используемых в этих областях. Криптографические методы, которые обеспечивают такую защиту, обычно распределяются по категориям согласно двум целям: шифрованию и аутентификации. Шифрование является методом преобразования данных, таким образом, чтобы сделать их недоступными для чтения неавторизованными сторонами. Аутентификации является методом подтверждения целостности данных. Подтверждение целостности данных включает проверку тождества автора данных и/или проверки, были ли данные изменены.
Системы шифрования часто упоминаются как криптосистемы и могут быть симметричными или асимметричными. Симметричная система шифрования использует секретный ключ для шифрования информации и тот же самый секретный ключ для расшифровки зашифрованной информации. Асимметричная система шифрования, такая как криптосистема с открытым ключом, использует первый ключ для шифрования информации и использует другой ключ для расшифровки зашифрованной информации.
Во многих симметричных криптосистемах один ключ используется для функции шифрования, и отдельный ключ используется для функции аутентификации. Следовательно, в системах обработки данных, использующих симметричную криптосистему, шифрование и аутентификация выполняются как две отдельные процедуры. Так как аутентификация требует приблизительно такого объема обработки, как и шифрование, общий объем обработки эквивалентен объему обработки, требуемому для того, чтобы зашифровать данные дважды. В системах обработки данных, которые работают в ограниченной по мощности или ограниченной по аппаратным средствам среде, такой, как, например, мобильный телефон, личный цифровой помощник или другое переносное устройство связи, было бы желательно иметь криптосистему, которая может выполнять шифрование и аутентификацию как одну процедуру для уменьшения вычислительной нагрузки на устройство или увеличения скорости, с которой устройство выполняет кодирование и аутентификацию.
В статье "Encryption Modes with Almost Free Message Integrity," написанной Charanjit Jutla, Advances in Cryptology, EUROCRYPT 2001, Lecture notes in Computer Science, vol. 2045, Springer-Verlag, 2001, представлены криптосистемы, которые могут шифровать сообщения и аутентифицировать зашифрованные сообщения способом, который требует немногим большей обработки, чем одно шифрование. Другими словами, шифрование и аутентификация могут выполняться с использованием одной процедуры. Следовательно, количество ресурсов для обработки, требуемой для обеспечения защиты, уменьшено.
Криптосистемы Jutla разработаны для шифрования всех данных, которые должны быть переданы. Однако требование, чтобы все данные сообщения были зашифрованы, является нежелательным в некоторых приложениях. Например, в протоколах связи типа IPSec шифрование всех данных является неэффективным. Часть заголовка данных должна передаваться в незашифрованном виде для целей адресации. Основы IPSec определены в RFC (Запрос на комментарий, серия документов IETF) 1825 «Security Architecture for the Internet Protocol», RFC 1826 «IP Authentication Header», и RFC 1827 «IP Encapsulating Security Payload (ESP)», все были представлены R.Atkinson в августе 1995.
Следовательно, есть насущная потребность в надежной и эффективной системе для шифрования и аутентификации данных, в которых не все биты данных сообщения должны быть зашифрованы.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Представлены способы и устройство, направленные на потребности, заявленные выше. Более определенно заявлены способы и устройство, обеспечивающие возможность передачи некоторой части данных сообщения в виде открытого текста, передачи некоторой части данных сообщения в виде зашифрованного текста и использования единственного тега аутентификации для проверки как части открытого текста, так и части зашифрованного текста данных сообщения.
В одном аспекте представлен способ для шифрования и аутентификации данных как единой процедуры, при этом способ содержит: упорядочивание данных в множество открытых текстовых блоков, каждый размером, соответствующим размеру блока шифра; определение, по меньшей мере, одной позиции открытого текста, для которого, по меньшей мере, один блок зашифрованного текста будет точно таким же, что и соответствующий блок открытого текста; определение множества шумовых блоков с использованием значения одноразового номера и первого ключа; определение множества промежуточных блоков зашифрованного текста, в которых первый промежуточный блок зашифрованного текста соответствует зашифрованному одноразовому номеру, и остальные промежуточные зашифрованные тексты вычисляются итерационно путем шифрования множества промежуточных блоков открытого текста вторым ключом, при этом каждый промежуточный блок открытого текста является комбинацией одного из множества блоков открытого текста и предыдущего промежуточного блока зашифрованного текста; определение множества блоков зашифрованного текста с использованием множества промежуточных блоков зашифрованного текста и множества шумовых блоков, при этом первый блок зашифрованного текста является тем же самым, что и первый промежуточный блок зашифрованного текста, и оставшиеся блоки зашифрованного текста получены объединением соответствующего промежуточного блока зашифрованного текста с соответствующим шумовым блоком; вычисление значения контрольной суммы входного значения на основе множества блоков открытого текста и промежуточного блока зашифрованного текста, соответствующего последнему блоку открытого текста; вычисление значения контрольной суммы выходного значения на основе множества блоков зашифрованного текста и шумового блока; вычисление тега аутентификации с помощью шифрования контрольной суммы входного значения вторым ключом и объединения зашифрованного значения контрольной суммы входного значения с контрольной суммой выходного значения; замена каждого из множества блоков зашифрованного текста, которые определены позицией открытого текста с соответствующим блоком открытого текста; и добавление тега аутентификации.
В другом аспекте представлен способ для дешифрования и проверки множества блоков данных, сопровождаемых тегом аутентификации, где определен набор позиций открытого текста, и указанный способ содержит: использование значения одноразового номера и первого ключа для определения множества шумовых блоков; объединение каждого из множества блоков данных, который не определен позицией открытого текста в наборе позиций открытого текста, с соответствующим шумовым блоком для определения множества промежуточных блоков зашифрованного текста; обозначение каждого из множества блоков данных, который определен позицией открытого текста в наборе позиций открытого текста, как блока открытого текста в множестве блоков открытого текста; для каждой позиции открытого текста в наборе позиций открытого текста объединения соответствующего блока открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования промежуточного блока открытого текста и шифрования промежуточного блока открытого текста для формирования промежуточного блока зашифрованного текста, соответствующего позиции открытого текста; для каждой позиции не в наборе позиций открытого текста дешифрование соответствующего промежуточного блока зашифрованного текста для формирования связанного промежуточного блока открытого текста и объединение связанного промежуточного блока открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования блока открытого текста для каждой позиции не в наборе позиций открытого текста; определение множества вторичных блоков зашифрованного текста, где каждый из множества вторичных блоков зашифрованного текста соответствует позиции открытого текста в наборе позиций открытого текста и формируется с помощью объединения соответствующего промежуточного блока зашифрованного текста с соответствующим шумовым блоком; вычисление значения контрольной суммы входного значения путем объединения последнего промежуточного блока зашифрованного текста и множества блоков данных, которые не определены позицией открытого текста в наборе позиций открытого текста; вычисление значения контрольной суммы выходного значения путем объединения шумового блока и множества вторичных блоков зашифрованного текста; и проверка тега аутентификации.
В другом аспекте представлен способ для защищенной передачи данных, в котором первую часть передаваемых данных посылают как открытый текст, вторую часть передаваемых данных посылают как зашифрованный текст, и все передаваемые данные аутентифицируются, причем указанный способ содержит: генерацию набора позиций открытого текста; шифрование первой части передаваемых данных и второй части передаваемых данных в зашифрованный текст, где первая часть передаваемых данных определена набором позиций открытого текста, и вторая часть передаваемых данных не связана ни с одним из набора позиций открытого текста; генерацию значения контрольной суммы входного значения с использованием передаваемых данных, которые не связаны ни с одной из набора позиций открытого текста; генерацию значения контрольной суммы выходного значения с использованием зашифрованного текста первой части передаваемых данных; генерацию тега аутентификации с использованием значения контрольной суммы входного значения и значения контрольной суммы выходного значения; и передачу открытого текста, зашифрованного текста, и тега аутентификации, где открытый текст является первой частью передаваемых данных, указанной набором позиций открытого текста.
В другом аспекте представлен способ для дешифрования и проверки множества полученных блоков передачи, причем указанный способ содержит: определение того, определен ли каждый из множества полученных блоков передачи позицией открытого текста из набора позиций открытого текста; дешифрование множества полученных блоков передачи, причем указанное дешифрование содержит следующее: если блок не определен позицией открытого текста, то генерируется набор промежуточных блоков зашифрованного текста, дешифруется набор промежуточных блоков зашифрованного текста для генерации набора промежуточных блоков открытого текста и генерируется набор блоков открытого текста; если блок определен позицией открытого текста, то объединяется каждый из множества полученных блоков передачи, указанных позицией открытого текста с предыдущим промежуточным блоком зашифрованного текста для формирования промежуточного блока открытого текста, и шифрование промежуточного блока открытого текста для получения промежуточного блока зашифрованного текста; и проверка множества полученных блоков передачи, причем указанная проверка содержит: формирование значения контрольной суммы входного значения с использованием набора блоков открытого текста, не указанных позицией открытого текста; формирование значения контрольной суммы выходного значения с использованием набора вторичных блоков зашифрованного текста, где вторичные блоки зашифрованного текста получены из набора промежуточных блоков зашифрованного текста, не связанных с позицией открытого текста; и использование значения контрольной суммы входного значения и значения контрольной суммы выходного значения для сравнения с тегом аутентификации.
В другом аспекте представлено устройство для защищенной передачи данных, где первую часть передаваемых данных посылают как открытый текст, вторую часть передаваемых данных посылают как зашифрованный текст, и все передаваемые данные аутентифицируются, причем указанное устройство содержит: средство для генерации набора позиций открытого текста; средство для шифрования первой части передаваемых данных и второй части передаваемых данных в зашифрованный текст, причем первая часть передаваемых данных определена набором позиций открытого текста, и вторая часть передаваемых данных не связана ни с одной из набора позиций открытого текста; средство для генерации значения контрольной суммы входного значения с использованием передаваемых данных, которые не связаны ни с одной из набора позиций открытого текста; средство для генерации значения контрольной суммы выходного значения с использованием зашифрованного текста первой части передаваемых данных; средство для генерации тега аутентификации с использованием значения контрольной суммы входного значения и значения контрольной суммы выходного значения; и средство для передачи открытого текста, зашифрованного текста и тега аутентификации, где открытый текст является первой частью передаваемых данных, указанной набором позиций открытого текста.
В другом аспекте представлено устройство для дешифрования и проверки множества полученных блоков передачи, причем указанное устройство содержит: средство для определения того, определен ли каждый из множества полученных блоков передачи позицией открытого текста из набора позиций открытого текста; средство для дешифрования множества полученных блоков передачи, причем дешифрование содержит следующее: если блок не указан позицией открытого текста, то генерируется набор промежуточных блоков зашифрованного текста, дешифруется набор промежуточных блоков зашифрованного текста для генерации набора промежуточных блоков открытого текста и генерируется набор блоков открытого текста; если блок определен позицией открытого текста, то объединяется каждый из множества полученных блоков передачи, указанных позицией открытого текста, с предыдущим промежуточным блоком зашифрованного текста для формирования промежуточного блока открытого текста, и шифруется промежуточный блок открытого текста для получения промежуточного блока зашифрованного текста; и средство для проверки множества полученных блоков передачи с помощью формирования значения контрольной суммы входного значения с использованием набора блоков открытого текста, не указанных позицией открытого текста, формирование значения контрольной суммы выходного значения с использованием набора вторичных блоков зашифрованного текста, причем вторичные блоки зашифрованного текста получены из набора промежуточных блоков зашифрованного текста, не связанных с позицией открытого текста, и использование значения контрольной суммы входного значения и значения контрольной суммы выходного значения для сравнения с тегом аутентификации.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1A, 1B, и 1C - блок-схемы базовой криптосистемы, симметричной системы шифрования и асимметричной системы шифрования.
Фиг.2A и 2B - блок-схемы симметричной системы аутентификации и асимметричной аутентификации.
Фиг.3 - блок-схемы режима связывания зашифрованных блоков с обеспечением целостности (Integrity Aware Cipher-Block Chaining Mode).
Фиг.4A - блок-схема режима CBC-IO.
Фиг.4B - блок-схема аппаратных средств для реализации режима CBC-IO.
Фиг.5 - блок-схема дешифрования и проверки сообщения, которое было зашифровано и аутентифицировано в режиме CBC-IO.
Фиг.6A - блок-схема аппаратных средств для выполнения дешифрования и проверки сообщения, которое было зашифровано и аутентифицировано в режиме CBC-IO.
Фиг.6В, 6С и 6D - блок-схемы различных вариантов воплощений для проверки сообщения, зашифрованного и аутентифицированного в режиме CBC-IO.
ПОДРОБНОЕ ОПИСАНИЕ
Шифрование приводит данные в состояние, невозможное для прочтения неавторизованными сторонами. Исходные данные сообщения упоминаются как сообщение с открытым текстом или открытый текст. Зашифрованное сообщение называют зашифрованным текстом, в котором шифрование включает любые средства преобразования открытого текста в зашифрованный текст, например, блочные шифры, хеш-функции или любая другая криптографическая функция. Дешифрование включает любые средства преобразования зашифрованного текста в открытый текст, то есть восстанавления исходного сообщения. Фиг.1A иллюстрирует базовую криптосистему 10, разработанную для шифрования. Сообщение 11 с открытым текстом обрабатывает схема 12 шифрования для формирования зашифрованного текста 13. Зашифрованный текст 13 после этого передается через канал связи (не показан) и обрабатывается схемой 14 дешифрования в другом месте (не показано) для восстановления открытого текста 15. Открытый текст и зашифрованный текст могут относиться к любым данным, включая аудио- и видеоданные, представленные в цифровой форме.
Криптоанализ является методом преодоления защиты, обеспечиваемой криптосистемами. Объект, выполняющий криптоанализ, известен в данной области техники как противник или атакующая сторона. Криптоанализ схемы шифрования направлен на дешифрование неавторизованного сообщения. Криптоанализ схемы аутентификации направлен на структуру сообщения, которое может быть проверено как посланное кем-то еще.
Криптосистема основана на секретах. Группа объектов совместно использует секрет, если объект вне этой группы не может получить секрет, не расходуя весьма большое количество ресурсов. Такой секрет служит ассоциацией защиты внутри группы объектов.
Как правило, секрет включает ключ или набор ключей, которые измеряются в битах. Чем длиннее ключ, тем более криптозащищенным будет ключ. Симметричная криптосистема использует один и тот же секретный ключ как для шифрования сообщения, так и для дешифрования сообщения. Симметричная система 20 шифрования проиллюстрирована на фиг.1B, в которой шифрование и дешифрование используют тот же самый секретный ключ. Открытый текст 21 обрабатывает схема 22 шифрования. Секретный ключ 23 используется в схеме 22 шифрования для формирования зашифрованного текста 24. Шифрованный текст 24 передается по каналу связи (не показан) в другое место, в котором схема 25 дешифрования использует тот же самый секретный ключ 23 для формирования открытого текста 26.
Напротив, асимметричная криптосистема использует первый ключ для шифрования сообщения и использует другой ключ для его дешифрования. Фиг.1C иллюстрирует асимметричную систему шифрования, известную как криптосистему 30 с открытым ключом, в которой открытый ключ предназначен для шифрования, и секретный ключ предназначен для дешифрования. Открытый ключ опубликован, так, чтобы любая сторона могла использовать открытый ключ для шифрования любого сообщения. Однако только секретный, неопубликованный ключ может использоваться для дешифрования сообщения, зашифрованного с открытым ключом. Открытый текст 31 введен в схему 32 шифрования, которая использует открытый ключ 33, который связан с намеченной стороной и получен из публикации. Результирующий зашифрованный текст 34 передается по каналу связи (не показан) к намеченной стороне. Намеченная сторона использует секретный ключ 36 в схеме 35 дешифрования для преобразования зашифрованного текста 34 в открытый текст 37. Симметричное шифрование, как правило, намного быстрее чем асимметричное шифрование. Однако передача секретного ключа от отправителя получателю проблематична из-за возможности перехвата противником. Одно из решений состоит в том, чтобы использовать третью доверенную сторону для хранения ключей, которая будет совместно использовать ключ только с авторизованной стороной. Варианты воплощения, описанные здесь, не обращаются к этой проблеме, и предполагается, что отправитель и получатель совместно используют секретный ключ.
Целостность зашифрованного текста, сформированного вышеупомянутыми криптосистемами, обычно обеспечивается добавлением некоторых данных аутентификации к передаваемому зашифрованному тексту. Данные аутентификации обычно вычисляются как функция содержания сообщения и секретного ключа целостности.
В симметричной системе аутентификации данные аутентификации известны как код идентификации сообщения (MAC). MAC вычисляется как функция содержания сообщения и секретного ключа целостности, в которой отправитель и намеченный адресат совместно используют секретный ключ целостности. Отправитель передает сообщение и добавляет в конец MAC. Сообщение может быть открытым текстом или зашифрованным текстом. Получатель вновь вычисляет MAC из сообщения и соглашается с целостностью сообщения, только если вновь вычисленный MAC согласуется с переданным MAC. Теоретически, только отправитель сообщения может генерировать правильную сигнатуру для этого сообщения, таким образом, аутентифицируя сообщение для получателя.
Симметричная система 40 аутентификации проиллюстрирована на фиг.2A, в которой подписание и проверка используют один и тот же секретный ключ. Сообщение 41 обрабатывается схемой 42 аутентификации, которая использует ключ 43 для формирования данных 44 аутентификации. Данные 44 аутентификации и сообщение 41 передаются затем через канал связи (не показан) к другой стороне (не показана). Сообщение 41 обрабатывается схемой 45 проверки с использованием того же самого ключа 43 для определения данных 46 аутентификации. Данные 46 аутентификации, которые генерированы получающей стороной, сравниваются с данными 44 аутентификации, которые получены по каналу связи.
В асимметричной системе аутентификации данные аутентификации известны как цифровая подпись. Цифровая подпись вычисляется как функция содержания сообщения и секретного ключа целостности отправителя. Отправитель передает цифровую подпись стороне получателя, которая после этого выполняет проверку цифровой подписи с использованием открытого ключа отправителя. Асимметричная система 50 аутентификации проиллюстрирована на фиг.2B, в которой подписание использует секретный ключ, и проверка использует соответствующий открытый ключ.
В некоторых схемах, MAC или цифровая подпись вычисляются из «дайджеста сообщения», который содержит уникальное математическое описание секретного сообщения. Дайджест сообщения является меньшим по длине, чем исходное сообщение, так что вычисление дайджеста сообщения является более легко выполнимым. Зависимость MAC или цифровой подписи от секретного сообщения или от дайджеста сообщения гарантирует, что данные аутентификации не останутся постоянными, так как секретное сообщение или дайджест сообщения не являются постоянными. Если данные аутентификации все-таки остаются постоянными для множества сообщений, то противник может легко приспособить ложные данные аутентификации.
Дайджест сообщения часто вычисляется с использованием криптографической хеш-функции. Криптографическая хеш-функция вычисляет значение (содержащее установленное число бит) из любого ввода, вне зависимости от длины ввода. Одним свойством криптографической хеш-функции является то, что по данному значению вывода в вычислительном отношении трудно определить ввод, который привел к этому выводу. Примером криптографической хеш-функции является SHA-1, как описано в «Secure Hash Standard», FIPS PUB 180-1, опубликованным Federal Information Processing Standards Publications (FIPS PUBS) и выпущенным National Institute of Standards and Technology (NIST).
Блочный шифр является симметричной схемой шифрования, для которой ввод в схему всегда является установленным по длине в битах. Длина известна как размер блока блочного шифра. Примером блочного шифра является Data Encryption Standard (DES), описанный в «Data Encryption Standard», FIPS PUB 46-1, опубликованный FIPS PUBS и выпущенный NIST. DES имеет размер блока 64 бита. Другим примером блочного шифра является Advanced Encryption Standard (AES), описанный в «Advanced Encryption Standard», FIPS PUB 197, опубликованный FIPS PUBS и выпущенный NIST. AES имеет размер блока 128 бит.
Длина ключа блочного шифра является длиной ключа в битах. Однако энтропия ключа равна логарифму (по основанию 2) числа возможных значений для ключа. Энтропия также записывается в терминах битов. Например, DES имеет ключ 64 бита, с 8 из этих битов, используемых как контрольные суммы для обнаружения ошибки в ключевой передаче. Следовательно, энтропия ключа DES равна (64 - 8) = 56 бит.
Учитывая несколько пар входных значений и соответствующих выходных значений блочного шифра, ключ блочного шифра может быть получен противником, который проверяет все возможные значения ключей для определения того, какие входные значения приводят к правильным выходным значениям. Этот тип атаки известен как исчерпывающий поиск ключа. Вычислительная сложность такой атаки определяется числом операций шифрования, требуемых для реализации атаки. Следовательно, атака для получения k-битного ключа требует приблизительно 2k операций шифрования для извлечения ключа блочного шифра при исчерпывающем поиске ключа.
Блочные шифры полезны для создания других криптографических объектов. Способ применения блочного шифра называется режимом работы. Четыре режима работы для DES стандартизированы и описаны в «DES Modes of Operation», FIPS PUB 81, опубликованном FIPS PUBS и выпущенном NIST. Этими четырьмя режимами являются Electronic Codebook (ECB), Cipher Bock Chaining (CBC), Output Feedback (OFB) и Cipher Feedback (CFB). Для иллюстративных целей, здесь описаны только ECB и CBC для шифрования последовательности блоков открытого текста P1,..., P m.
В режиме ECB блочный шифр используется для шифрования каждого блока открытого текста в блок зашифрованного текста согласно следующему отношению:
Ci = E k(Pi),
где E K(Pi) обозначает шифрование блока Pi с использованием ключа K. Как используется в дальнейшем, DK(Pi ) обозначает результат дешифрования блока Pi с использованием ключа K.
В режиме CBS над первым блоком открытого текста проводится операция «исключающее ИЛИ» с секретным начальным значением (IV) для формирования зашифрованного результата. Математическое описание этого процесса записано в соответствии с соотношением:
Ci = E K(P1 IV)
После этого над каждым блоком открытого текста проводится операция «исключающее ИЛИ» с предыдущим зашифрованным текстом для шифрования следующим образом:
C i = EK (Pi Ci-1).
Эффективное шифрование и аутентификация могут быть проблематичны в симметричных криптосистемах. До недавнего времени единственное решение для удовлетворения этого требования состояло в использовании примитивного подхода: обеспечить шифрование и аутентификацию как две отдельные функции. Две функции требуют приблизительно равных объемов вычислений, так что использование обеих функций в два раза дороже, чем использование только одной или другой.
В статье «Encryption Modes with Almost Free Message Integrity», Jutla предлагает два способа, которые обеспечивают шифрование и идентификацию, требующую только немного большего количества вычислений, чем одно шифрование или чем одна аутентификация. Эти способы имеют общую форму и используют блочный шифр в качестве криптографического ядра. В криптографическом семействе такой способ также называют «режимом работы». Один из режимов работы Jutla, известных как режим Integrity Aware Parallelizable (Параллелизм с обеспечением целостности) (IAPM), не обсуждается в этом документе. Другие из режимов работы Jutla, известных как Integrity Aware Cipher-Block Chaining (Связывание шифрованных блоков с обеспечением целостности) (IACBC), показаны на фиг.3. IACBC использует два ключа: K0 и Ki. Предположим, что отправитель желает зашифровать и аутентифицировать сообщение, состоящее из (m-1) блоков сообщения от P1 до P m-1. Отправитель устанавливает t равным следующему целому числу, большему чем логарифм (по основанию два) от (m+1). Отправитель выбирает случайное значение r (известное как одноразовый номер или начальное значение), которое зашифровано для формирования блока Co зашифрованного текста. Значения от (r+1) до (r+t) зашифрованы для формирования значений от W 0 до Wt-1, в которых шифрование использует ключ K0. Значения от W0 до Wt-1 тогда используются для получения парных независимых значений от S0 до S m. Значения Si упомянуты здесь как шумовые блоки. Значения S0,...,S m - парные независимые значения, если S 0,...,Sm являются равномерно распределенными n-битными случайными числами со свойством, что для каждой пары Si и Sj, где i j, и каждой пары n-битных констант С1 и С2, вероятность того, что S i=C1 и Sj=C 2, равна 2-2n. Фактическое вычисление от S0 до Sm не является релевантным для понимания IACBC и здесь не описывается. Значения блоков зашифрованного текста от C1 до С m-i получены итерационно для 1 j m-1 согласно соотношениям:
Mi = Pi N i-1,
Ni = EK1(Mi),
Ci = Ni Si,
где ключ K 1 используется для каждого блока зашифрованного текста, и начальное значение N0 установлено в C 0. Значения Mi называются промежуточными блоками открытого текста, и значения Ni называются промежуточными блоками зашифрованного текста. Отправитель после этого вычисляет значение контрольной суммы P m, которое определяется как:
Pm = P1 P2 ... Pm-1.
Тег MAC С m вычисляется из Pm шифрованием (P m Ni-1) с ключом K i и применяя операцию "исключающее ИЛИ" к зашифрованному результату с S0. Математически, вычисление может быть представлено следующим образом:
С m = EK1 (Pm Ni-1) S0.
Отправитель передает C 0... Сm.
Предположим, что получатель получает C'0... С' m. Получатель начинает процесс дешифрования путем дешифрования вначале C'0 для формирования r' с использованием ключа K1. Значения от (r' +1) до (r'+t) шифруются для формирования значений от W'0 до W't-1 с использованием ключа K0. Получатель после этого вычисляет значения от S'0 до S'm. Значения блоков зашифрованного текста от P1 до Pm-i получаются итерационно для 1 i m-1 согласно соотношениям:
N' i = Ci S'i,
M' i = DK1(N'i ),
Pi = N'i-1 M'i,
в которых ключ K 1 используется для каждого блока открытого текста и начальное значение N'0 установлено равным C' 0. Получатель тогда вычисляет значение P' m контрольной суммы как определено ниже:
P' m = P'1 P'2 ... P'm-1
Значение X вычисляется шифрованием результата операции XOR Pm с Nm-1 с использованием ключа K i, и затем применяется операция XOR к зашифрованному результату с S'0. Математически, процесс может быть описан следующим образом:
X = Ek1 (P'm Nm-1) S'0.
Если X и C' m равны, то получатель может быть уверен в целостности зашифрованного сообщения.
Gligor и Donescu в статье «Fast Encryption and Authentication: XCBC Encryption and XEBC Authentication Modes» предложили подобный режим, названый Extended Ciphertext Block Chaining (расширенный режим связывания блоков шифрованного текста) (XCBC режим), который обеспечивает шифрование и аутентификацию с использованием сходного объема вычислений. Главное различие между XCBC и IACBC заключается в формулировке шумовых блоков от S0 до Sm, что не является существенным для этого документа.
Режимы работы IACBC и XCBC имеют некоторые нежелательные свойства. Первым нежелательным свойством является то, что эти режимы требуют, чтобы все данные передавались в зашифрованном виде. В протоколах Интернет типа IPSec нежелательно передавать сообщения, в которых все данные зашифрованы. В частности, заголовки, содержащие адресную информацию, должны посылаться открытыми. Варианты воплощений, описанные здесь, предлагают вариант режимов IACBC И XCBC (называемый в дальнейшем режим CBC-IO), который позволяет посылать блоки данных в виде открытого текста при только небольшом увеличении объема обработки.
Необходимо отметить, что аппаратные средства или программное обеспечение в данных или системах связи могут быть конфигурированы для выполнения различных вариантов воплощения режима CBC-IO. Аппаратные средства могут включать, но не ограничиваясь этим, элементы обработки, которые выполняют набор команд, сохраненных на машиночитаемом носителе информации, например памяти: шифрование, аутентификация, дешифрование и процессы проверки, которые описаны здесь. Кроме того, описаны различные комбинаторные шаги с использованием поразрядного логического оператора "исключающее ИЛИ". Другие воплощения могут использовать операции целочисленного сложения по модулю, в котором два входных значения обрабатываются как бинарные представления целых чисел, промежуточное значение формируется в виде бинарного представления как сумма целых чисел, и выходное значение формируется округлением промежуточного значение до размера блока шифра. Другие групповые операторы также могут использоваться с соответствующими модификациями, однако для простоты иллюстрации здесь описаны только варианты воплощения, использующие операторы «исключающее ИЛИ».
Вариант воплощения режима CBC-IO проиллюстрирован на фиг.4A. Режим работы CBC-IO использует два ключа: K0 и K1 . Предположим, что отправитель желает зашифровать и аутентифицировать сообщение, состоящее из (m-1) блоков сообщения от P 1 до Pm-1.
На этапе 400 отправитель и получатель договариваются о наборе блоков открытого текста, которые будут посланы в незашифрованной форме. Пусть U обозначает набор индексов блоков открытого текста, которые будут посланы в незашифрованной форме, где элементы U упоминаются как позиции открытого текста.
На этапе 402 отправитель выбирает значение одноразового номера r и следует режиму IACBC ИЛИ XCBC для вычисления шумовых блоков от S0 до S m для получения промежуточных зашифрованных текстов от N0 до Nm-i и получения зашифрованных текстов от C0 до С m-i. То есть N0 = C 0 = EKi(r) и значения промежуточных зашифрованных текстов от N0 до N m-i и блоков зашифрованного текста от C 0 до Сm-i получены итерационно для 1 j m-1 согласно соотношениям:
Mi = Pi N i-1,
Ni = EK1(Mi),
Ci = Ni Si.
Необходимо отметить, что ключ K1 используется для каждого блока зашифрованного текста. В альтернативном варианте воплощения значение одноразового номера r может быть предопределенным значением, которое сохраняется отправителем и получателем вместо производного значения.
На этапе 410 отправитель вычисляет значения контрольных сумм CHK_IN и CHK_OUT, которые определяются как:
CHK_IN = ( i U Pi) Nm-1, и
CHK_OUT = ( i U Ci) S0.
На этапе 420 отправитель вычисляет тег MAC Сm путем шифрования CHK_IN ключом K1 и выполняет операцию XOR результата с CHK_OUT. Этот процесс описывается математически следующим образом:
Сm = Ek1 (CHK_IN) CHK_OUT.
На этапе 430 отправитель переустанавливает те значения Ci, в которых i U (то есть те открытые тексты, которые будут посланы незашифрованными), так, чтобы Ci = Pi . На этапе 440 отправитель передает C0...С m.
Режим называют CBC-IO, потому что тег аутентификации вычисляется объединением информации с входным значением и выходным значением последнего шифрования. Этапы генерации тега аутентификации, при использовании режима CBC-IO, отличаются от IACBC генерацией значений CHK_IN и CHK_OUT. Из-за этого различия, процессы дешифрования и проверки у получателя также должны конфигурироваться по-другому.
Фиг.4B является блок-схемой аппаратных средств, которые конфигурированы для исполнения вышеупомянутого режима CBC-IO. Необходимо отметить, что фиг.4B иллюстрирует реализацию, которая может быть альтернативой программной реализации, в которой процессор и память конфигурированы для исполнения набора команд для выполнения вышеупомянутого режима CBC-IO. Элемент памяти 450 сохраняет блоки открытого текста P i, ряд из которых должен быть зашифрован, и все из них должны быть аутентифицированы. Элементы 460A, 460В, 460С и 460D шифрования конфигурированы для выполнения криптографической функции над входными значениями. Только для иллюстративных целей четыре (4) элемента шифрования показаны на фиг.4B для шифровки блоков открытого текста, но специалисту в данной области техники понятно, что больше или меньше элементов шифрования могут быть реализованы без изменения объема варианта воплощения.
В этом варианте воплощения входные значения для элементов 460A, 460В, 460С и 460D шифрования являются значением r одноразового номера для первого шифрующего элемента 460A и промежуточными блоками открытого текста от M1 до Mm-1 индивидуально для каждого соответствующего оставшегося элемента шифрования. Промежуточные блоки M1-M m-1 открытого текста являются выходными значениями элементов 462A, 462B и 462C объединения. В одном аспекте, элементы 462A, 462B и 462C объединения являются вентилями XOR. Выходными значениями элементов 460A, 460В, 460С и 460D шифрования являются промежуточные блоки зашифрованного текста N0-N m-1. Промежуточные блоки зашифрованного текста N 0-Nm-1 объединяются с соответствующими шумовыми блоками S1-Sm-1 с помощью элементов 464A, 464B и 464C объединения. Выходными значениями элементов 464A, 464B и 464C объединения являются блоки зашифрованного текста C1-C m-1.
Блок 470 обработки (или генератор контрольной суммы) конфигурирован для определения значения контрольной суммы CHK_IN с использованием блоков открытого текста, которые должны быть переданы в зашифрованной форме, и последнего промежуточного блока Nm-i зашифрованного текста. Блок 475 обработки (или генератор контрольной суммы) конфигурирован для определения значение контрольной суммы CHK_OUT с использованием первого шумового блока S0 и блоков зашифрованного текста, соответствующих блокам открытого текста, которые должны быть переданы открытыми. Формулы для определения CHK_IN и CHK_OUT описаны выше. CHK_IN тогда является входным значением в элемент 480 шифрования. Выходное значение элемента 480 шифрования после этого объединяется с CHK_OUT с использованием элемента 490 объединения. Выходным значением элемента 490 объединения является последний блок Cm зашифрованного текста, который также используется как тег аутентификации.
Блоки зашифрованного текста от Ci до Сm-i , тег аутентификации Сm, и блоки открытого текста Pi являются входным значением для элемента 495 выбора, который определяет, являются ли блоки, которые передаются, зашифрованным текстом или открытым текстом. Другими словами, те Pi, где i U, передаются наряду с теми Ci, для которых i U.
Фиг.5 является блок-схемой дешифрования и проверки сообщения, которое было зашифровано и аутентифицировано режимом CBC-IO. На этапе 500 получатель получает блоки C' 0...C'm. Необходимо отметить, что для i U C'i был передан незашифрованным. На этапе 510 получатель использует ключ K1 для дешифрования C'0 для получения r'. Значение r' и ключ K0 используются для получения значения шумовых блоков от S' 0 до к S'm.
На этапе 520 итерационная процедура для i, где 1 j m-1, начинается с решения относительно того, есть ли i U. Если i U, то процесс выполнения программы переходит к этапу 530. Если i U, то процесс выполнения программы переходит к этапу 540. На этапе 530 получатель определяет промежуточные зашифрованные тексты N'i для i U. Промежуточные зашифрованные тексты N' i для i U определяются XOR C'i с S' i, который описывается математически как:
N' i = C'i S'i.
На этапе 532 получатель дешифрует промежуточные зашифрованные тексты N i, для которых i U, как
M'i = D K1(N'i),
P' i = M'i N'i-1.
Процесс выполнения программы переходит к этапу 550.
Для i U на этапе 540 получатель определяет, что P' i=C'i для i U.
На этапе 542, продолжающемся для последовательности со значениями i U, получатель объединяет P'i и N'i-1 для получения M' i согласно соотношениям:
M'i = P'i N'i-1,
N' i = EK1(M'i ).
Процесс выполнения программы переходит к этапу 550. На этапе 550 индекс i увеличивается и делается выбор относительно условия i>m. Если условие i>m не истинно, то процесс выполнения программы возвращается к этапу 520. Если условие i>m истинно, то процесс выполнения программы переходит к шагу 560, который является началом процесса проверки.
Необходимо отметить, что вышеупомянутые шаги для определения промежуточных блоков зашифрованного текста и промежуточных блоков открытого текста для позиций открытого текста можно взаимозаменяемо упорядочить без изменения объема варианта воплощения. Необходимо также отметить, что вышеупомянутые этапы могут быть легко изменены для того, чтобы согласовывать набор позиций зашифрованного текста, а не позиций открытого текста, то есть этапы могут быть описаны относительно блоков, которые были определены как зашифрованные, а не относительно блоков, которые были посланы открытыми. Необходимо также отметить, что значения, которые вычислены на вышеупомянутых этапах, сохраняются для дальнейшего использования в итерационной процедуре.
Теперь у получателя весь зашифрованный текст расшифрован, но получатель должен проверить целостность. Для проверки целостности, на этапе 560 получатель вначале формирует вторичные зашифрованные тексты C*i для i U, согласно соотношению:
C*i = N'i S'i.
На этапе 570 получатель вычисляет значение контрольной суммы CHK_IN', которое определяется как:
CHK_IN' = ( i U P'i) N'm-1.
На этапе 580 получатель вычисляет значение контрольной суммы CHK_OUT', которое определяется соотношением:
CHK_OUT' = ( i U C* i ) S'0.
На этапе 590 значение X вычисляется шифрованием CHK_IN' ключом K 1 и выполнением операции XOR для результата с CHK_OUT'. Этот процесс описывается математически следующим образом:
X = Ek1 (CHK_IN') CHK_OUT'.
Получатель сравнивает X и C' m для определения, равны ли они. Если они равны, то получатель может быть уверен в целостности сообщения. Если целостность сообщения проверена, то сообщение имеет вид:
P = P 1,..., Pm-1
В альтернативных вариантах воплощения получатель использует альтернативные значения для сравнения. В одном варианте воплощения тег аутентификации объединяется с CHK_OUT для формирования тестового зашифрованного значения контрольной суммы входного значения. Значение контрольной суммы входного значения шифруется и затем сравнивается с тестовым значением зашифрованной контрольной суммы входного значения. Тег аутентификации подтвержден, если тестовое значение зашифрованной контрольной суммы входного значения и зашифрованное значение контрольной суммы входного значения одно и то же. В другом варианте воплощения, тег аутентификации объединяется со значением контрольной суммы выходного значения для формирования тестового зашифрованного значения контрольной суммы входного значения. Тестовая зашифрованная контрольная сумма входного значения дешифруется для получения тестового значение контрольной суммы входного значения; и тестовое значения контрольной суммы входного значения тогда сравнивается с значением контрольной суммы входного значения. Тег аутентификации подтвержден, если тестовое значение контрольной суммы входного значения и значение контрольной суммы входного значения одно и то же.
В другом альтернативном варианте воплощения этапы проверки от 560 до 590 могут быть выполнены параллельно этапам расшифровки от 520 до 550. Эта параллельная обработка увеличивает скорость, при которой процессы получателя шифруют и аутентифицируют передачи от отправителя.
Фиг.6A является блок-схемой аппаратных средств, которые конфигурированы для выполнения расшифровки сообщений, которые были зашифрованы с использованием вышеупомянутого режима CBC-IO. Фиг. 6В, 6С и 6D являются блок-схемами аппаратных средств, которые конфигурированы для выполнения проверки сообщений, которые были аутентифицированы с использованием вышеупомянутого режима CBC-IO. На фиг.6A, полученные блоки C'0 , C'i.... и C'm сохраняются в памяти 600. Элементы 61OA, 610B, 610C, 610D и 61OE дешифрования конфигурированы для выполнения функции дешифрования с использованием ключа K1, который был согласован между отправителем и получателем во время процесса согласования ключа, подробности которого здесь не описываются. Входным значением для первого элемента 610A дешифрования является блок C'0, который является первым блоком сообщения от отправителя. Выходным значением первого элемента 610A дешифрования является r', которое будет использоваться для определения шумовых блоков S'0,S' 1,...,S'm-i, которые определены с использованием аппаратных конфигураций, не показанных здесь.
Входное значение для других элементов 610B, 610C, 610D дешифрования формирует промежуточные блоки зашифрованного текста от N' 0 до N'm индивидуально, в каждом соответствующем элементе дешифрования. Промежуточные блоки зашифрованного текста от N'1 до N' m формируются путем объединения соответствующего шумового блока S'i с полученным блоком зашифрованного текста C'i для всех i U, причем объединение выполняется с использованием элементов 620A, 620В, 620С и 620D объединения таких, как, например, вентили XOR или модульные целочисленные сумматоры.
Выходное значение 610A, 610B, 610C, 610D дешифрования индивидуально объединяется со связанными промежуточными блоками N'i зашифрованного текста с использованием элементов 622A, 622В, 622С и 622D объединения. Выходным значением элементов 622A, 622В, 622С и 622D объединения являются блоки открытого текста P' i, для которых i U.
Для формирования промежуточных блоков зашифрованного текста N'i, где i U, элементы 630A, 630B, и 630C шифрования используют ключ K1 для шифрования предыдущего промежуточного блока N'i-1 зашифрованного текста в промежуточный блок N'i зашифрованного текста. Элементы 624A, 624B, и 624C объединения объединяют предыдущий промежуточный блок N'i-1 зашифрованного текста с блоками открытого текста P'i для формирования промежуточных блоков открытого текста M' i, которые зашифрованы элементами 630A, 630В, 630С и 630D шифрования. Необходимо отметить, что блоки открытого текста P' i, для которых i U, просто получаются установкой P' i=C'i для которых i U, после определения P'i, для которых i U. Генерация промежуточных блоков зашифрованного текста Ni, где i U, включается для итерационного определения блоков открытого текста P'i, для которых i U, и для генерации вторичных блоков зашифрованного текста C*i, которые используются для целей проверки. В этом варианте воплощения, переключатели 640A, 640В, 640С и 640D реализованы с управляющими линиями (не показанные здесь), которые облегчают выбор соответствующего промежуточного блока зашифрованного текста согласно тому, предшествовала ли позиция открытого текста или позиция зашифрованного текста текущей позиции.
Контрольная сумма входного значения CHK_IN может быть определена как выходное значение элемента объединения (не показан здесь), который объединяет последний промежуточный блок зашифрованного текста N'm с комбинацией всех блоков открытого текста P'i, для которой i U. Контрольная сумма выходного значения CHK_OUT может быть определена как выходное значение элемента объединения (не показанного здесь), который объединяет первый шумовой блок S' 0 с комбинацией всех вторичных зашифрованных текстов C* i, каждый из которых определен как комбинация соответствующего промежуточного блока зашифрованного текста N' i и соответствующего шумового блока S' i. Вторичные блоки зашифрованного текста C* i являются выходным значением элементов 645A, 645B и 645C объединения на фиг.6A.
Фиг.6B показывает один вариант воплощения для проверки тега аутентификации. Значение CHK_IN является входным значением для элемента 650 шифрования. Выходное значение элемента 650 шифрования объединяется со значением CHK_OUT в элементе 655 объединения. Выходное значение элемента 655 объединения после этого сравнивается в элементе 657 сравнения с полученным блоком C'm, который является тегом аутентификации. Фиг.6C является другим вариантом воплощения для проверки тега аутентификации. Значение CHK_IN является входным значением для элемента 660 шифрования. Тег аутентификации C' m объединяется со значением CHK_OUT в элементе 665 объединения. Выходное значение элемента 665 объединения сравнивается с выходным значением элемента 660 шифрования в элементе 667 сравнения для проверки тега аутентификации. Фиг.6D является другим вариантом воплощения для проверки тега аутентификации. Тег аутентификации C'm объединяется со значением CHK_OUT в элементе 670 объединения. Выходное значение элемента 670 объединения является входным значением для элемента 675 дешифрования. Выходное значение элемента 675 дешифрования после этого сравнивается со значением CHK_IN в элементе 677 сравнения. Если любое из сравнений указывает соответствие, то тег аутентификации C' m подтверждается.
Атакующая сторона может обусловить использование получателем неправильного набора позиций открытого текста, когда получатель пытается дешифровать сообщение. Чтобы воспрепятствовать этому типу атаки, отправитель и получатель должны использовать другой метод проверки позиций открытого текста, который применяется к конкретным сообщениям зашифрованного текста. Существуют простые решения этой проблемы. Одним решением является наличие стандартного соглашения о том, какие позиции являются позициями открытого текста. Другое решение состоит в том, чтобы включить в блоки данных представление набора U позиций открытого текста так, чтобы проверка зашифрованного текста включала и проверку набора позиций открытого текста.
Включение значений C i, i U, в контрольную сумму формирует различие между режимом работы CBC-IO и режимами работы, предложенными Jutla, Gligor и Donescu. Необходимо отметить, что CBC-IO использует шифрование блочным шифром при вычислении зашифрованного текста и тега аутентификации. Однако это в равной мере применимо для дешифрования блочного шифра, которое должно использоваться вместо некоторых или всех операций шифрования блочного шифра. Это привело бы к изменениям от дешифрования блочного шифра к шифрованию блочного шифра (и наоборот) при дешифровании и проверке целостности сообщения.
В режиме CBC-IO функции шифрования и аутентификации надежны, если основной блочный шифр является надежным. Есть формальные выражения в данной области техники для того, что понимается под фразой функции «шифрования и аутентификации надежны», однако эти формальные выражения не относятся к предмету данного изобретения и здесь не описываются. Специалисту в данной области техники понятен смысл фразы функции «шифрования и аутентификации надежны».
Хотя варианты воплощения описаны здесь применительно к режиму CBC-IO, основанному на блочном шифре AES, эти варианты воплощения могут также быть применены для создания режима CBC-IO, основанного на других блочных шифрах. Отметим, что отправитель может выбрать, что посылать, Pi или Ci , и аутентификация не будет скомпрометирована. Описанные варианты воплощения позволяют стороне передавать зашифрованные и незашифрованные блоки, не ставя под угрозу защиту схемы аутентификации. Если Pi посылают как открытый текст, то зашифрованная версия Pi все еще является секретной и непредсказуемой и может использоваться для надежной аутентификации.
Общей практикой является определение MAC только как части последнего блока при использовании режима аутентификации. Представленные варианты воплощения могут также быть изменены так, чтобы только часть последнего блока передавалась как MAC.
Специалистам в данной области техники понятно, что информация и сигналы могут быть представлены с использованием любого из разнообразия различных технологий и способов. Например, данные, инструкции, команды, информация, сигналы, биты, символы, и микросхемы, на которые даются ссылки в описании, могут быть представлены напряжениями, токами, электромагнитными волнами, магнитными полями или частицами, оптическими полями или частицами или любой их комбинацией.
Специалистам в данной области техники также понятно, что различные иллюстративные логические блоки, модули, схемы и этапы алгоритма, описанные в связи с раскрытыми вариантами воплощения, могут быть осуществлены как электронные аппаратные средства, программное обеспечение или их комбинации. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы описаны выше в целом в терминах их функциональных возможностей. Реализованы ли такие функциональные возможности как аппаратные средства или как программное обеспечение, зависит от специфического приложения и ограничений при проектировании, наложенных на систему в целом. Специалисты в данной области техники могут реализовать описанные функциональные возможности различными способами для каждого специфического приложения, но такие решения реализации не должны интерпретироваться как отход от объема данного изобретения.
Различные иллюстративные логические блоки, модули и схемы, описанные в связи с раскрытыми вариантами воплощения, могут быть осуществлены или выполнены с помощью универсального процессора, процессора цифровых сигналов (DSP), специализированной интегральной схемы (ASIC), программируемой пользователем вентильной матрицы (FPGA) или другого программируемого логического устройства, дискретной вентильной или транзисторной логики, дискретных аппаратных компонентов, или любой их комбинации, предназначенной для исполнения описанных функций. Универсальный процессор может быть микропроцессором или любым обычным процессором, контроллером, микроконтроллером или конечным автоматом. Процессор может также быть реализован как комбинация компьютерных устройств, например комбинация DSP и микропроцессора, множество микропроцессоров, один или более микропроцессоров вместе с ядром DSP или любой другой такой конфигурацией.
Этапы способа или алгоритма, описанного в связи с раскрытыми вариантами воплощения, могут быть воплощены непосредственно в аппаратных средствах, в программном модуле, исполняемом процессором, или в их комбинации. Программный модуль может постоянно находиться в оперативной памяти, флэш-памяти, постоянной памяти, памяти программируемого ПЗУ, памяти СППЗУ, регистрах, жестком диске, съемном диске, CD-ROM или любой другой форме носителя данных, известного в данной области техники. Приведенный для примера носитель данных соединен с процессором, такой процессор может читать и записывать информацию с/на носитель данных. Альтернативно, носитель данных может быть неотъемлемой частью процессора. Процессор и носитель данных могут постоянно находиться в специализированных интегральных схемах. Специализированные интегральные схемы могут постоянно находиться в пользовательском терминале. Альтернативно, процессор и носитель данных могут постоянно находиться, как дискретные компоненты, в пользовательском терминале.
Предыдущее описание раскрытых вариантов воплощения представлено для того, чтобы дать возможность любому специалисту в данной области техники осуществить или использовать данное изобретение. Различные модификации этих вариантов воплощения очевидны для специалиста в данной области, и универсальные принципы, определенные здесь, могут быть применены к другим вариантам воплощения без отклонения от сущности или объема изобретения. Таким образом, данное изобретение не предназначено для ограничения представленными вариантами воплощения, но должно соответствовать самому широкому объему, совместимому с раскрытыми принципами и новыми признаками.
Класс H04L9/14 с использованием нескольких ключей или алгоритмов