СОЗДАНИЕ И ПРОВЕРКА ДОСТОВЕРНОСТИ ДОКУМЕНТОВ, ЗАЩИЩЕННЫХ КРИПТОГРАФИЧЕСКИ
CREATING AND VALIDATING CRYPTOGRAPHICALLY SECURED DOCUMENTS

Уровень техники
[0001] Предоставление доступа к пользовательским данным обычно выполняется программно. То есть операционная система или веб-служба предоставляют доступ к данным на основании прав доступа пользователя. Эта модель не является очень безопасной, особенно когда пользователь предоставляет доступ многим другим объектам. Если безопасность какого-нибудь объекта, имеющего доступ к данным, ставится под угрозу, данные пользователя могут быть доступны и злонамеренно изменены или повреждены без разрешения или знания пользователя. Чем больше объектов, которые вовлекаются в обработку данных пользователя, тем менее безопасными являются данные.
Сущность изобретения
[0002] Вкратце аспекты описанного здесь изобретения касаются создания и проверки достоверности документов, защищенных криптографически. В аспектах документы шифруются, чтобы защитить их от неавторизованного доступа. Объект, имеющий права владельца (монопольного использования) пространства имен, может создать документ в авторизованном пространстве имен и подписать новый документ секретным ключом. Другие объекты могут проверить правильность того, что документ был создан авторизованным владельцем пространства имен посредством использования открытого ключа, доступного в данных безопасности, ассоциированных с родительским документом этого документа. Для корневого документа открытый ключ может быть доступным из службы каталогов. Владелец пространства имен может изменять владельца(ев) пространства имен, которым разрешено создавать потомков документа.
[0003] Этот раздел предоставлен, чтобы кратко идентифицировать некоторые аспекты изобретения, которые описаны ниже в подробном описании. Этот раздел не предназначен, чтобы идентифицировать ключевые или существенные признаки заявленного объекта изобретения, и не предназначен для использования для ограничения объема заявленного объекта изобретения.
[0004] Фраза "изобретение, описанное здесь" относится к предмету, описанному в подробном описании, если контекст ясно не указывает иначе. Термин "аспекты" должен читаться как "по меньшей мере один аспект". Идентификация аспектов описанного изобретения в подробном описании не предназначена, чтобы идентифицировать ключевые или существенные признаки заявленного объекта изобретения.
[0005] Аспекты, описанные выше, и другие аспекты описанного здесь изобретения иллюстрируются посредством примера и не ограничиваются сопроводительными чертежами, на которых аналогичные ссылочные позиции указывают аналогичные элементы.
Краткое описание чертежей
[0006] Фиг.1 - блок-схема, представляющая примерную вычислительную среду общего назначения, в которую могут быть включены аспекты описанного здесь изобретения.
[0007] Фиг.2 - блок-схема, которая в целом представляет примерную среду, в которой могут работать аспекты описанного изобретения.
[0008] Фиг.3 - блок-схема, которая в целом представляет примерный набор объектов, которые могут участвовать в создании или проверке достоверности документа согласно аспектам описанного здесь изобретения.
[0009] Фиг.4 - иллюстрирует некоторые примерные структуры данных, которые могут использоваться вместе с аспектами описанного здесь изобретения.
[0010] Фиг.5A - блок-схема, которая в целом представляет данные, которые могут изменяться, и действия, которые могут иметь место, при создании дочернего документа в соответствии с аспектами описанного здесь изобретения.
[0011] Фиг.5B - блок-схема, которая в целом представляет данные, которые могут изменяться, и действия, которые могут иметь место, при создании дочернего документа и изменении владельца(ев) пространства имен, который может создавать документы в пространстве имен дочернего документа, в соответствии с аспектами описанного здесь изобретения.
[0012] Фиг.6 - схема последовательности операций, которая обычно представляет примерные действия, которые могут иметь место при создании документа, в соответствии с аспектами описанного здесь изобретения.
[0013] Фиг.7 - схема последовательности операций, которая в целом представляет примерные действия, которые могут иметь место при проверке достоверности того, что документ был создан авторизованным владельцем пространства имен в соответствии с аспектами описанного здесь изобретения; и
[0014] фиг.8 - блок-схема, которая представляет примерное устройство, конфигурированное, чтобы работать в соответствии с аспектами описанного здесь изобретения.
Подробное описание
Примерная среда
[0015] Фиг.1 иллюстрирует пример подходящей вычислительной системной среды (окружения) 100, в которой могут быть реализованы аспекты описанного здесь изобретения. Вычислительная системная среда 100 является только одним примером подходящей вычислительной среды и не предназначается, чтобы предложить какое-либо ограничение относительно объема использования или функциональных возможностей аспектов описанного здесь изобретения. Вычислительная среда 100 не должна быть интерпретирована как имеющая какую-либо зависимость или требование, касающееся какого-либо или комбинации компонентов, проиллюстрированных в примерной среде 100.
[0016] Аспекты описанного здесь изобретения применимы к многочисленным другим общего назначения или специализированным вычислительным системным средам или конфигурациям. Примеры известных вычислительных систем, сред и/или конфигураций, которые могут быть подходящими для использования с аспектами описанного здесь изобретения, включают в себя, но не ограничиваются ими, персональные компьютеры, серверные компьютеры, карманные устройства или ноутбуки, мультипроцессорные системы, основанные на микроконтроллерах системы, телевизионные приставки, программируемую бытовую электронику, сетевые персональные компьютеры, миникомпьютеры, универсальные компьютеры, распределенные среды обработки данных, которые включают в себя любую из вышеупомянутых систем или устройств и т.п.
[0017] Аспекты описанного здесь изобретения могут быть описаны в общем контексте выполняемых компьютером команд, таких как программные модули, выполняемые компьютером. Обычно программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Аспекты описанного здесь изобретения могут быть также осуществлены в распределенных средах обработки данных, где задачи выполняются удаленными устройствами обработки, которые связываются через систему коммуникаций. В распределенной среде обработки данных программные модули могут быть расположены и в локальных, и в удаленных компьютерных запоминающих носителях, включая запоминающие устройства хранения.
[0018] Со ссылками на фиг.1 примерная система для реализации аспектов описанного здесь изобретения включает в себя вычислительное устройство общего назначения в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, но не ограничиваются ими, процессор 120, системную память 130 и системную шину 121, которая подсоединяет различные элементы системы, включая системную память, к процессору 120. Системная шина 121 может быть любой из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую из множества шинных архитектур. Посредством примера, а не ограничения, такая архитектура включает в себя шину архитектуры промышленного стандарта (ISA), шину Микроканальной архитектуры (MСA), шину Усовершенствованной архитектуры промышленного стандарта (EISA), локальную шину Ассоциации Стандартов в области видеоэлектроники (VESA) и шину межсоединения периферийных компонентов (PCI), также известную как шина Mezzanine.
[0019] Компьютер 110 обычно включает в себя множество считываемых компьютером носителей. Считываемые компьютером носители могут быть любыми доступными носителями, к которым может обращаться компьютер 110, и включают в себя как энергозависимые, так и энергонезависимые носители, и сменные и несменные носители. Посредством примера, а не ограничения, считываемые компьютером носители могут содержать компьютерные запоминающие носители и коммуникационные носители. Компьютерные запоминающие носители включают в себя как энергозависимые, так и энергонезависимые, сменные и несменные носители, реализованные любым способом или технологией для хранения информации, такой как считываемые компьютером команды, структуры данных, программные модули или другие данные. Компьютерные запоминающие носители включают в себя, но не ограничиваются, ОЗУ, ПЗУ, СППЗУ, флэш-память или память по другой технологии, CD-ROM, цифровые универсальные диски (DVD) или другую память на оптическом диске, магнитные кассеты, магнитную ленту, память на магнитных дисках или другие магнитные запоминающие устройства, или любой другой носитель, который может быть использован для хранения желательной информации, и к которой может обращаться компьютер 110. Коммуникационные носители обычно воплощают считываемые компьютером команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая или другой транспортный механизм, и включают в себя любые информационные носители доставки. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или более из его характеристик, установленной или измененной таким образом, чтобы кодировать информацию в сигнале. Посредством примера, а не ограничения, коммуникационные носители включают в себя проводные носители, такие как проводная сеть или непосредственное проводное соединение, и беспроводные носители, такие как акустическое, РЧ, инфракрасное излучение и другие беспроводные носители. Комбинации любого из вышеупомянутого должны также быть включены в рамки считываемых компьютером носителей.
[0020] Системная память 130 включает в себя компьютерные запоминающие носители в форме энергозависимой и/или энергонезависимой памяти, такой как память только для считывания (ПЗУ) 131 и память с произвольным доступом (ОЗУ) 132. Базовая система ввода/вывода 133 (BIOS), содержащая основные подпрограммы, которые помогают передавать информацию между элементами в пределах компьютера 110, например во время запуска, обычно сохраняется в ПЗУ 131. Оперативная память 132 обычно содержит данные и/или программные модули, которые немедленно доступны для и/или в настоящее время выполняются на процессоре 120. Посредством примера, а не ограничения, фиг.1 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
[0021] Компьютер 110 может также включать в себя другие сменные/несменные, энергозависимые/энергонезависимые компьютерные запоминающие носители. Посредством примера только фиг.1 иллюстрирует накопитель на жестком диске 141, который считывает с или записывает на несменные, энергонезависимые магнитные носители, накопитель 151 на магнитном диске, который считывает с или записывает на сменный энергонезависимый магнитный диск 152, и накопитель 155 на оптическом диске, который считывает с или записывает на сменный, энергонезависимый оптический диск 156, такой как CD-ROM или другие оптические носители. Другие сменные/несменные, энергозависимые/энергонезависимые компьютерные запоминающие носители, которые могут использоваться в примерной среде, включают в себя, но не ограничиваются ими, кассеты магнитной ленты, платы флэш-памяти, цифровые универсальные диски, цифровую видеоленту, твердотельное ОЗУ, твердотельное ПЗУ и т.п. Накопитель 141 на жестком диске обычно связывается с системной шиной 121 через интерфейс энергонезависимой памяти, такой как интерфейс 140, и накопитель 151 на магнитном диске и накопитель 155 на оптическом диске обычно связываются с системной шиной 121 через интерфейс энергозависимой памяти, такой как интерфейс 150.
[0022] Накопители и их ассоциированные запоминающие носители, описанные выше и проиллюстрированные на фиг.1, обеспечивают хранение считываемых компьютером команд, структур данных, программных модулей и других данных для компьютера 110. На фиг.1, например, накопитель 141 на жестком диске иллюстрируется как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Отметим, что эти компоненты могут или быть такими же как, или отличными от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и программным данным 147 даны различные номера, чтобы проиллюстрировать, что как минимум, они являются различными копиями. Пользователь может ввести команды и информацию в компьютер 20 через устройства ввода, такие как клавиатура 162 и указательное устройство 161, обычно называемое мышью, шаровым указателем или сенсорной контактной площадкой. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер, сенсорный экран карманного персонального компьютера или другое устройство записи, или подобные. Эти и другие устройства ввода часто связываются с процессором 120 через интерфейс 160 пользовательского ввода, который подсоединяется к системной шине, но может быть связан другим интерфейсом и шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или другой тип устройства отображения также связывается с системной шиной 121 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору компьютеры могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут быть соединены через интерфейс 190 периферийных устройств вывода.
[0023] Компьютер 110 может работать в сетевом окружении, используя логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым персональным компьютером, одноранговым устройством или другим обычным узлом сети, и обычно включает в себя многие или все элементы, описанные выше со ссылками на компьютер 110, хотя только запоминающее устройство 181 было проиллюстрировано на фиг.1. Логические соединения, изображенные на фиг.1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но могут также включать в себя другие сети. Такие среды формирования сетей являются общепринятыми в офисах, компьютерных сетях в масштабах предприятия, интранет и Интернет.
[0024] При использовании в сетевой среде LAN компьютер 110 связывается с LAN 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде WAN компьютер 110 обычно включает в себя модем 172 или другое средство для установления связи по WAN 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может быть связан с системной шиной 121 через интерфейс 160 пользовательского ввода или другой соответствующий механизм. В сетевой среде программные модули, изображенные относительно компьютера 110 или его части, могут быть сохранены в удаленном запоминающем устройстве. Посредством примера, а не ограничения, фиг.1 иллюстрирует удаленные прикладные программы 185 как постоянно находящиеся на запоминающем устройстве 181. Следует заметить, что показанные сетевые соединения являются примерными и могут использоваться другие средства установления связи между компьютерами.
Создание и проверка достоверности документов
[0025] Фиг.2 - есть блок-схема, которая в целом представляет примерную среду, в которой здесь могут быть осуществлены аспекты описанного изобретения. Эта среда включает в себя пользовательские устройства 205-207, запоминающие устройства 210-212, хостированное приложение 215, службы 220-223 и сеть 225.
[0026] Пользователь может использовать пользовательское устройство 205 для сохранения данных на запоминающем устройстве 210. К пользовательским данным могут затем обращаться пользовательские устройства 205-207, службы 220-223 и хостированное приложение 215. Пользовательские данные могут быть также скопированы в устройства 211-212 дублирования (реплицирования) данных.
[0027] Пользовательскими устройствами 206 и 207 может управлять пользователь, который сохранил данные, или они могут управляться другими пользователями, которым пользователь дал права доступа к данным. Например, пользователь может иметь компьютер (например, пользовательское устройство 205) на работе, на котором пользователь сохраняет данные на запоминающем устройстве 210. Дома у пользователя может быть другой компьютер (например, пользовательское устройство 206), с помощью которого пользователь обращается к данным. Пользователь может также иметь сотовый телефон или другое электронное устройство (например, пользовательское устройство 207), с помощью которого пользователь обращается к данным. Когда пользователь путешествует, пользователь может обратиться к данным через компьютер, который пользователь берет с собой, или через другой компьютер или электронное устройство, которое пользователь в состоянии использовать.
[0028] Как упомянуто выше, пользователь может пожелать сделать так, чтобы другие пользователи имели доступ к данным, и может предоставить другим пользователям такой доступ. Эти пользователи могут использовать компьютеры или другие электронные устройства (например, пользовательские устройства 206 и 207), чтобы обратиться к данным согласно их правам доступа.
[0029] Пользователь может пожелать обратиться к данным через хостированное приложение 215. Пользователь может обратиться к хостированному приложению 215 через web-браузер, например, и может затем обратиться к данным через хостированное приложение 215.
[0030] Пользователь может желать иметь некоторые службы, которые имеют доступ к данным пользователя. Например, пользователь может желать иметь сервер 221 рекламы, обращающийся к данным пользователя, чтобы предоставить соответствующую рекламу пользователю или другим. Пользователь может пожелать иметь поисковый механизм 220, который имеет доступ к данным пользователя, чтобы позволить другим находить данные пользователя. Пользователь может пожелать иметь архивную службу 222, которая имеет доступ к данным, чтобы создать архивные резервные копии данных. Пользователь может также пожелать, чтобы другие службы 223 имели доступ к данным в различных целях.
[0031] Объект может включать в себя физическое устройство, процесс, службу, машину, пользователя, ключ, компонент, множество из одного или более из вышеупомянутого и т.п. Пользователь может пожелать, чтобы каждому объекту с доступом к пользовательским данным был дан некоторый набор прав доступа, которые могут изменяться от объекта к объекту. Например, пользователь может пожелать, чтобы архивная служба была в состоянии копировать данные, но не была в состоянии считывать данные значимым способом или модифицировать данные. Способность копировать данные, не читая их значимым способом, или модифицировать их, иногда упоминается как доступ "только для копирования". В качестве другого примера, пользователь может пожелать иметь сервер 221 рекламы и поисковый механизм 220, которые в состоянии считывать данные, но не в состоянии записать данные. Пользователь может пожелать иметь некоторых коллег, имеющих доступ по чтению/записи к данным, в то время как другие деловые партнеры имеют доступ к данным для считывания или доступ только для копирования.
[0032] Сеть 225 представляет любой механизм и/или набор из одного или более устройств для передачи данных от одного объекта к другому и может включать в себя внутренние и внешние сети, Интернет, телефонные линии, сотовые сети связи, сетевое оборудование, непосредственные соединения между устройствами, беспроводные соединения и т.п. Пользователь может пожелать иметь устройства сети 225, которые в состоянии скопировать данные, чтобы передать их к другим объектам, но быть не в состоянии изменить данные или считывать их значимым способом.
[0033] Примеры устройств (например, устройств 205-207 и 210-212) включают в себя сотовые телефоны, устройства обмена текстовыми сообщениями, смартфоны, сетевые устройства, специализированные и общего назначения электронные устройства, как описано со ссылками на фиг.1, комбинации, части или изменения вышеупомянутого и т.п.
[0034] Как должно быть понятно специалистам в данной области техники возможность иметь много объектов, обрабатывающих или имеющих доступ к данным, делает более трудным сохранить данные безопасными и гарантировать, что данные не повреждаются или не обновляются злонамеренно.
[0035] Фиг.3 - блок-схема, которая в целом представляет примерный набор объектов, которые могут участвовать в создании или проверке достоверности документа согласно аспектам описанного здесь изобретения. Объекты включают в себя объект 305 создания/проверки правильности, нуль или более промежуточных объектов 310, 330 и 340, объект 315 доступа к памяти, запоминающее устройство 320, хранилище 335 данных безопасности и службу 345 каталогов.
[0036] В одном варианте осуществления объект 305 создания/проверки правильности является электронным устройством, таким как компьютер, и промежуточные объекты 310, 330 и 340 являются нулем или более устройствами формирования сети, серверами или другими устройствами, которые находятся между объектом 305 создания/проверки правильности и объектом 315 доступа к памяти и/или хранилищем 335 данных безопасности и/или службой 340 каталогов. Объект 315 доступа к памяти является устройством, которое способно обращаться к запоминающему устройству (например, запоминающему устройству 320), на котором хранится требуемый документ.
[0037] «Документ», как используется здесь, включает в себя любой набор битов любой длины, которые могут быть сохранены на запоминающем устройстве. Как описано более подробно со ссылками на фиг.4, версия документа может включать в себя идентификатор документа, идентификатор данных безопасности и зашифрованные данные помимо других данных. Идентификатор документа однозначно идентифицирует документ в конкретном пространстве имен. Идентификатор данных безопасности может быть использован для извлечения данных безопасности, относящихся к документу. Зашифрованные данные могут включать в себя, например контент, который пользователь желает защитить, такой как файл обработки текста, электронная таблица, другие данные, криптографические ключи, которые могут быть использованы для расшифровывания других данных, или любые другие данные, важные для пользователя.
[0038] Так как данные шифруются, они могут быть только идентифицируемым образом считываться кем-то, у кого есть ключ для того, чтобы дешифровать данные. Как описано более подробно ниже, ключи сохраняются в данных безопасности в хранилище данных безопасности. С соответствующим ключом пользователь может создать документ и данные безопасности в данном пространстве имен таким образом, что другие объекты в состоянии верифицировать, что пользователь был авторизован создать документ и данные безопасности в пространстве имен.
[0039] Запоминающее устройство 320 является любым считываемым компьютером носителем, способным к сохранению данных, и может включать в себя распределенные файловые системы, например. Некоторые примерные считываемые компьютером носители, которые являются подходящими для запоминающего устройства 320, были описаны выше со ссылками на фиг.1.
[0040] Хранилище 335 данных безопасности сохраняет данные безопасности, имеющие отношение к документам, хранящимся на запоминающем устройстве 320. Хранилище 335 данных безопасности может включать в себя одно устройство или несколько устройств, которые работают совместно друг с другом. Хранилище 335 данных безопасности может включать в себя запись данных безопасности для каждой версии документа. Объект 305 создания/проверки достоверности может запросить запись данных безопасности, соответствующих извлеченному документу, посредством посылки идентификатора данных безопасности, включенного в документ, хранилищу 335 данных безопасности и посредством запрашивания данных безопасности, идентифицированных таким образом.
[0041] В одном варианте осуществления данные безопасности могут быть сохранены непосредственно в документе. В этом варианте осуществления объект 305 создания/проверки достоверности может получить данные безопасности непосредственно из документа.
[0042] Служба 345 каталогов действует так, чтобы сохранить и обеспечить ключи, используемые при проверке, что корневой документ был создан авторизованным объектом. Корневой документ является документом самого низкого уровня, доступным в пространстве имен. Другие документы могут зависеть от корневого документа, но он не зависит от других документов. Например, в иерархическом пространстве имен с каталогами, подкаталогами и т.д. корневой документ находится в корне других документов, созданных в пространстве имен. Например, если пространство имен включает в себя путь, такой как //domain/path/file.txt, "domain" будет корневым документом. Если пространство имен включает в себя http-подобный синтаксис, такой как live://alice/users/file1.txt, "alice" будет корневым документом.
[0043] При создании корневого документа создающий объект создает документ, создает пару открытый/секретный ключи, подписывает документ секретным ключом и публикует открытую часть ключа для службы каталогов. При опубликовании открытой части ключа объект выдает идентификатор корневому документу и открытый ключ (или его часть). Служба каталогов гарантирует, что объект, запрашивающий опубликование открытого ключа, имеет полномочие сделать это. Если объект имеет соответствующие полномочия, служба каталогов публикует открытый ключ (или его часть) в своих записях.
[0044] Объект, который позже получает корневой документ, может проверить, что он был создан авторизованным объектом посредством запрашивания открытого ключа из службы каталогов и посредством проверки сигнатуры на документе, используя открытый ключ. Объект может получить открытый ключ посредством выдачи идентификатора корневого документа службе каталогов. В вариантах осуществления, в которых служба каталогов сохраняет только часть открытого ключа, проверяющий объект может затем обеспечить эту часть другому объекту, который использует эту часть для поиска и возврата всего открытого ключа. Альтернативно, полный открытый ключ может быть включен в данные безопасности документа.
[0045] Один тип службы, которая может использоваться в качестве службы 345 каталогов, является сервером службы доменных имен (DSN) или чем-то аналогичным. Открытый ключ может быть помещен в запись службы DNS, соответствующую имени домена (которая может соответствовать корневому документу). Поскольку серверы DNS хорошо установлены и имеют механизмы для того, чтобы объявить монопольное использование (владение) домена, это может использоваться без намного большей инфраструктуры при проверке достоверности корневого документа. Если весь открытый ключ не может быть сохранен в записи службы DNS, механизм, описанный выше, может быть использован для сохранения части открытого ключа в записи службы DNS со всем открытым ключом доступа, доступным в другой службе.
[0046] Другие специализированные службы также могут использоваться в качестве службы каталогов 345, не отступая от формы или объема аспектов описанного здесь изобретения. В частности, любой объект, который в состоянии проверить, что пользователь имеет права на корневой документ, и который в состоянии сохранить идентификатор и пару ключей (или его часть), может использоваться, не отступая от формы или объема описанного здесь изобретения.
[0047] В одном варианте осуществления один или более объектов 305, 310, 315, 330 и 345 могут быть одним или более процессами или компонентами, которые выполняются на одном или более устройствах. В одном варианте осуществления запоминающее устройство 320 и/или хранилище 335 данных безопасности может быть устройствами, включенными в или присоединенными к устройству, на котором выполняется объект 305 создания/проверки достоверности. Документы, хранящиеся в запоминающем устройстве 320, могут быть помещены туда пользователем устройства, в котором выполняется объект 305 создания/проверки достоверности, из другого устройства или могут быть помещены туда инфраструктурой, реплицирующей файлы, например.
[0048] Как можно видеть, в примерной среде, описанной выше со ссылками на фиг.3, документ может пройти через многие объекты по маршруту к объектам и от объектов, которые пытаются создать или проверить достоверность документа. Шифрование данных документа позволяет данным быть надежно сохраненными на любом запоминающем устройстве и в любой конфигурации устройств.
[0049] Фиг.4 иллюстрирует некоторые примерные структуры данных, которые могут использоваться вместе с аспектами описанного здесь изобретения. Структура данных документа (например, структура 400 данных документа) может быть сохранена для каждого документа. Каждая структура 400 данных документа может включать в себя различные поля, включая идентификатор 405 документа, идентификатор 410 данных безопасности, отметку времени 415, зашифрованные данные 420 и сигнатуру 426 пространства имен.
[0050] Идентификатор 405 документа может быть использован для однозначной идентификации документа в заданном пространстве имен. Например, унифицированный идентификатор ресурса (URI), имеющий http-подобный синтаксис (например, live://alice/users/file1.txt), может быть использован для идентификации документов в заданном пространстве имен. В качестве другого примера глобально уникальный идентификатор (GUID) может быть использован для идентификации документов в заданном пространстве имен.
[0051] Идентификатор 410 данных безопасности может быть использован для идентификации данных безопасности, ассоциированных с документом. В одном варианте осуществления идентификатор 410 данных безопасности является хэш-функцией одного или более других полей в структуре 427 данных безопасности. Хэш-функция принимает входные данные и вычисляет выходные данные, длина которых является фиксированной и не меняется на основании длины входных данных. При заданных выходных данных достаточной длины и подходящей хэш-функции эта хэш-функция эффективно обеспечивает уникальный идентификатор для входных данных.
[0052] Поле 410 отметки времени может включать в себя отметку времени, которая указывает, когда документ был создан. Как описано выше, поле 420 зашифрованных данных может включать в себя любой контент, который пользователь желает защитить.
[0053] Поле 425 сигнатуры пространства имен содержит один или более механизмов, которые могут быть использованы для гарантии, что структура 400 данных документа была создана авторизованным пользователем и не изменилась со времени создания. Одним примерным механизмом является сигнатура, как описано более подробно ниже.
[0054] Структура 400 данных документа может включать в себя больше или меньше полей, пока она включает в себя механизм для идентификации или включает в себя данные безопасности, относящиеся к документу, и механизм для того, чтобы гарантировать, что документ был создан авторизованным пользователем и не изменился с момента создания.
[0055] Структура 427 данных безопасности может включать в себя поле 430 идентификатора данных безопасности, одно или более полей 440 авторизации, один или более ключей 450 и сигнатуру 455. В одном варианте осуществления идентификатор данных безопасности в поле 430 идентификатора данных безопасности может быть вычислен, как описано выше (то есть как хэш-функция других полей структуры 427 данных безопасности).
[0056] Структура данных безопасности может также включать в себя поле родительского идентификатора безопасности, которое идентифицирует структуру данных безопасности, ассоциированную с документом, который является родителем документа (если существует). Идентификатор родительских данных безопасности может быть использован для проверки, был ли дочерний документ создан принципалом безопасности, авторизованным создавать дочерние документы, как описано ниже более подробно со ссылками на фиг.5.
[0057] Поля 440 авторизации включают в себя авторизацию для каждого принципала безопасности (иногда называемого как "объект"), который должен иметь доступ к или некоторую другую роль относительно структуры 400 данных документа. В некоторых вариантах осуществления принципал безопасности - это объект, который может быть положительно идентифицирован и верифицирован посредством методики, известной как аутентификация. В других вариантах осуществления принципал безопасности может содержать ключ, расшифрованный из данных безопасности, ассоциированных с другим документом. Принципал безопасности может включать в себя пользователя, машину, службу, процесс, другой объект, расшифрованный ключ или множество (например, группы) из одного или более из вышеупомянутого. Каждая авторизация может быть зашифрована ключом, который может быть дешифрован ключом, сохраненным или созданным принципалом безопасности. Криптография открытого ключа/секретного ключа доступа является одним из механизмов, который может быть использован для шифрования/расшифровывания авторизации.
[0058] Поскольку конкретный принципал безопасности может иметь много ключей и может иметь много авторизаций в документе безопасности, в одном варианте осуществления оптимизация обеспечивает подсказку ключа, которая обеспечивает первые несколько битов (в простом тексте) ключа, которые могут быть использованы для расшифровывания авторизации. Подсказка ключа позволяет объекту быстро определить, какие авторизации он должен попытаться дешифровать, поскольку объект может просто сравнить первые несколько битов со своим ключом. Когда есть сотни или тысячи авторизаций, экономия времени, обеспечиваемая этим механизмом, может быть существенной. Поскольку несколько битов (например, от 2 до 16) могут быть предоставлены в подсказке ключа, эффективность механизма, используемого для шифрования/расшифровывания авторизации, может не быть значительно ослабленной. Если нужно, эффективность механизма может быть увеличена посредством использования более длинных ключей.
[0059] В одном варианте осуществления авторизация включает в себя зашифрованные ключи, которые позволяют принципалу безопасности выполнять одно или более прав доступа по отношению к документу. Например, пользовательскому принципалу безопасности могут быть даны права считывать документ, создать новые документы, изменять то, какие принципалы безопасности могут обращаться к документу, и выполнять любые другие связанные с безопасностью действия относительно документа. Другому пользовательскому принципалу безопасности может быть дан доступ только для записи или только для считывания. Объекты, которым не даны права относительно документа, могут все еще иметь доступ только для копирования (то есть способность копировать, но не значимое считывание зашифрованных данных). Такие объекты могут использоваться, например, для того, чтобы архивировать документы.
[0060] В другом варианте осуществления авторизация может включать в себя зашифрованный ключ, который позволяет принципу безопасности расшифровать дополнительные ключи где-либо еще (например, в ключе(ах) 450) структуры 427 данных безопасности. Эти дополнительные ключи могут предоставить права доступа или другие роли, ассоциированные с документом, принципалу безопасности. Это может быть сделано, например, чтобы уменьшить пространство, необходимое для структуры 427 данных безопасности, поскольку единственный ключ в авторизации может быть использован для расшифровывания множества ключей где-либо в структуре 427 данных безопасности. Когда структура 427 данных безопасности включает в себя сотни или тысячи авторизаций, много авторизаций могут совместно использовать общий набор прав доступа. В то время как ключи, соответствующие этим правам доступа, могут быть включены в саму авторизацию, может быть более эффективным с точки зрения пространства обеспечить один ключ в каждой авторизации, который позволяет принципалам безопасности расшифровать ключи доступа где-либо еще в структуре 427 данных безопасности.
[0061] Опции 445 использования могут включать в себя одну или более политик, которые относятся к тому, как защищаются документы. Например, политика может указывать, что сигнатуры помещены только в структуру данных безопасности, только в структуру данных документа, в обе или что некоторые сигнатуры должны быть дублированы в обеих структурах данных, в то время как другие сигнатуры должны быть помещены только в одну из структур данных. Политика может указывать, должна ли каждая версия быть подписана наблюдателем. При такой политике версия, которая не подписана наблюдателем, может быть определена как недействительная, например. Политика может указывать, может ли быть владелец пространства имен изменен, как описано выше.
[0062] Ключи 450 могут включать в себя зашифрованные секретные ключи, как описано выше, которые могут соответствовать правам доступа, предоставленным в документе. Эти ключи могут быть расшифрованы ключами, полученными в поле 440 авторизации(й), как описано выше. Кроме того, ключи могут включать в себя опубликованные (то есть не зашифрованные) открытые ключи, которые могут использоваться для того, чтобы подтвердить правильность, была ли структура данных безопасности или документа создана авторизованным принципалом безопасности.
[0063] Поле 455 сигнатуры может использоваться аналогичным образом, как поле 455 сигнатуры структуры 400 данных.
[0064] Структура 427 данных безопасности может включать в себя больше или меньше полей, пока она включает в себя механизм для того, чтобы обеспечить ключи для доступа или выполнять роль, ассоциированную со своим ассоциированным документом(ами), авторизованным пользователям.
[0065] В одном варианте осуществления структура 400 данных документа может включать в себя идентификатор, который идентифицирует другую структуру данных документа. Эта другая структура данных документа может включать в себя ключ, который разрешает доступ к или роль, ассоциированную с документом. Этот механизм может быть используемым для обеспечения группового доступа к или роли, ассоциированной с документом. Например, авторизации в структуре данных безопасности, ассоциированных с первой структурой данных документа, могут соответствовать ключам, хранимым членами группы. Любой член группы, который имеет соответствующий ключ, может быть в состоянии получить ключ члена из данных безопасности, который позволяет этому члену обращаться или выполнять роль, ассоциированную со вторым документом согласно правам, предоставленным группе в данных безопасности, ассоциированных со вторым документом. Таким образом, доступ или обеспечение роли, ассоциированной с документом, могут вовлекать в себя доступ к промежуточному документу.
[0066] В другом варианте осуществления структура 400 данных документа может пропустить идентификатор документа или другой документ в целом. В этом варианте осуществления другой механизм может предложить, чтобы ключи в данных безопасности первого документа могли обеспечить доступ ко второму документу. Например, если первый документ, как было известно, обеспечил групповой доступ к другому документу, ключ члена из данных безопасности первого документа можно попробовать для каждой авторизации в данных безопасности для каждого другого документа, к которому пользователь делает попытку обратиться. Подсказки ключа, как описано выше, могут ускорить этот процесс.
1
1
[0067] Фиг.5A - блок-схема, которая в целом представляет данные, которые могут измениться, и действия, которые могут иметь место при создании дочернего документа в соответствии с аспектами описанного здесь изобретения. Дочерний документ 510 является дочерним родительского документа 505. Дочерний документ 510 создается принципалом безопасности с правами владельца пространства имен. Принципал безопасности с правами владельца пространства имен иногда называется здесь просто как владелец пространства имен. При создании дочернего документа 510 владелец пространства имен может подписать документ 510, используя секретный ключ no владельца пространства имен, зашифрованный в данных безопасности 515, идентифицированных документом 505. Владелец пространства имен получает секретный ключ no посредством расшифровывания его в авторизации, используя ключ, который владелец пространства имен имеет или может создать.
1
1
1
1
1
[0068] В одном варианте осуществления владелец пространства имен подписывает документ 510, используя секретный ключ noпосредством вычисления хэш-функции документа 510 и затем посредством шифрования хэш-функции секретным ключом no. Объект, который желает проверить, что документ 510 был подписан владельцем пространства имен, может получить открытый ключ NO владельца пространства имен из данных безопасности 515, дешифровать сигнатуру дочернего документа 510 открытым ключом NO владельца пространства имен, вычислить хэш-функцию документа 510 и сравнить дешифрованную сигнатуру документа 510 с хэш-функцией документа 510. Если дешифрованная сигнатура и хэш-функция документа 510 одинаковы, принципал безопасности удостоверяется, что документ 510 был создан объектом, имеющим доступ к секретному ключу no владельца пространства имен.
[0069] Если владелец пространства имен не изменяет владельца(ев) пространства имен, который может создать новые документы в пространстве имен дочернего документа, владелец пространства имен может ассоциировать дочерний документ 510 с теми же самыми данными безопасности 515, с которым ассоциирован родительский документ 505. Если принципал безопасности изменяет владельца(ев) пространства имен, который может создать новые документы в пространстве имен дочернего документа, владелец пространства имен может создать новые данные 520 безопасности и ассоциировать дочерний документ 530 с новыми данными 520 безопасности, как описано более подробно со ссылками на фиг.5B.
2
[0070] Фиг.5B - это блок-схема, которая в целом представляет данные, которые могут измениться, и действия, которые могут иметь место при создании дочернего документа и изменении владельца(ев) пространства имен, который может создавать документы в пространстве имен дочернего документа, в соответствии с аспектами описанного здесь изобретения. Владелец пространства имен родительского документа может создать новые данные 520 безопасности. Владелец пространства имен может также создать новый секретный ключ no владельца пространства имен и поместить его в новые данные 520 безопасности, чтобы изменить владельца(ев) пространства имен, которые авторизованы создавать дочерние документы в пространстве имен дочернего документа 530.
[0071] Это может быть сделано, например, чтобы позволить пользователю, ассоциированному с дочерним документом, создавать дочерние документы дочернего документа. Например, системный администратор или подобные могут создать каталог для пользователя. Чтобы позволить пользователю создавать новые документы в этом каталоге, системный администратор может указать в данных безопасности для каталога, что пользователь является владельцем пространства имен.
2
1
1
1
[0072] После создания нового секретного ключа no владельца пространства имен и помещения его в новые данных 520 безопасности владелец пространства имен может подписать новые данные 520 безопасности секретным ключом no владельца пространства имен. Это может быть сделано, чтобы показать, что владелец пространства имен был авторизован сделать изменение владельца пространства имен в данных безопасности 515, что отражается в данных 520 безопасности. Сигнатура может быть создана, например, посредством использования секретного ключа записи no, чтобы зашифровать хэш-функцию данных, сохраненных в данных 520 безопасности. Владелец пространства имен может также создать дочерний документ 530 и ассоциировать его с новыми данными 520 безопасности. Чтобы указать, что владелец пространства имен имеет полномочие создавать дочерний документ 530 в пространстве имен родительского документа 525, принципал безопасности может подписать новый документ 530 секретным ключом no владельца пространства имен.
[0073] В одном варианте осуществления чтобы проверить, что дочерний элемент (например, дочерний документ 530) документа (например, родительского документа 525) был создан авторизованным владельцем пространства имен, процесс может получить родительскую версию этого документа (например, документа 525). С родительской версией документа процесс может затем обнаружить данные безопасности (например, данные безопасности 515), ассоциированные с документом.
[0074] В другом варианте осуществления новые данные 520 безопасности, ассоциированные с дочерним документом 530, могут включать в себя идентификатор, который идентифицирует данные безопасности 515, ассоциированные с родительским документом 525. В этом варианте осуществления нет необходимости получать родительский документ 525, вместо этого новые данные 520 безопасности для дочернего документа 520 могут быть использованы для определения местонахождения данных безопасности 515 для родительского документа 525.
1
1
1
[0075] Данные безопасности 515 для родительского документа 525 включают в себя открытый ключ NO владельца пространства имен. С NOи сигнатурой в новых данных 520 безопасности процесс может проверить, что новые данные 520 безопасности были созданы принципалом безопасности, имеющим права владельца пространства имен. С NOи сигнатурой в дочернем документе 530 процесс может проверить, что дочерний документ 530 был создан принципалом безопасности, имеющим права владельца пространства имен.
[0076] В некоторых вариантах осуществления сигнатура владельца пространства имен может быть включена только в данные безопасности, только в документ или и в данные безопасности и в документ. Этим можно управлять посредством возможностей использования, как описано выше.
[0077] Объект, желающий проверить, что иерархия документов была создана авторизованными владельцами пространства имен, может следовать иерархии к корневому документу рекурсивным способом. Например, объект может начать с дочернего документа, находящемся дальше всего (в иерархическом смысле) от корневого документа, и проверить, что он был создан авторизованным владельцем пространства имен способом, описанным выше со ссылками на фиг.5A и 5B. Затем объект может взять родительский документ и проверить, что он был создан авторизованным владельцем пространства имен. Это можно продолжать пока объект не достигнет корневого документа. В корневом документе объект может получить открытый ключ из службы каталогов и затем определить, был ли корневой документ создан авторизованным владельцем пространства имен.
[0078] Чтобы ускорить будущую верификацию, после определения, что иерархия документов была создана авторизованными владельцами пространства имен, объект может обновить структуру данных, которая указывает, что документы были созданы авторизованными владельцами пространства имен. Чтобы проверить другие документы, объект может обращаться (консультироваться с) к структуре данных, поскольку другие документы совместно используют по меньшей мере часть этой иерархии.
[0079] Другие механизмы цифровой сигнатуры/проверки также могут использоваться, не отступая от формы или объема аспектов описанного здесь изобретения.
[0080] Фиг.6 - схема последовательности операций, которая в целом представляет примерные действия, которые могут иметь место при создании документа в соответствии с аспектами описанного здесь изобретения. На этапе 605 действия начинаются.
[0081] На этапе 610 объект получает родителя документа, для которого он планирует создать дочерний документ. Например, со ссылками на фиг.3, объект 305 создания/проверки правильности получает родительский документ, который хранится на запоминающем устройстве 320. Если создаваемый документ является корневым документом, нет необходимости получать родительский документ. Вместо этого пара секретного/открытого ключей может быть создана для владельца пространства имен. Секретный ключ используется для подписи корневого документа, в то время как открытый ключ издается в службе каталогов.
[0082] На этапе 615 выполняется определение относительно того, будет ли дочерний документ включать в себя нового владельца(ев) пространства имен, которые отличаются от владельца(ев) пространства имен родительского документа. Если да, действия продолжаются на этапе 635; иначе действия продолжаются на этапе 620. Если новый владелец(ы) пространства имен желателен(ьны), новые ключи владельца пространства имен могут быть записаны для данных безопасности, и доступ к этим ключам ограничен принципалам безопасности, которым дают роль владельца пространства имен. Если тому же самому владельцу(ам) пространства имен будет принадлежать пространство имен дочернего документа, дочерний документ может просто сослаться на данные безопасности для родительского документа. При создании корневого документа действия продолжаются на этапе 635.
[0083] На этапе 620 создается дочерний документ. Например, со ссылками на фиг.3 объект 305 создания/проверки правильности создает дочерний документ.
[0084] На этапе 625 дочерний документ ассоциируется с данными безопасности его родительского документа. Например, со ссылками на фиг.4 и 5A идентификатор 410 данных безопасности в новом документе заполняется идентификатором, который идентифицирует данные 515 безопасности.
[0085] На этапе 630 подписывается дочерний документ. Например, со ссылками на фиг.3 объект 305 создания/проверки правильности получает свой секретный ключ владельца пространства имен из данных безопасности, ассоциированных с родительским документом, и подписывает новый документ этим секретным ключом доступа.
[0086] На этапе 635, если владелец(ьцы) пространства имен был создан (или если создан корневой документ), создаются новые данные безопасности. Например, со ссылками на фиг.3 и 5B объект 305 создания/проверки правильности создает новые данные 520 безопасности.
[0087] На этапе 640 создается дочерний документ. Например, со ссылками на фиг.3 и 5B объект 305 создания/проверки правильности создает дочерний документ 530.
[0088] На этапе 645 дочерний документ ассоциируется с новыми данными безопасности. Например, со ссылками на фиг.3, 4 и 5B объект 305 создания/проверки правильности заполняет идентификатор 410 данных безопасности дочернего документа 530, чтобы идентифицировать данные 520 безопасности.
[0089] На этапе 650 дочерний документ подписывается способом, аналогичным описанному со ссылками на этап 630. Кроме того, новые данные безопасности могут также быть подписаны.
[0090] Следует отметить, хотя и не показано на фиг.6, другие сигнатуры также могут быть получены, такие как сигнатура наблюдателя, и помещены в документ и/или данные безопасности, как описано выше.
[0091] На этапе 655 действия завершаются.
[0092] Фиг.7 - схема последовательности операций, которая в целом представляет примерные действия, которые могут иметь место при проверке, что документ был создан авторизованным владельцем пространства имен в соответствии с аспектами описанного здесь изобретения. На этапе 705 начинаются действия.
[0093] На этапе 710 получают документ. Например, со ссылками на фиг.3 объект 305 создания/проверки правильности может запросить и получить документ, который извлекается из запоминающего устройства 320.
[0094] На этапе 715 получают данные безопасности. Если данные безопасности включены в документ, они извлекаются из документа. Если данные безопасности располагаются в другом месте (таком как хранилище данных безопасности, как показано на фиг.3), они получаются там.
[0095] На этапе 720 выполняется определение относительно того, был ли новый владелец пространства имен установлен при создании документа. Если да, действия продолжаются на этапе 735; иначе действия продолжаются на этапе 725. Как описано выше, новый ключ владельца пространства имен может быть использован для изменения принципалов безопасности, которые авторизованы создать документ в пространстве имен потомков документа.
[0096] На этапе 725 открытый ключ получают из поля данных безопасности, ассоциированных с документом. Например, со ссылками на фиг.4 открытый ключ владельца пространства имен может быть получен из поля 450 ключа(ей).
[0097] На этапе 730 открытый ключ используют для проверки, был ли документ создан авторизованным владельцем пространства имен. Это может быть сделано, как описано выше, например.
[0098] На этапе 735, когда новый ключ владельца пространства имен был использован для создания документа, получают идентификатор родительского документа. Например, со ссылками на фиг.3 и 4 объект 305 создания/проверки правильности может получить родителя документа, используя идентификатор документа (если этот идентификатор является иерархическим). Объект 305 создания/проверки правильности может затем получить идентификатор безопасности из этого документа для записи данных безопасности, ассоциированной с родительским документом.
[0099] На этапе 740 открытый ключ получают из поля записи данных безопасности, ассоциированной с родительским документом. На этапе 750 этот открытый ключ используют для проверки, был ли документ создан авторизованным владельцем пространства имен, как описано выше.
[0100] На этапе 755 действия завершаются.
[0101] Фиг.8 - блок-схема, которая представляет примерное устройство, сконфигурированное для работы в соответствии с аспектами описанного здесь изобретения. Устройство 805 может включать в себя компонент 810 создания, криптографический компонент 815, блок 820 определения местоположения документа, компонент 825 проверки достоверности (правильности), хранилище 830 данных и механизм 835 обмена информацией.
[0102] Компонент 810 создания представляет объект создания, описанный ранее. Криптографический компонент 815 используется для шифрования и дешифрования данных и может содержать библиотеку криптографических подпрограмм, например.
[0103] Блок 820 определения местоположения документа определяет, где документ располагается, который будет или на локальном хранилище 830 данных, или на некотором хранилище данных, внешнем к устройству 805.
[0104] Компонент 825 проверки достоверности представляет объект проверки, описанный ранее, и вовлекается в определение, был ли документ создан авторизованным владельцем пространства имен.
[0105] Механизм 835 обмена позволяет устройству 805 обмениваться информацией с другими устройствами, чтобы получить документы и данные безопасности, например. Механизм 640 обмена может быть сетевым интерфейсом или адаптером 170, модемом 172 или любым другим средством для установления обмена, как описано со ссылками на фиг.1.
[0106] Понятно, что другие разновидности устройства 805, показанного на фиг.8, могут быть реализованы, не отступая от формы или объема аспектов описанного здесь изобретения. Должно быть очевидно, что больше, меньше или другие компоненты могут существовать в устройстве 805, не отходя от формы или объема аспектов описанного здесь изобретения.
[0107] Как может быть видно из предшествующего подробного описания, были описаны аспекты, связанные с созданием и проверкой достоверности документов, защищенных криптографически. В то время как аспекты описанного здесь изобретения восприимчивы к различным модификациям и альтернативным конструкциям, некоторые иллюстрированные варианты его осуществления показаны на чертежах и были выше подробно описаны. Нужно понимать, однако, что не имеется намерения ограничить аспекты заявленного объекта изобретения конкретными раскрытыми формами, но, напротив, намерение состоит в том, чтобы охватить все модификации, альтернативные конструкции и эквиваленты, находящиеся в пределах формы и объема различных аспектов описанного здесь изобретения.