Способ шифрования, устройство шифрования, способ дешифрирования и устройство дешифрирования
Иллюстрации
Показать всеИзобретение относится к технологии шифрования, обеспечивающей шифрование исходного (открытого, незашифрованного) текста для получения зашифрованного текста и дешифрирование зашифрованного текста для получения первоначального открытого текста. Сущность изобретения состоит в том, что блок генерации данных субключей использует два разных процесса ключевой генерации субключей. При шифровании (Т*n)-го блока открытого текста, где Т - длительность предварительно определенного цикла, n - положительное целое число, генерируется шестнадцать наборов данных субключей. Во всех других случаях генерируется два набора данных субключей. Блок шифрования шифрует открытый текст, используя сформированные шестнадцать или два набора данных субключей. 6 н. и 4 з.п. ф-лы, 14 ил.
Реферат
Эта заявка основана на заявке №11-245277 на патент Японии, содержание которой включено сюда в виде ссылки.
ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
Область техники
Настоящее изобретение относится к технологии шифрования, обеспечивающей шифрование исходного (открытого, незашифрованного) текста для получения зашифрованного текста и дешифрирование зашифрованного текста для получения первоначального открытого текста.
Предшествующий уровень техники
В последнее время все более широко используется шифрование важной информации перед ее передачей, чтобы обеспечить защиту ее содержания от третьих лиц. Поэтому стремятся создать все более защищенные формы шифрования.
Выложенная заявка № Н11-7239 на патент Японии описывает устройство для шифрования данных, обеспечивающее более эффективное шифрование.
Это устройство для шифрования данных предусматривает разделение открытого текста, принятого извне, на множество блоков открытого текста и шифрование каждого блока открытого текста с использованием данных ключа шифрования для создания блоков зашифрованного текста. При шифровании первого блока открытого текста это устройство для шифрования данных использует данные ключа, полученные внешним образом относительно устройства шифрования. Для второго и последующих блоков открытого текста устройство для шифрования данных корректирует данные ключа, используя блок зашифрованного текста, полученный при шифровании предыдущего блока открытого текста, и зашифровывает текущий блок открытого текста с использованием этих скорректированных данных ключа.
Устройство для шифрования данных шифрует каждый блок открытого текста следующим образом. Устройство для шифрования данных включает блок генерации субключей и блоки шифрования с первого по восьмой. Блок генерации субключей использует данные ключа, чтобы генерировать с первого по восьмой субключи. Каждый из этих восьми субключей различен. Первый блок шифрования формирует первый промежуточный блок из блока открытого текста, используя первый субключ. Второй блок шифрования формирует второй промежуточный блок из первого промежуточного блока, используя второй субключ. С третьего по седьмой блоки шифрования аналогичным образом формирует с третьего по седьмой промежуточные блоки из промежуточных блоков со второго по шестой, используя субключи с третьего по седьмой. Восьмой блок шифрования формирует блок зашифрованного текста из седьмого промежуточного блока, используя восьмой субключ.
Каждый блок открытого текста зашифровывается с использованием данных ключа, которые отличаются для каждого блока открытого текста. Это затрудняет накопление пар открытых текстов, которые были зашифрованы с использованием одного и того же ключа, и полученных зашифрованных текстов. В результате улучшается надежность шифрования по отношению к известным способам криптоанализа, таким как дифференциальный криптоанализ и линейный криптоанализ.
Однако блок генерации субключей в этом устройстве шифрования данных должен генерировать множество различных субключей каждый раз при шифровании блока открытого текста. Недостатком этого является снижение скорости криптографической обработки.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Настоящее изобретение направлено на решение вышеуказанной проблемы и имеет целью создание устройства шифрования, которое выполняет криптографическую обработку с более высокой скоростью и обеспечивает высокую степень защиты против известных способов криптоанализа. Изобретение также направлено на создание способа шифрования, устройства шифрования, способа дешифрирования и носителя записи для хранения программы шифрования и/или программы дешифрирования.
Указанный результат достигается с помощью способа шифрования для использования устройством шифрования, которое осуществляет шифрование данных открытого текста, состоящих из множества блоков, причем способ шифрования включает следующие этапы: получение одновременно одного блока данных открытого текста по порядку внешним путем относительно устройства шифрования; выбор первого режима или второго режима для текущего блока, полученного на этапе получения блока, в соответствии с тем, сколько блоков было получено; генерацию ключа для генерации первой группы, состоящей из предварительно определенного количества n разных субключей при выборе первого режима, и второй группы, состоящей из менее чем n разных субключей при выборе второго режима; и шифрование для шифрования текущего блока путем преобразования текущего блока с использованием n процессов преобразования по порядку, причем в первом режиме каждый из п процессов преобразования связан с разным субключом в первой группе и выполняется с использованием связанного с ним субключа, а во втором режиме n процессов преобразования связаны с субключами во второй группе и каждый из них выполняется с использованием связанного с ним субключа.
В заявленном способе во втором режиме генерируется меньше субключей, чем в первом режиме. Это сокращает уменьшение скорости обработки, обусловленное генерацией субключей при шифровании блоков.
На этапе выбора может выбираться первый режим для блоков, когда количество полученных блоков равно кратному предварительно определенной величины, и второй режим для всех других случаев.
В заявленном способе первый режим выбирается только для определенных блоков в данных открытого текста. Второй режим выбирается для всех остальных блоков. Это означает, что второй режим выбирается чаще, чем первый режим, и что снижение скорости криптографической обработки для полных данных открытого текста, состоящих из блоков, может быть уменьшено.
Устройство шифрования может содержать средство для хранения начальной величины, на этапе шифрования может осуществляться шифрование текущего блока, чтобы создать блок зашифрованного текста, имеющий предварительно определенную длину, а на этапе генерации ключа может генерироваться первая группа с использованием начальной величины в первом режиме и вторая группа с использованием начальной величины и блока зашифрованного текста, сформированного последним на этапе шифрования во втором режиме.
В заявленном способе каждый блок открытого текста шифруется с использованием разных данных ключей. Это затрудняет для третьей стороны накопление пар простого текста, зашифрованных с использованием одного и того же ключа, и полученных зашифрованных текстов. Это повышает защищенность против известных способов криптоанализа открытого текста, таких как дифференциальный криптоанализ и линейный криптоанализ.
Указанный результат также достигается в способе дешифрирования для использования устройством дешифрирования, которое дешифрирует данные зашифрованного текста в блоках зашифрованного текста, причем способ дешифрирования включает следующие этапы: получение одновременно одного блока данных зашифрованного текста по порядку внешним путем относительно устройства дешифрирования; выбор первого режима или второго режима для использования с текущим блоком зашифрованного текста, полученным на этапе получения блока, в соответствии с тем, сколько блоков зашифрованного текста было получено; генерацию ключа для генерации первой группы, состоящей из предварительно определенного количества n разных субключей при выборе первого режима, и второй группы, состоящей из менее чем n разных субключей при выборе второго режима, и этап дешифрирования для дешифрирования текущего блока зашифрованных данных путем преобразования текущего блока зашифрованных данных с использованием n процессов преобразования по порядку, при этом в первом режиме каждый из n процессов преобразования связан с разным субключом в первой группе и выполняется с использованием связанного с ним субключа, а во втором режиме n процессов преобразования связаны с субключами во второй группе и каждый из них выполняется с использованием связанного с ним субключа.
В заявленном способе во втором режиме генерируется меньше субключей, чем в первом режиме. Это сокращает уменьшение скорости обработки, обусловленное генерацией субключей при дешифрировании блоков.
Указанный результат может быть достигнут в способе дешифрирования для использования устройством дешифрирования, которое дешифрирует данные зашифрованного текста в блоках зашифрованного текста, причем способ дешифрирования включает следующие этапы: получение одновременно одного блока данных зашифрованного текста по порядку внешним путем относительно устройства дешифрирования; выбор первого режима или второго режима для использования с текущим блоком зашифрованного текста, полученным на этапе получения блока, в соответствии с тем, сколько блоков зашифрованного текста было получено; генерацию ключа для генерации первой группы, состоящей из предварительно определенного количества n разных субключей при выборе первого режима, и второй группы, состоящей из менее чем n разных субключей при выборе второго режима; и дешифрирование для дешифрирования текущего блока зашифрованных данных путем преобразования текущего блока зашифрованных данных с использованием n процессов преобразования по порядку, причем в первом режиме каждый из n процессов преобразования связан с разным субключом в первой группе и выполняется с использованием связанного с ним субключа, а во втором режиме n процессов преобразования связаны с субключами во второй группе, и каждый из них выполняется с использованием связанного с ним субключа.
В заявленном способе первый режим выбирается только для определенных блоков в данных открытого текста. Второй режим выбирается для всех остальных блоков. Это означает, что второй режим выбирается чаще, чем первый режим, и что снижение скорости обработки при дешифрировании полных данных зашифрованного текста, состоящих из блоков зашифрованного текста, может быть сокращено.
Устройство дешифрирования может включать средство для хранения начальной величины, причем на этапе генерации ключа генерируется первая группа с использованием начальной величины в первом режиме и генерируется вторая группа с использованием начальной величины и блока зашифрованного текста, созданного непосредственно перед текущим блоком зашифрованного текста во втором режиме.
В заявленном способе каждый блок зашифрованного текста дешифрируется с использованием разных ключевых данных. Это затрудняет для третьей стороны накопление пар открытого текста, зашифрованных с использованием одного и того же ключа, и полученных зашифрованных текстов. Это повышает защищенность против известных способов криптоанализа открытого текста, таких как дифференциальный криптоанализ и линейный криптоанализ.
Как описано выше, настоящее изобретение обеспечивает уровень защищенности, подобный уровню защищенности описанной общепринятой технологии, в то же время повышая скорость криптографической обработки. Изобретение может использоваться, например, в секретной передаче изображений и другой информации в режиме реального времени. При современных потребностях в усовершенствованиях мультимедийной технологии это делает эффект этого изобретения особенно значительным.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Задачи, преимущества и признаки изобретения поясняются в последующем описании конкретных вариантов осуществления, иллюстрируемого чертежами, на которых показано следующее:
Фиг.1 - блок-схема системы 5 шифрованной связи, соответствующей предпочтительному варианту осуществления настоящего изобретения;
Фиг.2 - блок-схема блока 10 шифрования данных в передающем устройстве 1;
Фиг.3 - блок-схема блока 100 шифрования и блока 101 генерации данных субключей;
Фиг.4 - блок-схема блока 301 рандомизации данных;
Фиг.5А и фиг.5В - блок-схемы, показывающие, какой из множества наборов данных субключей, сформированных блоком 101 генерации данных субключей, используется каждым из блоков шифрования с 1-го по 6-ой блока 100 шифрования, причем фиг.5А соответствует типу А генерации данных субключа, а фиг.5В - типу В генерации данных субключа;
Фиг.6 - таблица соответствия значения отсчета входным данным ключа и типу генерации данных субключа;
Фиг.7 - блок-схема блока 20 дешифрирования данных в приемном устройстве 2;
Фиг.8 - блок-схема, иллюстрирующая работу передающего устройства 1;
Фиг.9 - блок-схема, иллюстрирующая работу блока 10 шифрования данных передающего устройства 1;
Фиг.10 - блок-схема, иллюстрирующая работу блока 105 счетчика в блоке 10 шифрования данных;
Фиг.11 - блок-схема, иллюстрирующая работу блока 104 регистра в блоке 10 шифрования данных;
Фиг.12 - блок-схема, иллюстрирующая первую часть последовательности работы блока 101 генерации данных субключей в блоке 10 шифрования данных;
Фиг.13 - блок-схема, иллюстрирующая вторую часть последовательности работы блока 101 генерации данных субключей в блоке 10 шифрования данных, и
Фиг.14 - блок-схема, иллюстрирующая работу блока 301 рандомизации данных в блоке 101 генерации данных субключей.
ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНОГО ВАРИАНТА ОСУЩЕСТВЛЕНИЯ
Ниже описана система 5 зашифрованной связи согласно предпочтительному осуществлению настоящего изобретения.
1. Выполнение системы 5 шифрованной связи
Как показано на фиг.1, система 5 шифрованной связи содержит передающее устройство 1, приемное устройство 2 и тракт 3 передачи. Тракт 3 передачи соединяет передающее устройство 1 и приемное устройство 2.
Передающее устройство 1 и приемное устройство 2 заранее снабжены одними и теми же данными ключа шифрования. Передающее устройство 1 зашифровывает данные открытого (не зашифрованного) текста, используя данные ключа шифрования для формирования данных зашифрованного текста, а затем передает сформированные данные зашифрованного текста в приемное устройство 2 через тракт 3 передачи. Приемное устройство 2 принимает эти данные зашифрованного текста, дешифрирует данные зашифрованного текста, используя данные ключа шифрования, и таким образом формирует данные дешифрированного текста. Здесь дешифрирование, выполняемое приемным устройством 2, является операцией, обратной операции шифрования, выполняемой передающим устройством 1, так что данные дешифрированного текста, сформированные в результате дешифрирования, являются теми же самыми, что и данные открытого текста.
1.1 Выполнение передающего устройства 1 и приемного устройства 2
(1) Передающее устройство 1
Как показано на фиг.1, передающее устройство 1 содержит блок 12 хранения данных открытого текста, блок 13 хранения данных ключей шифрования, блок 10 шифрования данных и передающий блок 11.
В блок 12 хранения данных открытого текста предварительно записываются данные открытого текста. Эти данные открытого текста являются цифровыми данными, которые включают по меньшей мере 64 бита и могут представлять собой, например, закодированную в цифровом виде аудиоинформацию или информацию изображения.
В блок 13 хранения данных ключей шифрования записываются заранее 64-битовые данные ключа шифрования. Данные ключа шифрования выбираются заранее для передающего устройства 1 и для приемного устройства 2.
Блок 10 шифрования данных считывает данные открытого текста из блока 12 хранения данных открытого текста и данные ключа шифрования из блока 13 хранения данных ключей шифрования. Затем блок 10 шифрования данных осуществляет шифрование данных открытого текста с использованием данных ключа шифрования для формирования данных зашифрованного текста. Блок 10 шифрования данных выдает полученные данные зашифрованного текста в передающий блок 11. Блок 10 шифрования данных описан более подробно ниже.
Передающий блок 11 принимает данные зашифрованного текста, выполняет параллельно-последовательное преобразование данных зашифрованного текста и затем модулирует и усиливает преобразованные данные для формирования передаваемых сигналов. Передающий блок 11 передает эти сигналы через тракт 3 передачи к приемному устройству 2.
(2) Приемное устройство 2
Как показано на фиг.1, приемное устройство 2 содержит блок 22 хранения данных дешифрированного текста, блок 23 хранения данных ключей шифрования, блок 20 дешифрирования данных и приемный блок 21.
Приемный блок 21 принимает сигналы, передаваемые передающим блоком 11 передающего устройства 1 через тракт 3 передачи, демодулирует сигналы и выполняет последовательно-параллельное преобразование для получения данных зашифрованного текста.
Приемный блок 21 выдает данные зашифрованного текста в блок 20 дешифрирования данных.
В блок 23 хранения данных ключей шифрования заранее записываются 64-битовые данные ключа шифрования. Эти данные ключа шифрования те же самые, что и записанные в блоке 12 хранения данных ключей шифрования в передающем устройстве 1.
Блок 20 дешифрирования данных принимает данные зашифрованного текста и считывает данные ключа шифрования из блока 23 хранения данных ключей шифрования. Блок 20 дешифрирования данных дешифрирует данные зашифрованного текста, используя данные ключа шифрования для получения данных дешифрированного текста. Блок 20 дешифрирования данных записывает эти данные дешифрированного текста в блок 22 хранения данных дешифрированного текста. Дешифрирование, выполняемое блоком 20 дешифрирования данных, является операцией, обратной операции шифрования, выполняемой блоком 10 шифрования данных. Это означает, что данные дешифрированного текста являются теми же, что и первоначальные данные незашифрованного открытого текста. Блок 20 дешифрирования данных подробно описан ниже.
Блок 22 хранения данных дешифрированного текста сохраняет данные дешифрированного текста.
1.2 Блок 10 шифрования данных
Как показано на фиг.2, блок 10 шифрования данных содержит блок 100 шифрования, блок 101 генерации данных субключей, логический блок 102 "исключающее ИЛИ", блок 103 преобразования данных, блок 104 регистра, блок 105 счетчика, блок 106 управления генерацией данных субключей, блок 107 управления регистром, блок 108 деления на блоки, блок 109 объединения блоков, блок 110 получения ключа и блок 111 хранения ключа.
(1) Блок 108 деления на блоки
Блок 108 деления блоков считывает данные открытого текста Р из блока 12 хранения данных открытого текста и делит данные открытого текста Р на отдельные блоки, измеряемые от начала данных открытого текста Р для создания множества блоков открытого текста Рt, где t=0, 1, 2... . Каждый блок Рt открытого текста имеет длину 64 бита. Блок 108 деления на блоки выдает эти блоки Рt открытого текста последовательно в блок 100 шифрования. После выдачи всех блоков Рt открытого текста блок 108 деления на блоки выдает в блок 109 объединения блоков информацию, показывающую, что выдача завершена.
(2) Блок 110 получения ключа
Блок 110 получения ключа считывает данные ключа шифрования из блока 13 хранения данных ключей шифрования и записывает считанные данные ключа шифрования в блок 111 хранения ключа.
(3) Блок 111 хранения ключа
Блок 111 хранения ключа сохраняет данные ключа шифрования.
(4) Блок 100 шифрования
Как показано на фиг.3, блок 100 шифрования содержит первый блок 100а шифрования, второй блок 100b шифрования... , пятнадцатый блок 100с шифрования и шестнадцатый блок 100d шифрования.
Первый блок 100а шифрования получает блок Рt открытого текста от блока 108 деления на блоки и данные SКo первого субключа от блока 101 генерации данных субключей. Данные SKo первого субключа имеют длину 32 бита. Первый блок 100а шифрования осуществляет шифрование полученного блока Рt открытого текста с использованием данных SКo первого субключа, чтобы создать первый промежуточный блок. Первый блок 100а шифрования выдает этот первый промежуточный блок во второй блок 100b шифрования.
Шифрование, выполняемое первым блоком шифрования, является частью процедуры шифрования данных способа шифрования FEAL (Алгоритма Быстрого Шифрования данных, АЛБШ), который является хорошо известным методом блочного шифрования.
Блоки шифрования со второго по пятнадцатый соответственно принимают промежуточный блок от предшествующего блока шифрования в блоках шифрования с первого по четырнадцатый и со вторых по пятнадцатые данные SK1÷SK14 субключей от блока 101 генерации данных субключей. Каждый из наборов данных SK1÷SK14 со второго по пятнадцатый субключей имеет длину 32 бита. Блоки шифрования от второго по пятнадцатый соответственно осуществляют шифрование принятого промежуточного блока с использованием от вторых по пятнадцатые данных SK1÷SK15 субключей, чтобы создать промежуточные блоки со второго по пятнадцатый, которые соответственно выдаются в блоки шифрования с третьего по шестнадцатый.
Шестнадцатый блок 100d шифрования получает пятнадцатый промежуточный блок от пятнадцатого блока 100с шифрования и получает шестнадцатые данные SK15 субключа от блока 101 генерации данных субключей. Шестнадцатые данные SК15 субключа также имеют длину 32 бита. Шестнадцатый блок 100d шифрования шифрует полученный промежуточный блок, используя шестнадцатые данные SK15 субключа, чтобы создать блок Сt зашифрованного текста.
Приведенное ниже выражение
показывает, что блок Рt открытого текста зашифрован с использованием группы SКОt (от SK0 до SK15) данных субключей, которые были генерированы как часть t-го процесса шифрования.
Шестнадцатый блок 100d шифрования выдает созданный блок Сt зашифрованного текста в блок 109 объединения блоков.
После того как созданный блок Сt зашифрованного текста выдан в блок 109 объединения блоков, блок 100 шифрования выдает в блок счетчика 105 информацию, показывающую, что шифрование одного блока открытого текста завершено.
(5) Блок 104 регистра
Блок 104 регистра включает области для хранения 64-битового начального значения IV и 64-битовых хранимых данных ROt. Значение хранимых данных ROt заранее устанавливается в начальное значение IV.
Блок 104 регистра принимает блок Сt зашифрованного текста от шестнадцатого блока 100d шифрования.
Блок 104 регистра принимает сигнал управления от блока 107 управления регистром. Если принятый управляющий сигнал равен "0" и блок Сt зашифрованного текста принят от шестнадцатого блока 100d шифрования, блок 104 регистра записывает блок Сt зашифрованного текста как хранимые данные ROt. Если принятый управляющий сигнал равен "1", блок 104 регистра считывает начальное значение IV и записывает начальное значение IV как хранимые данные ROt.
Формулируя это иным путем, предположим, что Т представляет собой предварительно определенный цикл и n равно 0, 1,... . Когда осуществляется шифрование (Т* n)-ого блока открытого текста (t=T* n), блок 104 регистра сбрасывает хранимое значение ROt, используя начальное значение IV, которое установлено заранее. Величина "Т" устанавливается заранее и описана ниже. Когда осуществляется шифрование блока открытого текста, который не является (Т* n)-ым блоком открытого текста (т.е. является блоком Рt открытого текста, где t≠ Т* n), принятый блок Сt зашифрованного текста записывается как хранимые данные ROt.
(6) Блок 103 преобразования данных
Блок 103 преобразования данных считывает 64-битовые хранимые данные ROt из блока 104 регистра. Когда блок 100 шифрования осуществляет шифрование t-ого блока Рt открытого текста, блок 103 преобразования данных считывает 64-битовые данные ROt как показано ниже.
Если
ROt=Ct-1
Если
ROt=IV
Блок 103 преобразования данных преобразует считанные сохраненные данные ROt предварительно определенным образом, что указывается ниже функцией f, чтобы создать SOt:
Здесь выражение f(X) представляет результат обработки входных данных Х с помощью предварительно определенного преобразования данных согласно функции f, являющегося 13-битовым циклическим сдвигом в направлении старшего бита 64-битовых данных.
После этого блок 103 преобразования данных выдает 64-битовые данные SOt, полученные в результате преобразования, в логический блок 102 "исключающее ИЛИ".
(7) Логический блок 102 "исключающее ИЛИ"
Логический блок 102 "исключающее ИЛИ" принимает 64-битовые данные SOt от блока 103 преобразования данных и считывает данные ключа шифрования ЕК из блока 111 хранения ключа.
Логический блок 102 "исключающее ИЛИ" выполняет операцию "исключающее ИЛИ" для каждого бита в 64-битовых данных SOt и соответствующего бита в данных ключа шифрования ЕК и таким образом создает 64-битовые данные входного ключа IКОt:
В вышеприведенном равенстве символ "(+)" используется для обозначения операции "исключающее ИЛИ".
Логический блок 102 "исключающее ИЛИ" выдает входные данные ключа IКОt, которые он сформировал, в блок 101 генерации данных субключей.
(8) Блок 101 генерации данных субключей
Блок 101 генерации данных субключей принимает управляющий сигнал от блока 106 управления генерацией данных субключей и входные данные ключей IКОt от логического блока 102 "исключающее ИЛИ". Этот управляющий сигнал показывает, осуществляется ли шифрование (Т* n)-ого блока открытого текста (где n=0,1,... ) или нет. Такое шифрование происходит один раз в каждом предварительно определенном цикле Т. В настоящем примере предварительно определенный цикл Т установлен на 210 операций шифрования.
Блок 101 генерации данных субключей способен выполнять два процесса (типа А и типа В) генерации субключей. Процесс генерации субключей типа А имеет большую нагрузку обработки, а типа В - небольшую нагрузку обработки. В соответствии с принятым управляющим сигналом блок 101 генерации данных субключей выбирает один из двух типов процессов генерации субключей и выполняет выбранный процесс, используя входные данные ключа IKOt, чтобы генерировать шестнадцать наборов 32-битовых данных субключей (т.е. от первых до шестнадцатых данных SK0÷SK15 субключей).
Если t≠ T* k (k=0,1,... )
Здесь выражение KGB(X) относится к шестнадцати наборам данных субключей, генерированным из входных данных ключей IКОt с помощью процесса генерации данных субключей типа В. Эти шестнадцать наборов данных субключей составлены из двух типов данных субключей.
Если t=T* k (k=0,1,... )
Выражение KGA(X) представляет шестнадцать наборов данных субключей, которые генерированы с помощью процесса генерации данных субключей типа А. Каждый из этих шестнадцати наборов данных субключей отличается от других.
Блок 101 генерации данных субключей выдает шестнадцать наборов данных SK0÷SK15 субключей, которые он сформировал, к блокам шифрования от первого по шестнадцатый блока 100 шифрования.
Фиг.6 показывает соотношение между значением отсчета блока 105 счетчика, входными данными ключа, принятыми блоком 101 генерации данных субключей, и типом (А или В) процесса генерации субключей, используемым блоком 101 генерации данных субключей. Если значение отсчета равно "0", входные данные ключа генерируются с использованием данных ключа шифрации ЕК и начального значения IV и используется процесс генерации субключа типа А. Наоборот, если значение подсчета равна от "1" до "210-1", входные данные ключа генерируются с использованием данных ключа шифрования и блока зашифрованного текста, созданного предыдущим процессом шифрования, и используется процесс генерации субключа типа В.
Как показано на фиг.3, блок генерации данных субключей 101 содержит блок 301 рандомизации данных блок 302 хранения рандомизированных данных и блок 303 управления количеством этапов.
(а) Блок 301 рандомизации данных
Блок рандомизации данных 301 принимает 64-битовые данные от блока 303 управления количеством этапов, выполняет предварительно определенный процесс рандомизации данных для этих данных и таким образом генерирует 32-битовые данные SK субключа и 64-битовые рандомизированные данные. Блок 301 рандомизации данных выдает 32-битовые данные SK субключа в блок 302 хранения рандомизированных данных и созданные 64-битовые рандомизированные данные в блок 303 управления количеством этапов.
Как показано на фиг.4, блок 301 рандомизации данных содержит блок 301а разделения, логический блок 301b "исключающее ИЛИ", блок 301с перемешивания данных и блок 301d объединения.
Блок 301а разделения
Блок 301а разделения принимает 64-битовые данные от блока 303 управления количеством этапов и разделяет эти данные на старшие 32 бита (далее называемые "данные А1") и младшие 32 бита (далее называемые "данные А0"). Блок 301а разделения выдает данные А1 в логический блок 301b "исключающее ИЛИ" и блок 301с перемешивания данных, а данные А0 в блок 301d объединения и блок 301с перемешивания данных.
Блок 301с перемешивания данных
Блок 301с перемешивания данных принимает данные А0 и данные А1 от блока 301а разделения, выполняет операцию "исключающее ИЛИ" для каждого бита в данных А0 и данных А1 и таким образом получает 32-битовые данные. Блок 301с перемешивания данных разделяет эти данные на четыре набора из 8-битовых данных, выполняет предварительно определенную подстановку для каждого набора восьмибитовых данных и таким образом генерирует четыре набора 8-битовых данных. Предварительно определенная подстановка, упоминаемая здесь, выполняется с использованием таблицы, которая хранит 256 8-битовых величин, которым присвоены значения адреса от "0" до "255".
После этого блок 301с перемешивания данных формирует 32-битовые данные путем объединения четырех созданных наборов 8-битовых данных. Блок 301с перемешивания данных переставляет конкретные биты в этой 32-битовой величине, чтобы создать новые 32-битовые данные С1, которые он выдает в логический блок 301b "исключающее ИЛИ".
Логический блок 301b "исключающее ИЛИ"
Логический блок 301b "исключающее ИЛИ" принимает данные А1 от блока 301а разделения и 32-битовые данные С1 от блока 301с перемешивания данных. Логический блок 301b "исключающее ИЛИ" выполняет операцию "исключающее ИЛИ" для каждого бита в данных А1 и данных С1, чтобы создать 32-битовые данные субключа В0. Логический блок 301b "исключающее ИЛИ" затем выдает эти данные субключа В0 в блок 302 хранения рандомизированных данных и блок 301d объединения.
Блок 301d объединения
Блок 301d объединения принимает данные А0 от блока 301а разделения и данные субключа В0 от логического блока 301b "исключающее ИЛИ". Блок 301d объединения объединяет данные А0 и данные субключа В0, чтобы создать 64-битовые рандомизированные данные, которые содержат данные А0 в качестве старших 32 битов и данные субключа В0 в качестве младших битов. Блок 301d объединения выдает эти 64-битовые рандомизированные данные в блок 303 управления количеством этапов.
(b) Блок 303 управления количеством этапов
Блок 303 управления количеством этапов работает как описано ниже, обеспечивая возможность блоку 301 рандомизации данных повторять процесс рандомизации данных.
Блок 303 управления количеством этапов имеет область для хранения числа итераций обработки, показывающего общее количество выполненных блоком 301 рандомизации данных процедур рандомизации, и максимального количества итераций.
Блок 303 управления количеством этапов принимает входные данные субключей от логического блока 102 "исключающее ИЛИ" или 64-битовые рандомизированные данные от блока 301 рандомизации данных. Блок 303 управления количеством этапов также принимает управляющий сигнал от блока 106 управления генерацией данных субключей. Если принятый управляющий сигнал равен "1", то максимальное количество итераций устанавливается в "16". Если принятый управляющий сигнал равен "0", то максимальное количество итераций устанавливается в "2". По получении управляющего сигнала блок 303 управления количеством этапов сбрасывает число итераций обработки в "0".
Блок 303 управления количеством этапов принимает входные данные субключей или рандомизированные ключевые данные, добавляет единицу к количеству итераций обработки и сравнивает количество итераций обработки с максимальным количеством итераций. Если количество итераций обработки равно максимальному количеству итераций, блок 303 управления количеством этапов выдает входные ключевые данные или рандомизированные ключевые данные, которые он принял, в блок рандомизации данных, чтобы завершить периодически повторяемую обработку. Если количество итераций обработки меньше максимального количества итераций, блок 303 управления количеством этапов выдает входные ключевые данные, рандомизированные ключевые данные, которые он принял, в блок рандомизации данных и повторяет выполняемую обработку.
Следует иметь в виду, что во время первой итерации периодически повторяющейся обработки блок 303 управления количеством этапов выдает входные данные ключей, которые он принял, в блок 301 рандомизации данных. Во второй и последующих итерациях блок 303 управления количеством этапов выдает рандомизированные данные, которые он принял, в блок 301 рандомизации данных.
Как описано выше, блок 303 управления количеством этапов управляет блоком 301 рандомизации данных, обеспечивая выполнение им процесса рандомизации дважды или шестнадцать раз. Когда осуществляется шифрование (Т* n)-ого (где n=0, 1,... ) блока незашифрованного текста, в процессе обработки блок 301 рандомизации данных выдает шестнадцать наборов данных субключей в блок 302 хранения рандомизованных данных. Во всех других случаях блок 301 рандомизации данных выдает два набора данных субключей в блок 302 хранения рандомизованных данных.
(с) Блок 302 хранения рандомизованных данных
Блок 302 хранения рандомизованных данных принимает управляющий сигнал от блока 106 управления генерацией данных субключей. Блок 302 хранения рандомизованных данных также последовательно принимает шестнадцать наборов данных субключей или два набора данных субключей от блока 301 рандомизации данных. Шестнадцать наборов данных субключей соответственно нумеруются от SK0 до SК15, в то время как два набора данных субключей соответственно нумеруются SK0 и SK1. После приема таких данных блок 302 хранения рандомизованных данных записывает либо шестнадцать наборов данных SK0÷SK15 субключей, либо два набора данных SK0 и SK1 субключей.
Как показано на фиг.5А, если принятый управляющий сигнал равен "1", блок 302 хранения рандомизованных данных считывает записанные наборы данных SK0÷SК15 субключей и выдает эти наборы данных SK0÷SK15 в блоки шифрования с первого по шестнадцатый.
Как показано на фиг.5В, если принятый управляющий сигнал равен "0", блок 302 хранения рандомизованных данных считывает записанные наборы данных K0 и K1 субключей, а затем устанавливает SK14=SK12=SK10=SK8=SK6=SK4=SK2=SK0 и SK15=SK13=SK11=SK9=SK7=SK5=SK3=SK1. После этого блок 302 хранения рандомизированных данных выдает наборы данных субключей от SK0 до SK15 в блок шифрования с первого по шестнадцатый.
Наборы данных субключей от SK0 до SK15 соответственно используются как наборы данных субключей с первого по шестнадцатый.
(9) Блок 105 счетчика
Блок 105 счетчика имеет внутреннюю область для хранения значения отсчета. Это значение отсчета инициализируется с использованием начального значения "0".
Блок 105 счетчика принимает информацию о завершении от блока 100 шифрования. Эта информация показывает, что шифрование одного блока открытого текста завершено. По получении информации о завершении блок 105 счетчика добавляет "1" к значению отсчета. При добавлении "1" к значению отсчета, равной "210-1", блок 105 счетчика сбрасывает значение отсчета в "0".
(10) Блок 106 управления генерацией данных субключей
Блок 106 управления генерацией данных субключей считывает значение отсчета из блока 105 счетчика. Если значение отсчета рав