способ защиты мультимедийных данных
Классы МПК: | H04N7/16 системы с засекречиванием; абонентские системы |
Автор(ы): | ГРИМЕН Гисле (NO), МЕНХ Кристиан (NO) |
Патентообладатель(и): | Секьюстрим Технолоджиз АС (NO) |
Приоритеты: |
подача заявки:
2006-07-14 публикация патента:
27.04.2012 |
Изобретение относится к передаче данных, а именно к защищенной передаче мультимедийных данных. Техническим результатом является повышение защищенности от модификации клиента. Технический результат достигается тем, что способ передачи данных на клиентский компьютер, выполняющий клиентскую программу, содержит следующие шаги: а) передача данных клиентской программе, б) передача программного кода, содержащего алгоритм, с сервера защиты клиентской программе, причем результат алгоритма является функцией состояния клиентской программы, в) выполнение указанного кода клиентской программой и возврат результата на сервер защиты или средства, связанные с сервером защиты, и г) определение сервером защиты или средствами, связанными с сервером защиты, указывает ли полученный результат на отсутствие модификации клиентской программы. 8 н. и 21 з.п. ф-лы, 5 ил.
Формула изобретения
1. Способ передачи данных на клиентский компьютер, выполняющий клиентскую программу, содержащий следующие шаги:
a) передача данных клиентской программе,
b) передача программного кода, содержащего алгоритм, с сервера защиты клиентской программе, причем результат алгоритма является функцией состояния клиентской программы,
c) выполнение указанного кода клиентской программой и возврат результата на сервер защиты или средства, связанные с сервером защиты, и
d) определение сервером защиты или средствами, связанными с сервером защиты, указывает ли полученный результат на отсутствие модификации клиентской программы.
2. Способ по п.1, отличающийся тем, что данные представляют собой медиапродукцию.
3. Способ по п.2, отличающийся тем, что данные представляют собой один из множества распределенных во времени сегментов медиапродукции, причем каждый сегмент шифруют, используя ключ шифрования, до передачи данных клиентской программе.
4. Способ по п.3, отличающийся тем, что исключительно в случае, если на шаге (d) полученный результат указывает на отсутствие модификации клиентской программы, способ дополнительно содержит шаг передачи клиентской программе ключа дешифрования, соответствующего переданному сегменту.
5. Способ по 4, отличающийся тем, что дополнительно содержит шаг (е) прекращения передачи данных и/или ключей, необходимых для дешифрования данных, в случае, если полученный результат не указывает на отсутствие модификации клиентской программы.
6. Способ по п.1 или 2, отличающийся тем, что указанный код включает вычисление контрольной суммы, входными данными которой является программный код клиентской программы и/или отображение в памяти клиентской программы.
7. Способ по п.6, отличающийся тем, что во входные данные для вычисления контрольной суммы включено случайное число.
8. Способ по п.7, отличающийся тем, что клиентская программа или переданный программный код генерирует случайное число для вычисления контрольной суммы, клиентская программа шифрует случайное число посредством открытого ключа сервера защиты, зашифрованное случайное число передают на сервер защиты вместе с запросом ключа и вычисленной контрольной суммой; сервер защиты дешифрует случайное число и использует его для шифрования ключа, содержащегося в сервере защиты; сервер защиты выполняет собственное вычисление контрольной суммы с использованием указанного случайного числа; и сервер защиты затем сравнивает значение контрольной суммы, принятое от клиентской программы, и собственное вычисленное значение контрольной суммы.
9. Способ по п.8, отличающийся тем, что зашифрованный ключ передают клиентской программе для дешифрования ею ключа исключительно в случае совпадения указанных двух сравниваемых значений контрольной суммы.
10. Способ по п.9, отличающийся тем, что в случае несовпадения указанных двух сравниваемых значений контрольной суммы в сервере защиты устанавливают, что клиентская программа подверглась несанкционированному вмешательству.
11. Способ по п.1 или 2, отличающийся тем, что указанный код выполняет задачу или задачи обфускации в отношении клиентской программы.
12. Способ по п.11, отличающийся тем, что задача или задачи обфускации включают в себя рандомизацию отображения в памяти выполняющейся клиентской программы.
13. Способ по п.11, отличающийся тем, что задачи обфускации включают одну или более из следующих задач: перемещение кода, диверсификация кода, перемещение данных и скрытие данных.
14. Способ по п.1 или 2, отличающийся тем, что переданный из сервера защиты клиентской программе программный код подвергнут обфускации.
15. Способ по п.1 или 2, отличающийся тем, что дополнительно содержит шаг шифрования данных с использованием последовательности различных ключей, относящихся к соответствующим распределенным во времени сегментам данных, который выполняют до передачи данных, причем шаг передачи данных клиентской программе содержит передачу одного из распределенных во времени сегментов, при этом, если на шаге (d) полученный результат указывает на отсутствие модификации клиентской программы, способ дополнительно содержит следующие шаги:
e) защищенная потоковая передача ключа, соответствующего переданному сегменту, с защищенного удаленного сервера клиентской программе; и
f) дешифрование сегмента посредством указанного ключа.
16. Способ по п.15, отличающийся тем, что содержит повторение шагов с (b) по (f).
17. Способ по п.15 или 16, отличающийся тем, что каждый содержащий алгоритм программный код имеет соответствующий интервал доверия, и множество ключей передается потоком клиентской программе в течение указанного интервала доверия.
18. Способ по любому из пп.1-4, отличающийся тем, что шаги с (b) по (d) повторяют, при этом алгоритм изменяют.
19. Способ по любому из пп.1-4, отличающийся тем, что алгоритм формируют случайным образом.
20. Способ по п.1, отличающийся тем, что клиентская программа используется в одной из следующих областей: банковское обслуживание через Интернет, онлайновые игры и распределенные вычисления.
21. Способ передачи медиапродукции на клиентский компьютер, выполняющий клиентскую программу, содержащий следующие шаги:
(a) шифрование медиапродукции с использованием последовательности различных ключей, относящихся к соответствующим распределенным во времени сегментам медиапродукции,
(b) передача программного кода, включающего алгоритм, с сервера защиты клиентской программе, причем результат алгоритма является функцией состояния клиентской программы,
(c) выполнение указанного кода клиентской программой и возврат результата на сервер защиты или средства, связанные с сервером защиты,
(d) определение сервером защиты или средствами, связанными с сервером защиты, указывает ли результат на отсутствие модификации клиентской программы, и
дополнительно содержащий следующие шаги:
(e) передача первого сегмента с сервера клиентской программе,
(f) защищенная потоковая передача первого ключа, соответствующего переданному сегменту, с защищенного удаленного сервера клиентской программе,
(g) дешифрование первого сегмента посредством полученного первого ключа,
(h) в случае, если шаг (d) указывает на модификацию клиентской программы, прекращение передачи последующих ключей, в противном случае - повторение шагов с (е) по (g) в отношении последующих сегментов и ключей.
22. Способ по п.21, отличающийся тем, что дополнительно содержит шаг (i) повторения шагов с (b) по (d).
23. Способ проверки целостности клиентской программы, содержащий следующие шаги: передача программного кода из защищенного источника на клиентский компьютер, выполняющий клиентскую программу, при этом программный код содержит алгоритм, зависящий от состояния клиентской программы; выполнение программного кода и возврат результата в указанный источник, посредством чего источник может определить целостность клиентской программы.
24. Способ по п.23, отличающийся тем, что клиентская программа используется в одной из следующих областей: банковское обслуживание через Интернет, онлайновые игры и распределенные вычисления.
25. Устройство для передачи данных на клиентский компьютер, выполняющий клиентскую программу, выполненное с возможностью осуществления способа, охарактеризованного в любом из пп.1-20.
26. Устройство для проверки целостности клиентской программы, выполненное с возможностью осуществления способа, охарактеризованного в п.23 или 24.
27. Устройство для передачи медиапродукции на клиентский компьютер, выполняющий клиентскую программу, содержащее:
(a) средства для передачи медиапродукции клиентской программе,
(b) средства для передачи программного кода, содержащего алгоритм, с сервера защиты клиентской программе, причем результат алгоритма является функцией состояния клиентской программы, и
(c) средства, содержащиеся в сервере защиты, или средства, связанные с сервером защиты, для приема результата и определения того, указывает ли полученный результат на отсутствие модификации клиентской программы.
28. Способ приема данных, реализуемый клиентским компьютером, выполняющим клиентскую программу, содержащий следующие шаги:
(a) прием данных,
(b) прием программного кода, содержащего алгоритм, из удаленного источника, причем результат алгоритма является функцией состояния клиентской программы,
(c) выполнение алгоритма и возврат результата в удаленный источник, при этом полученный результат указывает на наличие или отсутствие модификации клиентской программы.
29. Способ передачи данных на клиентский компьютер, выполняющий клиентскую программу, содержащий следующие шаги:
(a) передача данных клиентской программе,
(b) передача программного кода, содержащего алгоритм, с сервера защиты клиентской программе, причем результат алгоритма является функцией состояния клиентской программы,
(c) прием сервером защиты или средствами, связанными с сервером защиты, результата выполнения указанного кода клиентской программой, и
(d) определение сервером защиты или средствами, связанными с сервером защиты, указывает ли полученный результат на отсутствие модификации клиентской программы.
Описание изобретения к патенту
Область техники, к которой относится изобретение
Настоящее изобретение относится к области защищенного распространения мультимедийных произведений, имеющих определенную продолжительность во времени, таких как фильмы, телевизионные передачи, аудиодокументы и т.п. В частности, настоящее изобретение относится к системе защищенной доставки такого рода медиапродуктов пользователю, предотвращающей получение пользователем несанкционированных копий. Аспекты изобретения также имеют применение в других приложениях типа клиент-сервер, таких как сетевое банковское обслуживание, игры и т.п.
Уровень техники
Незаконное копирование художественных произведений является извечной проблемой. В эпоху зарождения киноиндустрии, хотя было возможно изготовить незаконные копии фильмов, это было дорогостоящей операцией, осуществимой только для людей, имеющих доступ к специальной аппаратуре. С появлением домашних видеомагнитофонов для производителей возник новый рынок фильмов и иных записей, и наряду с этим появились возможности для незаконного копирования и распространения этих записей.
На сегодняшний день формат DVD, обеспечивающий более высокое качество воспроизведения и более удобный и компактный носитель данных, быстро вытесняет видеокассеты. Дополнительно, с появлением доступного широкополосного выхода в Интернет, возник развивающийся рынок загрузки и потоковой передачи фильмов и другой медиапродукции с удаленных серверов на домашние компьютеры.
При загрузке медиапродукции, ее копия сохраняется на жестком диске компьютера и обычно может быть повторно просмотрена пользователем, аналогично просмотру видеозаписи. Потоковое содержание, транслируемое в режиме реального времени или в записи, просматривается в процессе передачи на компьютер (как в обычной телевизионной программе) почти в реальном времени (присутствует небольшая задержка из-за необходимости обеспечения буферизации). Хорошо известно, что радиостанции и некоторые телевизионные станции предлагают содержание таким образом.
В то время как данные технологические усовершенствования позволили развиться многообещающему новому рынку для медиакомпаний, также возникла соответствующая проблема предотвращения производства и распространения несанкционированных копий медиапродуктов. В настоящее время возможность записи DVD-диска является общедоступной даже для дешевых домашних компьютеров.
Были разработаны способы для предотвращения подобного копирования. В традиционном подходе поставщик медиапродукции, который здесь называется поставщик содержания («content provider»), владеет закодированной медиапродукцией, например фильмами, которые в дальнейшем будут носить общее название «медиапродукция» или «медиапродукты». Данная медиапродукция должна быть передана и представлена клиентской программе/средству просмотра пользователя таким образом, чтобы не позволить пользователю создать копию закодированной медиапродукции. Доставка может осуществляться или потоковой передачей по сети, или путем доставки физического носителя, например DVD-диска, клиенту.
В случае, когда продукция передается по сети, ее защита, как правило, обеспечивается при помощи криптографических средств, предотвращая перехват и копирование медиапродукции третьей стороной. В дальнейшем такая криптографическая защита будет называться "шифрование при передаче". (Шифрование, являющееся мерой защиты, следует отличать от кодирования, посредством которого медиапродукт конвертируют и обычно сжимают в подходящую эффективную для передачи форму.) Технологии шифрования достаточно хорошо разработаны и обеспечивают необходимый уровень защиты при передаче по компьютерным сетям.
Перед доставкой медиапродукции клиенту владелец содержания защищает закодированный медиапродукт при помощи криптографических средств. В защищенном "окружении поставщика" используется инструмент шифрования для шифрования медиапродукта посредством "медиаключа", создавая зашифрованную закодированную медиапродукцию, в дальнейшем называемую "зашифрованным медиапродуктом".
Вышеуказанные действия производятся с той целью, чтобы клиент мог использовать медиапродукт только в случае, если он обладает медиаключом, позволяющим дешифровать медиапродукт. Он может быть внедрен в клиентскую программу/средство просмотра/проигрыватель и/или медиапродукцию, например в DVD-проигрыватель и DVD-диск. (Клиентская программа/средство просмотра/проигрыватель может быть отдельным устройством или программой просмотра на компьютере.)
Другая возможность, проиллюстрированная схематически на фиг.1, заключается в получении медиаключа с сервера 1 лицензий по требованию. Данная возможность позволяет осуществлять потоковую передачу медиапродукции. Для поддержания данной модели инструмент 2 шифрования упаковывает медиаключ вместе с дополнительной информацией в лицензию 3 и отправляет лицензию 3 на сервер 1 лицензий. Затем клиент получает зашифрованный закодированный медиапоток 4 с потокового сервера 5, так что указанный поток должен быть дешифрован в средстве 6 просмотра перед воспроизведением клиенту. Для того чтобы просмотреть зашифрованный фильм 7, средство просмотра запрашивает содержащую медиаключ лицензию с сервера лицензий (см. "Начальная фаза" на фиг.1).
После того как средство просмотра получило лицензию 3 (и, тем самым, медиаключ), средство просмотра соединяется с потоковым сервером 5, с которого получает зашифрованный закодированный медиапоток 4. Средство просмотра использует медиаключ для дешифрования зашифрованного закодированного медиапотока и предоставляет медиапоток клиенту (см. "Фаза потоковой передачи" на фиг.1).
Значительной проблемой в описанном выше сценарии является то, что средство просмотра выполняется в среде, контролируемой клиентом. Таким образом, средство просмотра не выполняется в доверенной среде 8 (где был изначально зашифрован фильм 9). Тем самым существует риск, что клиент может модифицировать средство просмотра. Даже хотя обычно средство просмотра дешифрует и декодирует только часть медиапотока, на протяжении всего процесса воспроизведения каждая часть зашифрованного медиапотока в некоторый момент времени будет присутствовать в памяти средства просмотра. Другая опасность заключается в том, что пользователь может извлечь медиаключ, поскольку память средства просмотра должна содержать ключ, что позволит пользователю сделать копию незашифрованной закодированной медиапродукции.
Проблема модификации существует как для исключительно программных средств просмотра, так и для аппаратных средств просмотра, например специализированных DVD-проигрывателей. Хотя модифицировать аппаратное средство просмотра труднее, чем программное средство просмотра, это не является невозможным. Таким образом, существует потребность в системе, устраняющей указанные недостатки.
Раскрытие изобретения
Общие требования для любого эффективного механизма защиты включают следующие: механизм защиты должен быть ресурсоемким для взлома, так что затраты на взлом по меньшей мере сопоставимы со стоимостью медиапродукции. Любая успешная атака не должна обобщаться для применения в каком-либо другом месте. Механизм защиты должен предпочтительно содействовать обнаружению. Различные аспекты изобретения, описанные далее, удовлетворяют данным требованиям по отдельности, и предпочтительные формы выполнения изобретения предлагают систему, которая удовлетворяет всем этим требованиям.
В дальнейшем рассмотрении медиапродукция является медиапродукцией, имеющей протяженность во времени, т.е. медиапродукция содержит некоторое количество шагов воспроизведения, которые должны быть выполнены в определенном порядке. Шаги чаще всего являются вычислительно независимыми друг от друга и могут обрабатываться независимо. В большинстве случаев полное воспроизведение занимает значительное время: много минут или несколько часов в случае фильма.
Согласно первому аспекту настоящего изобретения предлагается способ передачи медиапродукции клиенту, содержащий следующие шаги:
(a) шифрование медиапродукта с использованием последовательности различных ключей, относящихся к соответствующим распределенным во времени сегментам медиапродукта,
(b) защищенная передача первого ключа с защищенного сервера клиенту и передача соответствующего сегмента с сервера клиенту,
(c) использование в клиенте первого ключа для дешифрования соответствующего сегмента,
(d) воспроизведение дешифрованной части в средствах просмотра,
(е) повторение шагов с (b) no (d) в отношении последующих сегментов и ключей.
Изобретение может быть применено к любому виду медиапродукции (как указано выше), протяженной во времени, и особенно полезно для распространения фильмов, например, их потоковой передачи через Интернет.
При помощи разделения медиапродукта на последовательность сегментов достигается неосуществимость копирования более чем небольшой части, поскольку каждый ключ может дешифровать только один сегмент, то есть ключи функционально независимы. Таким образом, может быть скопирован только один сегмент фильма за раз. Более того, не должно существовать главного ключа, который мог бы разблокировать другие ключи, то есть ключи предпочтительно должны быть структурно независимы. Предпочтительно, для фильма обычной длины используются тысячи различных ключей, и каждый ключ соответствует сегменту определенной длины, например несколько секунд, примерно менее двух или трех секунд, и, наиболее желательно, менее секунды. Большая часть медиапродукции имеет существенную ценность только в случае завершенности. Например, фильм, в котором отсутствуют несколько последних минут, обычно имеет очень маленькую ценность. Таким образом, некто, намеревающийся незаконно скопировать фильм, будет вынужден дешифровать каждый из сегментов.
Для поддержания непрерывного потока расшифровки данных, в некоторых вариантах осуществления настоящего изобретения клиент может запросить текущий ключ и следующий ключ (следующие ключи) и кешировать в памяти небольшое количество ключей (например 2, 3, 4 и т.п.).
Обычно защищенный сервер удален от средства просмотра и в дальнейшем называется "сервер защиты".
Шифрование фильма обычно проходит в доверенной среде. Предпочтительно, созданные в процессе шифрования ключи доставляются на сервер защиты, который находится в доверенной среде поставщика. Однако, хотя после этого ключи передаются с сервера защиты в средство просмотра, фильм или другой медиапродукт могут передаваться откуда угодно. Например, фильм или другой медиапродукт могут передаваться потоком с отдельного сервера вне доверенной среды. Таким образом, в одном из предпочтительных вариантов осуществления после того, как фильм был зашифрован в доверенной среде, он может быть передан на незащищенный потоковый сервер.
Таким образом, в данной схеме клиент, который может представлять собой работающую на удаленном компьютере (например, персональном компьютере пользователя) программу просмотра, осуществляет связь с сервером защиты, чтобы получить ключи (называемые здесь медиаключами), и с отдельным потоковым сервером.
Медиаключи предпочтительно передаются клиенту после запроса от клиента, и эта передача предпочтительно выполняется с использованием протокола обмена ключами, который использует генератор случайных чисел и известный средствам просмотра открытый ключ сервера защиты.
В одном из осуществлений, при необходимости получения следующего медиаключа, клиент генерирует случайные данные и шифрует их посредством открытого ключа сервера безопасности. Зашифрованные данные затем могут включаться в запрос следующего медиаключа, предпочтительно вместе с идентифицирующими клиента данными, который отправляется на сервер защиты. При получении запроса сервер защиты проверяет, есть ли у клиента права на получение медиапродукции, дешифрует и извлекает случайные данные и осуществляет операцию шифрования, используя эти данные и запрашиваемый ключ, с использованием случайных данных. В одном из вариантов к ним может быть применена операция "исключающее ИЛИ". Результат отправляется обратно клиенту. При получении результата клиентом, он может извлечь запрошенный ключ из результата путем выполнения соответствующей функции, например осуществляя исключающее ИЛИ с теми же самыми случайными данными, которые были предоставлены в изначальном запросе ключа. Таким образом, зашифрованный закодированный медиапоток может быть дешифрован без каких-либо секретных ключей, спрятанных в исходном коде средства просмотра.
Открытый ключ предпочтительно включается в вычисление контрольной суммы с целью предотвращения "атаки посредника" (man in the middle), при которой происходит подмена открытого ключа.
В предпочтительном варианте протокола предпринимаются шаги для гарантии того, что проверяемый мобильным средством защиты клиент является тем же клиентом, который генерирует случайные данные. Это может быть выполнено расширением входных данных для контрольной суммы таким образом, чтобы включить туда используемые для запроса медиаключа случайные данные. Таким образом, входные данные для контрольной суммы могут включать код от клиента, открытый ключ сервера защиты и случайные данные, отправленные с запросом ключа.
Поскольку внешние источники энтропии могут отслеживаться, используемый для генерации случайных чисел источник энтропии может реализовываться самой средой выполнения, исходя из того, как планируются и прерываются задачи. Таким образом, процесс генерации случайных данных может состоять из создания нескольких потоков, которые выполняют разные вычислительные задачи, что может подаваться на вход алгоритма безопасного хеширования (secure hash algorithm) вместе с данными от текущего состояния средств просмотра и выполняемых мобильных средств защиты.
Необходимость получения клиентом непрерывной последовательности ключей может быть использована для принуждения пользователя к сотрудничеству. Таким образом, в случае если клиент не выполняет определенный требуемый поставщиком шаг, поставка ключей может быть прекращена. Как будет подробно описано далее, этот шаг может являться проверкой целостности клиента, и, предпочтительно, запрос нового ключа удовлетворяется только после того, как так называемое "мобильное средство защиты" показывает, что средство просмотра не было модифицировано.
В случае использования мобильного средства защиты возможно, чтобы оно генерировало случайные числа, используемые в предпочтительном протоколе обмена ключами, описанном выше, вместо фактического клиентского средства просмотра/программы воспроизведения.
Следует принять во внимание, что подобное принуждение к сотрудничеству становится возможным, поскольку поставщик содержания контролирует медиапродукцию и поскольку медиапродукция имеет протяженность во времени, так что медиапродукция может доставляться маленькими частями, и от пользователя требуется сотрудничество для получения последующих частей. Это контрастирует с традиционными системами, в которых лицензия открывает весь медиапродукт, фактически устраняя свойство протяженности во времени.
В альтернативном воплощении настоящего изобретения доверенная среда расширена таким образом, что включает в себя потоковый сервер. После такого расширения становится возможным использовать потоковый сервер для генерирования медиаключей и шифрования медиапотока на лету. Это обеспечивает шифрование каждого медиапотока уникальным набором медиаключей. Это означает, что ставший известным медиаключ не может быть использован для дешифрования другой копии того же самого фильма. Для содействия распространению медиаключей потоковый сервер отправляет ключи на сервер защиты, который выдает их на средство просмотра, как описано выше. Недостатком такого подхода является то, что необходимо доверять еще одному компоненту и что шифрование на лету требует больших вычислительных затрат. Таким образом, существует компромисс между очень высоким уровнем безопасности, с одной стороны, и сложностью доверенной среды и вычислительными затратами, с другой стороны.
Изобретение не ограничено схемой, в которой медиапродукт передается потоком с удаленного сервера. Поскольку медиапродукт зашифрован, то может распространяться любым удобным образом. Таким образом, зашифрованный медиапродукт может быть предоставлен клиенту с локального сервера или на физическом носителе (например, DVD-диске). Медиапродукт может быть затем передан с локального сервера или физического носителя на средства просмотра и дешифрован описанным выше образом.
Хотя настоящая схема представляет собой значительное улучшение по сравнению с известным уровнем техники, однако остается риск изменений в средстве просмотра, так что зашифрованный медиапродукт (фильм и т.п.) может быть записан и скопирован. Таким образом, предпочтительно, изобретение дополнительно содержит средства проверки целостности средств просмотра для гарантии того, что средства просмотра не были подвергнуты несанкционированному вмешательству. Этого можно достичь программированием средств просмотра так, чтобы они отправляли сигнал, такой как контрольная сумма, на сервер защиты через регулярные интервалы времени и/или при запросе ключа. Такой сигнал образовывался бы так, чтобы зависеть от состояния средств просмотра, так что любая модификация средств просмотра изменяла бы сигнал.
Однако сохраняется риск преодоления подобной меры при помощи программирования модифицированных средств просмотра так, чтобы отправлять "правильный" сигнал вне зависимости от истинного состояния средств просмотра. Предпочтительно, способ далее требует, чтобы сервер защиты опрашивал средства просмотра при помощи ряда различных тестов, которые меняются со временем. В особенно предпочтительном варианте, тесты включают использование случайным образом сгенерированных алгоритмов, которые будут возвращать верный результат только в случае отсутствия модификации средств просмотра. Кроме того, неуспешный ответ или ненормальная задержка при ответе могут быть приняты как указание на модификацию средств просмотра.
Таким образом, предпочтительно сервер защиты выполнен таким образом, чтобы прекращать поставки ключей в случае, если выявлена модификация средств просмотра и/или если проверка целостности средств просмотра неуспешна.
Наиболее предпочтительная схема состоит в передаче алгоритмов сервером защиты клиенту в форме программного кода (например машинного кода). Программный код можно назвать "мобильным средством безопасности", что описывается далее.
Подобная система проверки целостности рассматривается как самостоятельная концепция изобретения и, таким образом, в следующем аспекте предлагается способ передачи данных клиенту, содержащий следующие шаги:
(a) передача данных клиенту,
(b) передача программного кода, содержащего алгоритм, с сервера защиты клиенту, причем результат алгоритма является функцией состояния клиента,
(c) выполнение кода клиентом,
(d) возврат результата на сервер защиты, и
(е) определение, указывает ли результат на отсутствие модификации средств просмотра.
Данные могут представлять собой медиапродукцию, предаваемую потоком клиенту, например, через Интернет, или же доставляемую с локального сервера, DVD-диска или других носителей, как рассмотрено выше. Однако, как будет более подробно рассмотрено ниже, это может быть любой тип данных, которые можно передать между сервером и клиентом. Клиент может представлять собой выполняемую на компьютере программу или аппаратное устройство, такое как телевизионная абонентская приставка. Упомянутый в шаге (b) алгоритм может быть передан перед передачей какой-либо части медиапродукта, или же весь медиапродукт целиком или его часть может быть передана перед алгоритмом. Предпочтительно, медиапродукт не просматривается до того, как не будет выполнен шаг (е).
В зависимости от результата шага (е) может быть предпринято подходящее действие. В случае потоковой передачи медиапродукции, если обнаружено отсутствие модификации средств просмотра, передача медиапродукции и любых необходимых для ее дешифрования ключей, как правило, может быть продолжена. Однако может присутствовать дополнительный шаг (f) прекращения передачи медиапродукции и/или необходимых для дешифрования медиапродукции ключей в случае, если результат не указывает на то, что клиент не модифицирован. Предпочтительно, если результат от мобильного средства защиты не поступает, считается, что это также указывает на модификацию клиента.
В случае передачи медиапродукции с локального источника, такого как локальный сервер, DVD-диск и т.п., предпринимаемым действием может быть прекращение передачи необходимых для дешифрования произведения ключей.
Альтернативно, в случае обнаружения того, что клиент был модифицирован, могут быть предприняты другие действия. Например, передача может быть продолжена и собраны материалы для идентификации пользователя. Это может быть уместным в случае намерения предпринять правовые действия или провести расследование, например, выявить преступную деятельность или предотвратить нелегальное копирование медиапродуктов в будущем.
Как указано выше, предпринимаемое в ответ на обнаружение модификации клиента действие может представлять собой прекращение передачи ключей дешифрования. Следует принять во внимание, что способ может дополнительно включать в себя разделение медиапродукции на множество распределенных по времени сегментов, которые зашифрованы с использованием различных ключей. Эти ключи могут выдаваться клиенту последовательно, предпочтительно так, как описано выше. Таким образом, при прекращении выдачи ключей оставшаяся часть медиапродукта не может быть дешифрована.
Способ предпочтительно реализуется с использованием случайно генерируемых секретных алгоритмов в программном коде (как указано выше). Эти так называемые алгоритмы принуждения генерируют результат, зависящий от состояния клиента (например, средств просмотра), но верный результат не может быть угадан пользователем из-за присутствия случайности. Предпочтительно, они включают вычисление контрольной суммы, входными данными которой является программный код средств просмотра. Хотя алгоритм в целом является секретным, вычисление контрольной суммы может быть известным алгоритмом, таким как Message Digest Algorithm 5 (MD5) (RFC1321, www.fags.org/rfcs/rfc1321.html), который может использоваться в комбинации с рандомизированной модификацией входных данных.
Модификацией входных данных называется создание модификатора случайным образом, который переставляет данные, являющиеся входными данными контрольной суммы. В одном варианте осуществления при генерации программного кода (называемого здесь "мобильным средством защиты") определяется случайная последовательность. При выполнении алгоритма входной код средств просмотра разделяется на n блоков одинакового размера. Затем блоки перемешиваются в вышеупомянутой случайной последовательности, и результат подается в качестве входных данных в алгоритм контрольной суммы. Хотя в данной схеме сам алгоритм контрольной суммы известен, его результат является функцией порядка, в котором n блоков поступают на вход алгоритма. Этот порядок известен серверу защиты, и тем самым сервер защиты может определить, указывает ли полученный результат на сохранность средства просмотра.
Альтернативный подход создания фильтрующей входные данные контрольной суммы заключается в разложении известного алгоритма контрольной суммы и его восстановлении таким образом, чтобы он читал входные данные в заданной последовательности.
Вместо использования фильтрации входных данных можно генерировать функцию контрольной суммы с самого начала. Так, входные данные могут быть разбиты на I слов (32 бита) и создана функция f, которая читает I слов на входе и m слов из переменной области, которая выдает слова. Функция может включать случайное число присваиваний, которые выполняются одно за другим, и контрольная сумма может быть суммой по модулю 232 всех результатов применения f.
Формирование функций обладает тем преимуществом, что почти весь код алгоритма контрольной суммы создается случайно, что приводит к большему структурному разнообразию в коде. Поскольку «строительные блоки» достаточно малы, это позволяет облегчить перемежение с другими алгоритмами.
Программный код также предпочтительно включает дополнительные алгоритмы, которые могут быть секретными или несекретными. Они предпочтительно функционально и/или пространственно смешаны с секретным алгоритмом. Таким образом клиентский компьютер/средство просмотра можно заставить выполнять дополнительные алгоритмы, поскольку в противном случае секретный алгоритм не будет выполнен. Дополнительные алгоритмы могут использоваться, например, для проверки целостности аппаратных средств просмотра.
Поскольку мобильное средство защиты находится в той же среде, что и средства просмотра, оно потенциально уязвимо для атак. Пользователь может попытаться модифицировать мобильное средство защиты с целью обойти осуществляемые средством защиты способы защиты. Автоматизированные атаки на мобильное средство защиты могут быть предотвращены путем обеспечения того, чтобы мобильные средства защиты создавались частично случайным образом, как описано выше. Дополнительно, к мобильным средствам защиты могут быть применены преобразования обфускации (преднамеренного запутывания кода и данных). Мобильное средство защиты может скрывать контрольную сумму в закрытой структуре данных, которая перемежается контрольной суммой специфическим для мобильного средства защиты образом. Переменные могут быть расположены случайно в памяти мобильных средств защиты и, дополнительно, команды мобильных средств защиты могут быть разбиты на блоки, также случайно расположенные в памяти. Это предпочтительно включает точку входа мобильных средств защиты. В самом деле, точка входа одного из мобильных средств защиты может предоставляться предыдущими средствами защиты.
В случае выполнения указанных шагов становится необходимой атака человеком для преодоления обфускации перед тем, как может быть начата любая автоматизированная атака. Такой подход неизбежно занимает значительное время и, при условии короткого "интервала доверия" между последовательными мобильными средствами защиты подход не будет эффективным. Другими словами, поскольку мобильные средства защиты часто сменяются, для реализации атаки остается недостаточно времени. Таким образом, процесс обфускации защищает мобильные средства защиты от несанкционированного вмешательства на интервал времени, проходящий до их замены другими мобильными средствами защиты.
Существует риск того, что наблюдатель следит за участками памяти в компьютере, в которых хранятся дешифрованные данные фильма. При использовании известных участков памяти данные могут быть скопированы. Следовательно, нежелательна предсказуемость обнаружения кода при помощи идентификации определенных участков памяти (основанная на расположении идентификация), и предпочтительно, если расположение было использовано, оно не должно быть использовано повторно. Также идентификация по шаблону, когда можно обнаруживать код путем поиска последовательностей, подобных заголовкам MPEG, предпочтительно также должна быть предотвращена.
Средства просмотра, тем самым, предпочтительно защищены мобильными средствами защиты от определения состояния путем наблюдения. Для обеспечения этого мобильные средства защиты предпочтительно дополнительно включают один или несколько защитных алгоритмов для защиты против подобных атак. Для достижения этого мобильные средства защиты могут выполнять задачи обфускации в клиенте (например, в программе просмотра), что далее называется "обфускация времени выполнения на средстве просмотра", то есть обфускация выполняется на средства просмотра в процессе их работы. Подобная защита изменяет отображение в памяти функционирующих средств просмотра.
Такая обфускация времени выполнения на средствах просмотра рассматривается как дополнительная идея изобретения, и, согласно еще одному аспекту, изобретение представляет собой способ обфускации выполняющихся средств просмотра, включающий рандомизацию отображения в памяти выполняющихся средств просмотра.
Обфускация времени выполнения на средствах просмотра может включать один или более из перечисленных далее приемов.
Перемещение кода включает передвижение блоков кода в памяти. По мере выполнения программы мобильные средства защиты перемещают код в другие части памяти, которые в дальнейшем будут выполняться. Этот алгоритм предпочтительно тесно перемежается с вычислением контрольной суммы.
Предпочтительно, перемещение кода реализуется посредством (1) идентификации всех основных конструктивных модулей программы и разделение их на маленькие сегменты, которые могут быть перемещены; (2) во время выполнения мобильных средств защиты указанные сегменты могут быть перемещены в памяти в случайные положения; (3) модификации всех команд перехода с целью соответствия новым положениям кода. В результате, атакующий столкнется с отображением в памяти, изменяющимся в процессе выполнения мобильных средств защиты. Поскольку положение сегментов определяется мобильными средствами защиты, которые предоставлены сервером защиты, положение непредсказуемо для атакующего, который тем самым не может опираться на предположение, что определенные положения в памяти содержат определенные данные.
Перемещение данных включает перемещение данных и изменение команд, осуществляющих к ним доступ. Новые расположения опять могут быть определены случайным образом.
Скрытие данных адресует проблему положения и идентификации по шаблону. Один подход состоит в применении двусторонней функции для изменения внешнего вида данных, фактически, маскируя данные. Предпочтительно, используется простое одноразовое дополнение. Это может заключаться во вновь создаваемой функции деления по модулю, которая создает индекс в массиве случайных данных. Случайные данные могут использоваться для изменения уязвимых данных путем применения исключающего ИЛИ к случайной и уязвимой части. Предпочтительно операция исключающего ИЛИ применяется между указанными данными и частью адреса уязвимых данных.
Один из подходов состоит в скремблировании (маскировке) и дескремблировании данных, так что уязвимые данные хранятся в скремблированной форме, дескремблируются при необходимости, и затем заново скремблируются либо уничтожаются. Однако подобный подход оставляет небольшой промежуток времени, когда данные дескремблированы.
Однако можно воспользоваться обработкой потока, чтобы отложить дескремблирование до тех пор, пока данные не окажутся в регистрах процессора.
Таким образом, данный декодер содержания может быть модифицирован для выполнения последней операции дешифрования в момент, когда ему понадобятся новые данные. Это означает, что в главной памяти вообще не будут присутствовать дешифрованные данные. Этого можно достигнуть при помощи следующих шагов:
a) мобильное средство защиты модифицирует декодер для выполнения последнего шага дешифрования по необходимости;
b) поступает следующий зашифрованный сегмент;
c) поступает медиаключ для зашифрованного сегмента;
d) генерируется дешифрованный поток и помещается в случайные положения в памяти согласно тому, как был модифицирован декодер;
e) декодер затем читает байт или слово за раз и дешифрует их по необходимости.
Диверсификация кода включает операции, выполняемые мобильными средствами защиты над клиентской программой во время выполнения. Выполняемые операции изменяют код таким образом, что он состоит из других команд без изменения семантики кода. Это позволяет предотвратить идентификацию по шаблону. Могут быть выполнены один или несколько из следующих шагов.
Могут быть вставлены контекстно-независимые команды. Они представляют собой команды, входной контекст которых может быть общим с контекстами в программе, но выходной контекст которых отличен от любого входного контекста в программе. Поскольку данные команды не могут повлиять ни на один входной контекст программы, не имеет значения, что они обрабатывают.
Контекстно-зависимые команды могут быть заменены командами, выполняющими те же функции. Следует принять во внимание, что достичь этого сложнее, но указанная замена также более эффективна, поскольку такие команды не могут быть идентифицированы путем анализа потока данных.
Функционально независимые изменения, которые могут быть проведены, включают изменение порядка выполнения команд, вставку команд с временными переменными или без них, переупорядочивание команд в памяти и проведение изменений хода выполнения.
Функционально зависимые изменения требуют осторожности для сохранения функций и побочных эффектов неизменными. Эти изменения включают замену команд функциональными эквивалентами, введение тождественных функций, введение операторов, таких, что литеральные значения заменяются командами, инициализирующими значение произвольным образом, и выполняющими операцию исправления значения на исходное литеральное значение. Также могут быть введены переменные, так что копии в адресате информации заменяются копиями вновь созданных переменных.
В воплощении, в котором используется аппаратная реализация средств просмотра, например телевизионная абонентская приставка, распространитель средств просмотра контролирует не только программное обеспечение средств просмотра, но также среду средств просмотра, то есть аппаратную часть и операционную систему. Следовательно, аппаратные средства просмотра могут быть, как правило, проверены мобильными средствами защиты намного более полно, чем чисто программное решение. В этом варианте осуществления алгоритм контрольной суммы в мобильных средствах защиты не ограничен проверкой программного обеспечения средств просмотра, но может также проверять различные аспекты операционной системы и аппаратуры.
Таким образом, система может использоваться двумя способами в связи с аппаратными средствами просмотра. Во-первых, она может использоваться для замены решений, основанных на дорогостоящей защищенной от несанкционированного использования аппаратуре. Во-вторых, система может обеспечить дополнительные меры защиты, которые начинают функционировать в случае, когда защищенная от несанкционированного использования аппаратура скомпрометирована.
Далее будет видно, что изобретение предпочтительно относится к комбинации индивидуально зашифрованных сегментов медиапродукта и использования понятия "мобильные средства защиты". Таким образом, в еще одном аспекте, изобретение предлагает способ передачи медиапродукции клиенту, содержащий следующие шаги:
(a) шифрование медиапродукта с использованием последовательности различных ключей, относящихся к соответствующим распределенным во времени сегментам медиапродукта,
(b) передача программного кода, включающего алгоритм, с сервера защиты клиенту, причем результат алгоритма является функцией состояния клиента,
(c) выполнение кода клиентом и возврат результата на сервер защиты,
(d) определение, указывает ли результат на отсутствие модификации средств просмотра,
(e) передача сегмента с сервера в средства просмотра,
(f) защищенная потоковая передача ключа, соответствующего переданному сегменту, с защищенного удаленного сервера на средства просмотра в случае, если результат указывает на отсутствие модификации средств просмотра,
(g) дешифрование сегмента посредством ключа.
Следует понимать, что, хотя шаги могут быть выполнены в указанной выше последовательности, по меньшей мере некоторые шаги могут быть выполнены в другом порядке, или одновременно. Например, шаг (е) может быть выполнен одновременно с шагами (b), (с), (d) или (f), так что сегменты передаются до, совместно или после ключей. Однако ключи должны быть доступны до дешифрования сегмента.
В одном из вариантов воплощения, способ содержит дополнительный шаг (h), на котором повторяются шаги с (b) по (g).
Однако, как правило, у переданного программного кода есть определенное "время жизни" или "интервал доверия", например менее 30 секунд. С другой стороны, сегменты, как правило, передаются чаще по сравнению со временем жизни программного кода, например один сегмент в секунду. По существу, новый программный код не нужно передавать каждый раз при передаче сегмента, но, как правило, нужно передать только после истечения времени жизни существующего программного кода. Таким образом, шаги с (е) по (g), как правило, повторяются до появления необходимости в новом программном коде, когда повторяется шаг (b). Таким образом, один экземпляр программного кода (мобильного средства защиты) защищает доставку многих ключей.
Хотя выполнение кода и определение того, указывает ли результат на отсутствие модификаций средств просмотра (шаги с и d), могут быть выполнены более одного раза для каждого куска программного кода, как правило, необходимо выполнить указанные шаги только один раз на протяжении времени жизни программного кода. По существу, шаги (с) и (d) будут повторяться только после повторения шага (b).
В еще одном аспекте изобретение предлагает способ передачи медиапродукции клиенту, содержащий следующие шаги:
(a) шифрование медиапродукта с использованием последовательности различных ключей, относящихся к соответствующим распределенным во времени сегментам медиапродукта,
(b) передача программного кода, включающего алгоритм, с сервера защиты клиенту, причем результат алгоритма является функцией состояния клиента,
(c) выполнение кода клиентом и возврат результата на сервер защиты,
(d) определение, указывает ли результат на отсутствие модификации средств просмотра,
и дополнительно содержит следующие шаги:
(e) передача сегмента с сервера в средства просмотра,
(f) защищенная потоковая передача ключа, соответствующего переданному сегменту, с защищенного удаленного сервера в средства просмотра в случае, если результат указывает на отсутствие модификации средств просмотра,
(g) дешифрование сегмента посредством полученного медиаключа,
(h) в случае, если шаг (d) указывает на модификацию средств просмотра, прекращение передачи дальнейших ключей, в противном случае повторение шагов с (е) по (g).
Предпочтительно, способ дополнительно содержит шаг (i) повторения шагов с (b) по (d).
Следует понимать, что хотя шаги могут быть выполнены в указанной выше последовательности, по меньшей мере некоторые шаги могут быть выполнены в другом порядке, или одновременно. В действительности, некоторые шаги могут выполняться большее количество раз, чем другие.
Шаги с (b) по (d) могут выполняться независимо от шагов с (е) по (h), и предпочтительно выполняются одновременно с ними. Как упомянуто ранее, у программного кода, как правило, есть время жизни, охватывающее посылку многих сегментов и ключей. В этой связи повторение шагов с (b) по (d), упомянутое в шаге (i), будет, как правило, выполняться реже, чем повторение шагов с (е) по (g), упомянутое в шаге (h). Предпочтительно, шаг (i) выполняется только в случае истечения времени жизни программного кода. Изобретение также касается устройства, выполненного с возможностью функционирования, описанного выше, и включающего клиент, выполненный с возможностью получения такого медиапотока, а также сервер как в комбинации, так и отдельно. Таким образом, в еще одном аспекте изобретение предлагает систему для доставки медиапродукции клиенту, содержащую:
(a) средства передачи медиапродукции клиенту,
(b) средства передачи программного кода, включающего алгоритм, с сервера защиты клиенту, при этом результат алгоритма является функцией состояния клиента,
(c) связанные с сервером защиты средства получения результата и определения, указывает ли полученный результат на отсутствие модификаций средств просмотра.
Другой аспект изобретения предлагает клиент, например средства просмотра для проигрывания медиапродукции, такой как фильм, при этом клиент выполнен с возможностью получения медиапродукции и получения программного кода, включающего алгоритм, от удаленного источника; выполнения алгоритма клиентом; и возврата результата алгоритма на удаленный источник, посредством этого демонстрируя целостность клиента отдаленному источнику и позволяя воспроизведение медиапродукта.
Клиент предпочтительно делает возможным воспроизведение медиапродукта путем его дешифрования или путем дешифрования сегмента медиапродукта с использованием ключа, переданного клиенту удаленным источником. Предпочтительно клиент выполнен с возможностью запроса последовательности ключей и использует ключи последовательно для дешифрования последующих участков медиапродукта, которые затем воспроизводятся непрерывным образом. Предпочтительно, как обсуждалось выше, обеспечение ключами зависит от демонстрации клиентом своей целостности источнику.
Изобретение также распространяется на комбинацию системы для доставки медиапродукции описанным выше способом и клиента, в которой медиапродукты доставляются клиенту и могут быть воспроизведены только в случае, если средства просмотра продемонстрируют свою целостность источнику.
В дальнейшем станет ясно, что в отличие от программных решений предшествующего уровня техники настоящее изобретение не полагается на содержащиеся в доступных пользователю данных секретные сведения, в коде программы или же в медиапродукции. Это позволяет раннее обнаружение попыток копирования и позволяет поставщику содержания предпринять контрмеры прежде, чем сможет быть скопирована существенная часть медиапродукта.
Также было обнаружено, что у концепции проверки целостности системы с использованием мобильных средств защиты есть другие применения помимо передачи медиапродуктов клиенту. Она может использоваться в общем для проверки целостности и подлинности выполняемого в неконтролируемой среде кода, который выполняет вычисления на входных данных. Она может использоваться для предотвращения скрытого изменения способа обработки данных третьей стороной. Таким образом, обсуждение выше относительно средств просмотра медиапродукции может быть применено к любой клиентской программе. Применения включают игры, банковское дело, аудио, и т.д.
Таким образом, в еще одном аспекте изобретение предлагает передачу программного кода (такого как мобильные средства защиты) из защищенного источника на клиентский компьютер, выполняющий клиентскую программу, причем программный код содержит алгоритм, результат которого является функцией состояния клиентской программы; выполнение программного кода и возврат результата источнику, посредством чего источник может определить целостность клиентской программы. Изобретение также распространяется на устройство, выполненное с возможностью функционирования в соответствии с таким способом.
В данном аспекте изобретение может использовать любые или все из обсуждаемых выше предпочтительных признаков, в частности касающихся мобильных средств защиты. Данные выше ссылки на медиапродукцию аналогично применяются к полезным данным, имеющим протяженность во времени, отправляемым между сервером и клиентом. Таким образом, поставщик услуг может принудить к сотрудничеству клиент пользователя тем же самым способом и может отказать в дальнейших полезных данных, если прекращается сотрудничество либо обнаружено несанкционированное вмешательство.
Таким образом, следует понимать, что можно проверять целостность любого клиента, который осуществляет связь с сервером, на постоянной основе. Изобретение тем самым позволяет доверять клиенту, который функционирует в неконтролируемой среде. Если выясняется, что целостность клиента скомпрометирована, могут быть предприняты меры. Например, может быть прервана связь с клиентом, приостановлена подача ключей дешифрования (как в случае с обсуждаемыми выше приложениями для передачи медиапотока) и/или предприняты шаги для сбора материалов (например, в случае подозреваемых мошеннических атак на банковские системы).
Изобретение полезно в контексте распределенных вычислений, где, хотя конфиденциальность и непорядочность обычно не являются проблемой, стоит проблема правильного выполнения программ. Таким образом, мобильное средство защиты может использоваться для защиты от преднамеренной или непреднамеренной модификации клиента - как его программного обеспечения, так и, если требуется, аппаратного оборудования. Таким образом, запускающий задачу распределенных вычислений объект может использовать мобильные средства защиты для проверки правильности функционирования клиентов, находящихся на выполняющих вычисления отдаленных узлах.
В контексте онлайновых игр модификация программ клиента может позволить жульничество, которое в случае отсутствия контроля может вызвать неудовлетворенность клиентов и привести к потере дохода. Задействованные данные не являются конфиденциальными и их запись не имеет большого смысла (по сравнению с медиапродукцией), таким образом, обычно достаточно ограничиться проверкой целостности программного обеспечения клиента. В случае функционирования игры на основе схемы клиент-сервер мобильные средства защиты могут применяться, как описывалось выше. Если пользователь не позволяет сотрудничество с мобильным средством защиты, ему может быть отказано в обновлении глобального игрового состояния.
В случае домашнего банковского обслуживания мобильные средства защиты могут использоваться для обеспечения того, что третьи лица не имеют доступа к конфиденциальным данным. В то время как обычный пользователь обычно не заинтересован в модификации его клиентской программы, он может оказаться жертвой "атаки посредника". Банковский сервер тем самым может использовать мобильное средство защиты для проверки целостности и подлинности домашнего банковского клиента и может также содержать открытый ключ банковского сервера. Данный открытый ключ используется для шифрования всех передаваемых с домашнего банковского клиента на банковский сервер данных, и поскольку целостность мобильных средств защиты гарантирована, пользователь может быть уверен в конфиденциальности своих данных.
Изобретение распространяется на устройства, выполненные с возможностью использования описанных выше способов, и на программные продукты, которые содержат инструкции, обеспечивающие работу компьютеров подобным образом. Изобретение также распространяется на комбинации клиент-сервер и/или сети, где данные доставляются клиенту в соответствии с обсуждаемыми выше аспектами изобретения.
Краткое описание чертежей
Далее посредством примеров описаны определенные варианты осуществления изобретения со ссылками на прилагаемые чертежи.
Фиг.1 представляет собой схематическое изображение системы передачи медиапотока известного уровня техники, описанной выше;
Фиг.2 представляет собой схематическое изображение первого варианта осуществления настоящего изобретения;
Фиг.3 представляет собой схематическую диаграмму, демонстрирующую используемый в варианте осуществления генерируемый случайным образом алгоритм контрольной суммы;
Фиг.4 представляет собой блок-схему, демонстрирующую работу варианта осуществления изобретения;
Фиг.5 представляет собой блок-схему используемого в варианте осуществления изобретения алгоритма сервера.
Осуществление изобретения
Как можно видеть на фиг.2, клиент имеет средство 10 просмотра, которое может использоваться для просмотра медиапродукции (например, фильмов), которые передаются потоком с потокового сервера 11 или альтернативно с локального хранилища медиапродукции, например, CD-диска 12. Каждый из этих компонентов системы находится вне доверительной среды 13. В пределах доверительной среды находится незашифрованный фильм 14, используемый для генерации защищенного фильма 16 инструмент 15 защиты, и сервер 17 защиты.
Как и в системе известного уровня техники, изображенной на фиг.1, владелец содержания защищает закодированный медиапродукт перед его доставкой клиенту. Однако, вместо использования единственного медиаключа, инструмент 15 защиты шифрует фильм очень большим числом (тысячами) медиаключей 20. В результате этого процесса получается зашифрованный закодированный фильм 16. Медиаключи 20 распространяются таким способом, что они распределены по времени; в процессе воспроизведения медиапродукта ключи защищенным образом передаются потоком клиенту по одному ключу за раз через интервалы времени по запросу, как будет подробно описано ниже. Сам медиапродукт передается отдельно. Каждый ключ содержит всего нескольких байт (около шестнадцати), так что необходимые для передачи ключей потоком ресурсы создают низкую дополнительную нагрузку.
Каждый ключ может дешифровать только порядка секунды или максимум несколько секунд фильма, так что получение только одного ключа имеет маленькую ценность.
В первом варианте осуществления изобретения защищенный фильм доставляется клиенту в виде потока данных по пути А, через потоковый сервера 11 и медиапоток 18. В дальнейших вариантах осуществления используются материальные носители, например, CD-диск или DVD-диск 12.
Средство 10 просмотра выполняется в клиентской компьютерной системе и выполнено с возможностью получения защищенного фильма 16 с потокового сервера 11 путем медиапотока 18 (или с CD/DVD-диска в других воплощениях). Во время процесса воспроизведения, средство 10 просмотра осуществляет связь с сервером 17 защиты для загрузки необходимых для дешифрования защищенного фильма 16 медиаключей 20.
Кроме того, средство 10 просмотра также загружает фрагменты кода, называемые мобильными средствами 19 защиты (МСЗ), через регулярные интервалы, приблизительно, 30 секунд. Каждое из мобильных средств защиты содержит внедренную секретную информацию в виде алгоритма, созданного в сервере 17 защиты. Выполнение этих алгоритмов необходимо для использования переданных потоком данных 18. Когда каждое мобильное средство 19 защиты передается в средство просмотра, оно осуществляет вычисления, определяемые секретным алгоритмом, и возвращает результат на сервер защиты. Мобильное средство защиты структурировано таким образом, что результат вычисления верен только в случае отсутствия несанкционированного вмешательства в средство просмотра. Результат секретного алгоритма содержит контрольную сумму, доказывающую серверу защиты целостность средства просмотра.
Мобильное средство защиты может также содержать другие дополнительные алгоритмы, функционально и пространственно смешанные с секретным алгоритмом. Таким образом, клиентский компьютер/средство просмотра может быть принужден выполнять дополнительные алгоритмы, поскольку в противном случае секретный алгоритм не будет реализован. Тем самым средство просмотра может быть полностью проверено.
Если возвращенный мобильным средством защиты на сервер 17 защиты результат не совпадает с ожидаемым результатом, сервер защиты прекращает поставку медиаключей 20 в средство просмотра. То же самое происходит в случае, если средство 10 просмотра отказывается от мобильного средства защиты или если верный результат не поступает в пределах определенного времени. Протокол обмена ключами будет детально объяснен далее.
Секретные алгоритмы основаны на вычислениях контрольной суммы, имеющих высокую вероятность обнаружения изменений в проверяемых данных (то есть в коде средства просмотра). Как можно видеть на фиг.3, сгенерированный случайным образом алгоритм 21 контрольной суммы (для использования в мобильном средстве защиты) использует вычисление контрольной суммы, разделенное на два шага: модификацию 22 входных данных, осуществляемую случайным образом, и известное вычисление 23 контрольной суммы, выполняемое на измененных входных данных. Эти шаги вместе образуют рандомизированный секретный алгоритм контрольной суммы.
Модификацией входных данных называется создание случайным образом модификатора, который переставляет входные данные для вычисления 23 контрольной суммы. При генерации мобильного средства защиты сервером защиты определяется случайная последовательность. При выполнении средством просмотра алгоритма 21 контрольной суммы, входной программный код средства просмотра разделяется на n блоков одного размера. Далее блоки перетасовываются в указанной случайной последовательности на шаге 22 модификации входных данных. Результат передается на шаг 23 вычисления контрольной суммы. Вычисление контрольной суммы использует известный алгоритм MD5. Затем выполняется вычисление контрольной суммы, и результат возвращается на сервер защиты.
Следует понимать, что хотя алгоритм контрольной суммы известен, результат действия алгоритма является функцией порядка, в котором блоки поступают на вход алгоритма. Этот порядок известен серверу защиты, и тем самым сервер защиты может определить, указывает ли возвращенный результат на сохранное средство просмотра.
Мобильное средство защиты нужно защищать от несанкционированного вмешательства и от слежения за его внутренним функционированием. Первый аспект защиты мобильного средства защиты заключается в создании случайным образом новых версий каждый раз, когда возникает необходимость проверки средства просмотра. Во-вторых, время жизни мобильного средства защиты в среде средства просмотра коротко (менее 30 секунд). Хотя человеческие (т.е. интеллектуальные, в отличие от автоматизированных) атаки на мобильное средство защиты теоретически возможны, такие атаки займут значительное время. Благодаря тому, что каждое мобильное средство защиты обладает исчисляемым в секундах сроком действия, атаки с вовлечением человека становятся фактически невозможными, поскольку мобильное средство защиты устаревает задолго до окончания любой подобной атаки.
Мобильное средство защиты скрыто, как рассмотрено ранее, для защиты от автоматизированной атаки.
Мобильное средство защиты рандомизирует отображение в памяти функционирующего средства просмотра, что в дальнейшем называется "обфускация времени выполнения на средстве просмотра". Области кода и данных средства просмотра переставляются и стек скремблируется. Этот процесс подробно описан ниже.
Следствием обфускации времени выполнения на средстве просмотра является обеспечение возможности выполнения исключительно интеллектуальных атак на отображение в памяти средства просмотра, поскольку при этом рандомизируются и тем самым скрываются положения в памяти дешифрованного декодированного потока.
Для рандомизации положений, где происходит обращение к памяти, мобильное средство защиты модифицирует структуру кода средства просмотра и область данных. Код и область данных разбиваются на логические сегменты. Внимательно прослеживается, чтобы границы сегментов не находились внутри машинных кодов.
После того как вновь загруженное мобильное средство защиты получает управление и перед началом дешифрования потока, мобильное средство защиты перемещает сегменты в новые положения. Данный процесс включает модификацию сегментов кода - аналогично релокации, осуществляемой динамическими линкерами (компоновщиками) - для обеспечения того, что
1) команды перехода и ветвления (условного перехода) передают управление в перемещенные положения;
2) команды чтения и записи обращаются к данным в перемещенных положениях.
После перемещения сегментов мобильное средство защиты осуществляет работу до своей замены следующим мобильным средством защиты.
Мобильному средству защиты необходимо знать точки входа определенных функций в средстве просмотра. Новые позиции сегментов известны серверу защиты и предоставляются мобильному средству защиты. Таким образом, нет никакой необходимости в передаче информации между двумя мобильными средствами защиты на клиентской стороне.
Что касается скремблирования стека, стек содержит адреса возврата предшествующих вызовов функций. Эта информация может использоваться для слежения за ходом выполнения или изменения хода выполнения средства просмотра при помощи изменения адреса возврата в стеке. При подобной атаке когда выполнение программы должно перейти обратно к вызывающей функции, программа может вместо этого передать управление потенциально враждебному коду.
Для защиты стека от подобной атаки используется способ, последовательно скремблирующий стек по мере добавления в стек новых адресов возврата. После вызова функции проверяемый код передает управление скремблирующей функции в мобильном средстве защиты, которая скремблирует новый адрес возврата в стеке перед возвратом управления обратно вызывающей функции. Для дескремблирования стека перед использованием адреса возврата вызывается соответствующая дескремблирующая функция в мобильном средстве защиты.
Реализация скремблирующей функции использует то преимущество, что мобильные средства защиты создаются по мере необходимости для проверки средства просмотра. Это позволяет создавать уникальную скремблирующую и дескремблирующую функцию в каждом мобильном средстве защиты. Скремблирующая функция в основном состоит из набора случайных данных, создаваемых сервером защиты и содержащихся в мобильном средстве защиты, над которым выполняется исключающее ИЛИ вместе с адресами возврата в стеке. Для выбора того, какую часть случайных данных использовать, применяется простая математическая функция для вычисления индекса набора случайных данных.
Средство просмотра тем самым защищено мобильным средством защиты от слежения (как обсуждалось ранее) за его состоянием (включая положение в ходе выполнения и содержимое переменных).
Медиаключи передаются на средство просмотра со скоростью примерно один ключ в секунду. Передача осуществляется посредством протокола обмена ключами, использующего генератор случайных данных и известный средству просмотра открытый ключ сервера защиты. Когда необходимо получить следующий медиаключ, средство 10 просмотра генерирует шестнадцать байт случайных данных и шифрует их открытым ключом сервера 17 защиты. Зашифрованные данные затем включаются в отправляемый на сервер защиты запрос ключа.
Сервер защиты проверяет запрос и одобряет его только в случае, если мобильное средство защиты указывает, что со средством просмотра все в порядке. Если мобильное средство защиты подтверждает, что все в порядке, сервер защиты извлекает случайные данные, применяет исключающее ИЛИ к случайным данным и запрашиваемому ключу и отправляет результат обратно в средство просмотра.
При получении результата средством просмотра, средство просмотра извлекает запрошенный ключ из результата путем применения исключающего ИЛИ к результату и тем же самым случайным данным, которые были отправлены в изначальном запросе ключа.
Протокол обеспечивает способ дешифрования зашифрованного закодированного медиапотока без каких-либо спрятанных в исходном коде средства просмотра секретных ключей. Время жизни ключа составляет всего несколько секунд, что предотвращает появление в защищенном процессе потоковой передачи единой точки уязвимости в случае извлечения одного или нескольких секретных ключей.
Следует понимать, что клиентом выполняются фактически два отдельных потока, что указано на блок-схеме фиг.4.
Первый поток представляет собой верификацию. Клиент получает мобильное средство защиты, которое затем верифицирует клиентскую программу. После подтверждения верификации, ключи количеством n могут быть получены в течение последующего интервала доверия до окончания функционирования мобильного средства защиты. Затем процесс должен быть повторен с новым мобильным средством защиты.
Параллельно с указанным потоком выполняется поток воспроизведения. Для каждого ключа принимается, дешифруется и воспроизводится сегмент медиапотока.
Функционирование сервера иллюстрируется на фиг.5. При получении запроса ключа, сервер отправляет ключ клиенту в том и только в том случае, если мобильное средство защиты все еще действует (т.е. если оно все еще находится в интервале доверия данного мобильного средства защиты). Если мобильное средство защиты закончило функционирование, клиенту отправляется новое мобильное средство защиты, которое используется для верификации клиента. Если результат неверен, клиент считается подвергшимся несанкционированному вмешательству и передача ключей останавливается. При удовлетворительном результате начинается новый интервал доверия, в течение которого ключи отправляются клиенту.
Класс H04N7/16 системы с засекречиванием; абонентские системы