ДИНАМИЧЕСКАЯ ПОДСТАНОВКА ДАННЫХ USB ДЛЯ ОПЕРАТИВНОГО ШИФРОВАНИЯ/РАСШИФРОВКИ
DYNAMIC SUBSTITUTION OF USB DATA FOR EFFICIENT CODING/DECODING

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение относится к способам и системам для защиты цифровых данных и, в частности, к способам и системам для защиты цифровых данных, передаваемых с использованием протокола и архитектуры универсальной последовательной шины (USB) или аналогичных протокола и архитектуры.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
В вычислительной системе периферийные и другие устройства могут быть подсоединены к вычислительной системе посредством шины, например шины USB. Вычислительная система, использующая шину USB, должна содержать уровень программного обеспечения USB, который будет взаимодействовать с приложениями и служить для передачи данных из центрального главного вычислительного устройства в периферийные устройства и получения данных из них.
Уровень программного обеспечения USB поддерживает базовые аппаратные средства USB. Уровень программного обеспечения USB является комплексным и гибким для поддержания обмена данными по USB. Уровень программного обеспечения USB, предпочтительно, поддерживает драйверы нескольких независимых производителей аппаратных средств и должен оставаться сменным. Следовательно, уровень программного обеспечения USB может часто изменяться для соответствия требованиям, например изменениям в аппаратных средствах, или другим обновлениям. Дополнительно существует большое количество различных доступных аппаратных элементов USB, и уровень программного обеспечения USB, предпочтительно, может поддерживать эту множественность опций.
Так как данные по шине USB передаются через уровень незащищенного программного обеспечения USB и эти данные доступны также для любого устройства на шине, защита представляет существенный интерес. Например, вычислительная модель может содержать защищенный компонент, программный или аппаратный, которому требуется передать данные по шине USB. Однако для простоты, гибкости и возможности усовершенствования предпочтительно, чтобы уровень программного обеспечения USB не являлся частью этого защищенного программного компонента. Однако если уровень программного обеспечения USB не является частью защищенного программного компонента, то защита, реализуемая в защищенном программном компоненте, подвергается опасности.
Программная или аппаратная атака (попытка проникновения в защищенную систему) может сделать систему уязвимой. Например, атакующий может фальсифицировать входные данные устройства из аппаратного устройства, чтобы информация, набираемая пользователем на клавиатуре, не передавалась приложению, для которого она предназначена. Атакующий также может получить информацию о входных данных устройства, например, запоминая нажатые пользователем клавиши для захвата пароля или другой информации о данных. При атаках в компьютере также возможны запись, изменение или воспроизведение входных данных.
Если в вычислительной системе работает защищенное программное обеспечение, то связь с устройствами USB должна проходить через шину и незащищенное программное обеспечение USB. Такие устройства часто необходимы для отображения данных для пользователя и ввода данных пользователем. Следовательно, для того чтобы защищенное программное обеспечение было защищенным, также должны быть защищены входные данные и выходные данные защищенного программного обеспечения. Если для защищенного программного обеспечения не существует защищенного маршрута к пользователю, то защищенное программное обеспечение не может получить информацию о том, что действие, которое оно предпринимает, фактически осуществляется от имени пользователя. Во-первых, атакующий мог сфабриковать входные данные пользователя (входные данные, исходящие не от пользователя и, следовательно, не отражающие намерения пользователя), обманным путем вводя защищенное программное обеспечение в режим, который не был предусмотрен законным пользователем. Во-вторых, если выходные данные высоконадежного программного обеспечения не проходят к пользователю непосредственно через защищенный маршрут, то законный пользователь не имеет никакой гарантии, что он фактически видит реальные выходные данные защищенного программного обеспечения. Однако протокол USB является стандартом промышленности средств вычислительной техники, и модификация архитектуры или протокола USB для обеспечения защиты ликвидировала бы преимущества использования широко доступной и широко реализуемой архитектуры.
Следовательно, существует потребность в способе, обеспечивающем преимущества связи USB и совместимости с существующими устройствами и системами USB, при этом обеспечивая более совершенную защиту.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Настоящее изобретение обеспечивает средство шифрования/расшифровки в блоке защиты, который обеспечивается для устройства USB. В частности, настоящее изобретение обеспечивает связь между устройством и защищенным компонентом, такую как передача команд, запрашивающих данные из устройства, передача данных, возвращаемых указанным устройством обратно в систему, и передача команд установки для конфигурирования устройства для осуществления защищенной обработки даже там, где указанные команды и данные для достижения защищенного компонента проходят через незащищенные аппаратные средства и/или программное обеспечение.
Шифрование/расшифровка может быть обеспечено в физически отдельном устройстве, например, в аппаратном элементе ("защитной заглушке"), размещенном в соединительном проводе между устройством USB и главным вычислительным устройством, или в аппаратных средствах, через которые подключается устройство USB, или в виде отдельного устройства, через которое подключается немодифицированное устройство USB. В виде варианта средства шифрования/расшифровки могут быть встроены в устройство, например клавиатура с встроенным аппаратным шифрованием/расшифровкой, или интегрированы в функциональные возможности концентратора восходящего потока данных.
Устройство может иметь несколько конечных точек, соответствующих различным функциональным частям устройства. Вследствие этого в одном варианте осуществления защитная заглушка управляет защитой для всех интерфейсов и всех конечных точек устройства.
Согласно одному варианту осуществления изобретения, когда устройство USB принимает полезную нагрузку для передачи к защищенному компоненту, например пакет HID (драйвера интерфейса с пользователем), такой как обусловленный нажатием клавиши или нажатием кнопки мыши, полезная нагрузка передается из восходящего потока данных устройства в защитную заглушку в нешифрованном виде, шифруется в защитной заглушке и в шифрованном виде передается в главное вычислительное устройство. Подстановка шифрованной полезной нагрузки прозрачна для главного контроллера USB и для устройства.
Дополнительно, для обеспечения указанной прозрачности, защитная заглушка предотвращает все несанкционированные пакеты установки SETUP из системы в устройство. До разрешения защитной заглушкой передачи устройству какой-либо команды установки SETUP защищенное программное обеспечение передает в защитную заглушку "подписанную" команду разрешения ALLOW. И только после приема защитной заглушкой команды разрешения ALLOW, она разрешает только заданную конкретную команду установки SETUP. Следовательно, когда требуется выполнить команду установки SETUP, передается предварительная команда разрешения ALLOW с данными, содержащими данные команды установки и шифрованной версией данных команды установки. Когда данные проверены (например, при подтверждении подписи команды разрешения ALLOW защищенным программным обеспечением, в одном варианте осуществления посредством добавления результата хэширования с использованием секретной информации, используемой совместно защитной заглушкой и защищенным программным обеспечением), защитная заглушка разрешает команду установки SETUP, адресованную конечной точке, с соответствующими данными команды, которые должны быть переданы к конечной точке и выполнены в ней.
Когда защищенному приложению требуется запросить данные из защищенной конечной точки, защищенное приложение для передачи запроса к конкретной конечной точке использует стандартным способом системное программное обеспечение USB. Однако защитная заглушка изменяет способ прохождения маркера этого запроса к конечной точке и способ возвращения данных к главному системному программному обеспечению следующим образом: когда системное программное обеспечение USB передает маркер конечной точке, маркер перехватывается блоком защиты. Блок защиты передает маркер в устройство, но в главное вычислительное устройство передает NAK (сигнал отсутствия подтверждения приема данных). Когда устройство отвечает на опрос данными, блок защиты сохраняет эти данные и шифрует их. Когда блок защиты обнаруживает повторный опрос для устройства и конечной точки, блок защиты «уничтожает» запрос. («Уничтожение» является термином, который в отношении функционирования USB означает, что данные передаются так, чтобы указывать ошибку при передаче.) В виде ответа на второй опрос блок защиты передает шифрованные данные и когда главное вычислительное устройство подтверждает прием данных посредством сигнала ACK (сигнала подтверждения приема данных), оно проходит через блок защиты в устройство.
Когда защищенному варианту осуществления требуется передать данные в защищенное устройство, сначала он передает запрос непосредственно в блок защиты. В блок защиты передается маркер разрешения ALLOW. Как часть этого пакета, передается команда (такая как команда установки SETUP, которая содержит команду для устройства USB) в качестве данных маркера разрешения ALLOW. Блок защиты проверяет команду разрешения ALLOW для определения того, что она поступила от защищенного программного обеспечения и сохраняет эти данные. Затем когда в блок защиты передается новый маркер команды, если этот маркер команды соответствует маркеру команды, переданной в виде данных в команде разрешения ALLOW, то в устройство передается команда установки. Остальная часть протокола установки SETUP продолжается на шине USB нормальным образом. Если команда установки SETUP не соответствует ранее полученной команде разрешения ALLOW, то защитная заглушка уничтожает команду установки SETUP до ее завершения.
Ниже описаны другие аспекты настоящего изобретения.
ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ
Далее описан блок защиты в соответствии с настоящим изобретением согласно приложенным чертежам.
Фиг.1 - структурная схема, представляющая вычислительную систему, в которой может быть реализовано настоящее изобретение.
Фиг.2 - структурная схема, представляющая вычислительную систему, содержащую компьютер и другие устройства, присоединенные посредством USB, в которой может быть реализовано настоящее изобретение.
Фиг.3(А) - структурная схема, представляющая вычислительную систему, содержащую защитную заглушку и интегрированный блок защиты, согласно одному варианту осуществления изобретения.
Фиг.3(B) - структурная схема, представляющая вычислительную систему, содержащую защитную заглушку и интегрированный блок защиты, согласно другому варианту осуществления изобретения.
Фиг.4 - блок-схема последовательности операций, иллюстрирующая транзакцию ввода IN, согласно одному варианту осуществления изобретения.
Фиг.5 - блок-схема последовательности операций, иллюстрирующая транзакцию установки SETUP, согласно одному варианту осуществления изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЛЛЮСТРАТИВНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Иллюстративная вычислительная среда
Фиг.1 иллюстрирует возможный вариант соответствующей среды 100 вычислительной системы, в которой может быть реализовано изобретение. Среда 100 вычислительной системы является только одним возможным вариантом соответствующей вычислительной среды и не предназначена для наложения каких-либо ограничений на область использования или функциональные возможности изобретения. Также вычислительная среда 100 не должна интерпретироваться, как зависимая от любого компонента или комбинации компонентов, иллюстрируемых возможной средой 100.
Для знающих технику очевидно, что компьютер или другое устройство-клиент или устройство-сервер может использоваться как часть вычислительной сети или в распределенной вычислительной среде. В этом отношении настоящее изобретение относится к любой вычислительной системе, имеющей любое количество модулей памяти или запоминающих устройств и любое количество приложений и процессов, осуществляемых по любому количеству запоминающих устройств или томов, которые могут использоваться в связи с настоящим изобретением. Настоящее изобретение может быть применено к среде с компьютерами-серверами и компьютерами-клиентами, развернутыми в сетевой среде или распределенной вычислительной среде, имеющей удаленное или локальное запоминающее устройство. Настоящее изобретение также может быть применено к автономным вычислительным устройствам, имеющим возможности интерпретации, выполнения и функциональности языка программирования для формирования, приема и передачи информации при соединении с удаленными или локальными службами.
Изобретение может использоваться в отношении некоторых других конфигураций и сред вычислительных систем общего и специального назначения. Возможные варианты широко известных вычислительных систем, сред и/или конфигураций, которые могут быть использованы в связи с настоящим изобретением, включают в себя, например, персональные компьютеры, компьютеры-серверы, портативные или переносные вычислительные устройства, многопроцессорные системы, системы, основанные на микропроцессорах, компьютерные приставки, программируемую бытовую электронику, сетевые персональные компьютеры (PC), миникомпьютеры, универсальные компьютеры (мейнфреймы), распределенные вычислительные среды, содержащие любые из указанных систем или устройств и т.д.
Изобретение может быть описано в основном контексте машиноисполняемых инструкций, таких как программные модули, выполняемые компьютером. По существу, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., выполняющие конкретные задачи или реализующие определенные абстрактные типы данных. Изобретение может быть осуществлено практически также в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки данных, связанными через сеть связи или другую среду передачи информации. В распределенной вычислительной среде программные модули и другие данные могут быть размещены в носителях информации локальных и удаленных компьютеров, включая запоминающие устройства. Распределенные вычислительные средства совместно используют вычислительные ресурсы и услуги посредством непосредственного обмена между вычислительными устройствами и системами. Эти ресурсы и услуги включают в себя обмен информацией, кэш и накопитель на дисках для файлов. Распределенная обработка данных обладает преимуществом связности узлов в сети, обеспечивающей клиентам возможность усиливать их общую мощность для общего выигрыша. В этом отношении многие устройства могут иметь приложения, объекты или ресурсы, которые могут использовать устройство и способ, обеспечиваемые настоящим изобретением.
Согласно фиг.1 возможная система для реализации изобретения содержит универсальное вычислительное устройство в виде компьютера 110. Компоненты компьютера 110 могут содержать, в частности, процессор 120, системную память 130 и системную шину 121, соединяющую различные компоненты системы, включая системную память, с процессором 120. Системная шина 121 может относиться к любому из нескольких типов структур шины, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую из многих архитектур шины. В качестве примера, но не ограничения, такие архитектуры включают шину архитектуры, соответствующей промышленному стандарту (ISA), шину микроканальной архитектуры (MCA), расширенную шину ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину межсоединения периферийных компонентов (PCI) (также известную как мезонинная шина) и т.д.
Компьютер 110 обычно содержит несколько машиночитаемых носителей информации. Машиночитаемый носитель информации может быть любым доступным носителем информации, к которому может осуществить доступ компьютер 110, и включает в себя энергозависимый и энергонезависимый носитель информации, съемный и несъемный носитель информации. В качестве примера, но не ограничения, машиночитаемый носитель информации может включать носитель информации компьютера и среду передачи данных. Носитель информации компьютера включает в себя энергозависимый и энергонезависимый, съемный и несъемный носитель информации, реализованный любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Носитель информации компьютера включает в себя, в частности, оперативное запоминающее устройство (RAM, ОЗУ), постоянное запоминающее устройство (ROM, ПЗУ), электрически-стираемое программируемое ПЗУ (EEPROM), флэш-память или память другой технологии, ПЗУ на компакт-диске (CD-ROM), универсальные цифровые диски (DVD) или другой оптический дисковый накопитель на дисках, магнитные кассеты, магнитную ленту, магнитный дисковый накопитель или другие магнитные запоминающие устройства, либо любой другой носитель, который может использоваться для хранения необходимой информации и к которому может осуществить доступ компьютер 110. Среда передачи данных обычно воплощает машиночитаемые инструкции, структуры данных, программные модули или другие данные в сигнале, модулированном данными, например, сигнала несущей или другом механизме переноса информации, и включает в себя любую среду доставки информации. Термин «сигнал модулированный данными» означает сигнал, который имеет одну или большее количество из его характеристик, установленных или измененных таким образом, чтобы обеспечить кодирование информации в сигнале. В качестве примера, но не ограничения, среда передачи данных включает в себя проводную среду, такую как проводная сеть или прямое кабельное соединение, и беспроводную среду, такую как акустическая, радиочастотная, инфракрасная и другая беспроводная среда и т.д. Комбинации любых упомянутых выше сред также должны быть включены в контекст машиночитаемых носителей информации.
Системная память 130 включает в себя носитель информации компьютера в виде энергозависимой и/или энергонезависимой памяти, например постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Базовая система 133 ввода/вывода (BIOS), содержащая базовые процедуры, способствующие передаче информации между элементами внутри компьютера 110, например, используемые при запуске, в основном, хранится в ПЗУ 131. ОЗУ 132, в основном, содержит данные и/или программные модули, к которым можно осуществить доступ немедленно и/или которыми в текущее время оперирует процессор 120. В качестве примера, но не ограничения, фиг.1 изображает операционную систему 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.
Компьютер 110 также может содержать другие съемные/несъемные, энергозависимые/энергонезависимые носители информации компьютера. Исключительно в качестве примера фиг.1 изображает накопитель 141 на жестких магнитных дисках, осуществляющий считывание с несъемного, энергонезависимого магнитного носителя информации или запись на него, дисковой 151 для магнитного диска, который осуществляет считывание со съемного энергонезависимого магнитного диска 152 или запись на него, и дисковой 155 для оптического диска, который осуществляет считывание со съемного энергонезависимого оптического диска 156, например компакт-диска или другого оптического носителя информации, или запись на него. Другие съемные/несъемные, энергозависимые/энергонезависимые носители информации компьютера, которые могут быть использованы в возможной операционной среде, включают в себя кассеты на магнитной ленте, карточки флэш-памяти, универсальные цифровые диски, цифровую видеомагнитофонную ленту, твердотельное ОЗУ, твердотельное ПЗУ и т.д. Накопитель 141 на жестких магнитных дисках, в основном, подсоединен к системной шине 121 посредством интерфейса несъемной памяти, например интерфейса 140, а дисковод 151 для магнитного диска и дисковод 155 для оптического диска, в основном, подсоединены к системной шине 121 посредством интерфейса съемной памяти, например интерфейса 150.
Накопители и дисководы и соответствующие им носители информации компьютера, описанные выше и изображенные фиг.1, обеспечивают хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера 110. Например, на фиг.1 накопитель 141 на жестких магнитных дисках изображен как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Следует отметить, что указанные компоненты могут быть идентичными операционной системе 134, прикладным программам 135, другим программным модулям 136 и данным 137 программ, или отличными от них. Здесь операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным 147 программ даны другие ссылочные позиции для пояснения того, что, как минимум, они являются другими копиями. Пользователь может осуществлять ввод команд и информации в компьютер 110 посредством устройств ввода, таких как клавиатура 162 и указательное устройство 161, обычно определяемое, как мышь, шаровой манипулятор или сенсорная панель. В число других устройств ввода (не изображены) могут входить микрофон, джойстик, игровая панель, спутниковая антенна, сканер и т.д. Часто эти и другие устройства ввода соединены с процессором 120 посредством интерфейса 160 пользовательского ввода данных, подсоединенного к системной шине, но они могут быть соединены с процессором посредством другого интерфейса и других структур шины, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Также к системной шине 121 посредством интерфейса, такого как видеоинтерфейс 190, может быть подсоединен монитор 191 или другой тип устройства отображения. В дополнение к монитору 191 компьютеры могут также содержать другие периферийные устройства вывода, например громкоговорители 197 и принтер 196, которые могут быть подсоединены посредством периферийного интерфейса 195 для вывода.
Компьютер 110 может функционировать в среде с сетевой структурой, используя логические соединения с одним или большим количеством удаленных компьютеров, например удаленным компьютером 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или другим узлом общей сети и обычно содержит многие или все элементы, описанные выше в отношении компьютера 110, хотя фиг.1 изображает только запоминающее устройство 181. Логические соединения, иллюстрируемые фиг.1, включают в себя локальную сеть связи (LAN, ЛС) 171 и глобальную сеть связи (WAN, ГС) 173, но могут также включать в себя другие сети связи. Такие сетевые среды часто используются в офисах, вычислительных сетях масштаба предприятия, сетях интранет (корпоративных локальных сетях повышенной надежности с ограниченным доступом) и в сети Интернет.
При использовании в сетевой среде ЛС компьютер 110 соединяется с ЛС 171 посредством сетевого интерфейса или адаптера 170. При использовании в сетевой среде ГС компьютер 110 обычно содержит модем 172 или другое средство для установления связи через ГС 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может быть подсоединен к системной шине 121 посредством пользовательского интерфейса 160 для ввода данных или другого соответствующего механизма. В среде с сетевой структурой программные модули, указанные в отношении компьютера 110, или их части, могут храниться в удаленном запоминающем устройстве. В качестве примера, но не ограничения, фиг.1 изображает удаленные прикладные программы 185, как размещенные на запоминающем устройстве 181. Ясно, что изображенные сетевые соединения являются возможным вариантом и могут быть использованы другие средства установления линии связи между компьютерами.
Протокол USB
Архитектура USB обеспечивает способ соединения и взаимодействия устройств с главным вычислительным устройством. Например, согласно фиг.2, универсальная последовательная шина (USB) может использоваться для подсоединения к компьютеру 110 мыши 161, клавиатуры 162, графического планшета 163, громкоговорителей 197, микрофона 164, телефона 165 и монитора 191. Архитектура USB обеспечивает возможность соединений между одним или большим количеством устройств USB и одним главным вычислительным устройством USB. По существу, при такой конфигурации компьютер 110 является главным вычислительным устройством USB.
Используемая физическая схема соединения имеет звездообразную топологию. На звездообразную топологию для предотвращения зацикливаний накладывается поярусный порядок. В результате получается древовидная топология, изображенная на фиг.2. Концентратор находится в центре каждой звезды. Главное вычислительное устройство USB является одним концентратором. Устройства USB, обладающие соответствующими функциональными возможностями, также могут быть концентраторами. Например, на фиг.2, клавиатура 162 и монитор 191 являются устройствами, каждое из которых также функционирует как концентратор. В топологии USB также возможны концентраторы без каких-либо отдельных функциональных возможностей.
Дополнительно несколько функций могут быть объединены вместе в том, что фигурирует как отдельное физическое устройство. Например, клавиатура и указательное устройство (например, шаровой манипулятор) могут быть скомбинированы вместе в одном комплекте. Когда в отдельном комплекте несколько функций объединяется с концентратором, они определяются как составное устройство. Концентратору и каждой присоединенной к нему функции внутри составного устройства назначен собственный адрес устройства. Например, в клавиатуре 162 концентратор и функциональные возможности клавиатуры будут иметь отдельные адреса устройства.
Главное вычислительное устройство содержит интерфейс USB к главной вычислительной системе, известный как главный контроллер 167. Главный контроллер 167 и системное программное обеспечение USB обеспечивают интерфейс в сети USB и главном персональном компьютере между устройством и специальным программным обеспечением, управляющим этим устройством. Главный контроллер 167 управляет всеми доступами к ресурсам USB для передачи и приема всех пакетов в эти устройства и от них. Системное программное обеспечение совместно с корневым концентратором и любыми дополнительными концентраторами USB отслеживает топологию шины и управляет всей адресацией устройств и маршрутизацией данных из клиентского программного обеспечения, использующего устройство, и непосредственно устройством. Когда клиентскому программному обеспечению на главном вычислительном устройстве требуется связаться с некоторым устройством USB, оно это делает посредством взаимодействия с системным программным обеспечением USB. Системное программное обеспечение USB взаимодействует с главным контроллером 167. Главный контроллер 167 через шину USB передает и принимает сигналы к устройству USB и конечным точкам в устройстве, а также от них. Между главным контроллером 167 и устройством USB может находиться один или большее количество концентраторов. В устройстве USB сигналы принимает уровень интерфейса USB. Этот уровень передает сформированные данные в устройство, которое направляет данные к различным конечным точкам в устройстве и от них. Интерфейсы, которые состоят из конечных точек, обеспечивают функциональные возможности. В некоторых случаях указанные интерфейсы группируются совместно в «функции», например функция громкоговорителя у громкоговорителя 197 или функция клавиатуры у клавиатуры 162 или две функции единого устройства, содержащего клавиатуру и мышь.
Все устройства USB представляют стандартный интерфейс USB в терминах охвата ими протокола USB, их реакции на стандартные операции USB и их описательной информации стандартных возможностей. Эти интерфейсы в основном определены органом Стандартизации Рабочей Группы по устройствам USB, хотя также могут быть определены специализированные интерфейсы конкретного производителя.
Шина, изображенная на фиг.2 в виде линий, соединяющих объекты, является шиной с последовательным опросом. Компьютер 110, через главный контроллер 167, инициирует все передачи данных. Одним таким видом передачи является передача прерывания. Передача прерывания используется для небольшого объема данных, непериодических, низкочастотных и с ограниченным временем ожидания (латентностью). Передачи прерывания обеспечивают гарантированный максимальный период обслуживания для соединения и повторяют попытку передачи в следующем периоде. Например, с использованием этого вида передачи USB реализуется опрос клавиатуры на предмет нажатий клавиш.
Транзакция USB начинается, когда приложение в главном вычислительном устройстве запрашивает у главного контроллера 167 передачу к устройству или из устройства. Главный контроллер 167 посылает пакет USB, описывающий вид и направление транзакции, адрес устройства USB и номер конечной точки. Указанный пакет является «пакетом-маркером». Каждое устройство USB определено адресом USB, который назначается при присоединении устройства к главному контроллеру 167 и осуществляемой при этом нумерации. Каждое устройство USB использует информацию адреса, включенную в маркер, для определения того, является ли оно адресатом маркера, переданного главным вычислительным устройством. Номер конечной точки определяет конечную точку и, следовательно, интерфейс, в котором постоянно размещена указанная конечная точка (или, другими словами, функцию) устройства USB, к которому направлена передача.
Затем, в фазе пакета данных, данные передаются из конечной точки в главное вычислительное устройство или из главного вычислительного устройства в конечную точку в соответствии с инструкциями в маркерном пакете. Если маркер является маркером ввода IN, то главное вычислительное устройство запрашивает информацию из конечной точки. Если маркер является маркером вывода OUT, то главное вычислительное устройство указывает, что оно будет передавать информацию к конечной точке.
Если маркер является маркером ввода IN, но еще отсутствуют данные для передачи из адресованного устройства, то вместо данных конечной точкой передается пакет NAK. Например, если опрашивается клавиатура 162, но не происходили нажатия клавиш, то передается NAK (отсутствие подтверждения приема данных). Если произошел останов конечной точки, то передается останов STALL. Если имеются данные для передачи, то осуществляется передача этих данных. В ответ, при приеме данных, главное вычислительное устройство должно передать квитирование установления связи ACK.
Там, где был передан маркер вывода OUT и из главного вычислительного устройства в конечную точку были переданы данные, конечная точка при успешном приеме данных должна передать пакет ACK для подтверждения о приеме данных. Квитирование установления связи STALL может быть передано в случае, если произошел останов конечной точки и она не могла принимать данные. Если конечная точка не принимает данные, то передается NAK.
Команда установки SETUP является видом транзакции вывода, которая вызывает выполнение команды (передается на фазе данных) в конечной точке.
Полное описание протокола USB содержится в спецификации USB, которая является документом, открытым для доступа. Документ доступен на узле web-сайте Форума средств реализации USB, www.USB.org.
Динамическая подстановка данных USB
Способы и системы, соответствующие изобретению, реализуют защиту в соединениях через сеть между защищенным компонентом и устройством, таким как устройство USB. Блок защиты согласно изобретению может быть размещен внутри устройства USB и будет описан в основном в отношении системы USB, однако предполагается, что любое действующее соединение между главным вычислительным устройством и устройством может быть реализовано согласно изобретению. Например, изобретение может быть использовано любым соединением, содержащим одну или большее количество локальных шин, сеть (например, локальную сеть (ЛС) или другую сеть) и шину USB.
В системе, изображенной фиг.3(A), согласно изобретению связи между защищенным компонентом в компьютере 110 и мышью 361 и между защищенным компонентом и графическим планшетом 163 защищены. Мышь 361 содержит интегрированный блок 300 защиты, и связь с защищенным компонентом осуществляется опосредованно через блок защиты. В системе по фиг.3(A) для защиты связи с графическим планшетом 163 защитная заглушка 310, физически отдельная от графического планшета 163, является посредником в соединениях между графическим планшетом 163 и защищенным компонентом. Блок защиты содержится в защитной заглушке 310. Блок защиты может быть реализован в любом месте системы USB. Связь на восходящем потоке данных сети USB (к главному вычислительному устройству) блока защиты или защитной заглушки защищена, но связь на нисходящем потоке данных (из главного вычислительного устройства) блока защиты или защитной заглушки может быть уязвимой.
Физический уровень системы обеспечивает всем связям между главным вычислительным устройством и устройством защиту при проходе через блок защиты. В альтернативных вариантах осуществления блок защиты может быть интегрирован в защитную заглушку, концентратор восходящего потока данных или непосредственно в защищаемое устройство. В основном для защиты системы полезна любая схема шифрования, формирующая нечитаемые или проверяемые данные. В одном варианте осуществления предусмотрена система с парой ключей с наличием информации о ключах в защищенном компоненте, связанном с устройством, и в блоке защиты. Согласно одному варианту осуществления для инициализации возможностей шифрования/расшифровки защищенный компонент и блок защиты совместно используют ключ партнерства. Одним способом совместного использования ключа партнерства между двумя устройствами является защищенное отображение защищенным компонентом информации о ключах и затем получение блоком защиты входных данных с клавиатуры нисходящего потока данных или другого устройства ввода данных для установки ключа партнерства. Например, защищенный компонент может отобразить ключ партнерства на защищенном мониторе или на другом устройстве вывода данных. Затем если блок защиты присоединен к клавиатуре или является встроенным в нее, то клавиатура может использоваться для ввода ключа партнерства. В других вариантах осуществления совместно используемый ключ партнерства может быть также закодирован аппаратно в устройстве и в защищенном компоненте, может быть зашит в устройстве и установлен в программное обеспечение защищенного компонента при инсталляции на заводе (или при первой начальной загрузке после создания) или может быть отображен блоком защиты и введен в защищенный компонент посредством кнопок, размещенных на экране случайным образом, которые будут выбраны пользователем мышью, вследствие этого предотвращая подслушивание информации неуполномоченными лицами. В одном варианте осуществления ключ партнерства используется как ключ для шифрования и расшифровки данных, а также для подтверждения правильности команд из защищенного компонента в блок защиты.
В одном варианте осуществления изобретения главное вычислительное устройство (компьютер 110) содержит защищенное программное обеспечение в качестве защищенного компонента, который должен выдавать команды устройству. В этом варианте осуществления защищенное программное обеспечение не управляет напрямую рассматриваемым устройством, но должно сообщаться с этим устройством через незащищенную шину и, возможно, незащищенные области главного вычислительного устройства. Например, если главное вычислительное устройство разрешает защищенные процессы, то защищенное программное обеспечение может выполняться как защищенный процесс на главном вычислительном устройстве. Команды, выдаваемые из защищенного программного обеспечения должны быть шифрованы или подписаны перед передачей команды в незащищенные области главного вычислительного устройства и через незащищенную шину. Следовательно, защита обеспечивается даже в то время, когда данные передаются через возможно уязвимые области главного вычислительного устройства или шины.
В системе, изображенной на фиг.3(В), согласно изобретению защищенным компонентом является защищенный сервер 350, доверенный компьютер, выполняющий программное обеспечение, которое требует защищенной связи с пользователем посредством мыши 361 и графического планшета 163. Недоверенный компьютер 360, который содержит главный контроллер 167, может быть уязвимым для атак, которые могут осуществляться на соединения между недоверенным компьютером 360 и защищенным сервером 350, недоверенным компьютером 360 и монитором 191, монитором 191 и клавиатурой 162 и между клавиатурой 162 и защитной заглушкой 310. Однако, так как информация, передаваемая между защищенным сервером 350 и мышью 361 и между защищенным сервером 350 и графическим планшетом 163 защищена, согласно изобретению уязвимость этих соединений и промежуточных звеньев не делает незащищенной связь между защищенным сервером 350 и этими устройствами.
Для выполнения расшифровки/шифрования в другом варианте осуществления формируются сеансовые ключи для каждого сеанса между защищенным компонентом и блоком защиты. Это обеспечивает возможность повышенной защиты и является защитой от атак повторного воспроизведения ранее перехваченного сообщения. Хотя шифрованные данные могут быть записаны и воспроизведены, если значение сеансового ключа изменено, то шифрованные данные идентифицируются как несанкционированные. Сеанс устанавливается между защищенным компонентом и устройством или блоком защиты. Защищенный компонент и блок защиты обмениваются данными, известными как информация на данное время. Каждый из защищенного компонента и блока защиты вычисляет хэш-функцию на основе этих двух информаций на данное время с определенным ключом партнерства, которая становится сеансовым ключом, используемым для шифрования/расшифровки. В одном варианте осуществления корректная инициализация подтверждается посредством обмена шифрованной информацией.
Хотя настоящее изобретение описано в отношении протокола USB, очевидно, что изобретение имеет более широкую применимость и может быть осуществлено практически в отношении любого протокола, подобного USB, как подробно описано ниже. Например, оно может использоваться для устройств, адресация которых осуществляется с использованием стандарта IEEE-1394.
Передача сигнала для оперативного шифрования
Согласно изобретению, когда защищенный компонент выдает через главное вычислительное устройство и шину маркер ввода IN, адресованный к конечной точке, которая находится вне блока защиты, блок защиты осуществляет проверку для определения того, защищены или «охвачены» ли адрес USB и конечная точка, к которой адресован маркер ввода IN. Если адрес и конечная точка не охвачены, то блок защиты просто пропускает любую информацию из главного вычислительного устройства в конечную точку и любую информацию из конечной точки в главное вычислительное устройство (так же, как концентратор USB повторяет данные из порта восходящего потока данных в порт нисходящего потока данных и наоборот). Однако если конечная точка охвачена, то блок защиты будет посредником между защищенным компонентом и конечной точкой, как видно из фиг.4.
Как изображено на фиг.4, на этапе 410 блок защиты принимает из защищенного компонента запрос на данные. Даже если адрес и конечная точка, к которым направлен запрос на данные, охвачены, то на этапе 420 к охваченной конечной точке передается маркер ввода IN. Затем, на этапе 430, блок защиты перехватывает запрошенные данные, возвращенные конечной точкой. Вместо передачи этих данных на шину блок защиты на этапе 440 передает в главное вычислительное устройство сигнал, указывающий, что данные не доступны (используя стандартный пакет NAK) и ожидает приема от защищенного компонента второго запроса на данные на этапе 450. Тем временем блок защиты на этапе 460 шифрует запрошенные данные. Как и со всеми конечными точками прерываний на USB, главная система впоследствии повторяет команду ввода IN. Когда шифрование завершено и принят второй запрос на данные, блок защиты на этапе 470 передает в защищенный компонент шифрованные данные в виде ответа на второй запрос на данные. Второй запрос на данные не передается по рассматриваемому адресу устройства неповрежденным. Так как устройство защиты должно продолжать ретрансляцию битов по мере приема этих битов, устройство защиты не может определить, что следующий маркер ввода IN передается по охваченному адресу, если эти биты уже не были ретранслированы на рассматриваемые адрес и конечную точку. Следовательно, при обнаружении защитной заглушкой такого условия устройство защиты должно разрушить остальную часть пакета или привести к ее «уничтожению». Следовательно, конечная точка USB не будет возвращать новый пакет, так как она не приняла правильный маркер ввода IN, вместо этого защитная заглушка ответит за устройство шифрованным пакетом для главного вычислительного устройства. На этапе 480 при приеме от защищенного компонента подтверждения приема данных это подтверждение приема данных проходит к конечной точке.
Там, где такое оперативное шифрование выполняется на главном вычислительном устройстве с защищенными и незащищенными областями, информация, используемая для шифрования или подписи данных, должна храниться главным вычислительным устройством в защищенной области, и блок защиты должен содержать информацию, необходимую для расшифровки или проверки данных. Там, где совместно используемый ключ партнерства используется в виде информации шифрования и в виде информации проверки, указанный ключ партнерства хранится главным вычислительным устройством в защищенной области и в блоке защиты.
Для реализации этого в системе USB запросом на данные должен быть маркер ввода IN, сигналом, указывающим, что данные не доступны, должен быть сигнал NAK и подтверждением приема данных должен быть сигнал ACK.
Если на этапе 430 блок защиты принимает сигнал, указывающий, что конечная точка находится в состоянии ошибки (например, в USB сигнал останова STALL), то этот сигнал передается на шину.
Передача сигнала для оперативной расшифровки
В одном варианте осуществления, описанном выше, все команды установки в защищенное устройство (посредством блока защиты) не разрешены и уничтожаются, как описано выше. Это представляет проблему при необходимости передачи компонентом защиты в устройство легальной команды установки. По этой причине должен быть создан механизм для разрешения определенной команды установки через блок защиты в устройство.
Согласно изобретению сначала защищенным компонентом в команде «разрешения» передается в блок защиты действительная инструкция установки для передачи команды в защищенную конечную точку. Действительность этой команды будет подтверждена таким же способом, что и для всех других команд, передаваемых из доверенного программного обеспечения в блок защиты. Согласно фиг.5, на этапе 510 блок защиты принимает команду разрешения из защищенного компонента. Это сопровождается, на этапе 520, приемом блоком защиты данных команды разрешения, переданных из защищенного компонента, содержащих шифрованную команду установки. На этапе 530 осуществляется попытка проверки шифрованной команды установки.
В другом варианте осуществления проверка включает в себя расшифровку команды установки с созданием локально расшифрованной версии команды установки. В одном варианте осуществления данные команды разрешения, принятые блоком защиты, содержат нешифрованную версию команды установки. Блок защиты, для осуществления проверки, сравнивает эту нешифрованную версию с локально расшифрованной версией.
В еще одном варианте осуществления шифрованная команда установки является подписанной версией команды установки, и при проверке осуществляется проверка подписи, чтобы удостовериться в том, что команда установки была подписана совместно используемым ключом.
Если проверка не является успешной, то команда установки не будет передана конечной точке. Если же проверка успешна, то блок защиты ожидает получения команды установки из защищенного компонента на этапе 540. Если команда установки совпадает с предварительно проверенной командой установки (этап 550), то на этапе 570 команда передается конечной точке вместе с следующей фазой данных. Если команда установки не совпадает, то она не передается. Вместо этого блок защиты ожидает соответствующую команду установки.
Заключение
Следовательно, продолжая использовать протокол USB, можно передавать шифрованные данные и команды из защищенного компонента в конечную точку и из конечной точки в защищенный компонент, поддерживая защиту устройства от других видов перепрограммирования или реконфигурирования.
Как упомянуто выше, хотя возможные варианты осуществления настоящего изобретения были описаны в отношении различных вычислительных устройств и архитектур сети, основные концепции могут быть применены к любому вычислительному устройству или системе, в которых требуется выполнить шифрование/расшифровку USB или подобной связи. Следовательно, способы, соответствующие настоящему изобретению, могут быть применены к разным приложениям и устройствам.
Разные способы, описанные здесь, могут быть реализованы аппаратными или программными средствами либо в виде их комбинации, где это является целесообразным. Следовательно, способы и устройство, соответствующие настоящему изобретению, или их некоторые аспекты или части могут иметь вид программного кода (то есть инструкций), реализованного на материальных носителях информации, например гибких дисках, компакт-дисках (CD-ROM), накопителях на жестких магнитных дисках или на любом другом машиночитаемом носителе информации, причем, при загрузке и выполнении программного кода в устройстве, таком как компьютер, устройство становится устройством для практического осуществления изобретения. В случае выполнения программного кода на программируемых компьютерах вычислительное устройство, в основном, будет содержать процессор, машиночитаемый носитель информации (включая энергозависимую и энергонезависимую память и/или запоминающие элементы), по меньшей мере одно устройство ввода данных и по меньшей мере одно устройство вывода данных. Одна или большее количество программ, которые могут использовать услуги обработки сигналов согласно настоящему изобретению, например, посредством интерфейсов прикладного программирования (API) обработки данных или аналогичной обработки, предпочтительно, реализуются на объектно-ориентированном языке программирования или процедурном языке программирования высокого уровня для осуществления связи с вычислительной системой. Однако, если это необходимо, программа(ы) может быть выполнена на ассемблере или на машинном языке. В любом случае язык может быть компилируемым или интерпретируемым языком и комбинироваться с аппаратными реализациями.
Способы и устройство, соответствующие настоящему изобретению, могут быть осуществлены на практике также посредством связи, воплощенной в виде программного кода, передаваемого через некоторую среду передачи информации, например, через электропроводку или кабельную проводку, через волоконно-оптический кабель или через любой другой вид передачи, причем, при получении, загрузке и выполнении программного кода устройством, таким как стираемое ПЗУ (EPROM), вентильная матрица, программируемое логическое устройство (PLD), компьютер-клиент, видеомагнитофон и т.д., или принимающее устройство, обладающее возможностями обработки сигналов, как описано выше в возможных вариантах осуществления, устройство становится устройством для практического осуществления изобретения. При реализации на процессоре общего назначения программный код комбинируется с процессором для обеспечения уникального устройства, которое функционирует для активизации функциональных возможностей настоящего изобретения. Дополнительно любые способы хранения информации, используемые в отношении настоящего изобретения, без исключений, могут быть комбинацией аппаратных средств и программного обеспечения.
Хотя настоящее изобретение было описано в отношении предпочтительных вариантов осуществления, представленных на различных чертежах, очевидно, что, не отклоняясь от настоящего изобретения, могут быть использованы другие подобные варианты осуществления или могут быть сделаны изменения в описанных вариантах осуществления и добавления к ним для реализации той же функции. Например, хотя иллюстративные сетевые среды, соответствующие изобретению, описаны в контексте среды с сетевой структурой, такой как одноранговая сеть, для знающих технику очевидно, что настоящее изобретение не ограничено только такими средами и что способы, описанные в настоящей заявке, могут быть применены к любому проводному или беспроводному вычислительному устройству или среде, такой как игровая консоль, переносной компьютер, портативный компьютер и т.д., и могут быть применены к любому количеству таких вычислительных устройств, соединенных посредством сети связи и взаимодействующих через эту сеть. Дополнительно следует отметить, что предусматривается несколько вычислительных платформ, включая операционные системы переносных устройств и другие операционные системы, зависящие от варианта применения, особенно с развитием и увеличением количества беспроводных сетевых устройств. Также настоящее изобретение может быть реализовано в нескольких устройствах или микросхемах обработки данных или по нескольким устройствам или микросхемам обработки данных, и хранение информации, аналогично, может осуществляться по нескольким устройствам. Следовательно, настоящее изобретение не ограничено каким-либо одним вариантом осуществления, но скорее должно рассматриваться во всей широте объема, соответствующего формуле изобретения.