Научная статья на тему 'Усиление стойкости динамической схемы цифровых отпечатков пальцев к динамическому анализу программы'

Усиление стойкости динамической схемы цифровых отпечатков пальцев к динамическому анализу программы Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
116
23
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЦИФРОВЫЕ ВОДЯНЫЕ ЗНАКИ / DIGITAL WATERMARKING / ЦИФРОВЫЕ ОТПЕЧАТКИ ПАЛЬЦЕВ / КОАЛИЦИОННЫЕ АТАКИ / COLLUSION ATTACKS / АНАЛИЗ ПРОГРАММ / PROGRAM ANALYSIS / НЕЛЕГАЛЬНОЕ РАСПРОСТРАНЕНИЕ ПРОГРАММ / ILLEGAL PROGRAM'S DISTRIBUTION / ЗАЩИТА ИНФОРМАЦИИ / INFORMATION SECURITY / ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ / DYNAMIC DATA STRUCTURES / DIGITAL FINGERPRINTING

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Баева Ольга Витальевна, Мкртичян Вячеслав Виталиевич

Рассмотрена динамическая схема цифровых отпечатков пальцев на основе алгоритма Коллберга-Томборсона, стойкая к коалиционным атакам. Для усложнения анализа программы с целью поиска элементов цифрового отпечатка пальцев построено усиление схемы путём применения метода защиты цифровых водяных знаков Хи-Томборсона. Метод заключается в представлении программных констант в виде части цифрового водяного знака. Решены связанные с применением данного алгоритма сложности. Представленная схема подходит для программ с небольшим количеством пользователей и высокими требованиями к коалиционной стойкости.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Баева Ольга Витальевна, Мкртичян Вячеслав Виталиевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Усиление стойкости динамической схемы цифровых отпечатков пальцев к динамическому анализу программы»

ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION. TECHNICAL SCIENCE. 2018. No 3

ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ INFORMATICS, COMPUTER ENGINEERING AND CONTROL

УДК 004.056.53 DOI: 10.17213/0321-2653-2018-3-5-10

УСИЛЕНИЕ СТОЙКОСТИ ДИНАМИЧЕСКОЙ СХЕМЫ ЦИФРОВЫХ ОТПЕЧАТКОВ ПАЛЬЦЕВ К ДИНАМИЧЕСКОМУ АНАЛИЗУ ПРОГРАММЫ

© 2018 г. О.В. Баева1, В.В. Мкртичян2

'Южный Федеральный университет, г. Ростов-на-Дону, Россия, 2ФГАНУНИИ «Спецвузавтоматика», г. Ростов-на-Дону, Россия

INCREASING OF THE TAMPER RESISTANCE OF THE DYNAMIC DIGITAL FINGERPRINTING SCHEME AGAINST THE DYNAMIC

SOFTWARE ANALYSIS

O.V. Baeva1, V.V. Mkrtichan2

1Southern Federal University, Rostov-on-Don, Russia, 2Scientific Research Institute «Specialized Security Computing Devices and Automation», Rostov-on-Don, Russia

Баева Ольга Витальевна - аспирант, кафедра алгебры и дискретной математики, Южный федеральный университет, г. Ростов-на-Дону, Россия. E-mail: ovbaeva@gmail.com

Мкртичян Вячеслав Виталиевич - канд. техн. наук, ст. науч. сотрудник, ФГАНУ «НИИ «Спецвузавтоматика», г. Ростов-на-Дону, Россия. E-mail: realdeal@bk.ru

Baeva Olga Vital'evna - post-graduate student, department «Algebra and Discrete Mathematics», Southern Federal University, Rostov-on-Don, Russia. E-mail: ovbaeva@gmail.com

Mkrtichan Vyacheslav Vitalievich - Candidate of Technical Sciences, Senior Researcher, Scientific Research Institute «Specialized Security Computing Devices and Automation», Rostov-on-Don, Russia. E-mail: realdeal@bk.ru

Рассмотрена динамическая схема цифровых отпечатков пальцев на основе алгоритма Коллберга-Томборсона, стойкая к коалиционным атакам. Для усложнения анализа программы с целью поиска элементов цифрового отпечатка пальцев построено усиление схемы путём применения метода защиты цифровых водяных знаков Хи-Томборсона. Метод заключается в представлении программных констант в виде части цифрового водяного знака. Решены связанные с применением данного алгоритма сложности. Представленная схема подходит для программ с небольшим количеством пользователей и высокими требованиями к коалиционной стойкости.

