СПОСОБ И УСТРОЙСТВО ДЛЯ ВЗАИМНОЙ АУТЕНТИФИКАЦИИ
METHOD AND DEVICE FOR MUTUAL AUTHENTICATION

Настоящая заявка на патент испрашивает приоритет предварительной заявки № 60/850882, озаглавленной "METHOD AND APPARATUS FOR MUTUAL AUTHENTICATION", поданной 10 октября 2006 года. Данная предварительная заявка переуступлена правопреемнику настоящей заявки и настоящим явно включена в данный документ посредством ссылки.
Область техники, к которой относится изобретение
Настоящее изобретение, в общем, относится к беспроводной связи, а более конкретно, к взаимной аутентификации.
Уровень техники
Мобильному абоненту может потребоваться осуществить доступ к контенту, защищенному системой, которая потребовала бы аутентификации с помощью другого объекта или агента. Популярным протоколом аутентификации является протокол обмена ключами по Интернету (IKE), описанный в RFC 4306. Однако протокол IKE предполагает, что объекты в процессе аутентификации имеют достаточную вычислительную мощность или мощность обработки, так что скорость аутентификации создает проблемы.
Следовательно, в данной области техники имеется потребность в способе эффективной взаимной аутентификации с устройством, имеющим ограниченную мощность обработки.
Сущность изобретения
Аспект настоящего изобретения может состоять в способе для взаимной аутентификации между первым объектом и вторым объектом. В способе первый объект инициирует взаимную аутентификацию посредством отправки сообщения второму объекту. Второй объект верифицирует первый открытый ключ, ассоциированный с первым объектом, формирует первое случайное число, шифрует первое случайное число с помощью первого открытого ключа и отправляет зашифрованное первое случайное число в сообщении первому объекту. Первый объект верифицирует второй открытый ключ, ассоциированный со вторым объектом, расшифровывает зашифрованное первое случайное число с помощью первого закрытого ключа, соответствующего первому открытому ключу, формирует второе случайное число, формирует первый хэш на основе, по меньшей мере, первого случайного числа, шифрует второе случайное число и первый хэш с помощью второго открытого ключа и отправляет зашифрованные второе случайное число и первый хэш в сообщении второму объекту. Второй объект расшифровывает зашифрованные второе случайное число и первый хэш с помощью второго закрытого ключа, соответствующего второму открытому ключу, верифицирует первый хэш, чтобы аутентифицировать первый объект, формирует второй хэш на основе, по меньшей мере, второго случайного числа и отправляет второй хэш первому объекту. Первый объект верифицирует второй хэш, чтобы аутентифицировать второй объект.
В более подробных аспектах изобретения первый объект и второй объект извлекают сеансовый ключ шифрования и ключ кода аутентификации сообщения (MAC) с помощью первого случайного числа и второго случайного числа на основе функции извлечения ключей для использования при осуществлении связи между первым объектом и вторым объектом.
Дополнительно, сообщение, инициирующее взаимную аутентификацию, может включать в себя хэш, по меньшей мере, одного доверенного корневого ключа и соответствующую цепочку сертификатов для первого объекта. Цепочка сертификатов для первого объекта может включать в себя открытый ключ, ассоциированный с первым объектом. Кроме того, сообщение от второго объекта первому объекту, имеющее зашифрованное первое случайное число, дополнительно может включать в себя цепочку сертификатов для второго объекта. Цепочка сертификатов для второго объекта может включать в себя открытый ключ, ассоциированный со вторым объектом.
В других более подробных аспектах изобретения первый объект может быть агентом цифровых прав мобильной станции, а второй объект может быть устройством защищенного съемного носителя. Второй объект может иметь ограниченную вычислительную мощность. Кроме того, первый хэш дополнительно может быть основан на втором случайном числе так, что первый хэш формируется на основе первого случайного числа, конкатенированного со вторым случайным числом. Второй хэш дополнительно может быть основан на первом случайном числе или дополнительно основан на первом хэше так, что второй хэш может быть основан на втором случайном числе, конкатенированном с первым хэшем.
Другой аспект изобретения может состоять в устройстве для взаимной аутентификации, включающем в себя средство инициирования взаимной аутентификации, средство верификации первого открытого ключа, формирования первого случайного числа и шифрования первого случайного числа с помощью первого открытого ключа, средство верификации второго открытого ключа, расшифровки зашифрованного первого случайного числа с помощью первого закрытого ключа, соответствующего первому открытому ключу, формирования второго случайного числа, формирования первого хэша на основе, по меньшей мере, первого случайного числа и шифрования второго случайного числа и первого хэша с помощью второго открытого ключа, средство расшифровки зашифрованного второго случайного числа и первого хэша с помощью второго закрытого ключа, соответствующего второму открытому ключу, верификации первого хэша для аутентификации и формирования второго хэша на основе, по меньшей мере, второго случайного числа и средство для верификации второго хэша для аутентификации.
Другой аспект изобретения может состоять в мобильной станции, имеющей взаимную аутентификацию с устройством защищенного съемного носителя и включающей в себя агент цифровых прав. Агент цифровых прав инициирует взаимную аутентификацию посредством отправки сообщения устройству защищенного съемного носителя, при этом устройство защищенного съемного носителя верифицирует первый открытый ключ, ассоциированный с агентом цифровых прав, формирует первое случайное число, шифрует первое случайное число с помощью первого открытого ключа и отправляет зашифрованное первое случайное число в сообщении агенту цифровых прав. Агент цифровых прав верифицирует второй открытый ключ, ассоциированный с устройством защищенного съемного носителя, расшифровывает зашифрованное первое случайное число с помощью первого закрытого ключа, соответствующего первому открытому ключу, формирует второе случайное число, формирует первый хэш на основе, по меньшей мере, первого случайного числа, шифрует второе случайное число и первый хэш с помощью второго открытого ключа и отправляет зашифрованные второе случайное число и первый хэш в сообщении в устройство защищенного съемного носителя, при этом устройство защищенного съемного носителя расшифровывает зашифрованные второе случайное число и первый хэш с помощью второго закрытого ключа, соответствующего второму открытому ключу, верифицирует первый хэш, чтобы аутентифицировать агент цифровых прав, формирует второй хэш на основе, по меньшей мере, второго случайного числа и отправляет второй хэш агенту цифровых прав. Агент цифровых прав верифицирует второй хэш, чтобы аутентифицировать устройство защищенного съемного носителя.
Еще один аспект изобретения может состоять в компьютерном программном продукте, содержащем машиночитаемый носитель, содержащий код для побуждения компьютера станции, имеющей агент цифровых прав, инициировать взаимную аутентификацию посредством отправки сообщения в устройство защищенного съемного носителя, при этом устройство защищенного съемного носителя верифицирует первый открытый ключ, ассоциированный с агентом цифровых прав, формирует первое случайное число, шифрует первое случайное число с помощью первого открытого ключа и отправляет зашифрованное первое случайное число в сообщении агенту цифровых прав, код для побуждения компьютера вынуждать агента цифровых прав верифицировать второй открытый ключ, ассоциированный с устройством защищенного съемного носителя, расшифровывать зашифрованное первое случайное число с помощью первого закрытого ключа, соответствующего первому открытому ключу, формировать второе случайное число, формировать первый хэш на основе, по меньшей мере, первого случайного числа, шифровать второе случайное число и первый хэш с помощью второго открытого ключа и отправлять зашифрованные второе случайное число и первый хэш в сообщении в устройство защищенного съемного носителя, при этом устройство защищенного съемного носителя расшифровывает зашифрованные второе случайное число и первый хэш с помощью второго закрытого ключа, соответствующего второму открытому ключу, верифицирует первый хэш, чтобы аутентифицировать агент цифровых прав, формирует второй хэш на основе, по меньшей мере, второго случайного числа и отправляет второй хэш агенту цифровых прав, и код для побуждения компьютера вынуждать агента цифровых прав верифицировать второй хэш, чтобы аутентифицировать устройство защищенного съемного носителя.
Другой аспект изобретения может состоять в компьютерном программном продукте, содержащем машиночитаемый носитель, содержащий код для побуждения компьютера вынуждать устройство защищенного съемного носителя верифицировать первый открытый ключ, ассоциированный с агентом цифровых прав, формировать первое случайное число, шифровать первое случайное число с помощью первого открытого ключа и отправлять зашифрованное первое случайное число в сообщении агенту цифровых прав, при этом агент цифровых прав верифицирует второй открытый ключ, ассоциированный с устройством защищенного съемного носителя, расшифровывает зашифрованное первое случайное число с помощью первого закрытого ключа, соответствующего первому открытому ключу, формирует второе случайное число, формирует первый хэш на основе, по меньшей мере, первого случайного числа, шифрует второе случайное число и первый хэш с помощью второго открытого ключа и отправляет зашифрованные второе случайное число и первый хэш в сообщении в устройство защищенного съемного носителя, и код для побуждения компьютера вынуждать устройство защищенного съемного носителя расшифровывать зашифрованные второе случайное число и первый хэш с помощью второго закрытого ключа, соответствующего второму открытому ключу, верифицировать первый хэш, чтобы аутентифицировать агент цифровых прав, формировать второй хэш на основе, по меньшей мере, второго случайного числа и отправлять второй хэш агенту цифровых прав, при этом агент цифровых прав верифицирует второй хэш, чтобы аутентифицировать устройство защищенного съемного носителя.
Краткое описание чертежей
Фиг.1 - пример системы беспроводной связи;
фиг.2 - блок-схема мобильной станции и устройства с защищенным съемным носителем, имеющих взаимную аутентификацию;
фиг.3 - блок-схема способа взаимной аутентификации между мобильной станцией и устройством защищенного съемного носителя.
Осуществление изобретения
Слово "примерный" используется в данном документе, чтобы обозначать "служащий в качестве примера, отдельного случая или иллюстрации". Любой вариант осуществления, описанный в данном документе как "примерный", не обязательно должен быть истолкован как предпочтительный или выгодный по сравнению с другими вариантами осуществления.
Удаленная станция, также известная как мобильная станция (MS), терминал доступа (AT), абонентское устройство или абонентский модуль, может быть мобильной или стационарной и может обмениваться данными с одной или более базовых станций, также известных как базовые приемо-передающие станции (BTS) или узлы B. Удаленная станция передает и принимает пакеты данных через одну или более базовых станций в контроллер базовой станции, также известный как контроллер радиосети (RNC). Базовые станции и контроллеры базовой станции являются частями сети, называемой сетью доступа. Сеть доступа перемещает пакеты данных между множеством удаленных станций. Сеть доступа может быть дополнительно подключена к дополнительным сетям вне сети доступа, например, к корпоративной сети интранет или к Интернету и может перемещать пакеты данных между каждой удаленной станцией и такими внешними сетями. Удаленная станция, которая установила активное соединение канала трафика с одной или более базовыми станциями, называется активной удаленной станцией и, как считается, находится в состоянии передачи трафика. Удаленная станция, которая находится в процессе установления активного соединения канала трафика с одной или более базовыми станциями, как считается, находится в состоянии установки соединения. Удаленная станция может быть любым устройством данных, которое осуществляет связь через беспроводной канал. Удаленная станция дополнительно может быть любым из ряда типов устройств, включая, но не только, плату PC, плату Compact Flash, внешний или внутренний модем или беспроводной телефон. Линия связи, через которую удаленная станция отправляет сигналы в базовую станцию, называется восходящей линией связи, также известной как обратная линия связи. Линия связи, через которую базовая станция отправляет сигналы в удаленную станцию, называется нисходящей линией связи, также известной как прямая линия связи.
В отношении фиг.2 система 100 беспроводной связи включает в себя одну или более беспроводных мобильных станций (MS) 102, одну или более базовых станций (BS) 104, один или более контроллеров базовой станции (BSC) 106 и базовую сеть 108. Базовая сеть может быть подключена к Интернету 110 и телефонной коммутируемой сети общего пользования (PSTN) 112 через надлежащие транзитные соединения. Типичная беспроводная мобильная станция может включать в себя карманный телефон или дорожный компьютер. Система 100 беспроводной связи может применять любую из числа технологий множественного доступа, таких как множественный доступ с кодовым разделением (CDMA), множественный доступ с временным разделением (TDMA), множественный доступ с частотным разделением (FDMA), множественный доступ с пространственным разделением (SDMA), множественный доступ с поляризационным разделением (PDMA) или другие технологии модуляции, известные в области техники.
Множество недорогих устройств с ограниченной вычислительной мощностью появляются на рынке, такие как смарт-карты и флэш-память (во многих различных форм-факторах). Такие устройства могут требовать аутентификации. Например, есть потребность в том, чтобы эти устройства хранили права для использования в системах управления цифровыми правами (DRM). Перед обменом правами с этими устройствами должна быть взаимная аутентификация обоих объектов, вовлеченных в обмен, чтобы ограничивать обмен авторизованными объектами. Эти варианты осуществления предоставляют эффективный способ для того, чтобы выполнять взаимную аутентификацию, а также предоставляют подтвержденный обмен секретом, который может использоваться в дальнейшем обмене данными между вовлеченными объектами. Эффективность достигается и в отношении вычислительной мощности, и в отношении скорости.
Как очевидно для специалистов в данной области техники, схемы взаимной аутентификации могут использоваться в любое время, когда между двумя объектами требуется взаимная аутентификация. Схемы взаимной аутентификации не ограничиваются конкретными вариантами применения (такими, как управление цифровыми правами), системами и устройствами, используемыми в данном документе для того, чтобы описывать варианты осуществления.
Один вариант осуществления изобретения выполняет взаимную аутентификацию с обменом ключами с подтверждением, используя обмен 4 сообщениями. Он требует 2 верификации подписи с открытым ключом (+1 для каждого промежуточного сертификата), 2 шифрования с открытым ключом, 2 расшифровки с открытым ключом, 2 формирования хэша и 2 верификации хэша. Конкретное число обменов сообщениями, верификаций с открытым ключом, расшифровок с открытым ключом, формирований хэша и верификаций хэша может быть разделено или изменено согласно требуемым достижимым показателям безопасности и эффективности.
Эффективность протокола увеличивается за счет минимизации числа криптографических операций с открытым ключом и за счет использования хэш-функций для того, чтобы представлять доказательство владения обмениваемым ключевым материалом.
Эффективный протокол взаимной аутентификации и обмена ключами с подтверждением описывается для использования с устройствами, имеющими ограничения по скорости вычислений. Эффективность достигается за счет минимизации числа операций с открытым ключом и за счет использования криптографических хэшей для того, чтобы представлять доказательство владения.
Протокол проиллюстрирован со ссылками на фиг.2 и 3, показывающими способ 300 (фиг.3) для взаимной аутентификации. Этапы ниже соответствуют пронумерованным стрелкам на фиг.3.
В способе 300 объект A, к примеру, DRM-агент 202 MS 102 отправляет сообщение HelloA (этап 302) объекту B, к примеру, устройству 204 защищенного съемного носителя (SRM), имеющему SRM-агент 206. SRM-агент управляет доступом к защищенной памяти 208 в SRM-устройстве. (Операционная система 210 из MS может напрямую осуществлять доступ к общей памяти 212 SRM-устройства.) HelloA состоит из хэшей доверенных корневых ключей (или самих корневых ключей) и соответствующих цепочек сертификатов. После приема этого сообщения объект B находит корневой ключ, которому он доверяет, из сообщения и находит цепочку сертификатов в рамках выбранного корневого ключа. Он верифицирует цепочку сертификатов объекта A в рамках выбранного корневого ключа.
Объект B формирует случайное число RanB (этап 304).
Объект B отправляет сообщение HelloB объекту A (этап 306). HelloB состоит из цепочки сертификатов B в рамках выбранного корневого ключа вместе с RanB, зашифрованным с помощью открытого ключа объекта A из цепочки сертификатов, выбранной после этапа 302. После приема этого сообщения объект A верифицирует цепочку сертификатов объекта B. Если она допустима, он расшифровывает RanB с помощью своего закрытого ключа (соответствующего выбранному корневому ключу).
Отметим, что после того, как выбор корневого ключа и обмен цепочкой сертификатов осуществлен, объект A и объект B имеют цепочку сертификатов друг друга. Таким образом, эти параметры, возможно, не потребуется отправлять между объектом A и объектом B в будущих сообщениях HelloA и HelloB для будущей взаимной аутентификации. В этом случае обмен цепочкой сертификатов на этапах 302 и 306 может быть необязательным.
Объект A формирует RanA (этап 308).
Объект A отправляет сообщение KeyConfirmA объекту B (этап 310). KeyConfirmA состоит из RanA, конкатенированного с хэшем RanB, конкатенированным с RanA (H[RanA|RanB]), и все это зашифровано с помощью открытого ключа B. После приема этого сообщения объект B расшифровывает его. Используя расшифрованный RanA, он верифицирует хэш RanB, конкатенированный с RanA. Отметим, что на этом этапе объект B аутентифицировал объект A и удостоверился, что объект A знает RanB.
Объект B отправляет сообщение HelloB объекту A (этап 312). KeyConfirmB состоит из хэша расшифрованной части сообщения KeyConfirmA. После приема этого сообщения объект A верифицирует хэш. Отметим, что на этом этапе объект A аутентифицировал объект B и удостоверился, что объект B знает RanA.
В этот момент оба объекта аутентифицировали друг друга и подтвердили, что они совместно используют одинаковые RanA и RanB. RanA и RanB могут теперь использоваться для того, чтобы извлекать сеансовый ключ шифрования (SK) и MAC-ключ (MK) на основе функции извлечения ключей (KDF) для использования в последующей связи между сторонами (этап 314).
Подробные сведения сообщений приводятся ниже. Сообщение HelloA отправляется для того, чтобы инициировать взаимную аутентификацию с использованием протокола подтверждения с помощью ключей. HelloA имеет параметр «version» и параметр «rootAndChains[ ]». Параметр version может быть 8-битовым значением, которое содержит версию протокола этого сообщения. Он отображается как 5 MSB для полнофункциональной версии и 3 LSB для сокращенной версии. Параметр rootAndChains[ ] может быть массивом корневых хэшей и цепочек сертификатов для объекта A в рамках всех доверяемых моделей, поддерживаемых A. Структура для параметра, RootHashAndCertChain, - это параметр rootHash, который является хэшем SHA-1 корневого открытого ключа доверяемой модели, и параметр certChain, цепочка сертификатов объекта в рамках корневого открытого ключа. Сертификат объекта идет сначала, а за ним следуют все CA-сертификаты (в порядке подписания) вплоть до, но не включая, корневого сертификата.
Сообщение HelloB продолжает взаимную аутентификацию с использованием протокола подтверждения с помощью ключей посредством объекта B. Следующая таблица описывает параметры. HelloB имеет параметры: «version», «status», «certChain» и «encRanB». Параметр version может быть 8-битовым значением, которое содержит версию протокола этого сообщения. Он отображается как 5 MSB для полнофункциональной версии и 3 LSB для сокращенной версии. Параметр status может быть 8-битовым значением, которое содержит состояние объекта B, обрабатывающего сообщение HelloA. Значениями параметра status могут быть 0 для успешного выполнения - не было ошибок в предыдущем сообщении, и 1 для noSharedRootKey - объект B не нашел корневой ключ, который он совместно использует с объектом A. Значения 2-255 могут быть зарезервированы для будущего использования. Параметр certChain - это цепочка сертификатов объекта B в рамках корневого ключа, выбранного из сообщения HelloA. Если значение параметра status не показывает успешное выполнение, параметр certChain отсутствует. Параметр encRanB - это зашифрованный с помощью RSA-OAEP ranB, использующий открытый ключ объекта А (из выбранной цепочки сертификатов). RanB может быть 20-байтовым случайным числом, формируемым посредством объекта B. Если значение состояния не показывает успешное выполнение, параметр encRanB отсутствует.
Сообщение KeyConfirmA продолжает взаимную аутентификацию с использованием протокола подтверждения с помощью ключей посредством объекта A. Сообщение KeyConfirmA имеет параметр «version» и параметр «encRanB». Параметр version может быть 8-битовым значением, которое содержит версию протокола этого сообщения. Он может отображаться как 5 MSB для полнофункциональной версии и 3 LSB для сокращенной версии. Параметр encRanB может быть зашифрованным с помощью RSA-OAEP структурой KeyConfirmData, имеющей параметр ranA и параметр hashBA. Параметр ranA может быть 20-байтовым случайным числом, формируемым посредством объекта A, а параметр hashBA может быть хэшем SHA-1 для ranB, соединенного с ranA.
Сообщение KeyConfirmB завершает взаимную аутентификацию с использованием протокола подтверждения с помощью ключей посредством объекта B. Сообщение KeyConfirmB имеет параметр «version», параметр статуса и параметр «hashKeyConfirm». Параметр version может быть 8-битовым значением, которое содержит версию протокола этого сообщения. Он может отображаться как 5 MSB для полнофункциональной версии и 3 LSB для сокращенной версии. Параметр статуса может быть 8-битовым значением, которое содержит состояние объекта B, обрабатывающего сообщение. Параметр hashKeyConfirm может быть хэшем SHA-1 структуры KeyConfirmData, которая расшифрована посредством объекта B. Если значение параметра статуса не показывает успешное выполнение, этот параметр отсутствует.
Другой аспект изобретения может состоять в мобильной станции 102, включающей в себя управляющий процессор 216 и OS 210 для побуждения DRM-агента 202 реализовать способ 300. Еще один аспект изобретения может состоять в компьютерном программном продукте, содержащем машиночитаемый носитель (такой, как запоминающее устройство 218), содержащем код для побуждения компьютера вынуждать DRM-агента выполнять этапы способа 300.
Специалисты в данной области техники должны понимать, что информация и сигналы могут быть представлены с помощью любых из множества различных технологий и методов. Например, данные, инструкции, информация, сигналы, биты, символы и символы шумоподобной последовательности, которые могут приводиться в качестве примера по всему описанию выше, могут быть представлены напряжениями, токами, электромагнитными волнами, магнитными полями или частицами, оптическими полями или частицами либо любой комбинацией вышеозначенного.
Специалисты в данной области техники должны дополнительно принимать во внимание, что различные иллюстративные логические блоки, модули, схемы и этапы алгоритма, описанные в связи с раскрытыми в данном документе вариантами осуществления, могут быть реализованы как электронные аппаратные средства, компьютерное программное обеспечение либо их комбинации. Чтобы понятно проиллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы описаны выше, в общем, на основе их функциональности. Реализована эта функциональность в качестве аппаратных средств или программного обеспечения, зависит от конкретного варианта применения и структурных ограничений, накладываемых на систему в целом. Квалифицированные специалисты могут реализовать описанную функциональность различными способами для каждого конкретного варианта применения, но такие решения по реализации не должны быть интерпретированы как вызывающие отступление от объема настоящего изобретения.
Различные иллюстративные логические блоки, модули и схемы, описанные в связи с раскрытыми в данном документе вариантами осуществления, могут быть реализованы или выполнены с помощью процессора общего назначения, процессора цифровых сигналов (DSP), специализированной интегральной схемы (ASIC), программируемой вентильной матрицы (FPGA) или другого программируемого логического устройства, дискретного логического элемента или транзисторной логики, дискретных компонентов аппаратных средств либо любой комбинации вышеозначенного, предназначенной для того, чтобы выполнять описанные в данном документе функции. Процессором общего назначения может быть микропроцессор, но в альтернативном варианте процессором может быть любой традиционный процессор, контроллер, микроконтроллер или конечный автомат. Процессор также может быть реализован как комбинация вычислительных устройств, к примеру, сочетание DSP и микропроцессора, множество микропроцессоров, один или более микропроцессоров вместе с ядром DSP либо любая другая подобная конфигурация.
Этапы способа или алгоритма, описанные в связи с раскрытыми в данном документе вариантами осуществления, могут быть реализованы непосредственно в аппаратных средствах, в программном модуле, приводимом в исполнение процессором, или в их комбинации. Программный модуль может постоянно размещаться в RAM, флэш-памяти, ROM, памяти типа EPROM, памяти типа EEPROM, регистрах, на жестком диске, сменном диске, компакт-диске или любой другой форме носителя хранения данных, известной в данной области техники. Типичный носитель хранения данных соединяется с процессором, причем процессор может считывать информацию и записывать информацию на носитель хранения данных. В альтернативном варианте носитель хранения данных может быть встроен в процессор. Процессор и носитель хранения данных могут постоянно размещаться в ASIC. ASIC может постоянно размещаться в пользовательском терминале. В альтернативном варианте процессор и носитель хранения данных могут постоянно размещаться как дискретные компоненты в пользовательском терминале.
В одном или более примерных вариантах осуществления описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, программно-аппаратных средствах или любой их комбинации. Если реализованы в программном обеспечении как компьютерный программный продукт, функции могут быть сохранены или переданы как одна или более инструкций или код на машиночитаемом носителе. Машиночитаемые носители включают в себя как компьютерные носители хранения данных, так и среду связи, включающую в себя любую передающую среду, которая упрощает перемещение компьютерной программы из одного места в другое. Носителями хранения могут быть любые доступные носители, к которым можно осуществлять доступ посредством компьютера. В качестве примера, а не ограничения, эти машиночитаемые носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства либо любой другой носитель, который может быть использован, чтобы переносить или сохранять требуемый программный код в форме инструкций или структур данных, к которым можно осуществлять доступ посредством компьютера. Также любое подключение корректно называть машиночитаемым носителем. Например, если программное обеспечение передается с веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включены в определение носителя. Термин «диск», как он используется, в данном документе включает в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и blu-ray-диск, при этом диски обычно воспроизводят данные магнитным способом или воспроизводят данные оптическим способом с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.
Предшествующее описание раскрытых вариантов осуществления предоставлено для того, чтобы позволить любому специалисту в данной области техники создавать или использовать настоящее изобретение. Различные модификации в этих вариантах осуществления должны быть очевидными для специалистов в данной области техники, а описанные в данном документе общие принципы могут быть применены к другим вариантам осуществления без отступления от сущности и объема изобретения. Таким образом, настоящее изобретение не имеет намерение быть ограниченным показанными в данном документе вариантами осуществления, а должно удовлетворять самому широкому объему, согласованному с принципами и новыми признаками, раскрытыми в данном документе.