Эффективное шифрование и аутентификация для систем обработки данных

Иллюстрации

Показать все

Изобретение относится к области обработки данных. Технический результат заключается в уменьшении нагрузки на ресурсы, производящие обработку данных, требуемую для обеспечения защиты. Сущность изобретения заключается в том, что набор позиций открытого текста и/или набор позиций зашифрованного текста используются для определения того, какие блоки данных будут использоваться для генерации значения (470) контрольной суммы входного значения и значения (475) контрольной суммы выходного значения и эти контрольные суммы затем используются для генерации тега аутентификации. 15 н. и 11 з.п. ф-лы, 6 ил.

Реферат

ОБЛАСТЬ ТЕХНИКИ

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

УРОВЕНЬ ТЕХНИКИ

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

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

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

В статье "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,..., Pm.

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

Ci = Ek(Pi),

где EK(Pi) обозначает шифрование блока Pi с использованием ключа K. Как используется в дальнейшем, DK(Pi) обозначает результат дешифрования блока Pi с использованием ключа K.

В режиме CBS над первым блоком открытого текста проводится операция «исключающее ИЛИ» с секретным начальным значением (IV) для формирования зашифрованного результата. Математическое описание этого процесса записано в соответствии с соотношением:

Ci = EK(P1 ⊕ IV)

После этого над каждым блоком открытого текста проводится операция «исключающее ИЛИ» с предыдущим зашифрованным текстом для шифрования следующим образом:

Ci = 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 до Pm-1. Отправитель устанавливает t равным следующему целому числу, большему чем логарифм (по основанию два) от (m+1). Отправитель выбирает случайное значение r (известное как одноразовый номер или начальное значение), которое зашифровано для формирования блока Co зашифрованного текста. Значения от (r+1) до (r+t) зашифрованы для формирования значений от W0 до Wt-1, в которых шифрование использует ключ K0. Значения от W0 до Wt-1 тогда используются для получения парных независимых значений от S0 до Sm. Значения Si упомянуты здесь как шумовые блоки. Значения S0,...,Sm - парные независимые значения, если S0,...,Sm являются равномерно распределенными n-битными случайными числами со свойством, что для каждой пары Si и Sj, где i≠j, и каждой пары n-битных констант С1 и С2, вероятность того, что Si=C1 и Sj=C2, равна 2-2n. Фактическое вычисление от S0 до Sm не является релевантным для понимания IACBC и здесь не описывается. Значения блоков зашифрованного текста от C1 до Сm-i получены итерационно для 1 ≤ j ≤ m-1 согласно соотношениям:

Mi = Pi ⊕ N i-1,

Ni = EK1(Mi),

Ci = Ni ⊕ Si,

где ключ K1 используется для каждого блока зашифрованного текста, и начальное значение N0 установлено в C0. Значения Mi называются промежуточными блоками открытого текста, и значения Ni называются промежуточными блоками зашифрованного текста. Отправитель после этого вычисляет значение контрольной суммы Pm, которое определяется как:

Pm = P1 ⊕ P2 ⊕... ⊕Pm-1.

Тег MAC Сm вычисляется из Pm шифрованием (Pm ⊕ Ni-1) с ключом Ki и применяя операцию "исключающее ИЛИ" к зашифрованному результату с S0. Математически, вычисление может быть представлено следующим образом:

Сm = EK1 (Pm ⊕ Ni-1) ⊕ S0.

Отправитель передает C0... С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,

в которых ключ K1 используется для каждого блока открытого текста и начальное значение N'0 установлено равным C'0. Получатель тогда вычисляет значение P'm контрольной суммы как определено ниже:

P'm = P'1 ⊕ P'2 ⊕... ⊕P'm-1

Значение X вычисляется шифрованием результата операции XOR Pm с Nm-1 с использованием ключа Ki, и затем применяется операция 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) блоков сообщения от P1 до Pm-1.

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

На этапе 402 отправитель выбирает значение одноразового номера r и следует режиму IACBC ИЛИ XCBC для вычисления шумовых блоков от S0 до Sm для получения промежуточных зашифрованных текстов от N0 до Nm-i и получения зашифрованных текстов от C0 до Сm-i. То есть N0 = C0 = EKi(r) и значения промежуточных зашифрованных текстов от N0 до Nm-i и блоков зашифрованного текста от C0 до С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 сохраняет блоки открытого текста Pi, ряд из которых должен быть зашифрован, и все из них должны быть аутентифицированы. Элементы 460A, 460В, 460С и 460D шифрования конфигурированы для выполнения кр