Ключевые слова: цифровые водяные знаки; цифровые отпечатки пальцев; коалиционные атаки; анализ программ; нелегальное распространение программ; защита информации; динамические структуры данных.

Collusion secured dynamic software fingerprinting scheme based on Collberg-Thomborson algorithm is described. He-Thomborson tamper-proofing scheme is applied to complicate the analysis of the program with purpose of searching digital fingerprint elements. The method is based on transforming program constants into the part of the digital watermark. Complexities related to applying of He-Thomborson algorithm are solved. Scheme presented is suitable for programs with small number of users and high collusion security requirements.

Keywords: digital watermarking; digital fingerprinting; collusion attacks; program analysis; illegal program's distribution; information security; dynamic data structures.

Введение авторского права, таких как пиратское распрост-

ранение программного обеспечения (ПО). Цифровые водяные знаки (ЦВЗ) являются Представляя собой информацию, внедрённую в одним из методов борьбы против нарушений программу, они позволяют доказать право

владения ПО. Кроме того, для того чтобы отследить, какой именно пользователь нарушает авторские права владельца программы, существует такой подвид ЦВЗ, как цифровые отпечатки пальцев (ЦОП), также известные как метки. Они представляют собой ЦВЗ, уникальный для каждой копии приложения.

Алгоритм Коллберга-Томборсона [1] (далее - СТ-алгоритм, от англ. Collberg-Thomborson) является одним из лучших [2, с. 143] методов встраивания ЦВЗ в приложения. Большое количество научных статей опубликовано по теме этого алгоритма в последние годы. В частности, это различные его реализации [3] и работы по улучшению структуры графа [4 - 6].

В СТ-алгоритме ЦВЗ представляется в виде графовидной структуры, которая динамически строится во время выполнения программы. Построение ЦВЗ по СТ-алгоритму обладает рядом преимуществ по отношению к другим алгоритмам ЦВЗ, что отмечено в [7]. Во-первых, код, который строит граф, с большой вероятностью впишется в объектно-ориентированную программу, так как в них нередко используются агрегации и ссылочные структуры, такие как списки и деревья, что значительно усложняет для злоумышленника анализ программы с целью поиска ЦВЗ. Во-вторых, имеется возможность скрытно встроить большие объёмы информации ввиду того, что размеры ЦВЗ не ограничены объёмом машинного кода. Это является большим преимуществом по отношению ко многим статическим алгоритмам встраивания ЦВЗ. Например, алгоритмы встраивания ЦВЗ в перестановках базовых блоков ограничены количеством базовых блоков. В-третьих, код, содержащий указатели, анализировать труднее, чем статические переменные. Наконец, по сравнению со статическими алгоритмами, динамические не подвержены атакам элементарными преобразованиями.

Тем не менее метод имеет ряд слабых мест. Во-первых, если контейнер изначально не содержит кода, использующего указатели, то код построения ЦВЗ можно легко отличить от кода контейнера и, следовательно, удалить его. Во-вторых, если код, который строит ЦВЗ по СТ-алгоритму, не выполняет никаких функций в самой программе, то его можно найти путём анализа программы. Для решения этих двух проблем Хи и Томборсон предлагают обеспечить связь частей ЦВЗ с программными константами [8]. Таким образом, повреждение ЦВЗ нарушает

работоспособность программы, и его удаление становится сложной задачей. В-третьих, динамические алгоритмы не предназначены для защиты частей программы, таких как отдельные функции. В-четвёртых, так как СТ-алгоритм применим для внедрения меток [7], а метки подвержены коалиционным атакам [9], то он тоже подвержен данному виду атак.

Сценарий коалиционной атаки можно описать следующим образом: коалиция из двух или более легальных пользователей сравнивает копии программы, которыми она обладает. Так как единственным отличием между этими копиями является метка, коалиция может её обнаружить. Одним из наиболее известных методов защиты от коалиционных атак является алгоритм Боне - Шоу [9].

