СПОСОБ И СИСТЕМА РАСПРОСТРАНЕНИЯ КОНТЕНТА В СЕТИ ПЕРЕДАЧИ ДАННЫХ СО ВСТРОЕННЫМ МЕХАНИЗМОМ УСЛОВНОГО ДОСТУПА
METHOD AND SYSTEM OF DISTRIBUTION OF THE CONTENT IN THE NETWORK OF DATA TRANSMISSION WITH THE BUILT-IN MECHANISM OF CONVENTIONAL ACCESS

ОБЛАСТЬ ТЕХНИКИ
Изобретение относится к разделу информационных технологий и связи, и решает задачу доставки видеоконтента до пользователей в пиринговой сети и сети передачи данных.
УРОВЕНЬ ТЕХНИКИ
На сегодняшний день существуют реализации для распространения контента в пиринговых сетях как для статического (фильм, мелодия, аудиокнига и т.п.), так и для динамического (стриминг видео, прямые телевизионные или спортивные трансляции и т.п.) контента. Все они в целом реализуют следующий подход:
- контент (файл) разбивается на сегменты;
- клиенты (программы, установленные на компьютере пользователей) устанавливают соединения друг с другом напрямую;
- клиенты обмениваются друг с другом сегментами файла, добиваясь наличия друг у друга всех сегментов исходного файла.
Очевидно, что при такой реализации контент, в конечном счете, получаемый каждым из клиентов, является строго одинаковым для всех клиентов.
Для распространения в пиринговой сети статического контента применяется протокол bittorrent (http://www.bittorrent.org/beps/bep_0003.html). Этот протокол является открытым и существует множество его реализаций на разных языках программирования (C/C++, java и т.д.) и для различных платформ (Windows, Linux и т.д.)
Для распространения в пиринговой сети динамического контента применяется протокол bittorrent live (патент US 9094263 В2, 28.07.2015), а также такие сервисы как peer5.com и streamroot.com, которые используют открытую библиотеку WebRTC (https://ru.wikipedia.org/wiki/WebRTC).
В целом эти реализации вполне успешно решают задачи доставки файлов до пользователей в пиринговой сети, однако с точки зрения потребностей правообладателей, публикующих контент в сети, необходимо, чтобы каждый клиент получал уникальную копию файла, которая содержала бы цифровой идентификатор, например, цифровую водяную метку (знак), идентифицирующую клиента и его легальное право на получение требуемого контента. В этом случае, при несанкционированном распространении файла, становилось бы возможным отследить источник утечки - конкретного пользователя, допустившего нелегальное распространение контента.
Однако одновременное использование описанных пиринговых технологий и цифровых водных меток является взаимоисключающим в силу того, что для пирингового обмена, контент должен быть строго одинаковым, а для цифровых водных меток - разным для каждого получателя.
На рынке также известны технологии, которые объединяют в себе возможности как пиринговых технологий, так и водных меток. Например, согласно патенту US 7570641 В2 (Techniques for watermarking and distributing content, 04.08.2009) возможно построение системы, одновременно использующей как пиринговый обмен, так и водные метки, за счет распространения контента по частям и формирования уникальной для каждого пользователя последовательности частей, отражаемой в плане доставки, который сообщается каждому клиенту с сервера.
Однако, данное изобретение не описывает конкретных механизмов создания и распространения плана доставки, которые бы обеспечивали невозможность его подмены злоумышленником, что не позволяет достичь высокой степени защиты при распространении контента в сети передачи данных.
Таким образом, существующий уровень техники присутствующих на рынке решений либо не нацелен на решение задачи защиты канала дистрибуции, а фокусируется лишь на решении задачи распределенной доставки файлов, либо описывает механизм объединения и одновременного использования возможностей пирингового обмена и защиты канала от нелегального распространения контента за счет водных меток и плана доставки, но не описывает конкретную методику создания и распространения плана доставки, устойчивую к подмене.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Задачей настоящего изобретения является создание новой высокоэффективной технологии распространения контента в сети передачи данных, а также в пиринговой сети со встроенным механизмом условного доступа, основанным на проверке ключей, распространяемых с сервера.
Основным техническим результатом является повышение защиты от нелегального распространения контента в сети передачи данных за счет передачи контента по частям, основанной на предоставлении пользователям сегментов контента согласно указателю загрузки, который имеет повышенную стойкость к подмене за счет использования ключей сегментов в качестве ссылок на сегменты, а также факта проверки упомянутых ключей при обмене сегментами контента.
Дополнительными техническими результатами, которые достигаются при реализации заявленного изобретения, являются снижение нагрузки на канал передачи сервера за счет распространения контента по частям (сегментами) и инициирования процесса обмена сегментами контента между пользователями, способного обеспечить получение пользователем до 100% контента из пиринговой сети, без обращения за контентом к серверу, а также повышение степени защиты контента от нелегального распространения за счет возможности обнаружения конкретных пользователей, допускающих несанкционированное копирование и распространение контента, на основании внедряемого в каждую копию контента уникального идентификатора, связанного с устройством пользователя.
В одном из предпочтительных вариантов осуществления заявленного изобретения заявлен способ распространения медиаконтента в сети передачи данных, при котором:
на стороне сервера:
- разбивают оригинальный файл контента на сегменты, причем каждому сегменту присваивается порядковый номер;
- создают набор возможных представлений для каждого из сегментов путем создания как минимум одной копии каждого сегмента и внедрения в каждую из копий каждого сегмента цифрового идентификатора;
- получают запрос от устройства пользователя на предоставление контента;
- создают в ответ на упомянутый запрос устройства пользователя указатель загрузки контента, содержащий информацию о сегментах контента, подлежащих предоставлению упомянутому устройству пользователя, где для каждого порядкового номера сегмента выбирают один из вариантов представлений данного сегмента, причем указатель загрузки содержит информацию о каждом сегменте контента в виде ключа сегмента, такого, что ключ сегмента является функцией от кодовой информации, содержащей, по меньшей мере, информацию, связанную с содержимым сегмента;
- передают упомянутый указатель загрузки на устройство пользователя;
- передают на упомянутое устройство пользователя информацию об адресах источников, содержащих сегменты запрошенного контента;
на стороне устройства пользователя:
- принимают упомянутый указатель загрузки;
- выполняют поиск, по меньшей мере, одного источника, содержащего, по меньшей мере, один сегмент контента согласно полученному указателю загрузки, и инициируют сеанс связи с упомянутым, по меньшей мере, одним источником, при котором отправляют запросы на скачивание сегментов путем отправки ключей требуемых сегментов, причем в процессе обработки упомянутых запросов выполняют проверку совпадения передаваемых в запросе ключей с ключами сегментов, хранящихся на устройстве источнике;
- получают, по меньшей мере, один упомянутый сегмент контента в случае успешного сеанса связи и совпадения ключей, в противном случае повторяют шаг поиска, по меньшей мере, одного устройства источника;
- выполняют проверку совпадения ключа полученного сегмента путем генерирования ключа из кодовой информации, связанной с содержимым полученного сегмента и сравнения его с ключом, отправленным в запросе.
В частном варианте осуществления изобретения, если один или более сегментов контента нельзя получить от устройств источников, то осуществляют получение упомянутых сегментов контента от сервера.
В другом частном варианте кодовая информация содержит информацию, связанную с содержимым сегмента и дополнительную информацию.
В другом частном варианте дополнительная информация является идентификатором устройства пользователя, которому предназначен контент.
В другом частном варианте цифровой идентификатор, содержащийся в сегменте, представляет собой цифровую водяную метку.
В другом частном варианте осуществляют передачу данных в пиринговой сети и сети передачи данных в зашифрованном виде, а также хранят сегменты контента на устройствах в зашифрованном виде.
В другом частном варианте передают от устройств пользователей на сервер информацию о сегментах контента, которые он хранит и может отправить другим устройствам пользователей через пиринговую сеть, а также информацию о том, какие сегменты были скачены из пиринговой сети, а какие от сервера.
Во втором предпочтительном варианте осуществления заявленного изобретения заявлена Система распространения медиаконтента в сети передачи данных, содержащая, по меньшей мере, один сервер и множество устройств пользователей, причем
сервер выполнен с возможностью выполнения операций, при которых:
- разбивают оригинальный файл контента на сегменты, причем каждому сегменту присваивается порядковый номер;
- создают набор возможных представлений для каждого из сегментов путем создания как минимум одной копии каждого сегмента и внедрения в каждую из копий каждого сегмента цифрового идентификатора;
- получают запрос от устройства пользователя на предоставление контента;
- создают в ответ на упомянутый запрос устройства пользователя указатель загрузки контента, содержащий информацию о сегментах контента, подлежащих предоставлению упомянутому устройству пользователя, где для каждого порядкового номера сегмента выбирают один из вариантов представлений данного сегмента, причем указатель загрузки содержит информацию о каждом сегменте контента в виде ключа сегмента, такого, что ключ сегмента является функцией от кодовой информации, содержащей, по меньшей мере, информацию, связанную с содержимым сегмента;
передают упомянутый указатель загрузки на устройство пользователя;
- передают на упомянутое устройство пользователя информацию об адресах источников, содержащих сегменты запрошенного контента;
устройство пользователя выполнено с возможностью выполнения действий, при которых:
- принимают упомянутый указатель загрузки;
- выполняют поиск, по меньшей мере, одного источника, содержащего, по меньшей мере, один сегмент контента согласно полученному указателю загрузки, и инициируют сеанс связи с упомянутым, по меньшей мере, одним источником, при котором отправляют запросы на скачивание сегментов путем отправки ключей требуемых сегментов, причем в процессе обработки упомянутых запросов выполняют проверку совпадения передаваемых в запросе ключей с ключами сегментов, хранящихся на устройстве источнике;
- получают, по меньшей мере, один упомянутый сегмент контента в случае успешного сеанса связи и совпадения ключей, в противном случае повторяют шаг поиска, по меньшей мере, одного устройства источника;
- выполняют проверку совпадения ключа полученного сегмента путем генерирования ключа из кодовой информации, связанной с содержимым полученного сегмента и сравнения его с ключом, отправленным в запросе.
В одном из частных вариантов если один или более сегментов контента нельзя получить из сети передачи данных от устройств источников, то осуществляют получение упомянутых сегментов контента от сервера.
В другом частном варианте кодовая информация содержит информацию, связанную с содержимым сегмента и дополнительную информацию.
В другом частном варианте дополнительная информация является идентификатором устройства пользователя, которому предназначен контент.
В другом частном варианте цифровой идентификатор, содержащийся в сегменте, представляет собой цифровую водяную метку.
В другом частном варианте осуществляют передачу данных в пиринговой сети и сети передачи данных в зашифрованном виде, а также хранят сегменты контента на устройствах в зашифрованном виде.
В другом частном варианте передают от устройств пользователей на сервер информацию о сегментах контента, которые он хранит и может отправить другим устройствам пользователей через пиринговую сеть, а также информацию о том, какие сегменты были скачены из пиринговой сети, а какие от сервера.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг. 1 иллюстрирует общую схему распространения медиаконтента.
Фиг. 2 иллюстрирует общие этапы реализации способа распространения контента.
Фиг. 3 иллюстрирует этапы реализации способа при создании уникальной копии контента.
Фиг. 4 иллюстрирует вариант создания копий файла контента.
Фиг. 5 иллюстрирует пример формирования указателя загрузки.
Фиг. 6-Фиг. 8 иллюстрируют варианты схем обмена сегментами контента согласно заявленному изобретению.
Фиг. 9-Фиг. 10 иллюстрируют пример формирования ключа сегмента.
Фиг. 11 иллюстрирует схему запроса и загрузки сегментов контента на основании ключей, сообщаемых в указателе загрузки.
Фиг. 12 иллюстрирует схему выполнения этапов реализации способа передачи сегментов согласно заявленному изобретению.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
На Фиг. 1 представлен общий вид схемы передачи медиаконтента согласно заявленному изобретению. В заявленную структуру системы 100 передачи медиаконтента входит сервер передачи медиаконтента 110, содержащий хранилище медиаконтента 111. Сервер 110 может представлять собой как единичную ЭВМ, так и несколько вычислительных устройств (серверный кластер). Сервер 110 также может представлять собой суперкомпьютер.
Хранилище медиаконтента 111 может представлять собой устройство для хранения данных (HDD, SSD, SD, Flash), непосредственно являющееся частью сервера ПО, а также может выполняться как удаленное устройство для хранения и передачи информации, например персональный компьютер, облачное хранилище информации и т.п., осуществляющее обмен данными с сервером 110 через канал передачи данных (LAN, WLAN, WAN, GSM).
Аппаратная часть сервера 110, в общем случае, включает в себя один или более процессоров, ОЗУ, ПЗУ, а также устройства для хранения данных (HDD, SSD, SD, Flash), интерфейсы ввода/вывода (I/O) и, по меньшей мере, один сетевой интерфейс.
Сервер 110 с помощью сети передачи данных, например Internet, передает запрашиваемый пользователями 130-132 медиаконтент. Пользователи 130-132 могут быть связаны между собой посредством сети передачи данных, например, пиринговой сети (peer-to-peer или Р2Р).
Упоминаемый в настоящих материалах заявки термин «контент» или «медиаконтент» относится как к статичному типу контента (фильм, мелодия, аудиокнига), так и к динамическому - стриминг видео, прямые телевизионные или спортивные трансляции, радио трансляции и т.п.
Медиаконтент может представлять собой любой вид аудиовизуальных произведений, выполненный в виде видеофайла или аудиофайла. Контент также может представлять собой файлы контейнерного формата (mkv, mp4, MOV, OGG и т.п.).
Согласно Фиг. 2 способ 200 передачи медиаконтента заключается в следующем.
На сервере 110 на этапе 201 происходит подготовка контента, в процессе которой каждый исходный (эталонный, оригинальный) файл контента разбивается на сегменты. Для каждого из сегментов создается одна или более копий, которые впоследствии хранятся на сервере и на основании которых впоследствии формируется указатель загрузки для пользователей, запрашивающих контент.
На Фиг. 3 изображена декомпозиция шагов по подготовке контента. На шаге 2011, исходный файл контента разбивается на сегменты, на шаге 2012 создается как минимум одна копия каждого сегмента, на шаге 2013 в каждый из полученных сегментов внедряется цифровой идентификатор. Под цифровым идентификатором может пониматься, например, цифровая водяная метка или другой тип идентификатора, пригодного для подтверждения уникальности файла, в который вносится идентификатор.
Стоит отметить, что из существующего уровня техники широко известны различные принципы внедрения цифровых водяных знаков в контент для его защиты как для статичного контента (см., например, патенты RU 2405218, 27.11.2010, US 5930369 А, 10.09.1997), так и для динамического (см., например, Методы внедрения цифровых водяных знаков в потоковое видео. Григорьян А.К., Аветисова Н.Г. - Информационно-управляющие системы. - №2 (45). 2010 г.).
На этапе 201 на сервере 110 происходит подготовка контента. На Фиг. 4 показан пример создания для оригинального файла 300 трех его копий 301-303, каждая из которых содержит сегменты контента 320-340, имеющие несколько иное, отличающееся содержимое в силу того, что в них внедрен цифровой идентификатор (цифровая водная метка). Разбиение оригинального файла на сегменты и создание копий сегментов, содержащих цифровой идентификатор, производится сервером 110 таким образом, что составленный из полученного набора сегментов файл, содержащий для каждого порядкового номера сегмента случайный (любой из доступных) вариант представления, сохраняет свою целостность в том смысле, что может быть проигран без ошибок на устройствах пользователей. Таким образом для каждого из сегментов оригинального файла на сервере создается набор вариантов его представлений a, b, c, d. Этот набор используется сервером в процессе создания указателя загрузки контента, заключающийся в том, что сервер для каждого порядкового номера сегмента по определенному правилу выбирает то или иное представление данного сегмента. Правило, по которому сервер выбирает тот или иной вариант представления для каждого сегмента, должно связывать идентификатор клиента и генерируемую последовательность, а также обеспечивать формирование уникальной последовательности для каждого пользователя (устройства пользователя), что позволит использовать такую последовательность в качестве идентификатора данного пользователя (устройства пользователя).
На этапе 202 пользовательские устройства 130-132 выполняют процесс авторизации на сервере 110 (или на ресурсе связанным с сервером 110) и направляют запрос на сервер 110 на получение медиаконтента. Сервер 110 принимает запрос от, по меньшей мере, одного пользовательского устройства (130-132) на предоставление медиаконтента и определяет контент, запрашиваемый пользователем.
На этапе 203 в ответ на упомянутое определение сервер 110 выполняет формирование для каждого пользовательского устройства 130-132 уникального указателя загрузки запрошенного контента. Представим, что для клиента 131 сервер хранит ранее выданный идентификатор, равный d091270c (для краткости будем оперировать 4-х байтовыми числами), при получении запроса на скачивание контента, сервер 110 должен создать уникальный указатель загрузки 1310, связанный с указанным идентификатором пользователя. Одним из вариантов для создания указателя загрузки из идентификатора пользователя является преобразование числа из одной системы счисления в другую. Согласно Фиг. 4 на сервере 110 имеется четыре варианта представлений для каждого из сегментов (исходный + три копии). Т.е. можно утверждать, что сервер 110 имеет в распоряжении четверичную систему счисления для представлений (вариантов) сегментов 310-340, в которой цифрами являются символы a, b, c, d, которые указывают на варианты представления сегментов. В итоге сервер 110 может преобразовать шестнадцатеричное число d091270c в четверичное число dbaacbabacbdaadd, после чего на базе этого результата создать указатель загрузки 1310, связанный с устройством 131 и выглядящий как последовательность (1:d, 2:b, 3:a, 4:a, 5:c, 6:b, 7:a, 8:b, 9:a, 10:c, 11:b, 12:d, 13:a, 14:a, 15:d, 16:d) (Фиг. 5).
Процесс формирования указателя загрузки, связанного с идентификатором клиентского устройства 130-132, может быть реализован и каким-либо иным образом, вплоть до случайного генерирования как идентификатора клиента, так и указателя загрузки, с последующим сохранением полученной связки в базе данных сервера 110. Поэтому вышеприведенный пример является лишь частным вариантом и в различных реализациях способа распространения контента возможны и иные варианты связи идентификатора клиента (устройства клиента) с указателем загрузки.
На Фиг. 5 показан пример создания указателей загрузки 1300-1320 (этап 203) согласно осуществлению способа 200. Каждый указатель, например указатель 1300 для клиента 130, представляет собой совокупность сегментов 310-340, которая может включать в себя как сегменты 310 без идентификатора (сегменты оригинального файла контента), так и сегменты 320-340, содержащие идентификатор. Указатель загрузки содержит ссылки на сегменты контента в порядке их следования, причем для каждого порядкового номера сегмента указан тот или иной вариант представления сегмента.
На этапе 204 выполняется передача от сервера 110 на каждое из клиентских устройств 130-132, инициировавших запрос на получение контента, соответствующего указателя загрузки 1300-1320.
Каждое из устройств 130-132 в процессе поиска источников сегментов контента может выполнять соединение как с одним устройством, так и с несколькими одновременно в зависимости от наличия необходимых сегментов у них.
Получение упомянутых сегментов может происходить как через сеть передачи данных типа Интернет при запросе прямого скачивания сегментов с сервера 110, так и через пиринговую сеть у других пользователей. Указанный клиентский уровень относится к пиринговой сети, в которой устройства пользователей 130-132 осуществляют обмен сегментами контента между собой напрямую. Если какое-либо из устройств 130-132 не может получить сегменты контента из пиринговой сети, то упомянутое устройство пользователя осуществляет запрос необходимых сегментов контента со стороны сервера.
На Фиг. 6 показан пример, когда пользовательское устройство 130 осуществляет получение всех сегментов контента со стороны сервера 110. Вначале сервер 110 передает устройству 130 указатель загрузки 1300, на основании которого впоследствии устройство 130 осуществляет запрос указанных в указателе сегментов в сети передачи данных. В силу того, что в сети присутствует только один клиент 130 и ни одного другого пользовательского устройства не обнаруживается, все сегменты контента клиент 130 скачивает с сервера 110.
Далее, на Фиг. 7 показан пример передачи контента, когда в сети передачи данных помимо клиента 130 появляется клиент 131. Теперь клиент 131 получает свой указатель загрузки 1310 с сервера 110, содержащий уникальную последовательность сегментов контента, подлежащую передаче клиенту 131. Далее сервер сообщает клиенту 131 адрес источника, содержащего необходимые сегменты. В данном случае клиенту 131 сообщается адрес, например, IP-адрес, клиента 130. В силу того, что для клиентов 130 и 131 сегменты с порядковыми номерами 2, 6, 9, 12, 13, 16 имеют, согласно их указателям загрузки 1300 и 1310, совпадающие представления, на Фиг. 7 показано, что устройство 131 получает сегменты с упомянутыми порядковыми номерами от устройства 130, в то время как сегменты с другими порядковыми номерами, клиент 131 получает от сервера 110.
Далее, на Фиг. 8 показан пример передачи контента, когда в сети передачи данных помимо клиентов 130 и 131 появляется клиент 132. Теперь клиент 132 получает свой указатель загрузки 1320 с сервера 110, содержащий уникальную последовательность сегментов контента, подлежащую передаче клиенту 132. Далее сервер сообщает клиенту 132 адреса источников, содержащих необходимые сегменты. В данном случае клиенту 132 сообщаются адреса, например IP-адреса, клиентов 130 и 131. В силу того, что для клиентов 132 и 130 сегменты с порядковыми номерами 1, 3, 10, 14, а также для клиентов 132 и 131 сегменты с порядковыми номерами 4, 7, 8, 15 имеют согласно их указателям загрузки 1300, 1310 и 1320 совпадающие представления, на Фиг. 7 показано, что устройство 132 получает сегменты с порядковыми номерами 1, 3, 10, 14 от устройства 130, сегменты с порядковыми номерами 4, 7, 8, 15 от устройства 131, в то время как сегменты с другими порядковыми номерами, клиент 132 получает от сервера 110.
Каждое из устройств 130-132 периодически осуществляет отправку на сервер 110 информации о содержащихся в его памяти сегментах контента, которые оно может передать с помощью пиринговой сети другим пользователям. Данная информация используется сервером 110 в течение определенного времени для отправки на устройства пользователей 130-132, чтобы инициировать процедуру получения необходимых сегментов в пиринговой сети. Этап подключения к источнику получения сегментов контента устройствами пользователей выполняется итеративно по мере обновления информации об адресах устройств в сети, которые содержат необходимые сегменты контента. Если подключение к устройству, содержащему сегменты контента, установить не удается, то устройство, выполняющее запрос на прием сегментов от других устройств пользователей, может выполнить запрос на получение необходимых сегментов от сервера 110.
На Фиг. 9 и Фиг. 10 показан принцип формирования ключа сегмента, используемого в указателе загрузки. Указатель загрузки содержит информацию о каждом сегменте контента 310-340 в виде ключа сегмента, который используется при запросе на скачивание сегмента у источника (пользовательского устройства в пиринговой сети или сервера в сети Интернет). Ключ сегмента представляет собой идентификатор, сгенерированный с помощью функции f из кодовой информации. Используемая функция f является необратимой, т.е. не дает возможности по известному ключу (результату) восстановить кодовую информацию (прообраз). Кроме того, используемая функция f должна быть едина для всех узлов сети и известна всем узлам сети. Данными свойствами обладают криптографические хеш-функции (MD5, SHA1 и т.д.), любая из которых, равно как и их комбинации, могут быть использованы в качестве функции f. Кодовая информация, в свою очередь, представляет собой, по меньшей мере, информацию, связанную с содержимым сегмента (Фиг. 9), либо информацию, связанную с содержимым сегмента и дополнительную информацию (Фиг. 10), которой может являться, например, идентификатор устройства пользователя, которому предназначен контент, а также любая другая служебная информация, такая как, например, IP-адрес источника или получателя, регион, токен, время и т.п. Необходимым свойством кодовой информации является то, что она, наравне с функцией f, также должна быть в полном объеме известна узлам сети, участвующим в обмене данными. При выполнении этих условий становится возможным генерирование ключа сегмента как на стороне источника данных, так и на стороне получателя данных, что в свою очередь дает возможность обеспечить проверку совпадения ключей при отправке и получении каждого сегмента.
Очевидно, что в случае генерирования ключа из кодовой информации, содержащей только информацию, связанную с содержимым сегмента (Фиг. 9), ключи, сгенерированные для разных клиентов, будут одинаковыми. В то время как в случае генерирования ключа из кодовой информации, содержащей не только информацию, связанную с содержимым сегмента, но и дополнительную информацию, например, идентификатор клиента (устройства клиента), которому предназначен контент (Фиг. 10), ключи, сгенерированные для разных клиентов (устройств клиентов), будут различными.
Использование ключей, сгенерированных из кодовой информации, связанной с содержимым сегмента (Фиг. 9), обеспечивает следующие преимущества. Во-первых, возможность без обращения к серверу как на стороне получателя сегмента, так и на стороне отправителя сегмента, проверить правильность соответствия ключа и сегмента, и на стороне отправителя отправить получателю только корректный сегмент, а на стороне получателя сохранить и использовать только корректный сегмент. Во-вторых, возможность для сервера сообщать тем или иным пользователя ключи, которые недоступны в пиринговой сети, тем самым переключая скачивание для этих пользователей полностью на сервер (в пиринговой сети никогда не будут находится необходимые сегменты), что может быть полезно для отключения пользователя от трансляции при обнаружении утечки контента в пиратские каналы распространения в реальном времени. В-третьих, трудность вычисления последовательности, сообщаемой в указателе загрузки с сервера, и замены указателя загрузки на иной работоспособный, попытки скачивания по которому будут успешными. Хотя в принципе, злоумышленник может подключить несколько аккаунтов, собрать из всех полученных с сервера указателей загрузки ключи, и из них сконструировать новый указатель загрузки, который будет содержать в себе такую последовательность сегментов, которую сервер не сможет связать с тем или иным клиентом (устройством клиента).
Использование ключей, сгенерированных из кодовой информации, состоящей не только из информации, связанной с содержимым сегмента, но и из дополнительной информации (Фиг. 10), обеспечивает следующие преимущества. Во-первых, невозможность вычисления последовательности, сообщаемой в указателе загрузки с сервера, и замены указателя загрузки на иной работоспособный, попытки скачивания по которому будут успешными. Потому как даже подключая сотни аккаунтов, злоумышленник для каждого аккаунта будет получать новые, ранее не встречавшиеся ключи. Как следствие, статистически вычислить какую-либо закономерность на наборе полностью случайных ключей, невозможно. Во-вторых, невозможность получить доступ к сегментам, кроме тех, ключи которых сообщает сервер в силу того, что только то устройство, для которого сгенерирован и которому отправлен указатель загрузки сможет пройти проверку совпадения ключей при отправке запросов на скачивание источникам.
Таким образом можно утверждать, что заявленная система за счет использования ключей в качестве ссылок на сегменты и специальных правил генерирования ключей, содержит в себе механизм условного доступа, заключающийся в том, что сервер сообщает ключи сегментов контента, а пользовательское устройство может получить только те и исключительно те сегменты контента, ключи которых были ему сообщены. Злоумышленнику бессмысленно генерировать случайные ключи или заменять ключи, предназначенные одному устройству, на ключи, предназначенные другому устройству, потому как участники сети не будут отдавать сегменты, ключи которых не прошли проверку на совпадение.
На Фиг. 11 показан процесс запроса сегмента получателем, путем посылки ключей четырех сегментов источнику, проверки ключей сегментов на устройстве источнике, отдачи одного из сегментов, для которого совпал ключ, а также окончательной проверки совпадения ключей на устройстве получателе. Устройство получатель сегментов загружает с сервера 110 указатель загрузки и список адресов устройств в сети, которые содержат необходимые сегменты контента. Устройство получатель устанавливает связь с устройством источником и запрашивает сегменты, которые устройство источник может, согласно информации от сервера, передать. Запрос сегмента осуществляется путем передачи как минимум одного ключа сегмента от устройства получателя к устройству источнику. После получения данного запроса, устройство источник осуществляет поиск сегментов для полученных в запросе ключей. Для этого устройство источник генерирует ключи для всех хранимых в его памяти сегментов и, в случае совпадения ключей, осуществляет передачу соответствующих совпавшим ключам сегментов на устройство получатель. Аналогичным образом осуществляется обмен сегментами для любого количества устройств в сети передачи данных и в пиринговой сети, между любой парой устройств, участвующими в обмене сегментами контента.
Передача данных в пиринговой сети и сети передачи данных может происходит в зашифрованном виде. Кроме того, сегменты контента, получаемые устройствами, могут храниться на устройствах в зашифрованном виде.
После получения сегментов устройство получатель осуществляет процедуру проверки полученных сегментов, путем сравнения ключей сегментов, отправленных в запросе, и ключей, сгенерированных из кодовой информации, связанной с полученными сегментами.
На Фиг. 12 изображен основной алгоритм последовательности действий при осуществлении способа распространения контента 200. После направления выбранному устройству пользователя указателя загрузки, сервер направляет также информацию об адресах пользователей сети (IP-адреса, MAC-адреса и т.п.), либо об адресах серверов, которые содержат необходимые сегменты файла контента, относительно полученного упомянутым устройством пользователя указателя загрузки. Данное устройство осуществляет соединение с одним или более сторонними устройствами пользователей сети и осуществляет запрос сегментов контента. Упомянутый запрос выполняется согласно механизму, изображенному на Фиг. 11. После выявления сегментов контента с совпадающими ключами, данные сегменты передаются на устройство пользователя, инициировавшее их запрос. При получении каждого сегмента выполняется его валидация путем сравнения ключа сегмента, переданного устройством получателем в запросе, с ключом, сгенерированным из кодовой информации, связанной с полученным от устройства источника сегментом. Если совпадение ключей подтверждается, то такой сегмент сохраняется на устройстве получателе, в противном случае сегмент не признается валидным и удаляется из памяти устройства. Кроме того, информация о таком сегменте может быть направлена на сервер, для последующей обработки на предмет выявления устройств в сети, которые осуществляет передачу некорректных данных.
После получения сегмента система определяет, возможно ли воспроизведение контента, например, в случае приема контента, представляющего собой онлайн видеотрансляцию. Если сегментов контента недостаточно, то пользовательское устройство повторяет поиск сегментов с помощью установления сеансов связи с другими устройствами сети. После старта воспроизведения контента клиентское устройство повторяет этап запроса сегментов контента от сервера. Это, в частности, актуально при получении динамического контента, например просмотр живой трансляции спортивного матча на веб-сайте, а также при получении статического контента, например кинофильма, имеющего большой размер из-за чего потребуется значительное время для загрузки файла целиком.
Может возникать ситуация, когда невозможно установить сеанс связи с устройством, содержащим необходимый сегмент контента, в этом случае, если за отведенный промежуток времени связь с таким устройством не установлена, то происходит поиск других устройств, содержащих необходимые сегменты. Если устройств пользователей, содержащих необходимые сегменты, не выявлено, то происходит запрос одного или более сегментов у сервера, причем серверов в системе может быть несколько и поиск необходимого сервера может осуществляться по аналогии с поиском устройств источников (пользователей) сегментов.
Упомянутое в настоящих материалах заявки пользовательское устройство может представлять собой ЭВМ портативного или стационарного вида, например, PC, смартфон, планшет, игровую приставку, ноутбук.
В общем виде каждое из клиентских устройств пользователей содержит, по меньшей мере, один процессор, по меньшей мере, одну память, в которой хранятся команды для исполнения процессором, реализующие выполнения программного приложения, предназначенного для запроса медиаконтента с сервера, его получения и обмена с другими участниками пиринговой сети.
Представленное в настоящей заявке описание раскрывает предпочтительные варианты реализации заявленного изобретения и не должно толковаться как ограничивающее иные, частные варианты реализации заявленного решения, не выходящие за рамки изложенных в настоящей заявке.