СИСТЕМЫ И СПОСОБЫ ДЛЯ ОПРЕДЕЛЕНИЯ ВРЕМЕННОЙ ЗАДЕРЖКИ ДЛЯ ПЕРЕДАЧИ ЗАПРОСА НА ОБНОВЛЕНИЕ КЛЮЧА
SYSTEMS AND METHODS FOR DETERMINING TIME DELAY FOR SENDING KEY UPDATE REQUEST

Область техники
Настоящее изобретение относится к компьютерам и связанной с компьютерами технологии. Более конкретно, настоящее изобретение относится к системам и способам для определения временной задержки для передачи запроса на обновление ключа.
Область техники
Компьютерные и коммуникационные технологии продолжают развиваться быстрыми темпами. Действительно, компьютерные и коммуникационные технологии связаны с многими аспектами повседневной жизни. Например, многие устройства, используемые в настоящее время потребителями, имеют небольшой компьютер внутри устройства. Такие малые компьютеры поставляются с различными размерами и степенями сложности. Эти малые компьютеры включают все, от микроконтроллера до полнофункциональной компьютерной системы. Например, эти малые компьютеры могут быть однокристальным компьютером, таким как микроконтроллер, одноплатным компьютером, таким как контроллер, типовым настольным компьютером, таким как IBM совместимый персональный компьютер, и т.д.
Компьютеры в типовом виде имеют один или более процессоров в качестве основного элемента компьютера. Процессоры обычно взаимосвязаны с различными внешними входами и выходами и функционируют для управления конкретным компьютером или устройством. Например, процессор в термостате может быть связан с кнопками, используемыми для выбора температурной настройки, с печью или кондиционером для изменения температуры и с температурными датчиками для считывания и индикации текущей температуры на дисплее.
Многие приборы, устройства и т.д. включают в себя один или более малых компьютеров. Например, термостаты, печи, системы кондиционирования воздуха, холодильники, телефоны, пишущие машинки, автомобили, торговые автоматы и многие различные типы промышленного оборудования теперь обычно содержат небольшие компьютеры или процессоры. Компьютерное программное обеспечение управляет процессорами этих компьютеров и инструктирует процессоры, как выполнять определенные задачи. Например, компьютерное программное обеспечение, исполняемое на термостате, может заставить кондиционер остановить функционирование, когда конкретная температура достигнута, или может заставить нагреватель включиться, когда необходимо.
Эти типы небольших компьютеров, которые являются частью устройства, прибора, инструмента и т.д., часто упоминаются как встроенные устройства или встроенные системы. (Термины "встроенное устройство" и "встроенная система" будут использоваться здесь взаимозаменяемо.) Встроенная система обычно относится к компьютерным аппаратным средствам и программному обеспечению, которые являются частью большей системы. Встроенные системы могут не иметь типовых устройств ввода и вывода, таких как клавиатура, мышь и/или монитор. Обычно основу каждой встроенной системы составляет один или более процессоров.
Встроенные системы могут использоваться, чтобы осуществлять контроль или управление многими различными системами, ресурсами, продуктами и т.д. С развитием Интернета и Всемирной Паутины встроенные системы все в большей степени связываются с Интернетом, так что они могут дистанционно контролироваться и/или управляться. Другие встроенные системы могут быть соединены с компьютерными сетями, включая локальные сети, глобальные сети и т.д. Термин "компьютерная сеть" (или просто "сеть"), как он используется в настоящем документе, относится к любой системе, в которой некоторое количество узлов связано коммуникационными каналами. Термин "узел" относится к любому устройству, которое может быть подсоединено как часть компьютерной сети.
Некоторые встроенные системы могут обеспечивать данные и/или услуги другим вычислительным устройствам, используя компьютерную сеть. Альтернативно, могут иметься типовые компьютеры или вычислительные устройства, которые предоставляют данные и/или услуги другим вычислительным устройствам, используя компьютерную сеть. Иногда это выгодно, чтобы минимизировать число обновлений ключей, требуемых для поддержания безопасных соединений. Использование большого количества обновлений ключей может вызвать дополнительный трафик в сети. Эти ситуации, как и другие, могут обусловить неэффективность в коммуникации по сети. Поэтому могла бы быть получена выгода, если бы доступными были системы и способы для определения временной задержки для посылки запроса на обновление ключа.
Сущность изобретения
Описан способ для определения временной задержки для посылки запроса на обновление ключа вычислительным устройством. Первый запрос на обновление посылает вычислительное устройство по завершении первой случайной задержки. Принимаются первые данные нагрузки. Второй запрос на обновление посылается вычислительным устройством по завершении максимального параметра обновления. Принимаются вторые данные нагрузки. Первые данные нагрузки сравниваются со вторыми данными нагрузки. Следующее время обновления подстраивается, если первые данные нагрузки отличаются от вторых данных нагрузки.
Максимальный параметр обновления может включать в себя отличающуюся задержку по сравнению с первой случайной задержкой, если первые данные нагрузки отличаются от вторых данных нагрузки. Первая случайная задержка может содержать временную задержку, указывающую время для ожидания, прежде чем послать первый запрос на обновление. Запрос на аутентификацию посылается на сервер аутентификации.
В одном варианте осуществления ключ аутентификации получают от сервера аутентификации. Ключ аутентификации может содержать ключ обмена ключами (KEK). Первый запрос на обновление и второй запрос на обновление могут содержать запрос на изменения в KEK. Максимальный параметр обновления может содержать максимальное количество времени, которое узел ждет, прежде чем послать второй запрос на обновление. Первый запрос на обновление может содержать временной блок, который меньше, чем время, указанное максимальным параметром обновления. Первые данные нагрузки и вторые данные нагрузки могут содержать параметры, которые указывают нагрузку, при которой находился сервер аутентификации в течение предыдущих временных блоков.
Также описано вычислительное устройство, которое конфигурировано для определения временной задержки для посылки запроса на обновление ключа. Компьютерная система содержит процессор и память в электронной коммуникации с процессором. Инструкции сохранены в памяти. Первый запрос на обновление посылается по завершении первой случайной задержки. Принимаются первые данные нагрузки. Второй запрос на обновление посылается по завершении максимального параметра обновления. Принимаются вторые данные нагрузки. Первые данные нагрузки сравниваются со вторыми данными нагрузки. Следующее время обновления подстраивается, если первые данные нагрузки отличаются от вторых данных нагрузки.
Также описан машиночитаемый носитель, содержащий исполняемые инструкции для определения временной задержки для посылки запроса на обновление ключа. Первый запрос на обновление посылается по завершении первой случайной задержки. Принимаются первые данные нагрузки. Второй запрос на обновление посылается по завершении максимального параметра обновления. Принимаются вторые данные нагрузки. Первые данные нагрузки сравниваются со вторыми данными нагрузки. Следующее время обновления подстраивается, если первые данные нагрузки отличаются от вторых данных нагрузки.
Краткое описание чертежей
Иллюстративные варианты осуществления изобретения станут более понятными из следующего описания и приложенных пунктов формулы изобретения, рассматриваемых во взаимосвязи с иллюстрирующими чертежами. Понятно, что эти чертежи изображают только иллюстративные варианты осуществления и не должны рассматриваться как ограничивающие объем изобретения, поэтому иллюстративные варианты осуществления изобретения описаны ниже с дополнительной спецификой и деталями с использованием иллюстрирующих чертежей, на которых:
Фиг. 1 - блок-схема, иллюстрирующая один вариант осуществления сервера, передающего ключ обмена ключами (KEK) к одному или более узлам в пределах группы;
Фиг. 2 - блок-схема, иллюстрирующая один вариант осуществления аутентифицирующего узла;
Фиг. 3 - блок-схема, иллюстрирующая один вариант осуществления узла, принимающего данные нагрузки, касающиеся нагрузки на сервер в разные моменты времени;
Фиг. 4 - блок-схема, иллюстрирующая один вариант осуществления сервера, посылающего данные нагрузки в узел в различные интервалы времени;
Фиг. 5 - блок-схема, иллюстрирующая один вариант осуществления способа для принятия решения, следует ли изменить временную задержку для посылки запроса на обновление;
Фиг. 6 - блок-схема, иллюстрирующая один вариант осуществления способа для определения, может ли узел присоединиться к ранее существующей группе узлов;
Фиг. 7 - блок-схема, иллюстрирующая один вариант осуществления функции изменения задержки; и
Фиг. 8 - блок-схема компонентов аппаратных средств, которые могут использоваться во встроенном устройстве, которое конфигурировано согласно варианту осуществления.
Лучший режим выполнения изобретения
Различные варианты осуществления изобретения описаны ниже со ссылками на чертежи, на которых ссылочные позиции обозначают идентичные или функционально подобные элементы. Варианты осуществления настоящего изобретения, как вообще описано и проиллюстрировано на чертежах, могут конфигурироваться и разрабатываться в большом разнообразии различных конфигураций. Таким образом, следующее более детальное описание нескольких примерных вариантов осуществления настоящего изобретения, как представлено на чертежах, не предназначено для ограничения объема изобретения, как заявлено, но просто представляет варианты осуществления изобретения.
Слово "примерный" используется здесь исключительно для того, чтобы означать "служить примером, экземпляром или иллюстрацией". Любой вариант осуществления, описанный здесь как "примерный", не должен обязательно рассматриваться как предпочтительный или выгодный по отношению к другим вариантам осуществления.
Многие признаки вариантов осуществления, раскрытых здесь, могут быть осуществлены как программное обеспечение, электронные аппаратные средства или комбинации того и другого. Чтобы ясно иллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные компоненты будут описаны, в общем, с точки зрения их функциональных возможностей. То, осуществлены ли такие функциональные возможности как аппаратные средства или программное обеспечение, зависит от конкретного применения и ограничений проектирования для системы в целом. Специалисты в данной области техники могут осуществить описанные функциональные возможности различными способами для каждого конкретного применения, но такие решения реализации не должны интерпретироваться как вызывающие отклонение от объема настоящего изобретения.
Если описанные функциональные возможности осуществлены как программное обеспечение, то такое программное обеспечение может включать в себя любой тип компьютерной инструкции или исполняемого компьютером кода, помещенных в устройство памяти и/или переданных как электронные сигналы по системной шине или сети. Программное обеспечение, которое реализует функциональные возможности, связанные с компонентами, описанными здесь, может содержать единственную инструкцию или много инструкций и может быть распределено по нескольким различным сегментам кода, по различным программам и по нескольким устройствам памяти.
Используемые здесь термины, такие как "вариант осуществления", "варианты осуществления", "один или более вариантов осуществления", "некоторые варианты осуществления", "определенные варианты осуществления", "один вариант осуществления", "другой вариант осуществления" и т.п. означают "один или более (но не обязательно все) варианты осуществления раскрытого(ых) изобретения(й)", если явно не определено иначе.
Термин "определение" (и его грамматические варианты) использован в чрезвычайно широком смысле. Термин "определение" охватывает большое разнообразие действий, и поэтому "определение" может включать расчет, вычисление, обработку, получение, исследование, поиск (например, поиск в таблице, базе данных или другой структуре данных), установление и т.п. Кроме того, "определение" может включать прием (например, прием информации), получение доступа (например, получение доступа к данным в памяти) и т.п. Кроме того, "определение" может включать разрешение, отбор, выбор, установление и т.п.
Термин "основанный на" не означает "основанный только на", если явно не определено иначе. Другими словами, термин "основанный на" описывает и "основанный только на" и "основанный, по меньшей мере, на".
В защищенной группе многоадресной (групповой) передачи группа может управлять ключом группы для шифрования и дешифрования информации, которая передается путем групповой передачи между членами группы. В одном варианте осуществления централизованный сервер, такой как сервер аутентификации, используется, чтобы управлять членством группы. Ключ обмена ключами (KEK) может быть распространен от централизованного сервера узлу, желающему присоединиться к группе. KEK может позволить узлу осуществлять связь с узлами в группе, чтобы получить ключ группы.
В некоторых вариантах осуществления КЕК может измениться, когда узел был удален из группы. Сервер аутентификации может предположить, что удаленный узел помнит старый KEK и мог бы использовать его, чтобы присоединиться к группе незаконным способом. Это подразумевает, что измененный KEK может быть безопасно распределен каждому существующему члену группы.
В одном варианте осуществления централизованный сервер может не обладать способностью групповой передачи изменений КЕК членам группы. Также каждый член группы может периодически сверяться с сервером, чтобы гарантировать, что KEK не изменился, или чтобы получить новый KEK, если изменения произошли. Например, члены группы могут посылать запросы на обновление на сервер. Может быть желательно, чтобы нагрузка на сервер, вызванная многократными запросами на обновление, была распределена во времени, так чтобы сервер имел равномерную загрузку.
Набор параметров, указывающих прошлые нагрузки, при которых сервер находился в течение предыдущих временных блоков, может использоваться, чтобы способствовать распределению нагрузки, когда запросы на обновление посылаются на сервер в будущем. Эти параметры могут быть распределены узлу каждый раз, когда узел посылает запрос на обновление. Сервер может проводить различие между нагрузкой, вызванной нормальными запросами на обновление, и нагрузкой, вызванной запросами на ускоренное обновление из-за изменений KEK. Нагрузка, вызванная запросами на ускоренное обновление, может внести искажения в средние значения прошлых нагрузок, указанных набором параметров.
Данные, представляющие прошлые нагрузки на сервере в течение предыдущих временных блоков, могут способствовать узлу в выборе начального случайного выбора времени, чтобы послать запрос на обновление, но предыдущие временные блоки, которые параметры покрывают, могут не продолжаться в течение достаточного времени, чтобы обеспечить выгодное использование. Например, максимальный период запроса для узлов, принадлежащих конкретной группе, может включать двадцать четыре часа. Это может подразумевать, что каждый узел запрашивает сервер на предмет изменений в KEK однократно каждые двадцать четыре часа. Достаточно подробная информация может быть недоступной, чтобы предсказать, когда, в течение следующих двадцати четырех часов, было бы эффективное время для конкретного узла, чтобы послать запрос на обновление так, чтобы нагрузка на сервер была равномерно распределена. Поддержание такой детальной информации данных нагрузки может потребовать большого объема памяти и вычислительных возможностей сервером.
На фиг. 1 показана блок-схема, иллюстрирующая один вариант осуществления сервера 102, передающего ключ обмена ключами (KEK) 104 к одному или более узлам в пределах группы 106. В одном варианте осуществления сервер 102 является сервером аутентификации. Сервер аутентификации может быть сервером, который аутентифицирует узлы, желающие присоединиться к группе А 106. В одном варианте осуществления сервер 102 аутентифицирует узел, и узел получает KEK 104. Узел может присоединиться к группе А 106 с использованием KEK 104, чтобы проверить свою способность присоединить группу А 106 к другим узлам, принадлежащим к группе А 106. В одном варианте осуществления сервер 102 поддерживает минимальное состояние относительно каждого узла группы А 106. Например, сервер 102 может просто поддерживать состояние KEK 104. Сервер 102 может сообщить изменения в KEK 104 узлам группы А 106.
Как проиллюстрировано, группа А 106 включает в себя узел 108, узел B 110 и узел C 112. В то время как группа А 106 проиллюстрирована только с тремя узлами, понятно, что группа А 106 может включать в себя больше или меньше узлов. Группа А 106 может упоминаться как группа безопасной групповой передачи, потому что узлы в пределах группы 106 могут передавать посредством групповой передачи информацию друг к другу безопасным способом. Например, информация, которая передается посредством групповой передачи между узлами группы А 106, может быть зашифрована общим ключом 114 группы А. Узлы могут использовать KEK 104 для приема ключа 114 группы А, который ассоциирован с группой А 106. Например, узел N 116 может послать запрос, чтобы стать членом группы А 106, посылая запрос 118 о группе к одному или более узлам группы А 106. Один или более узлов группы А 106 могут определить, включает ли в себя узел N 116 KEK 104. Если узел N 116 включает в себя KEK 104, то один или более узлов могут распределить ключ 114 группы А узлу N 116. Ключ А 114 группы А может позволить узлу посылать информацию к другим узлам в группе А 106 и получать информацию от других узлов в группе А 106. Узлы могут использовать ключ 114 группы А, чтобы зашифровать или расшифровать информацию, которая передается между узлами группы А 106.
Если узел N 116 не имеет KEK 104, узел N 116 может послать запрос 120 на КЕК на сервер 102, запрашивая, чтобы сервер 102 распределил KEK 104 узлу N 116. Сервер 102 может аутентифицировать узел N 116 и распределить KEK 104. Однако если KEK 104 не распределен узлу N 116, узел N 116 не может присоединиться к группе 106 и принять ключ 114 группы.
Коммуникации между сервером 102, группой А 106 и узлом N 116 могут осуществляться по сети 122. Сеть 122 может включать в себя любую систему связи, такую как, без ограничения указанным, сеть глобальной связи, Интернет, компьютерную сеть, телефонную сеть, пейджинговую сеть, сотовую сеть, глобальную сеть (WAN), локальную сеть (LAN) и т.д. В одном варианте осуществления сервер 102 может координировать и осуществлять связь с множеством групп узлов по сети 122. Сервер 102 может распределять KEK, который является определенным для каждой группы узлов.
На фиг. 2 показана блок-схема, иллюстрирующая один вариант осуществления сервера 202, аутентифицирующего узел 208. В одном варианте осуществления узел А 208 аутентифицируется, прежде чем ему будет разрешено присоединиться к группе А 206. Узел А 208 может передать запрос 230 на КЕК на сервер 202 по сети 222 связи. Запрос 230 на KEK может содержать запрос для сервера 202, чтобы распределить KEK 204, связанный с группой А 206. Узел А 208 может знать, является ли он или нет присоединяющимся к группе А 206 впервые или просто запрашивает сервер 202 об изменениях KEK 204.
В одном варианте осуществления сервер 202 получает мандат 232, ассоциированный с узлом А 208. Аутентификатор 234 может оценить мандат 232 и определить, обладает ли узел А 208 соответствующим мандатом, чтобы присоединиться к группе А 206. Мандат 232 может включать информацию относительно узла А 208, такую как IP-адрес, MAC (управление доступом к среде передачи) - адрес, вычислительные возможности, знание совместно используемого общего секрета и т.д. Если аутентификатор 234 аутентифицирует узел А 208, сервер 202 распределяет KEK 204 узлу А 208. Как ранее объяснено, KEK 204 может позволить узлу А 208 получить ключ 214 группы А. Ключ 214 группы А может позволить узлу А 208 передавать посредством групповой передачи информацию к другим узлам в группе А 206. Кроме того, ключ 214 группы А может позволить узлу А 208 принимать информацию от других узлов в группе А 206. Например, ключ 214 группы А может использоваться членами группы А 206, чтобы зашифровывать и расшифровывать информацию, которая передается посредством групповой передачи к членам группы А 206.
Узел А 208 может также включать в себя генератор 226 запроса, который генерирует запросы на обновление для передачи на сервер 202. Запросы на обновление могут запрашивать сервер 202 об изменениях KEK 204. В одном варианте осуществления сервер 202 модифицирован таким способом, что узел больше не может получать KEK 204, ассоциированный с группой А 206. Например, узел может быть скомпрометирован, сервер 202 модифицируется, чтобы воспрепятствовать тому, чтобы скомпрометированный узел скомпрометировал целостность группы А 206. Если сервер 202 модифицирован, как описано, он может изменить KEK 204. Сервер 202 не может распределять новый, измененный KEK скомпрометированному узлу, потому что аутентификатор 234 теперь был бы не в состоянии аутентифицировать скомпрометированный узел. Также скомпрометированный узел не может получить новый, измененный KEK, что может воспрепятствовать тому, чтобы скомпрометированный узел затем получил ключ 214 группы А. Без ключа 214 группы А скомпрометированному узлу запрещается передавать посредством групповой передачи информацию к узлам или получать информацию от узлов, все еще принадлежащих к группе А 206. В одном варианте осуществления скомпрометированный узел не способен зашифровывать или расшифровывать информацию, которая передается посредством групповой передачи между членами группы А 206 без ключа 214 группы А. Если KEK 204 не был изменен после удаления скомпрометированного узла, скомпрометированный узел может повторно использовать KEK 204, чтобы принять ключ 214 группы А и незаконно повторно присоединиться к группе А 206 (или поддерживать членство в ней).
В одном варианте осуществления сервер 202 включает максимальный параметр 224 обновления. Максимальный параметр 224 обновления может быть определенным для группы А 206. Параметр 224 может указать максимальное количество времени, которое узлы в группе А 206 могут доверять KEK 204, не посылая запроса на обновление на сервер 202, для проверки на изменения KEK 204. Например, максимальный параметр 224 обновления может указать двадцать четыре часа, что предполагает, что каждый узел в пределах группы А 206 посылает запрос на обновление на сервер 202 однократно каждые двадцать четыре часа. В одном варианте осуществления максимальный параметр 224 обновления распределяется узлу, когда узел сначала аутентифицирован, принимает KEK 204 и присоединяется к группе 206. В другом варианте осуществления максимальный параметр 224 обновления распределяется узлу каждый раз, когда узел выполняет проверку на обновленный KEK 204.
Генератор 226 запроса может включать в себя параметр 228 случайной задержки, который случайным образом выбирает время для генератора 226, чтобы генерировать и передавать первый запрос на обновление на сервер 202 после того, как узел присоединился к группе. Параметр 228 случайной задержки может случайным образом выбирать задержку, которая меньше, чем максимальный параметр 224 обновления. Например, максимальный параметр 224 обновления может включать двадцать четыре часа. Случайный параметр 228 задержки может выбрать шестьдесят минут. В одном варианте осуществления генератор 226 запроса генерирует первый запрос на обновление спустя шестьдесят минут после того, как узел 208 аутентифицирован и принимает KEK 204. Генератор 226 запроса может затем генерировать и послать последующий запрос на обновление спустя двадцать четыре часа после генерации и посылки первого запроса на обновление на сервер 202. В одном варианте осуществления случайный параметр задержки уменьшает нагрузку, которая может быть помещена на сервер 202, от приема многократных запросов на обновление в одно и то же время от множества узлов.
В одном варианте осуществления случайная временная задержка, выбранная для посылки первого запроса на обновление, может служить в качестве рандомизатора первого порядка, что означает, что нет никакой обратной связи относительно того, было ли эффективным определение того, когда послать первый запрос на обновление, или нет. Как только начальная случайная временная задержка истекла, запросы на обновление могут посылаться по истечении максимального параметра 224 обновления.
На фиг. 3 показана блок-схема, иллюстрирующая один вариант осуществления узла, принимающего данные нагрузки, касающиеся нагрузки на сервере 302, в различные моменты времени. В одном варианте осуществления узел 308 аутентифицируется, принимает KEK 304 и становится членом группы А 306. Узел А 308 может использовать KEK 304, чтобы принять ключ 314 группы А. Узел А 308 может передать запрос 336 на обновление на сервер 302, чтобы проверить, изменился ли KEK 304. В одном варианте осуществления запрос 336 на обновление посылается на сервер 302 по сети 322 связи.
Сервер 302 может передать данные 338 нагрузки в узел А 308, когда сервер 302 получает запрос 336 на обновление. В другом варианте осуществления данные 338 нагрузки могут также передаваться от сервера 302, когда сервер 302 принимает начальный запрос 230 на KEK. Данные 338 нагрузки могут указывать прошлые нагрузки, когда сервер 302 находился в течение предыдущего временного блока. Например, данные А 338 нагрузки могут включать данные А 340 прошлой нагрузки, данные В 342 прошлой нагрузки, данные С 344 прошлой нагрузки и т.д. Данные А 340 прошлой нагрузки могут представлять нагрузку, при которой сервер 302 находился в течение предыдущих тридцати секунд. Данные В 342 прошлой нагрузки могут представлять нагрузку, при которой сервер 302 находился в течение предыдущих пяти минут. Точно так же данные С 344 прошлой нагрузки могут представлять нагрузку, при которой сервер 302 находился в течение предыдущих тридцати минут. Эти параметры, представляющие прошлые нагрузки, являются просто примерами, и следует понимать, что настоящие системы и способы могут включать в себя данные, представляющие любое число прошлых нагрузок, при которых сервер 302 находился в течение любого предыдущего временного блока.
В одном варианте осуществления сервер 302 включает в себя анализатор 360 данных нагрузки. Анализатор 360 может определить, вызвана ли нагрузка на сервер 302 нормальными запросами 336 на обновление, или вызвана ли нагрузка запросами 336 на ускоренное обновление. В одном варианте осуществления нормальные запросы 336 на обновление посылаются периодически, чтобы проверить, изменился ли KEK 304. В другом варианте осуществления запросы 336 на ускоренное обновление посылаются на сервер 302 в коротком временном периоде, потому что KEK 304 изменился. Анализатор 360 может передать эти различные типы нагрузки, чтобы загрузить данные 338.
На фиг. 4 показана блок-схема, иллюстрирующая один вариант осуществления сервера 402, посылающего данные нагрузки на узел в различных интервалах времени. В одном варианте осуществления узел 408 может посылать запрос 436 на обновление на сервер 402 во время А 400. Время А 400 может представлять истечение случайного параметра задержки 228. Узел А 408 может передавать запрос 436 на дополнительное обновление во время (А+B) 401. Время (А+B) 401 может представлять истечение максимального параметра 224 обновления плюс истечение случайного параметра 228 задержки. Например, максимальный параметр 224 обновления может включать параметр двадцати четырех часов, который указывает, что узел А 408 может доверять KEK 404 в течение двадцати четырех часов, прежде чем посылать запрос 436 на обновление. Чтобы уменьшить нагрузку на сервер 402, каждый узел в пределах группы может случайным образом выбирать время, которое меньше, чем максимальный параметр 224 обновления, чтобы послать первый запрос 436 на обновление. Узел А 408 может случайным образом выбирать время шестьдесят минут, чтобы послать первый запрос 436 на обновление. В одном варианте осуществления узел А 408 посылает первый запрос 436 на обновление спустя шестьдесят минут после получения KEK 404. В изображенном варианте осуществления время А 400 может представлять шестьдесят минут. После посылки первого запроса 436 на обновление узел А 408 может ожидать истечения времени, определенного максимальным параметром обновления 224, чтобы послать запрос 436 на дополнительное обновление. В этом примере узел А 408 может ожидать двадцать четыре часа прежде, чем послать другой запрос 436 на обновление. В изображенном варианте осуществления время (А+B) 401 может представлять двадцать пять часов, где время A представляет шестьдесят минут, и время B представляет двадцать четыре часа.
В одном варианте осуществления сервер 402 посылает данные А 438 нагрузки в узел А 408, когда сервер 402 получает первый запрос 436 на обновление во время А 400. Как ранее объяснено, данные А 438 нагрузки могут включать в себя наборы параметров, которые указывают нагрузку, при которой сервер 402 находился в течение нескольких предыдущих временных блоков (то есть тридцать секунд, пять минут, тридцать минут и т.д.) В одном варианте осуществления узел А 408 посылает запрос 436 на дополнительное обновление во время (А+B) 401. Сервер 402 может послать данные B 450 нагрузки в узел А 408. Данные B 450 нагрузки могут включать в себя данные А 440 прошлой нагрузки, данные B 442 прошлой нагрузки, данные C 444 прошлой нагрузки и т.д. Данные А 440 прошлой нагрузки, данные B 442 прошлой нагрузки и данные C 444 прошлой нагрузки могут представлять параметры, которые указывают нагрузку, которую сервер 402 воспринимал в течение предыдущих временных блоков. В одном варианте осуществления узел А 408 сравнивает данные 438 нагрузки с данными B 450. Узел А 408 может настраивать время для посылки будущих запросов 436 на обновление на основе сравнения предысторий нагрузки. Например, если сравнение данных B 450 нагрузки и данных А 438 нагрузки указывают, что нагрузка на сервер 402 выше в самый последний предыдущий временной блок перед временем, когда был послан дополнительный запрос 436 на обновление, но то же самое сравнение показывает, что нагрузка подобна для еще более раннего временного блока, узел А 408 может переместиться к более раннему времени, чтобы послать последующие запросы 436 на обновление. Другими словами, узел А 408 может послать следующий запрос 436 на обновление, несколько ранее истечения времени, указанного максимальным параметром 224 обновления. В другом варианте осуществления узел А 408 может оценить нагрузку, при которой сервер 402 находился во время самого последнего запроса на обновление, чтобы определить, следует ли вообще модифицировать время, чтобы послать последующие запросы 436 на обновление.
На фиг. 5 показана блок-схема, иллюстрирующая один вариант осуществления способа 500 для определения того, следует ли изменять временную задержку для того, чтобы посылать запросы на обновление. Способ 500 может быть осуществлен узлом, таким как узел 108. Запрос на KEK посылается на этапе 502 на сервер аутентификации. В одном варианте осуществления запрос на KEK посылает узел, который желает получить ключ группы, ассоциированный с группой узлов. В одном варианте осуществления узел, который послал (502) запрос на KEK, может также послать мандат на сервер аутентификации. Если на этапе 504 определено, что узел не обладает соответствующим мандатом, узел не аутентифицируется, и в более позднее время запрос на KEK может быть снова послан (502) на сервер. Если на этапе 504 определено, что узел действительно обладает соответствующим мандатом, узел аутентифицируется и получает KEK 104. В одном варианте осуществления максимальный параметр обновления также принимается на этапе 506. Как ранее объяснено, максимальный параметр обновления может указать максимальное количество времени, в течение которого узел может доверять KEK 104, прежде чем послать запрос на обновление ввиду возможных изменений в KEK 104. В другом варианте осуществления данные А 338 нагрузки также принимаются на этапе 506. Как ранее объяснено, данные нагрузки могут указывать нагрузку на сервер во время предыдущих периодов времени.
Первая случайная задержка может быть выбрана на этапе 508, и первый запрос на обновление может быть послан при завершении первой случайной задержки. Первая случайная задержка может быть меньше, чем максимальный параметр обновления. В одном варианте осуществления первые данные нагрузки принимаются на этапе 510. Первые данные нагрузки могут включать в себя параметры, которые указывают нагрузку, при которой находился сервер аутентификации в течение предыдущего временного блока (то есть тридцать секунд, пять минут, тридцать минут и т.д.). Второй запрос на обновление может быть послан на этапе 512 при завершении времени, указанного максимальным параметром обновления. В одном варианте осуществления вторые данные нагрузки принимаются на этапе 514. Вторые данные нагрузки могут также включать в себя параметры, которые указывают нагрузку, при которой сервер аутентификации находился в течение предыдущего временного блока. Первые данные нагрузки могут сравниваться на этапе 516 со вторыми данными нагрузки. На этапе 518 определяется, отличается ли нагрузка на сервер аутентификации во время второго запроса на обновление от нагрузки на сервер во время первого запроса на обновление, путем сравнения на этапе 516 первых и вторых данных нагрузки. Если на этапе 518 определено, что есть небольшое различие или нет никакого различия в первых данных нагрузки и вторых данных нагрузки, способ 500 завершается. Если на этапе 518 определено, что есть различие между первыми данными нагрузки и вторыми данными нагрузки, то на этапе 520 выбирается вторая случайная задержка, и третий ответ обновления посылается при завершении второй случайной задержки. В одном варианте осуществления вторая случайная задержка отличается от первой случайной задержки. Вообще, то же самое сравнение (518) может быть выполнено между любыми двумя наборами данных нагрузки, принятых для настройки (520) задержки между запросами на обновление.
На фиг. 6 показана блок-схема, иллюстрирующая один вариант осуществления способа 600 для определения, может ли узел присоединиться к группе узлов. В одном варианте осуществления способ 600 может быть осуществлен отдельным узлом, принадлежащим группе. Запрос на присоединение к группе узлов может быть принят на этапе 602. Запрос может включать в себя параметр, основанный на KEK. Выполняется определение (604), основан ли параметр, включенный в запрос, на KEK 104, связанном с каждым узлом в группе. Например, узел А 108, член группы А 106, может принять на этапе 602 запрос от узла N 116 на разрешение узлу N 116 стать членом группы А 106. Запрос может включать в себя параметр, основанный на KEK. Узел А 108 может определить (604), является ли параметр, включенный в запрос, основанным на KEK 104, связанном с узлом А 108. Если параметр, включенный в запрос, не основан на KEK 104, связанном с узлом 108, способ 600 завершается. Если определение 604 показывает, что эти KEK совпадают, то ключ группы распределяется на этапе 606 узлу, который послал запрос. В одном варианте осуществления ключ группы позволяет узлу принимать групповые передачи от других узлов, принадлежащих группе. Ключ группы может также позволить узлу передавать данные посредством групповой передачи к другим узлам в группе.
На фиг. 7 показана блок-схема, иллюстрирующая один вариант осуществления функции 702 изменения задержки. Функция 702 изменения задержки может использоваться, чтобы определить величину изменения времени для того, когда узлу посылать запрос на обновление в сервер 102. Например, если узел сравнивает данные нагрузки и определяет, что данные нагрузки отличаются в достаточной степени, узел может настроить время, когда последующие запросы на обновление должны посылаться на сервер 102. В одном варианте осуществления функция 702 изменения задержки 702 включает в себя в качестве входа текущее хронирование 704, которое может представлять параметр текущего времени, используемый узлом, чтобы послать запросы обновления. Например, текущее хронирование 704 может включать максимальный параметр обновления 224, как описано выше.
Функция 702 изменения задержки может также включать в себя в качестве входа данные 706 предыдущей нагрузки. Данные 706 предыдущей нагрузки могут представлять нагрузку на сервер 102, когда был принят предыдущий запрос на обновление. Например, данные 706 предыдущей нагрузки могут включать в себя данные А 338 нагрузки, как объяснено выше. Кроме того, функция 702 изменения задержки может включать в себя в качестве входа данные 708 текущей нагрузки, которые могут представлять нагрузку на сервер 102, когда был принят текущий запрос на обновление. Например, данные 708 текущей нагрузки могут включать в себя данные B 450 нагрузки, как описано выше. В одном варианте осуществления функция 702 изменения задержки может также принимать в качестве входа параметр 710 рандомизации. Параметр 710 рандомизации позволяет функции 702 изменения задержки выбирать случайным образом изменение во времени, когда запросы на обновление посылаются на сервер 102. Функция 702 изменения задержки может запретить всем узлам в группе изменять время посылки запросов на обновление одинаковым способом. Функция 702 может включать в себя входы, как объяснено выше, и выводить случайное изменение 712 задержки. Случайное изменение 712 задержки может вызвать посылку последующих запросов обновления на сервер 102 до истечения максимального параметра 224 обновления. Функция 702 изменения задержки может обеспечить относительно постоянную нагрузку на сервер 102, при которой узлы в группе посылают запросы на обновление с более или менее одинаковым разнесением по времени.
На фиг. 8 показана блок-схема компонентов аппаратных средств, которые могут использоваться во встроенном устройстве (узле или сервере) 802, которое конфигурировано согласно варианту осуществления. Встроенное устройство, узел или сервер, может представлять собой вычислительные устройства, как обобщенно представлено блок-схемой на фиг.8. Центральный процессорный блок (CPU) 804 или процессор может быть обеспечен для управления работой встроенного устройства 802, включая другие его компоненты, которые соединены с центральным процессором 804 через шину 810. Центральный процессор 804 может быть реализован как микропроцессор, микроконтроллер, процессор цифрового сигнала или другое устройство, известное в технике. Центральный процессор 804 выполняет логические и арифметические операции, основываясь на программном коде, сохраненном в памяти. В некоторых вариантах осуществления память 806 может быть внутриплатной памятью, содержащейся в центральном процессоре 804. Например, микроконтроллеры часто включают в себя некоторый объем внутриплатной памяти.
Встроенное устройство 802 может также включать в себя сетевой интерфейс 808. Сетевой интерфейс 808 облегчает коммуникацию между встроенным устройством 802 и другими устройствами, соединенными с сетью 130, которая может быть пейджинговой сетью, сотовой сетью, сетью глобальной связи, Интернетом, компьютерной сетью, телефонной сетью и т.д. Сетевой интерфейс 808 работает согласно стандартным протоколам для применимой сети 130.
Встроенное устройство 802 может также включать в себя память 806. Память 806 может включать в себя память произвольного доступа (RAM) для хранения временных данных. Альтернативно или дополнительно, память 806 может включать в себя постоянную память (ROM) для хранения более постоянных данных, таких как установленный код и данные конфигурации. Память 806 может также быть воплощена как магнитное устройство хранения, такое как жесткий диск. Память 806 может быть электронным устройством любого типа, способным хранить электронную информацию.
Встроенное устройство 802 может также включать в себя один или более коммуникационных портов 812, которые облегчают коммуникацию с другими устройствами. Встроенное устройство 802 может также включать в себя устройства 814 ввода/вывода, такие как клавиатура, мышь, джойстик, сенсорный экран, монитор, динамики, принтер и т.д.
Разумеется, фиг. 8 иллюстрирует только одну возможную конфигурацию встроенного устройства 802. Могут быть использованы различные другие архитектуры и компоненты. Информация и сигналы могут быть представлены с использованием любого множества различных технологий и способов. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементарные посылки, на которые могут даваться ссылки в вышеизложенном описании, могут быть представлены напряжениями, потоками, электромагнитными волнами, магнитными полями или частицами, оптическими областями или частицами, или любой комбинацией указанного.
Различные иллюстративные логические блоки, модули, схемы и этапы алгоритмов, описанные в связи с раскрытыми вариантами осуществления, могут быть осуществлены как электронные аппаратные средства, программное обеспечение или комбинации того и другого. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы алгоритмов описаны выше с точки зрения их функциональных возможностей. Осуществлены ли такие функциональные возможности как аппаратные средства или программное обеспечение, зависит от конкретного применения и ограничений при проектировании, накладываемых на систему в целом. Специалисты в данной области техники могут осуществить описанные функциональные возможности различными способами для каждого конкретного применения, но такие решения по реализации не должны интерпретироваться как вызывающие отклонение от объема настоящего изобретения.
Различные иллюстративные логические блоки, модули и схемы, описанные в связи с раскрытыми вариантами осуществления, могут быть осуществлены или выполнены процессором общего назначения, процессором цифрового сигнала (DSP), специализированной интегральной схемой (ASIC), программируемой пользователем вентильной матрицей (FPGA) или другим программируемым логическим устройством, дискретной вентильной или транзисторной логикой, дискретными компонентами аппаратных средств или любой комбинацией указанных средств, чтобы выполнять описанные функции. Процессор общего назначения может быть микропроцессором, но в качестве альтернативы процессор может быть любым обычным процессором, контроллером, микроконтроллером или конечным автоматом. Процессор может также быть осуществлен как комбинация вычислительных устройств, например комбинация DSP и микропроцессора, множества микропроцессоров, одного или более микропроцессоров в соединении с ядром DSP или любая другая такая конфигурация.
Этапы способа или алгоритма, описанного в связи с раскрытыми вариантами осуществления, могут быть реализованы непосредственно в аппаратных средствах, в программном модуле, выполняемом процессором, или в комбинации того и другого. Программный модуль может находиться в памяти RAM, флэш-памяти, памяти ROM, стираемой программируемой постоянной памяти (EPROM), памяти EEPROM, регистрах, жестком диске, сменном диске, CD-ROM или носителе данных любой другой формы, известном в технике. Примерный носитель данных соединяется с процессором таким образом, чтобы процессор мог считывать информацию с носителя данных и записывать информацию на носитель данных. В качестве альтернативы носитель данных может являться неотъемлемой частью процессора. Процессор и носитель данных могут находиться в ASIC. ASIC может находиться в пользовательском терминале. В качестве альтернативы процессор и носитель данных могут находиться как дискретные компоненты в пользовательском терминале.
Способы, раскрытые здесь, включают в себя один или более этапов или действий для реализации описанного способа. Этапы и/или действия способа могут быть взаимозаменяемыми друг с другом без отклонения от объема настоящего изобретения. Другими словами, если только определенный порядок этапов или действий не требуется для надлежащего функционирования варианта осуществления, порядок и/или использование определенных этапов и/или действий могут быть изменены без отклонения от объема настоящего изобретения.
Хотя проиллюстрированы и описаны конкретные варианты осуществления и приложения настоящего изобретения, следует иметь в виду, что изобретение не ограничено точной конфигурацией и компонентами, раскрытыми здесь. Различные модификации, изменения и вариации, которые будут очевидны для специалистов в данной области техники, могут быть выполнены в конфигурации, функционировании и деталях способов и систем настоящего изобретения, раскрытого здесь, без отклонения от сущности и объема изобретения.