Согласно [7, 10] коалиционные атаки на метки в программах можно условно разделить на две группы - статические и динамические. При статических коалиционных атаках сравнивается только бинарный код копий программы без их запуска, а при динамических копии сравниваются во время выполнения. Способы защиты меток, построенных по СТ-алгоритму, от статических коалиционных атак существуют [7], но динамические коалиционные атаки на СТ-алгоритм являются открытой проблемой [7, 10], и способы защиты от них представляют научный интерес. В настоящей статье приведён алгоритм, позволяющий защитить метки, внедрённые по СТ-алгоритму, от динамических и статических коалиционных атак, а также построено его усиление путём применения метода защиты ЦВЗ по алгоритму Хи-Томборсона [8].

1. Метод Хи-Томборсона и СТ-алгоритм

Пусть X - некоторое множество защищаемых ЦВЗ программных продуктов; I -множество всех возможных вводов в программу, хеХ. Рассмотрим алгоритмы Коллберга-Томборсона для внедрения и извлечения ЦВЗ, представляющего собой одно натуральное число.

Алгоритм 1 (Коллберга-Томборсона, встраивания ЦВЗ в приложение [7]).

Вход: хеХ - пустой контейнер, уеЫ -значение ЦВЗ, 1е1 - ввод, выбранный в качестве ключа.

Выход: х'еХ - программа с внедрённым

ЦВЗ.

Алгоритм 2 (Коллберга-Томборсона, извлечения ЦВЗ из приложения [7]).

Вход: xeX - программа с внедрённым ЦВЗ, i е I - ввод, выбранный в качестве ключа.

Выход: y е N - извлечённый ЦВЗ.

Шаги алгоритмов 1 и 2 подробно рассматриваются в работе [7]. Пусть f : X х N х I ^ X и g : X х I ^ N действуют, соответственно, по алгоритмам 1 и 2. Данные алгоритмы определены для одного натурального числа, которое встраивается в одну копию приложения.

В классическом CT-алгоритме ЦВЗ представляется в виде графовидной структуры, которая динамически строится во время выполнения программы. Извлечь структуры, представляющие ЦВЗ, можно путём анализа памяти программы. Существует несколько вариантов конструкции графа ЦВЗ для CT-алгоритма [7]. Один из них - плоские кубические деревья с висячим корнем, также известные как PPCT-графы (англ. planted plane cubic tree) [7].

Определение 1. Будем называть PPCT-графом бинарное дерево, обладающее следующими свойствами [8]:

- оно является планарным;

- все его вершины имеют либо одну связь, либо три;

- одна из вершин является корнем;

- корень имеет только одну исходящую

связь.

Вершину PPCT-графа, у которой нет исходящих связей, будем называть листом. Рассмотрим отображение c: N ^ N, действующее по правилу

c(m) = -C mm-2, me N. m

Число c{m) равняется количеству различных PPCT-графов с m листьями. Числа c{m) для me N называются числами Каталана ([11, с. 116]). По индукции доказывается, что у PPCT-графа с m листьями 2m узлов. Соответственно, PPCT-графами с 2m узлами можно закодировать c(m) различных целых чисел.

Пусть N - множество натуральных чисел, T - множество всех PPCT-графов. Рассмотрим два отображения:

- F: N ^ T - инъективное отображение, действующее по алгоритму перевода натурального числа в PPCT-граф [8];

- G:T ^N - отображение, действующее

по алгоритму перевода РРСТ-графов в натуральное число [8].

Для отображений F и G выполняется свойство:

Уп е N G(Е(п)) = п .

Как отмечено во введении, одним из недостатков СТ-алгоритма является то, что внедрённый код не выполняет никаких функций в самой программе, и по этой причине его можно найти путём анализа программы [7, 8]. Метод Хи-Томборсона [8] заключается в том, что программные константы заменяются на функцию, которая вычисляет константу из поддерева РРСТ-графа, представляющего ЦВЗ. Например, если программа содержит представляющую ЦВЗ структуру w и оператор х := 2, то его можно заменить на строку x := f (а1,a2,...,ак) , к е N, где a1,a2,..,ak -указатели внутрь структуры w, определяющие некоторое её поддерево ^е T), такое, что ? = Е (2), а функция / вычисляет из этого поддерева число 2. Таким образом можно обеспечить связь представляющей ЦВЗ структуры с кодом программы, тем самым значительно усложнив злоумышленнику процесс изменения или удаления ЦВЗ, так как любые действия с данной структурой могут нарушить работоспособность программы. Подробные требования к реализации метода Хи-Томборсона для оригинального СТ-алгоритма описаны в работе [8].

