КРИПТОГРАФИЧЕСКАЯ СИСТЕМА, ВЫПОЛНЕННАЯ ДЛЯ СОВМЕСТНОГО ИСПОЛЬЗОВАНИЯ КЛЮЧЕЙ
CRYPTOGRAPHIC SYSTEM FOR SHARING KEYS

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение относится к криптографической системе, сетевому устройству, способу совместного использования, компьютерной программе и машиночитаемому носителю информации.
УРОВЕНЬ ТЕХНИКИ
В криптографии протокол согласования ключей представляет собой протокол, посредством которого две или более сторон, которые, возможно, еще не выполняют совместное использование общего ключа, могут согласовать такой ключ. Предпочтительно, обе стороны могут влиять на результат таким образом, чтобы никакая из сторон не могла настоять на выборе ключа. Взломщик, подслушивающий все сообщения между этими двумя сторонами, ничего не должен узнать о ключе. При этом, хотя взломщик, видящий те же самые сообщения, ничего не узнает или узнает мало, сами стороны могут вывести совместно используемый ключ.
Протоколы согласования ключей являются целесообразными, например, для обеспечения связи, например, для шифрования и/или аутентификации сообщений между сторонами.
Прикладные протоколы согласования ключей были введены в 1976, когда Витфилд Диффи и Мартин Хеллман ввели понятие криптографии с открытым ключом. Они предложили систему для согласования ключей между двумя сторонами, в которой используется очевидная трудность вычисления логарифмов по конечному полю GF (q) с q элементами. С применением системы два пользователя могут согласовать симметричный ключ. Симметричный ключ может затем использоваться, например, для зашифрованной связи между этими двумя сторонами.
Система Диффи-Хеллмана для согласования ключей применима, когда стороны еще не имеют совместно используемого секретного ключа. Метод согласования ключей Диффи-Хеллмана требует проведения ресурсозатратных математических операций, таких как выполнение операций возведения в степень по конечному полю. И показатель степени, и размер поля могут быть большими. Это делает протоколы согласования ключей менее подходящими для устройств с низким объемом ресурсов. С другой стороны, протоколы согласования ключей были бы очень полезны в обладающих ограниченными ресурсами устройствах. Например, в прикладных областях, таких как Интернет вещей, специальные беспроводные сети, и т.п., согласование ключей могло бы использоваться для защиты каналов между устройствами. Другим примером является связь между считывателем и электронной меткой, например, картридером и смарт-картой, или считывателем меток и меткой, например, меткой RFID или меткой NFC.
Другой подход к проблеме установки безопасных соединений между парами сетевых устройств в заданной сети связи приведен в работе C. Blundo, A. De Santis, A. Herzberg, S. Kutten, U. Vaccaro and M. Yung, ʺPerfectly-Secure Key distribution for Dynamic Conferencesʺ, Springer Lecture Notes in Mathematics, Vol. 740, pp. 471-486, 1993 (далее называемой ʹBlundoʹ).
Эта система предполагает наличие центрального администратора, также называемого сетевым администратором или доверенной третьей стороной (TTP), который генерирует симметричный двумерный полином  с коэффициентами в конечном поле F с p элементами, при этом p является простым числом или степенью простого числа. Каждое устройство имеет идентификационный номер в F, и TTP предоставляет ему материал для локального ключа. Для устройства с идентификатором η материал для локального ключа представляет собой коэффициенты полинома  Если устройство η хочет связаться с устройством ηʹ, оно использует свой материал для ключа для генерации ключа  Поскольку f симметричен, то генерируется тот же самый ключ. Материал для локального ключа является секретным. Знание материала для локального ключа сразу же скомпрометировало бы систему. В частности, это позволило бы перехватчику получить тот же самый совместно используемый ключ. Способ требует, чтобы каждое устройство в сети устройств имело свой собственный уникальный идентификационный номер и материал для локального ключа.
Проблема этой схемы совместного использования ключей возникает, если взломщик знает материал для ключа для t+1 или большего количества устройств, где t является степенью двумерного полинома. Взломщик может тогда восстановить полином f (x,y). В этот момент безопасность системы полностью нарушается. Имея идентификационные номера любых двух устройств, взломщик может восстановить ключ, совместно использованный этой парой устройств.
Доверенная третья сторона формирует единственную критическую точку. Если доверенная третья сторона была скомпрометирована, и ее материал для корневого ключа был раскрыт, то может быть вычислен материал для ключа для всех сетевых устройств. Все сообщения, полученные из материала для локального ключа, и, в конечном счете, из материала для корневого ключа, могут быть скомпрометированы, например, шифрование может быть взломано, аутентификация может быть подделана и т.д.
Действительно, сама доверенная третья сторона могла бы восстановить материалы для ключа отдельных узлов и ключ между любой парой узлов из своего материала для корневого ключа и идентификационных данных узлов. Таким образом, TTP может подслушать все сообщения в сети. Это может быть нежелательным в определенных обстоятельствах, поскольку требуется очень высокий уровень доверия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Предоставлена криптографическая система, включающая в себя множество серверов конфигурации, выполненных для конфигурирования множества сетевых устройств для совместного использования ключей.
Каждый сервер конфигурации включает в себя
- получатель материала для ключа, выполненный для получения в электронной форме материала для корневого ключа, специфичного для сервера конфигурации,
- диспетчер сетевых устройств, выполненный для получения в электронной форме идентификационного номера сетевого устройства для сетевого устройства из множества конфигурируемых сетевых устройств,
- вычислительный блок, выполненный для вычисления материала для локального ключа для сетевого устройства по материалу для корневого ключа и идентификационному номеру сетевого устройства, и
- при этом диспетчер сетевых устройств дополнительно выполнен для предоставления вычисленного материала для локального ключа конфигурируемому сетевому устройству,
- для каждого сетевого устройства из множества сетевых устройств по меньшей мере два сервера конфигурации из множества серверов конфигурации предоставляют вычисленный материал для локального ключа указанному сетевому устройству, при этом сетевое устройство приспособлено для совместного добавления указанных по меньшей мере двух предоставленных вычисленных материалов для локального ключа, в результате чего получают один объединенный материал для локального ключа.
Поскольку сетевые устройства получают материал для локального ключа по меньшей мере от двух различных серверов конфигурации, то единственная критическая точка, вводимая путем использования доверенной третьей стороны, удаляется. Сетевые устройства могут использовать материал для локального ключа, полученный более чем от 1 сервера конфигурации. Даже если один из серверов конфигурации был скомпрометирован, ключи, выведенные сетевыми устройствами, которые ранее получили материал для локального ключа от скомпрометированного сервера конфигурации, все еще являются безопасными. Кроме того, один единственный сервер конфигурации не может вывести ключи, поскольку в процессе генерации ключей используется материал для локального ключа от множества серверов конфигурации для выведения единственного ключа. Таким образом, уровень доверия, который требуется для использования множества серверов конфигурации, меньше, чем если бы имелся только один сервер конфигурации.
Например, материал для корневого ключа может содержать двумерный полином, и вычисление материала для локального ключа сервером конфигурации для сетевого устройства может включать в себя получение одномерного полинома путем подстановки идентификационного номера сетевого устройства в указанный конкретный полином. Одномерные полиномы являются совместимыми со сложением в качестве оператора комбинации. Это позволяет сетевому устройству, например, складывать одномерные полиномы или складывать промежуточные ключи, выведенные из них.
Один из аспектов изобретения относится к первому сетевому устройству, сконфигурированному для определения совместно используемого ключа с любым из множества сетевых устройств. Первое сетевое устройство включает в себя
- электронное хранилище, выполненное для хранения идентификационного номера первого сетевого устройства,
- приемник, выполненный для приема множества материалов для локального ключа по меньшей мере от двух различных серверов конфигурации из множества серверов конфигурации,
- блок связи, выполненный для получения идентификационного номера второго сетевого устройства для второго сетевого устройства из множества сетевых устройств и предоставления идентификационного номера первого сетевого устройства второму сетевому устройству, и
- блок совместно используемых ключей, выполненный для выведения совместно используемого ключа из идентификационного номера второго сетевого устройства и по меньшей мере двух из множества материалов для локального ключа первого сетевого устройства, при этом блок (330) совместно используемых ключей выполнен для объединения по меньшей мере двух из множества материалов для локального ключа первого сетевого устройства, получая единственный объединенный материал для локального ключа, при этом блок (330) совместно используемых ключей выполнен для сложения по меньшей мере двух материалов для локального ключа с целью их объединения, при этом совместно используемый ключ выводится из идентификационного номера второго сетевого устройства и объединенного материала для локального ключа.
Для сетевого устройства снижается риск того, что его совместно используемый ключ будет скомпрометирован в результате неполадки в другом месте, например, в доверенной третьей стороне. Даже если бы один из множества его материалов для локального ключа стал бы известен, то все еще оставался бы другой локальный материал, из которого выводится совместно используемый ключ. Соответственно, единственная критическая точка удаляется. Кроме того, единственный сервер конфигурации не может получить ключи, потому что в процессе генерации ключей используется материал для локального ключа множества серверов конфигурации.
В одном из вариантов осуществления блок совместно используемых ключей выполнен для объединения по меньшей мере двух из множества материалов для локального ключа первого сетевого устройства, получая единственный объединенный материал для локального ключа, при этом совместно используемый ключ выводится из идентификационного номера второго сетевого устройства и объединенного материала для локального ключа. Например, материалы для локального ключа могут быть сложены. После объединения исходный материал для ключа может быть удален, посредством чего снижается требуемый объем хранилища. Поскольку исходные материалы для ключа больше не присутствуют в устройстве, то тайные попытки нарушения защиты становятся более трудными. Кроме того, дальнейшее вычисление с помощью объединенного материала для локального ключа является более эффективным.
Вместо объединения материалов для ключа в единственный объединенный материал для ключа, блок совместно используемых ключей может быть выполнен для выведения первого промежуточного совместно используемого ключа из идентификационного номера второго сетевого устройства и первого материала для локального ключа из множества материалов для локального ключа первого сетевого устройства, и может быть выполнен для выведения второго промежуточного совместно используемого ключа из идентификационного номера второго сетевого устройства и второго материала для локального ключа из множества материалов для локального ключа первого сетевого устройства, при этом совместно используемый ключ выводится путем объединения первых и вторых промежуточных ключей. Любое число материалов для локального ключа, большее 1, может использоваться.
В обоих случаях по меньшей мере два материала для ключа влияют на получаемый в результате совместно используемый ключ.
В одном из вариантов осуществления криптографической системы материал для локального ключа включает в себя полином, например, одномерный полином, при этом сетевые устройства приспособлены для сложения по меньшей мере двух предоставленных вычисленных материалов для локального ключа с получением одного объединенного материала для локального ключа путем сложения указанных по меньшей мере двух предоставленных полиномов. Например, материал для корневого ключа, специфичный для сервера конфигурации, может включать в себя один или несколько многомерных, например, двумерных, полиномов, из которых вычисляют материал для локального ключа для сетевого устройства.
В одном из вариантов осуществления множество материалов для локального ключа хранится в первом сетевом устройстве вместе с множеством ассоциированных идентификаторов сервера конфигурации, при этом идентификатор сервера конфигурации указывает сервер конфигурации, от которого ассоциированный материал для локального ключа был получен в первом сетевом устройстве, при этом первое сетевое устройство включает в себя блок конфигурации, выполненный для согласования со вторым сетевым устройством на поднаборе множества идентификаторов сервера конфигурации таким образом, чтобы и первое, и второе сетевое устройство имели материал для локального ключа, ассоциированный с серверами конфигурации из поднабора.
Эта система позволяет сетевым устройствам накапливать больше материалов для локального ключа. Например, это позволяет теперь осуществлять миграцию между серверами конфигурации без периода простоя и без компрометации системы. Если материалы для ключа хранятся как единственный объединенный материал для ключа, то в течение миграции сервер конфигурации может отправлять дополнительный материал для ключа, который, при объединении с сохраненным объединенным материалом для ключа, дает эффект удаления старого материала для ключа из комбинации, и, необязательно, непосредственного добавления нового материала для ключа. Это усложняет тайные попытки нарушения защиты.
Способ совместного использования ключа, описанный в настоящем раскрытии, может применяться в широком диапазоне практических приложений. Такие практические приложения включают: бытовую автоматику, мобильную связь, и т.п.
В одном из вариантов осуществления блок совместно используемых ключей выполнен для получения совместно используемого ключа из идентификационного номера второго сетевого устройства и по меньшей мере трех или по меньшей мере четырех из множества материалов для локального ключа первого сетевого устройства и т.д.
Способ согласно изобретению может быть реализован на компьютере как реализуемый компьютером способ, или на выделенном аппаратном обеспечении, или как комбинация и того, и другого. Исполняемый код для способа согласно изобретению может храниться в компьютерном программном продукте. Примеры компьютерных программных продуктов включают в себя запоминающие устройства, оптические запоминающие устройства, интегральные схемы, серверы, онлайн-программное обеспечение и т.д. Предпочтительно, компьютерный программный продукт содержит энергонезависимые средства программного кода, хранящиеся на машиночитаемом носителе информации, для выполнения способа согласно изобретению.
В предпочтительном варианте осуществления компьютерная программа содержит средства кода компьютерной программы, выполненные для выполнения всех этапов способа согласно изобретению, когда компьютерная программа запущена на компьютере. Предпочтительно, компьютерная программа реализована в машиночитаемом носителе информации.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Эти и другие аспекты изобретения являются очевидными и будут объяснены в отношении вариантов осуществления, описанных ниже в настоящем раскрытии. На чертежах,
Фигура 1a схематично показывает в форме блочной диаграммы пример варианта осуществления криптографической системы,
Фигура 1b схематично показывает в форме блочной диаграммы пример варианта осуществления электронного хранилища.
Фигура 2 схематично показывает в форме блочной диаграммы пример варианта осуществления сервера 200 конфигурации;
Фигура 3 схематично показывает в форме блочной диаграммы пример варианта осуществления первого сетевого устройства 300 и второго сетевого устройства 350;
Фигура 4 схематично показывает в форме блочной диаграммы пример варианта осуществления системы 102 совместного использования ключа,
Фигура 5 схематично показывает в форме блок-схемы пример варианта осуществления способа 500,
Фигура 6 схематично показывает в форме блочной диаграммы пример варианта осуществления интегральной схемы 400.
Следует отметить, что элементы, имеющие одни и те же цифровые обозначения на различных фигурах, имеют одни и те же структурные характеристики и одни и те же функции, или представляют собой одни и те же сигналы. Если функция и/или структура такого элемента была объяснена, то отсутствует необходимость их повторного объяснения в подробном описании.
Список цифровых обозначений на фигурах 1-4, 6:
1 множество серверов конфигурации
2 множество сетевых устройств
100,102 система совместного использования ключей
110 устройство персонализации
121, 122 совместное использование ключа
200, 201, 202 сервер конфигурации
210, 211, 212 получатель материала для ключа
220, 223, 225 блок вычисления
222 блок подстановки
224 блок сокращения полинома
226 блок сложения полиномов
228 сумма множества одномерных полиномов
229 одномерный полином закрытого ключа
230 диспетчер сетевых устройств
232 сообщение с идентификационным номером
236 сообщение с материалом закрытого ключа
238 соединение
240 блок манипуляции с полиномами
250 набор параметров
252 первое закрытое множество двумерных полиномов
254 второе закрытое множество целочисленных коэффициентов сокращения
256 общедоступный глобальный целочисленный коэффициент сокращения
276 идентификатор сервера конфигурации
300 первое сетевое устройство
310 идентификационный номер
320, 321, 322 электронное хранилище
330 блок совместно используемых ключей
332 блок подстановки
334 блок целочисленного сокращения
336 блок согласования ключа
340 устройство выведения ключа
342 блок связи
345 криптографический блок
350 второе сетевое устройство
355 идентификационный номер
360 третье сетевое устройство
370 первый материал для ключа
372 закрытый одномерный полином ключа
374 общедоступный глобальный целочисленный коэффициент сокращения
376 идентификатор сервера конфигурации
380 второй материал для ключа
382 закрытый одномерный полином ключа
386 идентификатор сервера конфигурации
390 блок конфигурации
400 интегральная схема
410 интерфейс
420 процессор
430 память
440 блок ввода/вывода
450 вычислительный блок
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Хотя настоящее изобретение допускает осуществление во множестве различных форм, показаны на чертежах и будут подробно описаны в настоящем раскрытии один или несколько конкретных вариантов осуществления, при этом следует понимать, что настоящее раскрытие должно быть рассмотрено как типовое для принципов изобретения, и не предполагается, что оно ограничивает изобретение конкретными вариантами осуществления, показанными и описанными в нем.Ниже, в целях понимания, электронные схемы описаны в процессе функционирования. Однако будет очевидно, что соответствующие элементы приспособлены для выполнения функций, которые описываются, как выполняемые ими.
На фигуре 1a схематично показан в форме блочной диаграммы пример варианта осуществления системы 100 совместного использования криптографических ключей.
Система 100 совместного использования ключей включает в себя множество серверов 2 конфигурации, выполненных для конфигурирования множества сетевых устройств 1 для совместного использования ключей.
На фигуре 1a показаны серверы 200, 201 и 202 конфигурации. Имеется по меньшей мере два сервера конфигурации.
Каждый сервер конфигурации включает в себя получатель материала для ключа, диспетчер сетевых устройств, вычислительный блок и диспетчер сетевых устройств. Для ясности на фигуре 1a показаны только получатели материала для ключа и вычислительные блоки. На фигуре 1a показаны, для сервера 200 конфигурации, получатель 210 материала для ключа и вычислительный блок 220; для сервера конфигурации 201, получатель 211 материала для ключа и вычислительный блок 223; и, для сервера конфигурации 202, получатель 212 материала для ключа и вычислительный блок 225. Вычислительные блоки 220, 223, и 225 могут иметь одну и ту же конструкцию.
f
i
Получатели материала для ключа приспособлены для получения в электронной форме материала для корневого ключа, специфичного для сервера конфигурации; различные серверы конфигурации имеют различный материал для корневого ключа. Например, получатель материала для ключа может сгенерировать материал для корневого ключа или может принять материал для корневого ключа; в одном из вариантов осуществления получатель материала для ключа содержит хранилище, в котором хранится материал для корневого ключа, и из которого получатель материала для ключа извлекает его. В одном из вариантов осуществления материал для корневого ключа содержит один или несколько закрытых двумерных полиномов ((,)). Хранилище может представлять собой электронную память, магнитное запоминающее устройство, оптическое запоминающее устройство и т.п.
Диспетчер сетевых устройств выполнен для получения в электронной форме идентификационного номера сетевого устройства (A) для конфигурируемого сетевого устройства из множества сетевых устройств 1.
Вычислительный блок 220 выполнен для вычисления материала для локального ключа для сетевого устройства по материалу для корневого ключа и идентификационному номеру сетевого устройства (A). Материал для локального ключа также называется множеством материалов для ключа.
f
i
В одном из вариантов осуществления вычислительный блок выполнен для подстановки идентификационного номера сетевого устройства в один или более указанных закрытых двумерных полиномов ((A),), получая один или несколько одномерных полиномов, из которых выводится материал для локального ключа; материал для локального ключа включает в себя одномерный полином.
Диспетчер 230 сетевых устройств также выполнен для предоставления вычисленного материала для локального ключа конфигурируемому сетевому устройству. Один из способов предоставления состоит в отправке. Например, диспетчер 230 сетевых устройств может быть также выполнен для отправки вычисленного материала для локального ключа конфигурируемому сетевому устройству.
Серверы конфигурации могут быть реализованы как, допустим, веб-сервер. Диспетчер сетевых устройств может быть реализован с помощью соединения компьютер-сеть, допустим, локальная сеть или Интернет. Серверы конфигурации не должны использовать соединение компьютерной сети; они могут также быть непосредственно подключены к сетевому устройству, подвергающемуся конфигурированию. Последнее может, например, быть целесообразным для применения вместе с производством сетевых устройств. Различные типы серверов конфигурации могут быть объединены в единственном варианте осуществления системы 100. Соединения для передачи материала для локального ключа с сервера конфигурации на сетевое устройство были проиллюстрированы на фигуре 1a как стрелки от множества серверов конфигурации 2 к множеству сетевых устройств 1.
Система 100 совместного использования ключей включает в себя множество серверов конфигурации 2, выполненных для конфигурирования множества сетевых устройств 1 для совместного использования ключей.
На фигуре 1a показаны сетевые устройства 300, 350, и 360. Имеется по меньшей мере два сетевых устройства, но в типичном варианте осуществления число сетевых устройств намного больше, чем число серверов конфигурации. Например, в одном из вариантов осуществления имеется по меньшей мере в 50 раз больше сетевых устройств, чем серверов конфигурации.
Множество устройств согласно варианту осуществления могут легко установить ключи между их парами, таким образом, обеспечивая возможность защищенной связи между любыми двумя из них. Соответственно, мы называем устройства сетевыми устройствами. В одном из вариантов осуществления для связи между двумя устройствами используется беспроводная связь. Другие формы связи также являются возможными, например, проводная связь и т.д.
Каждое сетевое устройство содержит электронное хранилище, выполненное для хранения идентификационного номера первого сетевого устройства. На фигуре 1a показано первое сетевое устройство 300 с электронным хранилищем 320; второе сетевое устройство 350 с электронным хранилищем 321; и третье сетевое устройство 360 с электронным хранилищем 322. Для того, чтобы гарантировать, что число различных ключей, которые могут быть выведены среди множества сетевых устройств, является достаточно большим, является предпочтительным, чтобы идентификационный номер однозначно определял сетевое устройство в пределах множества сетевых устройств; однако, последнее не является необходимым. Например, идентификационный номер может также иметь функцию адресации устройства в пределах множества устройств; с другой стороны, может применяться независимый механизм адресации, например, резервирование идентификационного номера для согласования ключей.
Сетевое устройство также содержит приемник, блок связи и блок 330 совместно используемых ключей. Для ясности на фигуре 1a показаны только электронное хранилище и вычислительный блок.
Приемник выполнен для приема множества материалов для локального ключа по меньшей мере от двух различных серверов конфигурации из множества серверов конфигурации. Приемник может представлять собой блок сетевого соединения, допустим, блок беспроводного соединения, допустим Wi-Fi, или проводного соединения, допустим, Ethernet. Приемник может также использоваться для проприетарного соединения, допустим, для загрузки материала для локального ключа в устройство, допустим, во время производства.
Сетевые устройства принимают материал для локального ключа от различных серверов конфигурации. Сетевое устройство может принимать материал для локального ключа от серверов конфигурации различных типов. Например, во время производства, сетевое устройство может принимать первый материал для локального ключа, и может позднее принимать дополнительный материал для локального ключа, допустим, по соединению через компьютерную сеть.
После того, как сетевые устройства получили свой материал для локального ключа, им не требуется вмешательство сервера конфигурации для совместного использования ключа с другим сетевым устройством. Блок связи и блок совместно используемых ключей сетевого устройства используются сетевым устройством для совместного использования ключа с другим сетевым устройством из множества сетевых устройств, например, вторым сетевым устройством. Блок связи выполнен для получения идентификационного номера второго сетевого устройства (B) второго сетевого устройства из множества сетевых устройств и предоставления идентификационного номера первого сетевого устройства второму сетевому устройству. Блок 330 совместно используемых ключей выполнен для выведения совместно используемого ключа из идентификационного номера второго сетевого устройства и по меньшей мере двух из множества материалов для локального ключа первого сетевого устройства. Второе сетевое устройство выполняет аналогичное вычисление, но со своим собственным множеством материалов для локального ключа и идентификационным номером первого устройства. Результатом вычислений в обоих случаях является совместно используемый ключ.
Кто-либо имеющий сведения о сообщениях между двумя сетевыми устройствами, допустим, первым сетевым устройством 300 и вторым сетевым устройством 350, не может получить их совместно используемый ключ, не используя нецелесообразно большие ресурсы. Даже устройство 360 не может получить ключ, совместно используемый устройствами 300 и 350.
Имеется ряд алгоритмов для совместного использования ключей, например, протоколы согласования ключей, которые могут применяться в системе 100. Два примера таких алгоритмов описаны ниже.
Когда два сетевых устройства должны совместно использовать ключ, например, симметричный ключ, допустим, чтобы зашифровать и/или аутентифицировать связь между этими двумя устройствами, каждое выводит совместно используемый ключ из идентификационного номера второго сетевого устройства и по меньшей мере двух из множества материалов для локального ключа первого сетевого устройства. Материал для локального ключа, используемый для получения совместно используемого ключа, выводится из того же самого материала для корневого ключа.
В примере, проиллюстрированном на фигуре 1a: первое сетевое устройство 300 принимает материал для локального ключа от серверов 200 конфигурации и 201, то есть, материал, выведенный из их соответствующего материала для корневого ключа; второе сетевое устройство 350 получает материал для локального ключа от серверов 200, 201 и 202 конфигурации; и третье сетевое устройство 360 получает материал для локального ключа от серверов конфигурации 201 и 202, то есть, материал, выведенный из их соответствующего материала для корневого ключа.
Например, первое и второе сетевое устройство 300 и 350 приняли материалы для локального ключа от одних и тех же двух серверов 200 конфигурации и 201. Используя эти материалы для локального ключа, они могут вывести ключ, совместно используемый между ними.
Использование множества материалов для локального ключа для выведения совместно используемого ключа может быть осуществлено множеством способов.
В первом способе выведения совместно используемого ключа из двух или более материалов для локального ключа используется блок 330 совместно используемых ключей, выполненный для объединения по меньшей мере двух из множества материалов для локального ключа, получая единственный объединенный материал для локального ключа. Совместно используемый ключ может быть выведен из единственного объединенного материала для локального ключа и полученного идентификационного номера сетевого устройства. В последнем случае может применяться алгоритм совместного использования ключей, известный в технике, например, один из двух примеров, описанных ниже в настоящем раскрытии. Например, два или более материала для локального ключа могут быть сложены друг с другом с целью их объединения.
Прибавление материала для локального ключа в целях объединения является подходящим, например, для согласования ключей, в котором материал для корневого ключа включает в себя двумерный полином и материал для локального ключа включает в себя одномерные полиномы, выведенные из двумерного полинома. Прибавление материала для локального ключа, включающего в себя одномерный полином, может включать в себя сложение одномерных полиномов, например, сложение коэффициентов одночленов, имеющих одну и ту же степень.
Объединенный материал для локального ключа может быть выведен во время совместного использования ключей, или во время фазы конфигурации, и т.д. Например, сетевое устройство может быть сконфигурировано для конкретного числа материалов для локального ключа, допустим, 2 или 3, или больше; когда сетевое устройство приняло несколько материалов для локального ключа, выполняется объединение, например, до того, как потребуется совместно используемый ключ, например, до того, как будет получен идентификационный номер второго сетевого устройства. Эта операция повышает безопасность системы, поскольку она позволяет избежать получения взломщиком доступа к материалу для индивидуального локального ключа. Однако объединение может также происходить во время совместного использования ключей, например, после получения идентификационного номера второго сетевого устройства.
Объединение материала для локального ключа имеет дополнительное преимущество, заключающееся в том, что безопасность против тайных попыток нарушения защиты увеличивается с ростом числа используемых локальных материалов.
После того, как материалы для локального ключа были объединены, они могут быть затем удалены, при этом совместно используемый ключ будет выводиться из полученного идентификатора и объединенного материала для ключа, содержащего по меньшей мере два материала для локального ключа первого сетевого устройства.
Во втором способе выведения совместно используемого ключа из двух или более материалов для локального ключа используется блок 330 совместно используемых ключей, выполненный для выведения первого промежуточного совместно используемого ключа из идентификационного номера второго сетевого устройства и первого материала для локального ключа из множества материалов для локального ключа первого сетевого устройства, и выполненный для выведения второго промежуточного совместно используемого ключа из идентификационного номера второго сетевого устройства и второго материала для локального ключа из множества материалов для локального ключа первого сетевого устройства. Совместно используемый ключ выводится путем объединения первого и второго промежуточных ключей. Начальное выведение промежуточных ключей и их объединение для формирования совместно используемого ключа являются совместимыми с широким диапазоном протоколов согласований ключей, например, основанных на алгоритме Диффи-Хеллмана.
Промежуточные ключи могут представлять собой криптографические совместно используемые ключи, которые могли бы, в принципе, использоваться самостоятельно для защиты связи. С другой стороны, промежуточные ключи могут также являться неподходящими для самостоятельного использования, например, потому что промежуточные ключи не могут быть использованы совместно. Например, во время выведения промежуточных ключей могли быть пропущены части алгоритма совместного использования ключей, которые гарантируют, что промежуточные ключи с достаточной вероятностью будут равны для обеих сторон совместного использования ключей, например, первого и второго сетевых устройств, такие как операции по модулю, согласования, и т.п. Пропущенные части могут быть выполнены вместе для объединения первого и второго промежуточных ключей.
Объединение промежуточных ключей может также быть сделано путем их сложения. Сложение, или некоторая другая математическая операция, совместимая с базовым механизмом согласования ключей, является, например, подходящей, когда некоторые операции будут выполнены на объединенных ключах. Сложение может быть выполнено по некоторому модулю. Вместо элементарной арифметической операции, такой как сложение, исключающее «или», умножение и т.п., функция выведения ключа может применяться для выведения совместно используемого ключа из промежуточных ключей; при этом для выведения ключа берутся в качестве входных данных, по меньшей мере, первый и второй промежуточные ключи, и в результате выдается совместно используемый ключ или некоторый его предшественник. Например, криптографическая хеш-функция, допустим, sha-256, применяемая к конкатенации первого и второго промежуточного ключа, может использоваться в качестве функции выведения ключа. Функция выведения криптографического ключа, несовместимая с базовым механизмом согласования ключей, подходит для объединения промежуточных ключей, которые используются совместно, например, равны для обеих сторон, например, первого и второго сетевых устройств.
В одном из вариантов осуществления все устройства из множества сетевых устройств принимают материал для локального ключа от всех серверов из множества серверов конфигурации. Например, такой вариант осуществления подходит для системы, в которой имеется ровно два сервера конфигурации. Прием материала для локального ключа от всех серверов конфигурации максимизирует вклад в безопасность, который может быть получен от различных серверов конфигурации. Например, если количество серверов конфигурации составляет, допустим, 3 или 4, или больше, то блок 330 совместно используемых ключей может быть выполнен для выведения совместно используемых ключей из того же самого количества материалов для локального ключа.
Однако, последнее не является необходимым, и различные сетевые устройства могут принимать материал для локального ключа от различных серверов конфигурации, возможно, также от различного количества серверов конфигурации, с тем чтобы не все сетевые устройства имели одно и то же количество материалов для локального ключа. В этом варианте осуществления сетевые устройства могут быть сконфигурированы, например, предварительно запрограммированы, в отношении того, какой материал для локального ключа будет использоваться при выведении совместно используемого ключа для каждого сетевого устройства. Сетевые устройства могут также быть сконфигурированы для выбора корректных материалов для локального ключа.
В одном из вариантов осуществления множество материалов для локального ключа сохранено в первом сетевом устройстве вместе с множеством ассоциированных идентификаторов серверов конфигурации. Идентификатор сервера конфигурации указывает на сервер конфигурации, от которого связанный материал для локального ключа был принят первым сетевым устройством. Каждый сервер конфигурации ассоциирован с идентификатором сервера конфигурации, однозначно определяющим сервер конфигурации среди множества серверов конфигурации. Сетевые устройства содержат блок конфигурации, выполненный для согласования со вторым сетевым устройством на поднаборе множества идентификаторов сервера конфигурации, таким образом, что и первое, и второе сетевое устройство имеют материал для локального ключа, ассоциированный с серверами конфигурации из поднабора. Блоки конфигурации не показаны отдельно на фигуре 1a. Блоки конфигурации являются необязательными.
Фигура 1b иллюстрирует пример варианта осуществления электронного хранилища 320. В хранилище 320 хранится идентификационный номер первого сетевого устройства 300, множество 370 материалов для первого ключа, то есть, материал для первого локального ключа, и множество 380 материалов для второго ключа, то есть, материал для второго локального ключа. В хранилище 320 также хранится идентификатор первого сервера конфигурации 376, ассоциированный с материалом для первого локального ключа, и идентификатор 386 второго сервера конфигурации, ассоциированный с материалом для второго локального ключа. Например, идентификатор 376 первого сервера конфигурации может определять сервер 200 конфигурации, и идентификатор 386 второго сервера конфигурации может определять сервер конфигурации 201.
Возвратимся к фигуре 1a; блок конфигурации может быть выполнен посредством ряда способов для достижения соглашения по поднабору множества идентификаторов серверов конфигурации.
Например, блок конфигурации первого сетевого устройства может быть выполнен для отправки множества идентификаторов серверов конфигурации второму сетевому устройству и для приема поднабора от второго сетевого устройства. Конфигурация второго сетевого устройства, с которым первое сетевое устройство выводит совместно используемый ключ, может быть приспособлена для приема множества идентификаторов серверов конфигурации от второго сетевого устройства, определения пересечения между принятым множеством идентификаторов серверов конфигурации и множеством идентификаторов сервера конфигурации первого сетевого устройства, выбора поднабора из пересечения и отправки поднабора второму сетевому устройству.
Например, второе сетевое устройство 350 может отправить третьему сетевому устройству 360 идентификаторы конфигураций серверов 200, 201 и 202 конфигурации. Третье сетевое устройство 360 может определить пересечение между принятым множеством идентификаторов серверов конфигурации и множеством своих собственных, для третьего сетевого устройства, идентификаторов серверов конфигурации, которые представляют собой идентификаторы серверов конфигурации для серверов конфигурации 201 и 202. В этом примере пересечение представляет собой идентификаторы конфигураций для серверов конфигурации 201 и 202. Из этого пересечения третье сетевое устройство 360 затем выбирает поднабор. Полученное в результате поднабор может быть отправлен обратно второму сетевому устройству 350. Сетевые устройства могут использовать свои соответствующие блоки связи для отправки сообщений.
Выбор поднабора из пересечения может быть сделан множеством способов. Например, пересечение может быть выбрано в качестве поднабора. Это максимизирует количество материалов для локального ключа, которое объединяется в совместно используемый ключ, что повышает безопасность. Однако, если пересечение является большим, выбор меньшего количества может являться предпочтительным, поскольку снижает затраты вычислительных ресурсов. Например, в одном из вариантов осуществления, блок конфигурации выполнен для выбора всего пересечения в качестве поднабора в случае, если число идентификаторов сервера конфигурации меньше или равно параметру пересечения, допустим, 4 или 5 или больше, и выбора параметра пересечения для идентификаторов серверов конфигурации, если число идентификаторов серверов конфигурации будет больше, чем параметр пересечения. Выбор из пересечения может быть сделан посредством случайного выбора, или иначе, например, путем взятия первого параметра пересечения идентификаторов сервера конфигурации. Параметр пересечения может быть предварительно задан или может определяться динамически модулем конфигурации, например, в зависимости от конфигурируемого параметра безопасности блока конфигурации.
В примере, показанном на фигуре 1a, первое сетевое устройство 300 и третье сетевое устройство 360 имеют только материал для локального ключа от единственного совместно используемого сервера конфигурации, в этом случае, от сервера конфигурации 201. Если используется блок конфигурации, это может быть обнаружено при определении пересечения. В этой точке блок конфигурации может выдать сообщение об ошибке, указывающее, что выведение совместно используемого ключа с этим сетевым устройством невозможно, поскольку отсутствует доступный материал для локального ключа от по меньшей мере двух из тех же самых серверов конфигурации. В одном из вариантов осуществления может быть предоставлен резервный механизм, например, может использоваться совместно используемый ключ, выведенный из единственного материала для локального ключа. Последнее не является предпочтительным, поскольку это может позволить взломщику провоцировать резервную ситуацию, имеющую более низкую безопасность. Однако в некоторых применениях это может являться более предпочтительным по сравнению с отсутствием связи. Этот резервный вариант не является возможным, если пересечение пусто; последнего можно избежать путем обеспечения того, чтобы сетевые устройства имели по меньшей мере один материал для локального ключа от одного сервера конфигурации. Например, все сетевые устройства могут принять материал для локального ключа по меньшей мере от одного конкретного сервера конфигурации, например, во время производства. Дополнительный материал для локального ключа может быть получен сетевым устройством во время его применения. Таким образом, безопасность совместно используемого ключа повышается в течение срока службы сетевого устройства. Кроме того, источник материала для локального ключа становится все более и более неясным, делая взлом, выполняемый сильными злоумышленниками, например, который в состоянии поставить под угрозу серверы конфигурации, все более и более трудным.
Ниже описаны два алгоритма совместного использования ключа, подходящие для применения в системе 100. Оба имеют преимущество повышенной безопасности, поскольку была устранена единственная критическая точка, вызываемая компрометацией сервера конфигурации. Утечка материала для корневого ключа единственного сервера конфигурации не компрометирует напрямую безопасность всех выведенных совместно используемых ключей.
I
x
y
x
y
i
i
Описан первый механизм совместного использования криптографического ключа, который может применяться в системе 100. Материал для корневого ключа сервера конфигурации может включать в себя единственный двумерный полином. Например, сервер конфигурации  может иметь двумерный полином R(,). Здесь два входа двумерных полиномов обозначены  и ; эти переменные являются формальными переменными, которые иногда опускают для ясности, например, как R(,). Двумерный полином может быть определен по кольцу, в частности, по целым числам, кратным некоторому числу, более конкретно, кратным простому числу, например,
I
R
p
i
Если сервер конфигурации  конфигурирует сетевое устройство с идентификационным номером r, сервер конфигурации вычисляет R(, x) в кольце, допустим  допустим, по модулю ; таким образом получая одномерный полином. Материал для локального ключа включает в себя одномерный полином.
p
Как объяснено выше, сетевое устройство может принимать материал для локального ключа от всех или некоторых серверов конфигурации. Хотя серверы конфигурации имеют различный материал для корневого ключа, например, различный двумерный полином, они все совместно используют одно и то же кольцо для вычислений, например, они все вычисляют по модулю , и т.д.
Если первое сетевое устройство, допустим, первое сетевое устройство 300, желает вывести ключ, совместно используемый со вторым сетевым устройством, допустим, вторым сетевым устройством 350, то эти два сетевых устройства обмениваются идентификаторами сетевого устройства; например, первое сетевое устройство отправляет идентификатор второму сетевому устройству и принимает идентификатор B от второго сетевого устройства.
i=
i=
p
A
B
A
B
p
p
p
1
2
Ниже, для ясности, предполагается, что сетевые устройства получили материал для локального ключа от серверов 1 и 2, допустим, серверов 200 и 201, и что вычисления выполняются по модулю ; однако, варианты, указанные в настоящем раскрытии, могут применяться с необходимыми изменениями. Первое сетевое устройство может вычислять два промежуточных ключа R(,) и R(,). Каждый из этих двух промежуточных ключей может быть сокращен по модулю , в результате чего будут получены два совместно используемых промежуточных ключа. Два совместно используемых промежуточных ключа могут быть объединены в единственный совместно используемый ключ с помощью функции выведения ключа. Сокращение по модулю  может также быть отложенным, то есть, сначала складываются промежуточные ключи и затем выполняется сокращение по модулю . Полученный в последнем случае результат может непосредственно использоваться в качестве совместно используемого ключа. При желании функция выведения ключа с единственным входом может использоваться для выравнивания энтропии в ключе, например, может использоваться хеш-функция.
Вместо выведения промежуточных ключей сетевые устройства могут также объединять сам материал для локального ключа. Например, первое сетевое устройство может складывать одномерные полиномы , предпочтительно, по модулю p, получая единственный объединенный материал для локального ключа SC. Для выведения совместно используемого ключа сетевое устройство может теперь непосредственно оценить единственный объединенный материал для локального ключа в точке, соответствующей принятому идентификационному номеру.
В отношении фигур 2 и 3 описан второй механизм совместного использования криптографического ключа, который может применяться в системе 100. Варианты осуществления способа совместного использования ключа описаны сначала в математических терминах. Способ совместного использования ключа может быть реализован в устройствах в соответствии с описанным ниже, например, на сервере 200 конфигурации, для конфигурирования сетевого устройства 300, например, в системе 100 совместного использования ключей и т.п. Сетевые устройства также называются узлами или сетевыми узлами.
Способ имеет фазу настройки и фазу применения. Фаза настройки может включать в себя этапы инициации и этапы регистрации. В этапы инициации не вовлечены сетевые устройства.
На этапах инициации выбирают системные параметры. Этапы инициации могут быть выполнены доверенной третьей стороной (TTP). Системные параметры могут также рассматриваться как входные данные. В этом случае доверенная третья сторона не должна генерировать их, и этапы инициации могут быть пропущены. Например, доверенная третья сторона может принимать системные параметры от производителя устройств. Производитель устройств, возможно, выполнил этапы инициации для получения системных параметров. Для удобства представления мы будем рассматривать доверенную третью сторону как выполняющую этапы инициации, принимая во внимание, что это не является необходимым. Один из серверов конфигурации может иметь дополнительную функцию в качестве доверенной третьей стороны, например, для выбора системных параметров и их распределения другим серверам конфигурации.
Этапы инициации
Выбирается желаемая длина ключа для ключа, который будет совместно использован устройствами в фазе применения экземпляра; эта длина ключа обозначается как ʹbʹ. Желаемая длина идентификационного номера также выбирается. В течение последующих этапов регистрации каждое устройство будет ассоциировано с идентификационным номером, имеющим длину идентификационного номера; длина идентификационного номера обозначается как ʹBʹ. Длина чисел измеряется в битах. Параллельно может присутствовать множество экземпляров; при этом каждый экземпляр позволяет вывести совместно используемый ключ. Может присутствовать единственный экземпляр. Каждая конфигурация получает материал для корневого ключа для каждого экземпляра, при этом каждый сервер конфигурации, предпочтительно, использует одно и то же количество экземпляров. Число экземпляров может быть равно 1.
b
B
b
B
B
b
B
b
B
b
b
B
b
B
Является предпочтительным, чтобы ≤, но это не является необходимым. Для более высокого сопротивления против сквозных попыток взлома мы можем выбрать <. В одном из экземпляров осуществления  является кратным , допустим,  составляет, по меньшей мере, 2, или, для рекомендуемых уровней безопасности,  составляет, по меньшей мере, 4. Типичное значение для приложения с низкой степенью защиты может составлять =8, =16. Для высокой безопасности лучшеиспользовать =8, =32.
Для каждого экземпляра эти две стороны могут получить совместно используемый ключ. Совместно используемые ключи могут быть объединены с целью формирования большего объединенного ключа. Число экземпляров выбирают таким образом, чтобы объединенный ключ был достаточно длинным для приложения безопасности, в котором он будет использоваться.
b
B
Меньшие значения  относительно  повышают устойчивость к так называемым тайным попыткам нарушения защиты. При попытках нарушения защиты взломщик получает информацию о совместно используемом ключе, используемом между целевым узлом сети и множеством вступивших в сговор сетевых узлов.
Часто число экземпляров, размер ключа и длина подключа будут заданы предварительно, например, разработчиком системы, и предоставлены доверяемой стороне как входные данные.
Параметры экземпляра
Затем выбирают параметры для каждого экземпляра. Выбирают желаемую степень; степень управляет степенью определенных полиномов. Степень будет обозначаться как , и она составляет по меньшей мере 1. Практическим выбором для α является 2. Более защищенное приложение может использовать более высокое значение α, допустим 3 или 4, или еще выше. Для простого приложения также возможно α=1. Случай α=1 связан с так называемой ʹзадачей скрытого числаʹ; большие значения ʺαʺ связаны с расширенной задачей скрытого числа, подтверждающей, что эти случаи трудно взломать. Значение α=1, хотя и является возможным, не рекомендуется и должно рассматриваться только для приложений очень низкого уровня безопасности. Для приложения с низким уровнем безопасности является возможным значение α>2, допустим, α=3. Однако для высокой безопасности рекомендуется α≥32, допустим, α=32.
m
m
m
Выбирают число полиномов. Число полиномов будет обозначаться как ʹʹ. Практический выбор для  составляет 2. Более защищенное приложение может использовать более высокое значение , допустим 3 или 4, или еще выше.
m=1
m=1
m
Следует обратить внимание на то, что приложение низкой сложности, допустим, для устройств с ограниченным ресурсом, может использовать . Значение , хотя и является возможным, не рекомендуется и должно рассматриваться только для приложений низкого уровня безопасности. Более высокие значения параметров безопасности α и  повышают сложность системы и, соответственно, повышают ее неподатливость к взлому. Более сложные системы являются более трудными для анализа, и, таким образом, более стойкими к криптоанализу. Ниже предполагается, что m≥2.
b
m
Выбирают совместно используемый модуль N, удовлетворяющий  Предпочтительно, совместно используемый модуль N выбирают как имеющий точно  битов, и, таким образом, чтобы  Например, N может быть выбран случайным образом в этом интервале. Часто длина ключа , степень α и число полиномов  будет задано предварительно, например, разработчиком системы, и предоставлено доверяемой стороне в качестве входных данных. Совместно используемый модуль может также быть зафиксирован, допустим, в стандарте, но обычно будет выбираться во время генерации параметров.
N
b
B
В одном из вариантов осуществления все серверы конфигурации получают одни и те же параметры, включая совместно используемый модуль , размер совместно используемого ключа , размер идентификатора  и степень α. Серверам конфигурации также нужны закрытые модули и p двумерных полиномов. Возможно, что они также будут выбраны доверяемой стороной и распределены по серверам конфигурации, что защищает от последующей компрометации сервера конфигурации, при этом все же допуская возможность центрального взлома доверяемой стороны.
В одном из вариантов осуществления получатель материала для ключа каждого сервера конфигурации выполнен для генерации, по меньшей мере, части материала для корневого ключа, специфичного для этого сервера конфигурации. Важной частью материала для корневого ключа каждого сервера конфигурации являются закрытые модули и соответствующие двумерные полиномы. В одном из вариантов осуществления получатель материала для ключа генерирует, по меньшей мере, закрытые модули и двумерные модули для этого сервера конфигурации; ниже это предполагается, при этом имеется ввиду, это не является абсолютно необходимым.
В каждом сервере конфигурации выбирают число m закрытых модулей  Модули являются положительными целыми числами. В одном из вариантов осуществления каждое выбранное число удовлетворяет следующим соотношениям:  Здесь  являются случайными B-битовыми целыми числами, то есть,  Более предпочтительно, закрытые модули имеют ряд битов, точно совпадающих с длиной идентификатора B, то есть,  Закрытые модули называются вторым закрытым множеством.
m
p
j
При >1 система является более сложной, и, таким образом, более безопасной, поскольку операции по модулю для различных модулей объединяются, даже при том, что такие операции не совместимы в обычном математическом смысле. По этой причине выгодно выбирать выбранные закрытые модули  как попарно различные.
Если бы использовался только один сервер конфигурации, то было бы рекомендовано иметь , однако, путем объединения множества материалов для локального ключа, соотношения между возможным совместно используемым ключом и материалом для локального ключа (объединенным или не объединенным в единственном объединенном материале для локального ключа) становятся менее линейными. В одном из вариантов осуществления, m=1.
В одном из вариантов осуществления
В каждом сервере конфигурации генерируется ряд m двумерных полиномов  степени  они называются первым закрытым множеством. Предпочтительно, двумерные полиномы являются симметричными; это позволяет всем сетевым устройствам договариваться о совместно используемом ключе друг с другом. Эти двумерные полиномы могут также быть выбраны как асимметричные. В последнем случае устройства разделяют на две группы; первая группа, получающая материал для локального ключа путем подстановки в первую переменную двумерных полиномов, вторая группа, получающая материал для локального ключа путем подстановки во вторую переменную двумерных полиномов. Устройства в одной группе могут договориться о совместно используемом ключе только с устройствами в другой группе.
Все степени удовлетворяют  и по меньшей мере для одного  мы имеем  Лучший выбор состоит в том, чтобы взять каждый полином степени  Значение  рекомендуется, и, предпочтительно, используются более высокие значения. Двумерный полином представляет собой полином с двумя переменными. Симметричный полином  удовлетворяет  Каждый полином  оценивается на конечном кольце, сформированном целыми числами по модулю , полученными путем вычислений по модулю . Целые числа по модулю  формируют конечное кольцо с  элементами. Коэффициенты полинома  являются целыми числами и представляют собой элемент в конечном кольце, задаваемый операциями по модулю . В одном из вариантов осуществления полином  представлен с коэффициентами от 0 до . Двумерные полиномы могут быть выбраны случайным образом, например, путем выбора случайных коэффициентов в пределах этих границ.
Безопасность совместно используемого ключа зависит от этих двумерных полиномов, поскольку они представляют собой материал для корневого ключа системы; таким образом, предпочтительно принятие сильных мер по их защите, например, процедуры контроля, использование устройств, защищенных от несанкционированного вскрытия, и т.п. Предпочтительно, выбранные целые числа  также держатся в секрете, включая значение  соответствующее  хотя это является менее критичным. Это не относится к таким параметрам, как  и т.д., которые не должны держаться в секрете. Мы будем обращаться к двумерным полиномам также в следующей форме: для j=1, 2..., m мы пишем  Поэтому является приемлемым, чтобы эти параметры были выбраны доверенной третьей стороной (TTP), допустим, первым сервером конфигурации, и распределены по другим серверам конфигурации.
b
Приведенный выше вариант осуществления может быть изменен различными путями. Ограничения на общедоступные и закрытые модули могут быть выбраны множеством способов, с тем чтобы обфускация одномерного полинома была возможна, но чтобы при этом совместно используемые ключи, полученные в сетевых устройствах, оставались достаточно близкими друг к другу достаточно часто. То, что является достаточным, будет зависеть от приложения, необходимого уровня безопасности и вычислительных ресурсов, доступных в сетевых устройствах. Приведенный выше вариант осуществления объединяет положительные целые числа таким образом, чтобы операции по модулю, которые выполняются при генерации совместно используемых полиномов, объединялись нелинейным образом, когда они складываются по целым числам, создавая нелинейную структуру для материала для локального ключа, хранящегося в сетевом устройстве. Приведенный выше выбор для  обладает таким свойством, что: (i) размер N фиксирован для всех сетевых устройств; (ii) нелинейный эффект возникает в коэффициентах, формирующих материал для ключа, хранящийся в устройстве. Вследствие этой конкретной формы совместно используемый маленький ключ может быть сгенерирован путем сокращения по модулю 2 после сокращения по модулю N.
Этапы регистрации
На этапе регистрации каждому сетевому устройству назначают материал для локального ключа, также называемый ключевым материалом (KM), от двух или более серверов конфигурации. Материал для локального ключа включает закрытый одномерный ключевой полином. Сетевое устройство может участвовать в системе согласно варианту осуществления, когда оно получило два материала для локального ключа от двух серверов конфигурации. Однако в течение срока службы сетевого устройства новые материалы для локального ключа могут быть приняты сетевым устройством. В одном из вариантов осуществления сетевое устройство принимает дополнительный материал для локального ключа после того, как сетевое устройство вывело совместно используемый ключ.
Ключевой материал содержит ключевой материал для каждого экземпляра (если используется множество экземпляров). Ниже мы описываем, как ключевой материал для одного экземпляра выводится для сетевого устройства. Каждый экземпляр имеет ключевой материал, который является уникальным для этого экземпляра, даже при том, что части ключевого материала могут быть общими для различных экземпляров. Для простоты мы нумеруем два сервера конфигурации, чей материал для локального ключа используется, как 1 и 2.
Сетевое устройство ассоциировано с идентификационным номером A. Идентификационный номер может быть присвоен по требованию, например, TTP, или может уже быть сохранен в устройстве, например, сохранен в устройстве при производстве и т.д. Битовый размер A составляет B битов. Генерация A может быть выполнена множеством способов. В целях высокой безопасности младшие биты A являются случайными. Например, A может быть выбрано как случайное число; A может представлять собой хеш более длинного идентификационного номера, допустим, серийного номера, возможно, усеченного до B бит.
Сервер конфигурации 1 генерирует множество ключевого материала для устройства следующим образом:
При этом используется материал для корневого ключа, специфичный для первого сервера конфигурации: закрытые целочисленные коэффициенты сокращения  и двумерные полиномы (,). Таким образом получают ряд одномерных полиномов, и для каждого конкретного полинома из первого закрытого множества идентификационный номер подставляют вместо (A) в указанный конкретный полином  и сокращают на целочисленный коэффициент сокращения, ассоциированный с указанным конкретным полиномом. Полученное в результате множество одномерных полиномов суммируют. Суммирование может быть объединено с генерацией одномерных полиномов. являетсяформальной переменной; коэффициенты аналогичных степеней x суммируют с получением коэффициентов . Следует отметить, что ключевой материал является нелинейным. Нотация  обозначает сокращение по модулю  каждого коэффициента полинома между скобками.
Можно добавить дополнительные числа обфускации к указанному следующим образом:. Здесь  представляет собой ключевой материал устройства с идентификационным номером , принятый от сервера конфигурации 1. Другими словами, мы имеем . Нотация ʹʹ обозначает случайное целое число, которое является примером числа обфускации, такого что |. Следует отметить, что любое из случайных целых чисел может быть положительным или отрицательным. Случайные числа  генерируются заново для каждого устройства. Терм , таким образом, представляет полином в  степени , в котором длина коэффициента уменьшается с возрастанием степени. Альтернативно, более общим, но более сложным условием является условие, чтобы  было маленьким, например, <. Эффект смешивания по различным конечным кольцам обеспечивает самый большой вклад в безопасность, и поэтому использование чисел обфускации является необязательным.
Все другие сложения могут или использовать естественную целочисленную арифметику, то есть, в кольце , или (предпочтительно) они используют дополнительный модуль . Таким образом, оценка каждого из одномерных полиномов  выполняется индивидуально по коэффициенту сокращения, равному меньшему модулю , но суммирование самих этих сокращенных одномерных полиномов, предпочтительно, выполняется по модулю . Также добавление полинома обфускации  может быть сделано с помощью естественной целочисленной арифметики, или, предпочтительно, по модулю . Ключевой материал содержит коэффициенты  для . Ключевой материал может быть представлен как полином, в соответствии с приведенным выше. На практике ключевой материал может храниться как список, например, массив, целых чисел . Устройство также принимает числа  и . Может быть реализована манипуляция с полиномами, например, как манипуляция с массивами, содержащими коэффициенты, например, составление списка всех коэффициентов в предварительно заданном порядке. Следует отметить, что полиномы могут быть реализованы в других структурах данных, например, как ассоциативный массив (также известный как 'таблица соответствия'), содержащий набор пар (степень, коэффициент), предпочтительно, таким образом, чтобы каждый коэффициент присутствовал в наборе не более одного раза. Коэффициенты , которые предоставляются устройству, предпочтительно находятся в диапазоне 0, 1..., N-1.
Генерация второго ключевого материала происходит аналогичным образом с помощью второго сервера конфигурации, использующего вместо указанного двумерные полиномы  и закрытые целочисленные коэффициенты сокращения .
Фаза использования
Как только два устройства имеют идентификационные номера A и B и получили свои соответствующие ключевые материалы по меньшей мере от двух серверов конфигурации, они могут использовать два ключевых материала для получения одного совместно используемого ключа.
Например, устройства A и B могут объединять, например, в этом случае, складывать, используемые одномерные полиномы. Фактически, это удваивает значение , обеспечивая значительное улучшение безопасности в дополнение к тому факту, что по меньшей мере два сервера конфигурации больше не являются единственными критическим точками. После сложения одномерных полиномов может быть применено сокращение на общедоступный глобальный целочисленный коэффициент сокращения .
Используя единственный объединенный материал для локального ключа, устройство A может выполнить следующие этапы для каждого экземпляра в целях получения его совместно используемого ключа. Во-первых, устройство A получает идентификационный номер  из устройства B, затем A генерирует совместно используемый ключ путем вычисления следующего:. Верхний индекс 'c' указывает, что используется объединенный материал для ключа.
Таким образом, A оценивает объединенный ключевой материал, рассматриваемый как целочисленный полином, для значения B; результатом оценки ключевого материала является целое число. Следующее устройство A может сократить результат оценки на общедоступный модуль , и затем на модуль ключа . Результат будет называться промежуточным ключом A, и он представляет собой целое число в диапазоне 0 до . Для его части устройство B может сгенерировать промежуточный ключ с А путем оценки своего ключевого материала для идентификационных данных  и сокращения результата на , и затем на  Следует отметить, что  является другой нотацией для .
Если двумерные полиномы в материале для локального ключа являются симметричными, то промежуточный ключ A и промежуточный ключ B с A часто, хотя не обязательно всегда, равны. Конкретные требования к целым числам  и к (необязательным) случайным числам  таковы, что ключи часто равны и почти всегда находятся близко друг к другу по модулю два в степени длины ключа.
Мы будем обозначать этот ключ также как . Здесь A представляет собой -разрядный идентификатор, то есть, , устройства A. [Следует отметить, что идентификатор B устройства B не связан с длиной идентификатора, также обозначаемой как . Например, первый может являться 128-разрядным числом, тогда как последний может быть числом 128.
-разрядный ключ , который генерирует устройство A, например, для шифрования своей связи с устройством B, не всегда равен ключу , который генерирует устройство , например, для шифрования своей связи с устройством . Разность между этими ключами является ограниченной, однако, в следующем смысле: выполняется , где представляет собой общедоступный глобальный целочисленный коэффициент сокращения, обозначает операцию по модулю , и  представляет собой целое число, ограниченное по своему абсолютному значению: .  является примером промежуточного ключа, и он определяет набор возможных совместно используемых ключей путем добавления или вычитания величины, кратной поправочному коэффициенту, то есть, кратной числу . Кратная величина меньше либо равна верхней границе, например,  и больше либо равна нижней границе, например, -.
Значения для верхней и нижней границы могут быть вычислены, и зависят от выбранных параметров. Относительно резкие границы для разности могут быть получены путем установки половины битов ключевого материала равными нолю. В этом случае мы имеем Здесь  обозначает число смешиваемых полиномов, и  обозначает их степень. Однако для других вариантов осуществления аналогичное ограничение может также быть получено путем следования выведению  и  с отслеживанием числа битов, которые могут отличаться. Если не предполагать установку коэффициентов на ноль, мы имеет ограничение .
В этой точке вероятно, что модифицированные промежуточные ключи сторон A и B будут равны. Если A и B получили один и тот же ключ, то они могут использовать его в качестве симметричного ключа, совместно используемого A и B; например, он может использоваться для множества криптографических приложений, например, они могут обмениваться одним или более сообщениями, зашифрованными и/или аутентифицированным с использованием совместно используемого ключа. Предпочтительно, алгоритм выведения ключа применяется к совместно используемому ключу в целях дальнейшей защиты главного ключа, например, может быть применена хеш-функция.
Стороны A и B могут проверить, что они действительно получили один и тот же ключ после модификации путем отправки данных согласования ключа. Например, путем отправки хеш-значения измененного ключа или отправки зашифрованной предварительно заданной строки, и т.д. Если данные согласования ключа показывают, что не был получен один и тот же используемый ключ, то исправленный ключ может быть модифицирован для соответствия полученным данным согласования ключа, с тем чтобы первое устройство и второе устройство получили доступ к идентичному совместно используемому ключу. Модификация может включать в себя подстановку различных значений  в соответствии с наложенным на них ограничением. Поскольку ограничение является относительно малым, объем работы для нахождения поправочного коэффициента также является возможным. Другая возможность состоит в том, чтобы включать в данные согласования ряд младших значащих битов промежуточного ключа. Поправочный коэффициент будет копировать эти биты, и после согласования эти биты будут отброшены.
b
Вместо того, чтобы использовать объединенный материал для ключа, система может также выводить промежуточный ключ из каждого материала для локального ключа. Промежуточные ключи могут быть согласованы по отдельности и затем объединены в единственный совместно используемый ключ, однако также возможно сначала сложить промежуточные ключи по модулю N, и затем сократить по модулю 2; то есть, первый и второй промежуточный ключи являются более длинными, чем совместно используемый ключ. Совместно используемый ключ, полученный этим способом, может быть согласован в соответствии с указанным выше.
Выбранные m закрытых модулей, , предпочтительно, являются попарно взаимно простыми. Если эти числа являются попарно взаимно простыми, то отсутствие совместимости между операциями по модулю возрастает. Получение попарно взаимно простых чисел может быть выполнено путем выбора целых чисел по порядку, тестирования каждого нового целого числа в отношении того, являются ли все еще все пары различных чисел взаимно простыми, и если нет, то удаления выбранного числа из множества. Эта процедура продолжается до выбора всех  чисел. Сложность возрастает еще больше при требовании того, чтобы  закрытых модулей, , были различными простыми числами.
Объединение множества экземпляров
Описанная система позволяет сетевым узлам договариваться о совместно используемых ключах, которые могут быть маленькими, также меньшими, чем их идентификаторы. Комбинация повышения уровня защиты и практической реализации делает желательным выбор значений , которые являются относительно маленькими, допустим  или, возможно, даже . Одним из способов увеличить длину ключа, не создавая непрактично длинный материал для ключа, состоит в том, чтобы объединить множество маленьких ключей. Система позволяет стороне договариваться о множестве подключей, которые вместе формируют совместно используемый ключ. Мы будем называть систему, которая генерирует подключ, как экземпляр согласования ключей. Каждый экземпляр может иметь свои собственные независимые параметры, но функционирует по тем же самым принципам, что и другие экземпляры. Тем не менее, множество экземпляров могут иметь некоторые общие параметры. Мы будем называть совместно используемый ключ, полученный из системы, как описано выше, то есть, из единственного экземпляра, 'маленьким' ключом, и комбинацию двух или более маленьких ключей как ʹбольшие ключиʹ. Число объединенных экземпляров обозначается как ʹʹ.
Возможным выбором является следующий набор параметров: α=3, b=8, B=32. Для повышения безопасности, желательно использовать полный размах ID на 32 битах. В частности, в любом интервале длиной 256 должно использоваться менее чем 10 ID. Как правило, большая безопасность достигается путем установки предварительно заданных первого и второго порога идентификационных данных и выбор идентификационных номеров таким образом, чтобы никакой интервал с размером, равным первому порогу идентификационных данных (например, 256), не содержал больше идентификационных значений, чем второй порог идентификационных данных (например, 10). Это может быть выполнено, например, менеджером сетевых устройств, например, путем генерации значений идентификационных данных согласно этому правилу, или путем отказа от генерации материала для локального ключа для устройств, имеющих значение идентификационных данных, превышающее пороги.
Фигура 2 представляет собой схематическую блочную диаграмму сервера 200 конфигурации для конфигурирования сетевого устройства для совместного использования ключей и первого устройства 300. Мы будем называть устройство 300 сетевым устройством.
Сервер 200 конфигурации обычно реализуется как интегрированное устройство. Например, сервер 200 конфигурации может быть включен в сервер. Сервер 200 конфигурации может сконфигурировать сетевые устройства по сети, допустим, по беспроводной сети или через Интернет, и т.п. Однако сервер 200 конфигурации может также быть встроен в производственное устройство для производства сетевых устройств.
Сервер 200 конфигурации включает в себя получатель 210 материала для ключа, диспетчер 230 сетевых устройств и вычислительный блок 220. Сервер 200 конфигурации предназначен для работы с множеством сетевых устройств. На фигуре 2 показано одно из таких устройств, первое сетевое устройство 300.
Сервер 200 конфигурации выбирает материал секретного ключа, также называемый материалом для корневого ключа. Сервер 200 конфигурации затем выводит материал для локального ключа для каждого из множества сетевых устройств. Материал для локального ключа выводится из материала для корневого ключа и по меньшей мере одного общедоступного идентификационного номера  сетевого устройства. На фигуре 2 в сетевом устройстве 300 хранится идентификационный номер 310. Сетевое устройство может также иметь множество идентификационных номеров, например, один на экземпляр. Сетевое устройство может также хранить еще один идентификационный номер и выводить идентификационный номер 310 из него при необходимости, например, путем хеширования еще одного идентификационного номера.
Материал для локального ключа содержит части, которые являются закрытыми для конкретного сетевого устройства, то есть, доступными только для конкретного сетевого устройства и, возможно, доверенных устройств. Материал для локального ключа может также содержать части, которые, хотя и являются необходимыми для получения совместно используемого ключа, являются менее важными в отношении содержания в секрете.
Использование прилагательных «общедоступный» и «закрытый» предполагается как полезное для понимания: даже при наличии доступа ко всем общедоступным данным, закрытые данные не могут быть вычислены, по меньшей мере без нецелесообразно больших затрат ресурсов, при заданной безопасности приложения или по сравнению с ресурсами, необходимыми для генерации ключей, шифрования и дешифрования. Однако 'общедоступный' не означает, что соответствующие данные обязательно сделаны доступными для кого-либо еще помимо сервера 200 конфигурации и сетевых устройств. В частности, сохранение общедоступного глобального целочисленного коэффициента сокращения и других общедоступных параметров в секрете от недоверенных сторон повышает безопасность системы. Аналогично, доступ к закрытым данным может быть ограничен стороной, которая генерирует данные или которой необходимы данные, что повышает безопасность системы. Однако доверяемой стороне может быть разрешен доступ к закрытым данным; доступ к закрытым данным снижает безопасность.
Используя материал для локального ключа и идентификационный номер другой стороны, сетевые устройства могут договориться о совместно используемом ключе между ними.
Получатель 210 материала для ключа сконфигурирован для получения в электронной форме, по меньшей мере, набора 250 параметров. Набор 250 параметров включает в себя общедоступный глобальный целочисленный коэффициент 256 сокращения, , первое закрытое множество 252 двумерных полиномов, , и второе закрытое множество 254 целочисленных коэффициентов сокращения, , при этом каждый двумерный полином из первого множества ассоциирован с целочисленным коэффициентом сокращения из второго множества и общедоступным глобальным целочисленным коэффициентом 256 сокращения, . Набор параметров генерируется для сетевых узлов, имеющих идентификационный номер с битовым размером  Набор параметров будет использоваться для генерации материала для локального ключа, который, в свою очередь, будет использоваться для получения совместно используемого ключа. В одном из вариантов осуществления, битовый размер маленького ключа  удовлетворяет ; хотя это не является необходимым, это делает вторжение в систему посредством решения проблем решетки тяжелее. В одном из вариантов осуществления , в частности, b может равняться B.
В предпочтительных вариантах осуществления получатель 210 материала для ключа сконфигурирован для получения в электронной форме набора 250 параметров. Если используется множество экземпляров, то получатель 210 материала для ключа может содержать множество наборов параметров. На фигуре 2 показан набор 250 параметров.
Общедоступный глобальный целочисленный коэффициент 256 сокращения из набора параметров, , предпочтительно, отличается от каждого из целочисленных коэффициентов 254 сокращения из этого набора; хотя это не является строго необходимым. Предпочтительно, общедоступный глобальный целочисленный коэффициент 256 сокращения набора параметров, , больше либо равен каждому из целочисленных коэффициентов 254 сокращения из этого набора параметров.
Получателю 210 материала для ключа не требуется взаимодействие с сетевым устройством для получения материала для ключа; в частности, получателю 210 материала для ключа не требуется идентификационный номер. Сервер 200 конфигурации может представлять собой распределенную систему, в которой получатель 210 материала для ключа размещен в другом физическом местоположении, чем вычислительный блок 220. Получатель 210 материала для ключа генерирует весь материал или часть материала для ключа и/или получает весь материал или часть материала для ключа из внешнего источника. Например, получатель 210 материала для ключа подходит для приема общедоступных глобальных целочисленных коэффициентов 256 сокращения от внешнего источника и генерации первых закрытых множеств 252 и вторых множеств 254. Последние позволяют производить все сетевые устройства с фиксированным общедоступным глобальным целочисленным коэффициентом 256 сокращения, что снижает их стоимость.
Получатель 210 материала для ключа может содержать электронный генератор случайных чисел. Генератор случайных чисел может представлять собой генератор истинных или псевдослучайных чисел. Получатель 210 материала для ключа может генерировать общедоступный глобальный целочисленный коэффициент сокращения , например, с помощью электронного генератора случайных чисел; тем не менее, значение N должно быть одним и тем же для всех получателей (например, 210, 211, 212 на фигуре 1a) материала для ключа. Например, N может передаваться среди серверов конфигурации.
Хотя, общедоступный глобальный целочисленный коэффициент сокращения является общедоступной информацией, внесение случайности делает анализ системы более трудным.
С каждым двумерным полиномом из первого множества ассоциирован целочисленный коэффициент сокращения из второго множества. Случайные коэффициенты могут быть случайным образом выбраны из целочисленного кольца, например, целых чисел по некоторому модулю, например, равному ассоциированному целочисленному коэффициенту сокращения.
Получатель 210 материала для ключа может генерировать один или несколько коэффициентов для целочисленного коэффициента сокращения  во втором закрытом множестве с помощью электронного генератора случайных чисел. Не является необходимым, чтобы целочисленные коэффициенты сокращения были простыми числами. Однако они могут быть выбраны как простые числа для увеличения сопротивления взлому. Простые числа образуют поля, которые являются разновидностью колец. Одни и те же наборы параметров, то есть, одни и те же первые и вторые закрытые множества и общедоступные глобальные коэффициенты сокращения, используются для всех сетевых устройств, которым позднее потребуется совместно использовать ключ.
Получатель 210 материала для ключа может генерировать один или несколько коэффициентов двумерного полинома ) в первом закрытом множестве 252, например, с помощью электронного генератора случайных чисел. Получатель 210 материала для ключа может генерировать весь двумерный полином этим способом. Получатель 210 материала для ключа может использовать максимальную степень этих полиномов, допустим, 2, или 3 или выше, и генерировать на один случайный коэффициент больше, чем показатель степени.
Удобным является предписание некоторых аспектов первых закрытых множеств 252, таких как число полиномов в закрытых множествах 252 и степени полиномов или максимальные степени. Также может быть предписано, чтобы некоторые коэффициенты в полиномах были равны нолю, например, для сокращения потребности в памяти.
Первое множество может содержать два равных полинома. Это будет работать; однако, если ассоциированные целочисленные коэффициенты сокращения не отличаются, то множества могут быть уменьшены в размере. Таким образом, обычно, каждый раз, когда два или более двумерных полиномом в первом множестве являются одинаковыми, ассоциированные целочисленные коэффициенты сокращения, то есть, лежащее в основе кольцо, отличается.
В одном из вариантов осуществления все первые закрытые множества двумерных полиномов () содержат только симметричные двумерные полиномы. Использование только симметричных полиномов имеет преимущество, заключающееся в том, что каждое сетевое устройство может договориться о совместно используемом ключе с любым другим сетевым устройством из сконфигурированных сетевых устройств. Однако первое закрытое множество двумерных полиномов может содержать один или несколько асимметричных полиномов; это позволяет разделить устройства на две группы: устройство из одной группы может договориться о совместно используемом ключе только с устройством второй группы.
Получатель 210 материала для ключа сконфигурирован для получения в электронной форме первого закрытого множества 252 двумерных полиномов, также обозначаемого как в формулах. Вариант осуществления, описанный ниже, предполагает, что все двумерные полиномы в множестве 252 являются симметричными. Генерация второго множества параметров может быть выполнена таким же образом.
Симметричный двумерный полином может также быть записан как  с двумя формальными переменными в качестве шаблонов. Симметричный двумерный полином удовлетворяет. Это требование переходит в требование к коэффициентам, например, чтобы коэффициент одночлена  был равен коэффициенту одночлена.
Число полиномов в первом закрытом множестве 252 может быть выбрано по-другому в зависимости от приложения. Система будет работать, когда первое и второе множество будут содержать только один полином; в такой системе ключи могут быть успешно совместно использованы и будет обеспечен умеренный уровень безопасности. Однако преимущество безопасности смешивания по различным кольцам достигается только тогда, когда первое множество содержит по меньшей мере 2 полинома, и второе множество имеет по меньшей мере два различных целочисленных коэффициента сокращения.
Закрытое множество 252 содержит по меньшей мере один двумерный полином. В одном из вариантов осуществления сервера 200 конфигурации закрытое множество 252 состоит из одного полинома. Наличие только одного полинома в закрытом множестве 252 уменьшает сложность, снижает требования к хранилищу и повышает скорость. Однако наличие только одного полинома в закрытом множестве 252 считают менее безопасным, чем наличие двух или больше полиномов в закрытом множестве 252, потому что такая система с одним полиномом не получает выгоду от дополнительного смешивания в суммировании, описанном ниже. Однако совместное использование ключа будет работать правильно и считается достаточно безопасным для малоценных и/или имеющих низкую защиту приложений.
В оставшейся части мы будем предполагать, что закрытое множество 252 содержит по меньшей мере два симметричных двумерных полинома. В одном из вариантов осуществления, по меньшей мере два, или даже все полиномы, являются различными; это значительно усложняет анализ системы. Однако это не является необходимым; закрытое множество 252 может содержать два равных полинома и все еще извлекать выгоду из смешивания на этапе суммирования, если эти два полинома оценивают по различным кольцам. Следует отметить, что различные целочисленные коэффициенты сокращения задают различные кольца. В одном из вариантов осуществления закрытое множество 252 содержит по меньшей мере два равных полинома, ассоциированных с различными ассоциированными целочисленными коэффициентами сокращения. Наличие двух или более равных полиномов в первом множестве уменьшает требования к хранилищу. В одном из вариантов осуществления второе множество содержит по меньшей мере два полинома, и все полиномы во втором множестве являются различными.
Полиномы в закрытом множестве 252 могут иметь различные степени. Под степенью симметричного двумерного полинома мы будем понимать степень полинома в одной из двух переменных. Например, степень  равняется 2, потому что степень в  равна 2. Полиномы могут быть выбраны как имеющие одну и ту же степень в каждой переменной; если полиномы в закрытом множестве 252 будут симметричными, то степень будет той же самой в другой переменной.
Степени полиномов в закрытом множестве 252 могут быть выбраны по-другому в зависимости от приложения. Закрытое множество 252 содержит по меньшей мере один симметричный двумерный полином степени 1 или выше. В одном из вариантов осуществления закрытое множество 252 содержит только полиномы степени 1. Наличие только линейных полиномов в закрытом множестве 252 уменьшает сложность, требования к хранилищу и повышает скорость. Однако наличие только полиномов степени один в закрытом множестве 252 считается менее безопасным, чем наличие по меньшей мере одного полинома степени по меньшей мере два в закрытом множестве 252, потому что такая система является значительно более линейной. Несмотря на это, если множество полиномов в закрытом множестве 252 оценивают по различным кольцам, то получаемое в результате шифрование не является линейным, даже если все полиномы в закрытом множестве 252 являются таковыми. В одном из вариантов осуществления закрытое множество 252 содержит по меньшей мере один, предпочтительно два, полинома степени 2 или выше. Однако генерация ключей, шифрование и дешифрование будут работать правильно, если будут использоваться только полиномы степени 1, и это считается достаточно безопасным для малоценных и/или имеющих низкую защиту приложений.
Наличие в закрытом множестве 252 одного или более полиномов со степенью 0 не повлияет на систему, пока полином(-ы) с более высокой степенью будут обеспечивать достаточную безопасность.
Для приложений со средней защитой закрытое множество 252 может содержать, или даже состоять из двух симметричных двумерных полиномов степени 2. Для приложения с более высоким уровнем защиты закрытое множество 252 может содержать или даже состоять из двух симметричных двумерных полиномов, одного степени 2 и одного степени выше, чем 2, допустим, 3. Увеличение числа полиномов и/или их степеней дополнительно повысит безопасность за счет потребления дополнительных ресурсов.
Предпочтительно, целочисленные коэффициенты сокращения выбирают таким образом, чтобы разность любых двух целочисленных коэффициентов сокращения в одном и том же множестве целочисленных коэффициентов сокращения имела общий делитель. В частности, общим делителем может быть ; или, словами, двоичное представление разности между любыми двумя целочисленными коэффициентами сокращения заканчивается, по меньшей мере, столькими нолями, каким является размер маленького ключа, который будет выведен из этого экземпляра.
Например, один из способов генерации целочисленных коэффициентов сокращения и общедоступного глобального целочисленного коэффициента сокращения является следующим.
Сначала генерируют общедоступный глобальный целочисленный коэффициент сокращения . Например, как случайное целое число предписанного размера.
Для каждого целочисленного коэффициента сокращения генерируют целое число  и генерируют целочисленный коэффициент сокращения  как разность .
Общедоступный глобальный целочисленный коэффициент сокращения может быть выбран как имеющий  битов или больше, где  представляет собой самую высокую степень в одной переменной двумерных полиномов в первом закрытом множестве. В этом случае целые числа  могут быть выбраны как . В одном из вариантов осуществления общедоступный глобальный целочисленный коэффициент сокращения имеет, по меньшей мере,  битов, где  представляет собой самую высокую степень в одной переменной двумерных полиномов в первом закрытом множестве.
Получатель 210 материала для ключа может быть запрограммирован в программном обеспечении, или в аппаратном обеспечении, или в комбинации того и другого. Получатель 210 материала для ключа может совместно использовать ресурсы с модулем вычисления 220 для манипуляций с многочленами.
Диспетчер 230 сетевых устройств сконфигурирован для получения в электронной форме идентификационного номера 310,  для сетевого устройства 300. Диспетчер 230 сетевых устройств может принимать идентификационный номер от сетевого устройства. Например, диспетчер 230 сетевых устройств может содержать или использовать блок связи для получения идентификационного номера по сети. Например, диспетчер 230 сетевых устройств может содержать антенну для приема идентификационного номера в форме беспроводного сигнала. Идентификационный номер может быть представлен как ряд битов, при этом обычно число битов в идентификационном номере  является, по меньшей мере, столь же большим, как число битов в совместно используемом ключе.
Система 200 может использовать один и тот же идентификационный номер для всех наборов параметров. Однако также возможно использовать различные идентификационные номера для различных наборов параметров. В последнем случае диспетчер 230 сети получает множество идентификационных номеров.
Вычислительный блок 220 сконфигурирован для вычисления одномерного полинома 229 закрытого ключа для набора параметров и идентификационного номера . Вычислительный блок 220 применяется к каждому из наборов параметров получателя 210 материала для ключа. В одном из вариантов осуществления вычислительный блок использует один и тот же идентификационный номер для по меньшей мере двух, или даже для каждого из наборов параметров. В одном из вариантов осуществления вычислительный блок использует различный идентификационный номер сетевого устройства по меньшей мере для двух, или даже для всех наборов параметров. Одномерные полиномы закрытого ключа, полученные таким образом, и соответствующие общедоступные глобальные целочисленные коэффициенты сокращения являются частью материала для локального ключа, который будет отправлен сетевому устройству.
Вычислительный блок 220 принимает данные в наборе параметров от получателя 210 материала для ключа по соединению 238. Ниже описано, каким образом вычислительный блок 220 определяет одномерный полином закрытого ключа из набора параметров. Генерация одномерного полинома закрытого ключа по другому набору параметров выполняется таким же образом.
Вычислительный блок 220 может вычислять одномерный полином 229 закрытого ключа следующим образом:
Одномерные полиномы получают путем подстановки целочисленного идентификатора  в каждый из полиномов в первом закрытом множестве для множества параметров, которое обрабатывается в настоящее время. Путем подстановки значения только для одной переменной двумерного полинома двумерный полином сокращается до одномерного полинома. Полученный в результате одномерный полином является, следовательно, сокращенным по целочисленному коэффициенту сокращения, ассоциированному с двумерным полиномом, в который был подставлен целочисленный идентификатор . Полученное в результате множество одномерных полиномов суммируют, например, путем сложения коэффициентов при равных степенях y в полиномах. Это может быть получено из формулы для  в: .
Предположим, что  является одним из двумерных полиномов в первом закрытом множестве. Коэффициенты этого полинома взяты из кольца . То есть, коэффициенты полиномов в первом множестве взяты из целочисленного кольца. Для простоты, переменные  и  используются для представления формальных переменных целых чисел в первом множестве.
После подстановки вычислительный блок 220 получает . Вычислительный блок 220 также сконфигурирован для сокращения этого терма по модулю . Коэффициенты сокращаются в кольце, по которому работает система, например, , например, путем сокращения по модулю  Предпочтительно, вычислительный блок 220 приводит результат в каноническую форму, то есть, к предварительно заданному стандартизированному представлению. Подходящей канонической формой является представление коэффициентов, отсортированное по степеням одночленов. Альтернативно, подстановка может быть сделана для y.
В целях обеспечения того, чтобы идентификационные номера функционировали как 'случайные' в системе, этап рандомизации в точке в цепочке является желательным для обеспечения того, чтобы попытки взлома не упрощались. Особенно, если сетевым устройствам дают идентификационные номера согласно конкретному порядку, например, серийные номера, то такой этап рандомизации является желательным. Например, криптографическая хеш-функция, допустим, sha-256, может быть применена к идентификационному номеру, при этом результат сокращается до B битов.
Кроме того, идентификационные номера могут быть расширены на большее количество битов. Например, идентификационный номер из ʹ битов может быть расширен, например, путем хеширования и/или конкатенации, до  битов, где . Например, и идентификационный номер  может быть расширен до  или до ;  обозначает хеширование и  обозначает конкатенацию. Конкатенация выполняется со стороны LSB. Имеющая высокую нелинейность хеш-функция, такая как криптографическая хеш-функция, является предпочтительной для этой операции.
Если первое множество содержит симметричные полиномы, то подстановка целочисленного идентификатора  может выполняться в любую из двух переменных двумерного полинома. Однако, если подстановка делается в асимметричный полином, то требуется больше осторожности. Например, вычислительный блок 220 может быть сконфигурирован для получения информации о том, находится ли первое сетевое устройство 300 в первой или второй группе. Первые и вторые группы ассоциированы с первой и второй переменными двумерных полиномов, соответственно. Для сетевого устройства в первой группе всегда используется первая переменная. Для сетевого устройства во второй группе всегда используется вторая переменная.
На фигуре 2 показан один возможный способ реализации данной функции. На фигуре 2 показан блок 222 подстановки, блок 224 сокращения полиномов, блок 226 сложения полиномов и сумма 228 множества одномерных полиномов; последняя будет являться одномерным полиномом 229 закрытого ключа.
Блок 222 подстановки, блок 224 сокращения полиномов и блок 226 сложения полиномов могут быть организованы в вычислительный блок; эта опция была обозначена пунктирными линиями на фигуре 2.
Это может работать следующим образом. Блок 222 подстановки подставляет целочисленный идентификатор  в двумерный полином первого множества. Блок 222 подстановки может собирать термы для представления результата в канонической форме, но это также может быть отложено. Блок 224 сокращения полиномов принимает результат замены и сокращает его по модулю целочисленного коэффициента сокращения, ассоциированному с двумерным полиномом, в который выполнялась подстановка.
Результат подстановки целочисленного идентификатора  в указанный конкретный полином  и сокращения по модулю целочисленного коэффициента сокращения, ассоциированному с указанным конкретным полиномом, представляется как список коэффициентов в канонической форме перед суммированием с помощью блока суммирования полиномов 226. Переменная  выполняет роль формальной переменной. Эту подстановку иногда записывают просто как: .
Блок 226 сложения полиномов принимает сокращенные одномерные полиномы и складывает их нарастающим итогом в сумму 228. Сумма 228 была сброшена до 0 до генерации одномерного полинома закрытого ключа. Блок 226 сложения полиномов может складывать полиномы по коэффициентам с применением или естественной арифметики, или операций по модулю общедоступного глобального коэффициента сокращения, ассоциированного с набором параметров.
Когда все полиномы первого закрытого множества обработаны таким образом, результат в сумме 228 может использоваться в качестве одномерного полинома закрытого ключа. Полученный в результате одномерный полином закрытого ключа, допустим, в сумме 228, может быть представлен как список коэффициентов и в канонической форме.
Если система 200 использует множество экземпляров, то есть, если система 200 использует множество наборов параметров, то вычислительный блок 220 определяет одномерный полином закрытого ключа для каждого из них. В случае необходимости модуль 220 может снова использовать некоторую информацию, например, блок 220 может использовать один и тот же идентификационный номер  для генерации всех одномерных полиномов закрытого ключа. Для большей безопасности наборы параметров являются независимыми, и, предпочтительно, также используют различные идентификационные номера.
B
b
Диспетчер 230 сетевых устройств также сконфигурирован для хранения в электронном виде сгенерированного одномерного полинома 229 закрытого ключа, соответствующих общедоступных глобальных целочисленных коэффициентов сокращения 256,  в сетевом устройстве. Используя одномерные полиномы 229 закрытого ключа и его идентификационный номер или номера, первое сетевое устройство 300 может совместно использовать ключи с другими устройствами, сконфигурированными из того же самого корневого материала. Диспетчер 230 сетевых устройств может также быть сконфигурирован для хранения в электронном виде параметров и в сетевом устройстве.
Сервер 200 конфигурации может также содержать идентификатор сервера конфигурации 276, например, в электронной памяти. Диспетчер 230 сетевых устройств может хранить идентификатор 276 сервера конфигурации в сетевом устройстве, например, вместе с материалом для ключа. Идентификатор 276 сервера конфигурации является необязательным, и может, например, быть опущен, если все сетевые устройства получают ключевой материал от одного и того же множества серверов конфигурации.
Хранение в электронном виде также может включать отправку диспетчером устройств информации в электронном виде первому устройству, при этом информация затем хранится в первом устройстве.
Хотя вычислительный блок 220 может быть реализован в программном обеспечении, вычислительный блок 220 особенно подходит для реализации в аппаратном обеспечении. Если только блок 224 сокращения полиномов реализуется в аппаратном обеспечении, то будет достигнуто значительное повышение скорости; часть функциональности системы 200, которая не выполняется аппаратной версией блока модуля 224, может быть выполнена в программном обеспечении, запускаемом на процессоре.
На фигуре 2 показан вычислительный блок 220, принимающий сообщение 232 с идентификационным номером от первого сетевого устройства 300; первое сетевое устройство 300, принимающее сообщение 236 с материалом для закрытого ключа от вычислительного модуля 220. Сообщение 236 с материалом для закрытого ключа может содержать общедоступный глобальный целочисленный коэффициент сокращения, блок вычисления одномерного полинома закрытого ключа.
Эти сообщения обычно отправляются и принимаются через менеджер 230 сетевых устройств. Сообщение 236 с материалом для закрытого ключа может быть разделено на множество сообщений. Если используется множество экземпляров, они могут объединять свое соответствующее сообщение с материалом для закрытого ключа в единственное сообщение.
Сервер 200 конфигурации может быть сконфигурирован для получения идентификационного номера путем генерации идентификационного номера для первого сетевого устройства 300. Такая конфигурация хорошо подходит для производственного предприятия. В этом случае первое сетевое устройство 300 принимает сообщение 232 с идентификационным номером от системы 200 конфигурации, вместо того, чтобы отправлять его, допустим, принимает сообщение 232 с идентификационным номером от получателя 210 материала для ключа или вычислительного блока 220.
На фигуре 3 показана схематическая блочная диаграмма первого сетевого устройства 300 и второго сетевого устройства 350. Первое сетевое устройство 300 и второе сетевое устройство 350 сконфигурированы для совместного определения совместно используемого ключа.
Второе сетевое устройство 350 может иметь ту же самую конструкцию, что и сетевое устройство 300. Мы описываем подробно только первое сетевое устройство 300, а второе сетевое устройство 350 может быть тем же самым или аналогичным. На фигуре 3 показано только, что во втором сетевом устройстве 350 хранится идентификационный номер 355. Идентификационный номер 355 второго сетевого устройства 350 является общедоступным, и может выполняться его обмен с сетевым устройством 300 в целях совместного использования ключа. Второму сетевому устройству 350 также требуется материал для локального ключа (не показан), в частности, один или несколько одномерных полиномов закрытого ключа, соответствующих идентификационному номеру 355.
Первое сетевое устройство 300 включает в себя электронное хранилище 320, блок 342 связи, блок 330 совместно используемых ключей и устройство 340 выведения ключа.
В хранилище 320 хранится материал для локального ключа устройства 300. В одном из вариантов осуществления, показанном на фигуре 3, хранилище 320 содержит множество материалов для ключа 370 и 380, принятые от двух различных серверов конфигурации, например, серверов 200 конфигурации и 201. Каждый материал для ключа содержит одномерный полином закрытого ключа, при этом оба материала для ключа работают с одним и тем же общедоступным глобальным целочисленным коэффициентом сокращения 374. Например, материал для ключа 370 содержит одномерный полином закрытого ключа 372 и идентификатор 386 сервера конфигурации; Например, материал для ключа 380 содержит одномерный полином 382 закрытого ключа и идентификатор 386 сервера конфигурации. Локальные материалы для ключа 370 и 380 были приняты от различных серверов конфигурации, общедоступный глобальный целочисленный коэффициент сокращения 374, возможно, был принят от TTP, введен во время производства или принят от сервера конфигурации, например, от первого сервера, для конфигурирования сетевого устройства.
Это вариант осуществления описан, как выполненный для единственного экземпляра, то есть, материала для ключа для выведения единственного совместно используемого ключа с любым другим сетевым устройством. Сетевое устройство может быть обеспечено множеством наборов материалов для ключа, которые, в свою очередь, могут содержать множество ключевых материалов от множества серверов конфигурации, в целях обеспечения для сетевого устройства возможности выведения множества совместно используемых ключей, например, для объединения в целях формирования ключей большей длины. В хранилище 320 также хранится идентификационный номер 310, , который использовался серверами конфигурации для генерации одномерного полинома закрытого ключа в материале для ключа.
В показанном примере ключевые материалы 370 и 380 еще не были объединены. В одном из вариантов осуществления ключевой материал объединяют, например, после его приема, что снижает требования к памяти и усложняет анализ структуры.
Хранилище 320 может представлять собой память, допустим, энергонезависимую и перезаписываемую память, такую как флэш-память. Хранилище 320 может представлять собой хранилище другого типа, допустим, магнитное запоминающее устройство, такое как жесткий диск. Хранилище 320 может представлять собой память с однократной записью.
Блок 342 связи сконфигурирован для получения идентификационного номера 355,  от второго сетевого устройства 350. Блок 342 связи может быть реализован как проводное соединение, допустим, соединение Wi-Fi, Bluetooth или Zigbee. Блок 342 связи может быть реализован с соединением по сети передачи данных, допустим, по Интернету.
Блок 330 совместно используемых ключей сконфигурирован для выведения ключа, совместно используемого с устройством 350, соответствующим материалу для ключа 370 в хранилище 320. Устройство 350 имеет материалы для ключа, соответствующие материалу для ключа 370. Ниже описано, каким образом блок 330 совместно используемых ключей может вывести единственный совместно используемый ключ, использую материал для ключа 370; однако, множество экземпляров может быть объединено.
Блок 330 совместно используемых ключей может содержать блок 332 подстановки и блок 334 целочисленного сокращения. Блок 332 подстановки и блок 334 целочисленного сокращения вместе формируют блок 330 совместно используемых ключей. Последний обозначен пунктирными линиями.
Блок 330 совместно используемых ключей сконфигурирован для выведения промежуточного ключа между сетевыми устройствами 300 и 350 из принятого целочисленного идентификатора  сетевого устройства 350 и ключевого материала. Это используется для выведения совместно используемого ключа из идентификационного номера второго сетевого устройства и по меньшей мере двух из множества материалов для локального ключа первого сетевого устройства.
При выведении промежуточного ключа из целочисленного идентификатора  и ключевого материала блок 330 совместно используемых ключей сконфигурирован для подстановки целочисленного идентификатора  в одномерный полином закрытого ключа, такой как одномерный полином закрытого ключа 372, и для сокращения результата подстановки по модулю глобального целочисленного коэффициента сокращения 374. Блок 330 совместно используемых ключей может использовать аппаратное обеспечение или программное обеспечение, аналогичные используемым блоком 222 подстановки и блоком 224 сокращения полиномов. Следует отметить, что первое сетевое устройство 300 не имеет доступа к первому и второму закрытому множествам. Результатом работы блока 334 сокращения является промежуточный ключ.
В одном из вариантов осуществления блок совместно используемых ключей выполнен для объединения по меньшей мере двух из множества материалов для локального ключа первого сетевого устройства, получая единственный объединенный материал для локального ключа, при этом совместно используемый ключ выводится из идентификационного номера второго сетевого устройства и объединенного материала для локального ключа. Например, они могут быть объединены путем сложения одномерных полиномов, например, суммирования коэффициентов при равных степенях. Блок совместно используемых ключей может содержать блок сложения полиномов, выполненный для сложения одномерных полиномов. Сумма может быть сокращена по модулю общедоступного глобального целочисленного коэффициента сокращения 374. Промежуточный ключ выводят из объединенного материала для ключа. Итоговый результат может быть сокращен по модулю общедоступного глобального целочисленного коэффициента сокращения 374 , после чего проводится сокращение по модулю  и/или согласование, как указано ниже.
Вместо объединения ключевого материала до выведения промежуточного ключа, из которого, в свою очередь, выводится совместно используемый ключ, блок 330 совместно используемых ключей может быть выполнен для выведения множества промежуточных ключей из множества материалов для локального ключа. Совместно используемый ключ выводится путем объединения первых и вторых промежуточных ключей. Например, множество промежуточных ключей сначала складывают по модулю общедоступного глобального целочисленного коэффициента сокращения 374 . Итоговый результат может быть сокращен по модулю  и/или согласован, как указано ниже.
В одном из вариантов осуществления различные сетевые устройства могут принимать материал для локального ключа от различных серверов конфигурации. В этом варианте осуществления для объединения материалов для ключа или промежуточных ключей требуется, чтобы используемые материал для локального ключа происходил из одного и того же материала для корневого ключа для обоих сетевых устройств, участвующих в совместном использовании ключа.
В хранилище 320 хранится множество материалов для локального ключа 370, 380 вместе с необязательным множеством ассоциированных идентификаторов 376, 386 серверов конфигурации. Сетевое устройство 300 содержит необязательный блок 390 конфигурации. Блок конфигурации выполнен для согласования со вторым сетевым устройством, допустим, сетевым устройством 350, поднабора множества идентификаторов серверов конфигурации таким образом, чтобы и первое, и второе сетевое устройство имели материал для локального ключа, ассоциированный с серверами конфигурации из поднабора. Например, блок 390 конфигурации может использовать блок 342 связи для отправки множества идентификаторов серверов конфигурации второму сетевому устройству и для приема поднабора от второго сетевого устройства.
Сетевое устройство 350 может также содержать блок конфигурации, выполненный для приема множества идентификаторов серверов конфигурации от первого сетевого устройства 300, для определения пересечения между принятым множеством идентификаторов серверов конфигурации и множеством идентификаторов серверов конфигурации второго сетевого устройства, выбора поднабора из пересечения и отправки поднабора первому сетевому устройству 300.
Блок 390 конфигурации может быть сконфигурирован для обеих функций. Например, блок 390 конфигурации может быть выполнен для отправки множества идентификаторов серверов конфигурации другому сетевому устройству, когда устройство 300 инициирует совместное использование ключа, но для выбора поднабора, когда оно не инициировало совместное использование ключа.
Необязательно, блок 330 совместно используемых ключей содержит блок 336 согласования ключа. Может произойти, что устройство 300 и устройство 350 не достигают одного и того же совместно используемого ключа. Приложение может принять решение проигнорировать эту возможность. При этом некоторые пары сетевых устройств могут быть не в состоянии участвовать в зашифрованной и/или аутентифицируемой связи, поскольку они не имеют общего совместно используемого ключа. Для некоторых приложений достаточно, чтобы были защищены только некоторые пары сетевых устройств, например, самоорганизующаяся сеть являются примером этого. Устройства 300 и 350 могут также быть сконфигурированы с необязательным блоком 336 согласования ключа. В одном из этих двух устройств 300 и 350 блок 336 согласования ключа генерирует данные согласования ключа из сгенерированного ключа и отправляет их другому устройству; в другом устройстве блок 336 согласования ключа использует принятые данные согласования ключа для настройки сгенерированного ключа таким образом, чтобы совместно используемый ключ, полученный в обоих устройствах, был одним и тем же.
Если блок 336 согласования ключа применяется для настройки ключей, он настраивает сгенерированный ключ до тех пор, пока тот не будет соответствовать данным согласования ключей, то есть, пока выведение данных согласования ключа из настроенного ключа не даст тот же самый результат, что и принятые данные согласования ключа. Настройка ключей может быть выполнена путем добавления числа, кратного значению общедоступного глобального целочисленного коэффициента сокращения, и сокращения по модулю , то есть, . Если согласование не выполнялось, то промежуточный ключ сокращается непосредственно по модулю .
c
c
Например, блок 336 согласования ключа в устройстве 300 получает предварительно заданное число младших значащих битов сгенерированного маленького ключа в качестве данных согласования ключа. Например, предварительно заданное число может быть выбрано в качестве самого маленького числа таким образом, чтобы , где  представляет собой степень полиномов в первом закрытом множестве и  представляет собой число полиномов.  обозначает оставшееся число возможных ключей, то есть, остающуюся неуверенность в модифицированном промежуточном ключе. Если младшие значащие биты используются в качестве данных согласования, то блок согласования ключа добавляет кратные значения до тех пор, пока младших значащих битов не совпадут с принятыми битами. Даже если , то 5 битов остаются для каждого экземпляра. Эти 5 битов не требуют дополнительного согласования, однако, ключ любой желаемой длины может быть получен путем объединения множества экземпляров, допустим, 16 экземпляров для получения 80 битов совместно используемого ключа.
Устройство 340 выведения ключа сконфигурировано для выведения совместно используемого ключа из одного или более ключей, которые были выведены, например, из модифицированного(-ых) промежуточного(-ых) ключа(-ей). Совместно используемый ключ является так называемым симметричным ключом. Результатом сокращения является целое число. Этот результат может использоваться практически напрямую в качестве ключа, допустим, путем конкатенации его коэффициентов, необязательно, после согласования.
Выведение совместно используемого ключа из результата сокращения может включать применение функции выведения ключа, например, функции KDF, определенной в спецификации OMA DRM открытого сообщества производителей мобильной связи (OMA TS DRM DRM V202-20080723-A, раздел 7.1.2 KDF), и аналогичных функций.
Вместо отправки и приема данных согласования ключа на b-битный ключ, блок согласования ключа может также быть сконфигурирован для генерации данных согласования ключа по собранному большому совместно используемому ключу, возможно даже после выполнения алгоритма согласования ключа, такого как KDF. В этом случае блок согласования ключа настраивает все маленькие ключи одновременно, пока не будет найден большой ключ, удовлетворяет данным согласования ключа. Хотя для изменения множества маленьких ключей в одно и то же время необходимо выполнить намного больше работы, генерация данные согласования ключа по большому ключу также является намного более безопасной, поскольку менее прямая информация является доступной для маленьких ключей.
На фигуре 3 также показан необязательный криптографический модуль 345 в первом сетевом устройстве 300. Криптографический блок 345 сконфигурирован для использования совместно используемого ключа. Например, криптографический блок 345 может представлять собой блок шифрования, сконфигурированный для шифрования электронного сообщения с помощью совместно используемого симметричного ключа. Например, криптографический модуль 345 может представлять собой блок шифрования, сконфигурированный для дешифрования электронного сообщения с помощью совместно используемого симметричного ключа.
Фигура 4 представляет собой схематическую блочную диаграмму аналогичной системы 102 совместного использования ключей. Система 102 совпадает с системой 100, за исключением того, что сетевые устройства получают свои идентификационные номера от устройства 110 персонализации. Сетевые устройства затем регистрируются на серверах 200 и 201 конфигурации путем отправки своих идентификационных номеров. Даже устройство 360 не может получить ключ, совместно используемый устройствами 300 и 350.
B
Устройство 110 персонализации может присваивать идентификационный номер, также использующийся для других целей. Например, устройство 110 персонализации может присвоить сетевой адрес, такой как MAC-адрес. Сетевой адрес используется сетевым узлом для маршрутизации сетевого трафика от второго сетевого узла до себя. Однако сетевой адрес может также дублироваться как идентификационный номер. В этом случае сетевой узел делает свой сетевой адрес доступным для системы 200 и 201 и принимает одномерный полином закрытого ключа, позволяющий сетевому узлу участвовать в зашифрованной связи с использованием своего сетевого адреса в качестве идентификационного номера. Является предпочтительным, чтобы идентификационные номера имели полную энтропию, то есть, битов энтропии. Однако, когда это не может быть реализовано, является предпочтительным применение функции сглаживания энтропии, например, хеш-функции, перед использованием числа в качестве идентификационного номера.
Устройство 110 персонализации может генерировать идентификационные номера для повышения безопасности системы путем избегания идентификационных номеров, являющихся близкими, то есть, которые имеют много или все общие старшие значащие биты. Например, сервер 110 может генерировать идентификационные номера случайным образом, например, истинно случайные или псевдослучайные. Также достаточно добавить предварительно заданное число случайных битов к идентификационному номеру, допустим, 10 битов. Идентификационный номер может иметь форму , в которой  не является случайным, допустим, является серийным номером, сетевым адресом, и т.п., и в которой  является случайным.  может быть сгенерировано генератором случайных чисел.  также может быть сгенерировано путем хеширования . Если используется хеширование по ключу, допустим, HMAC, то тогда  является неотличимым от случайного числа для сторон, не имеющих доступа к указанному ключу. Ключ может быть сгенерирован и сохранен сервером 110.
Сервер 110 может быть включен в один из серверов конфигурации, допустим, в системе 200, например, встроен п диспетчер 230 сети.
Как правило, каждое из устройств 200, 201, 202 и 300, 350, 360 и 110 содержит микропроцессор (не показан), который выполняет соответствующее программное обеспечение, сохраненное в устройстве; например, это программное обеспечение, возможно, было загружено и/или сохранено в соответствующей памяти, например, энергозависимой памяти, такой как RAM, или энергонезависимой памяти, такой как флэш-память (не показана). Устройства могут также быть оборудованы микропроцессорами и памятями (не показаны). Альтернативно, устройства могут, полностью или частично, быть реализованы в программируемых логических схемах, например, таких как программируемая пользователем вентильная матрица (FPGA). Устройства могут быть реализованы, полностью или частично, как так называемая специализированная интегральная микросхема (ASIC), то есть, интегральная схема (IC), настроенная для конкретного применения.
На фигуре 6 показана схематическая блочная диаграмма интегральной схемы 400. Интегральная схема 400 содержит процессор 420, память 430 и блок 440 I/O. Эти модули интегральной схемы 400 могут взаимодействовать друг с другом через интерфейс соединение 410, такое как шина. Процессор 420 сконфигурирован для выполнения программного обеспечения, сохраненного в памяти 430, в целях выполнения способа в соответствии с описанным в настоящем раскрытии, например, способа для конфигурирования устройства или способа для определения совместно используемого ключа. Таким образом, интегральная схема 400 может быть сконфигурирована как сервер 200 конфигурации или как сетевое устройство, такое как первое сетевое устройство 300; в части памяти 430 могут храниться общедоступные глобальные целочисленные коэффициенты сокращения, первые закрытые множества двумерных полиномов, вторые закрытые множества целочисленных коэффициентов сокращения, идентификационные номера, сообщения открытым текстом и/или зашифрованные сообщения, при необходимости.
Блок 440 I/O может применяться для взаимодействия с другими устройствами, такими как устройства 200, или 300, например, для приема данных ключа, таких как первое закрытое множество 252 двумерных полиномов и, возможно, ассоциированных параметров, таких как размеры, степени, модули и т.п., или для отправки и приема зашифрованных и/или аутентифицированных сообщений. Блок 440 I/O может содержать антенну для беспроводной связи. Блок 440 I/O может содержать электрический интерфейс для проводной связи.
Интегральная схема 400 может быть интегрирована в компьютер, устройство мобильной связи, такое как мобильный телефон, и т.д. Интегральная схема 400 может также быть интегрирована в устройство освещения, например, размещена в устройстве LED. Например, интегральная схема 400, сконфигурированная как сетевое устройство и размещенная с блоком освещения, таким как LED, может принимать команды, зашифрованные совместно используемым симметричным ключом.
Множество сетевых устройств, допустим, встроенных в устройство освещения, может формировать узлы зашифрованной сети, в которых каналы зашифрованы с помощью совместно использованных ключей между узлами.
Интегральная схема 400 может быть интегрирована в другие устройства, для которых требуется быстрое согласование симметричного ключа. Интегральная схема 400 может быть интегрирована в платежную систему. Интегральная схема 400 может быть интегрирована в автомобиль. Множество таких автомобилей может организовывать обмен сообщениями между автомобилями, в котором сообщения от автомобиля к автомобилю являются зашифрованными и/или аутентифицированными с использованием совместно используемого ключа.
Хотя манипуляции с полиномами могут быть выполнены процессором 420 в соответствии с инструкциями программного обеспечения манипуляций с полиномами манипуляции, хранящимися в памяти 430, задачи генерации ключей и вычисления одномерных полиномов решаются быстрее, если интегральная схема 400 сконфигурирована с дополнительным вычислительным блоком 450. В этом варианте осуществления вычислительный блок 450 является аппаратным блоком для выполнения операций подстановки и сокращения.
Как правило, каждое из устройств 200 и 300 содержит микропроцессор (не показан), который выполняет соответствующее программное обеспечение, хранящееся в устройствах 200 и 300; например, это программное обеспечение, возможно, было загружено и/или сохранено в соответствующей памяти, например, энергозависимой памяти, такой как RAM, или энергонезависимой памяти, такой как флэш-память (не показана). Альтернативно, устройства 200 и 300 могут, полностью или частично, быть реализованы в программируемых логических схемах, например, таких как программируемая пользователем вентильная матрица (FPGA).
На фигуре 5 схематично показан в форме блок-схема пример варианта осуществления способа 500 для определения совместно используемого ключа с любым из множества сетевых устройств. Способ может быть выполнен, например, любым из устройств 300, 350 и 360. Способ включает в себя
сохранение 510 идентификационного номера (310, A) первого сетевого устройства,
прием 520 множества материалов для локального ключа по меньшей мере от двух различных серверов конфигурации из множества серверов конфигурации,
прием 530 идентификационного номера второго сетевого устройства (355, B) для второго сетевого устройства из множества сетевых устройств,
предоставление 540 идентификационного номера первого сетевого устройства второму сетевому устройству,
выведение 550 совместно используемого ключа из идентификационного номера второго сетевого устройства и по меньшей мере двух из множества материалов для локального ключа первого сетевого устройства, при этом совместно используемый ключ совместно используется первым и вторым сетевыми устройствами.
Возможно множество различных путей выполнения способа, как будет очевидно специалисту в данной области техники. Например, порядок этапов может быть изменен, или некоторые этапы могут быть выполнены параллельно. Кроме того, между этапами могут быть вставлены другие этапы способа. Вставленные этапы могут представлять улучшения способа, такие как описаны в настоящем раскрытии, или могут быть не связаны со способом.
Способ согласно варианту осуществления может быть выполнен с помощью программного обеспечения, включающего в себя команды для вызывания выполнения процессорной системой способа 500 или 600. Программное обеспечение может включать только этапы, сделанные конкретным подэлементом системы. Программное обеспечение может храниться на подходящем носителе информации, таком как жесткий диск, дискета, память и т.д. Программное обеспечение может быть отправлено как сигнал через проводное или беспроводное соединение, или с использование сети передачи данных, например, Интернета. Программное обеспечение может быть сделано доступным для скачивания и/или для удаленного использования на сервере. Способ может быть исполнен с помощью битового потока, выполненного для конфигурирования программируемой логической схемы, например, программируемой пользователем вентильной матрицы (FPGA), в целях выполнения способа.
Следует понимать, что изобретение также распространяется на компьютерные программы, в частности, компьютерные программы на или в сигнале, несущем данные, выполненные для практического применения изобретения. Программа может быть в форме исходного кода, объектного кода, промежуточного источника кода и объектного кода, такой как частично скомпилированная форма, или в любой другой форме, подходящей для применения в реализации способа согласно варианту осуществления. Вариант осуществления, относящийся к компьютерному программному продукту, включает исполнимые компьютером команды, соответствующие каждому из технологических этапов по меньшей мере одного из изложенных способов. Эти команды могут быть подразделены на подпрограммы и/или могут храниться в одном или более файлах, которые могут быть связаны статически или динамически. Другой вариант осуществления, относящийся к компьютерному программному продукту, включает исполнимые компьютером инструкции, соответствующие каждому из средств по меньшей мере одной из изложенных систем и/или продуктов.
Следует отметить, что приведенные выше варианты осуществления иллюстрируют, а не ограничивают изобретение, и что специалисты в данной области техники будут в состоянии разработать множество альтернативных вариантов осуществления.
В пунктах формулы изобретения любые условные обозначения, помещенные между круглыми скобками, не должны быть истолкованы как ограничивающие пункт. Использование глагола «включает» и его спряжений не исключает наличия элементов или этапов помимо установленных в пункте формулы изобретения. Единственное число для элемента не исключает наличия множества таких элементов. Изобретение может быть реализовано посредством аппаратных средств, включающих несколько различных элементов, и посредством соответствующим образом запрограммированного компьютера. В пунктах формулы изобретения, относящихся к устройству, в которых перечислено несколько средств, несколько из этих средств могут быть реализованы посредством одного и того же элемента аппаратных средств. Сам факт того, что определенные средства изложены во взаимно различных зависимых пунктах формулы изобретения, не указывает на то, что комбинация этих средств не может применяться с выгодой.
В пунктах формулы изобретения ссылки в круглых скобках относятся к условным обозначениям на чертежах вариантов осуществления или к формулам вариантов осуществления, таким образом, повышая ясность пункта формулы. Эти ссылки не должны быть истолкованы как ограничивающие пункт формулы изобретения.