2. Построение динамической схемы ЦОП

Определение 2. Схемой ЦОП будем называть восьмёрку ^ = (X, и, Ж, К, Е, , К), для которой выполняется следующее свойство:

Ух е X Vw еЖ Ук е К Б(Е(х^,к),к) = w.

Определение 3. Схему ЦОП будем называть динамической, если для построения значения метки требуется запуск программы.

Пусть X - некоторое множество защищаемых ЦВЗ программных продуктов; N -множество натуральных чисел; и - множество пользователей программы х е X, п =| и |; й е N - некоторое натуральное число; I = й(п + 1);

Ж с Nl - множество легальных меток, | Ж |= п;

Nl - множество всех возможных меток. Рассмотрим два произвольных множества

ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION.

TECHNICAL SCIENCE. 2018. No 3

натуральных чисел Р = {Р1 ;...;Р1} и

< = ^;...;ql} , таких, что Р П Q = 0. Пусть т е{0;...;п} и г е{1;...;д} - натуральные числа. Пусть ст I - колонка высоты п, которая состоит

из элементов , к е {1;...; п} , определённых следующим образом:

,(k) _ \ * J

Pj, к е{1;...;m}

qj, к e {m + 1;...;n}

для j = dm + i.

Рассмотрим матрицу

Она состоит из строк вида

м (к)=( с (к). с (к). . с (к). . с (к К

м =(с0,1 ;•••,с0,д ;•••; сп,1 ;"т;спД ) ,

к е{1;...; п}. Такие строки будем называть кодовыми словами. Множество кодовых слов

{м(1),..., м(п)} будем называть кодом и обозначать Г(п, д) .

Пример 1. Пусть п = 3, д = 3. Тогда I = д (п +1) = 12 и код Г(4,3) имеет вид:

(1)= (q\,q2,qз, Р*>Рз>Рв> РтРв>Рэ> Рю>Рп>Ри)>

w

w

(2) =

w

,(3)

= (qi>q2?q3* q4*qs*qe* Pi*Ps*P» Pio*Pii*P12)* = (qi*q2*q3* q4*qs*qe* qi*qs*q^ Pio*Pii*P12)•

Пусть П - множество всех возможных непустых перестановок I элементов. Рассмотрим

п еП1 - случайно выбранную перестановку. Эта перестановка должна быть известна распространителю программы, но неизвестна пользователям. В качестве множества меток будем

рассматривать Ж = {тт?^7гм^} .

Пусть г е {1,..., п} и отображение М: и ^ Ж ставит в соответствие каждому пользователю щ е и метку пм(г), где м(1) -кодовое слово кода Г(п, д). Пусть

К : N ^ и и{?} - отображение, для которого выполняются свойства

Ум е Ж К(м)е и,

Уме Ы1\Ж К(м) ='?'.

И пусть К = I1, где I - множество всех возможных вводов в программу х(е X). Таким

образом, ключ к е К = (к1;.;к1) - это вектор

длины I последовательных вводов в программу

х g X. Каждый kj позволяет построить элемент w. метки м = (м1;...;м/) , где уе{1;...;/}.

Рассмотрим отображения f: X х N х I ^ X и g: X х I ^ N, определённые в разделе 1, и схему ЦОП следующего вида:

£ = (X, U, W, K, E, D, M, Л),

где E: Xх Wх Г ^X и D: X х K ^ Nz действуют соответственно по алгоритмам 3 и 4, определённым следующим образом:

Алгоритм 3 (встраивания метки в приложение).

Вход: х g X - пустой контейнер, k = (k^...;kt) - ключ, u gU - легальный пользователь программы х.

Выход: х'е X - программа с внедрённой меткой.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1. Присвоить w = M(u) = (wT;.; wl) .

2. Присвоить j = 1, х0 = х .

3. Пока j < I присвоить Xj = f (Xj_1, Wj, kj), j = j + 1 и вернуться на шаг 2.

4. Присвоить х9 = х/.

Алгоритм 4 (извлечения метки из приложения).

Вход: х g X - программа с внедрённой меткой, k = (k1;.;kt) - ключ.

Выход: W = (w|;...; wj) g Nl - извлечённая метка.

1. Присвоить j = 1.

2. Пока j < / присвоить wjj = g(х', kj ) .

Если обнаружено отсутствие элемента, либо элемент не равен pj или qj, то присвоить

Wj =' v.

3. Присвоить j = j + 1 и вернуться на шаг 2.

4. Присвоить w' = (wj;...;wj) .

По алгоритму 3 мы получаем программу, в которую по алгоритму 1 Коллберга-Томборсона встроено / различных ЦВЗ, составляющих метку w( gW) . Таким образом, каждый пользователь получает копию программы с уникальной меткой, так как все строки матрицы различны. Для извлечения метки необходимо последовательно извлечь по алгоритму 2 Коллберга-Томборсона каждый из элементов метки. Схема согласно определению 3 является динамической.

m,i

ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIYREGION.

TECHNICAL SCIENCE. 2018. No 3

3. Применение метода Хи-Томборсона в динамической схеме цифровых отпечатков пальцев

Важным отличием динамической схемы ЦОП, описанной в разделе 2, от оригинального CT-алгоритма является то, что в ней в качестве метки используется большое количество не связанных друг с другом структур. Отсутствие связности позволяет в случае нахождения злоумышленником одного из элементов метки сохранить в тайне местоположение остальных. Однако данная особенность влечёт за собой дополнительные сложности для применения метода Хи-Томборсона, такие как как нехватка констант для того, чтобы обеспечить связь с программой необходимому числу деревьев, и отсутствие подходящих для конкретных констант деревьев.

Для решения первой проблемы можно использовать разбиение констант на арифметические выражения. Например, пусть в программе имеется строка х:= 42, и для обеспечения защиты требуется применить метод Хи-Томборсона к двум различным элементам метки Wl и W2, т. е. создать связь этих деревьев с константой. Однако в программе больше нет свободных констант. Тогда указанная строка переписывается, например, в виде х = 6 • 7. Затем она преобразуется к виду х = Да1,а2,...,ак )• f(bl,b2,...,bm ), к,т е N где а1,а2,...Дк - указатели внутрь структуры w1, а Ь1,Ь^,.,Ьт - внутрь структуры W2 . При помощи такого разбиения можно значительно увеличить количество пригодных для использования метода констант, так как для всех чисел существует большое количество различных разбиений.

Таким же способом можно решить и проблему отсутствия подходящих констант. Например, если определённые выше элементы метки Wl и W2 не содержат поддеревьев, которые можно преобразовать в константы 6 и 7 соответственно, использование данного разбиения становится невозможным, однако можно попытаться найти другое разбиение, которое подойдёт к этим элементам. Кроме того, существует и другое решение данной проблемы. В разделе 2 определены множества Р и Q, которые могут быть созданы произвольным образом. Из этого следует, что можно создать данные множества с учётом уже существующих в программе констант.

Важно отметить и один неразрешимый недостаток применения данного метода. Так как вместо программных констант используется сложная функция, ухудшается производительность программы, что усугубляется большим количеством элементов метки. Однако, учитывая производительность современных систем, данный недостаток не является критичным и в большинстве программ ухудшение производительности останется незамеченным. Кроме того, он в значительной мере нивелируется высокими параметрами защищённости, позволяя находить подмножество членов коалиции даже в том случае, если объединятся все легальные пользователи.

Заключение

В работе описана динамическая коалиционно стойкая схема ЦОП для программного обеспечения. Построено её усиление путём использования метода Хи-Томборсона. Описаны связанные с использованием данного метода проблемы и представлены их решения. Использование вместе с описанной в разделе 2 схемой ЦОП метода Хи-Томборсона в значительной мере усиливает её защиту, усложняя анализ программы злоумышленниками. Схема хорошо подходит для программ с небольшим количеством пользователей, но высокими требованиями к коалиционной стойкости, позволяя обнаруживать подмножества коалиций любых возможных размеров.

Литература

1. Collberg C.S., Thomborson C. Software watermarking: Models and dynamic embeddings // Proceedings of the 26th ACM SIGPLANSIGACT symposium on Principles of programming languages. 1999. P. 311 - 324.

2. Nematollahi M.A., Vorakulpipat C., Rosales H.G. Digital Watermarking: Techniques and Trends. Berlin, 2016. 216 p.

3. Chionis I., Chroni M., Nikolopoulos S.D. Watermarking Java application programs using the WaterRpg dynamic model // Proceedings of the 14th International Conference on Computer Systems and Technologies. 2013. P. 291 - 298.

4. Peng C., Zhou Q. An IPPCT Dynamic Watermarking Scheme Based on Chinese Remainder Theorem // Computational and Information Sciences (ICCIS), 2013 Fifth International Conference. 2013. P. 167 - 170.

5. Zhang S., Zhu, B.A Dynamic Graph Software Watermarking Algorithm Based on Chaotic Theory // Industrial Control and Electronics Engineering (ICICEE), 2012 International Conference. 2012. P. 1247 - 1250.

6. Eppstein D., Goodrich M.T., Lam J. [et al.]. Models and 9. Boneh D., Shaw J. Collusion-secure fingerprinting for digital Algorithms for Graph Watermarking / // International data // IEEE Transactions on Information Theory. 1998. Vol. Conference on Information Security. 2016. P. 283 - 301. 44, No 5. P. 1897 - 1905.

7. Collberg C.S., Thomborson C., Townsend G.M. Dynamic 10. Nagra J. Collusive Attacks Against Software Watermarks // graph-based software fingerprinting // ACM Transactions on TENCON 2006. 2006 IEEE Region 10 Conference. 2006. Programming Languages and Systems (TOPLAS). 2007. P. 1 - 4.

Vol. 29, No 6. P. 35:1 - 35:67. 11. Гульден Я., Джексон Д. Перечислительная комбинато-

8. Thomborson C., Nagra J., Somaraju R., He C. Tamper- рика. Пер. с английского под ред. В.Е. Тараканова. М: proofing software watermarks // Proc. of the AISW 2004. Наука, 1990. 504 с.

2004. Vol. 32. P. 27 - 36.

References

1. Collberg C.S., Thomborson C. Software watermarking: Models and dynamic embeddings. Proceedings of the 26th ACM SIGPLANSIGACT symposium on Principles of programming languages, 1999, pp. 311 - 324.

2. Nematollahi M.A., Vorakulpipat C., Rosales H.G. Digital Watermarking: Techniques and Trends. Berlin, 2016, 216 p.

3. Chionis I., Chroni M., Nikolopoulos S.D. Watermarking Java application programs using the WaterRpg dynamic model. Proceedings of the 14th International Conference on Computer Systems and Technologies, 2013, pp. 291 - 298.

4. Peng C., Zhou Q. An IPPCT Dynamic Watermarking Scheme Based on Chinese Remainder Theorem. Computational and Information Sciences (ICCIS), 2013 Fifth International Conference, 2013, pp. 167 - 170.

5. Zhang S., Zhu, B.A Dynamic Graph Software Watermarking Algorithm Based on Chaotic Theory. Industrial Control and Electronics Engineering (ICICEE), 2012 International Conference, 2012, pp. 1247 - 1250.

6. Eppstein D., Goodrich M. T., Lam J. et al. Models and Algorithms for Graph Watermarking . International Conference on Information Security, 2016, pp. 283 - 301.

7. Collberg C.S., Thomborson C., Townsend G.M. Dynamic graph-based software fingerprinting. ACM Transactions on Programming Languages and Systems (TOPLAS), 2007, V. 29, no. 6, pp. 35:1 - 35:67.

8. Thomborson C., Nagra J., Somaraju R., He C. Tamper-proofing software watermarks. Proc. of the AISW 2004, 2004, V. 32, pp. 27 - 36.

9. Boneh D., Shaw J. Collusion-secure fingerprinting for digital data. IEEE Transactions on Information Theory, 1998, V. 44, no. 5, pp. 1897 - 1905.

10. Nagra J. Collusive Attacks Against Software Watermarks. TENCON 2006. 2006 IEEE Region 10 Conference, 2006, pp. 1 - 4.

11. Gul'den Ya., Dzhekson D. Perechislitel'naya kombinatorika [Enumerative combinatorics]. Moscow: Nauka, 1990, 504 p.

Поступила в редакцию /Receive 26 февраля 2018 г. /February 26, 2018

i Надоели баннеры? Вы всегда можете отключить рекламу.