ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА
№8 ПРИЛОЖЕНИЕ Сентябрь 2015
Секция 3
МАТЕМАТИЧЕСКИЕ МЕТОДЫ КРИПТОГРАФИИ
УДК 519.113.6 Б01 10.17223/2226308Х/8/20
ШИФРЫ С ВОДЯНЫМИ ЗНАКАМИ
Г. П. Агибалов
Для защиты конфиденциальности и легальности данных вводится понятие шифра с водяным знаком (называемого также —-шифром). Его основная идея следующая: преобразование открытого текста х композицией операций шифрования и расшифрования с использованием соответствующих ключей приводит к некоторому подходящему тексту х', сохраняющему информацию текста х и содержащему некоторый уникальный водяной знак w, идентифицирующий подлинного владельца х'. Ключи зашифрования и расшифрования в —-шифре должным образом связаны друг с другом и с заданным водяным знаком w. В отличие от шифров, обычно изучаемых в криптографии, функция шифрования в —-шифре не обязательно обратимая. Таким образом, фактически —-шифры не являются шифрами в известном смысле этого слова, но шифры суть —-шифры некоторого частного вида, и все термины, понятия и обозначения, относящиеся к шифрам, полностью применимы к —-шифрам. Показано, как применением —-шифра можно осуществить встраивание водяного знака в данные в процессе зашифрования открытого текста либо в процессе расшифрования шифртекста. Приводятся примеры —-шифров, построенных на базе симметричных поточных шифров.
Ключевые слова: защита данных, шифрование, водяные знаки, шифры с водяными знаками, поточные шифры.
Введение
Методы шифрования данных и внедрения в них водяных знаков принадлежат различным областям науки — криптографии [1, 2] и стеганографии [3, 4] соответственно. Первые применяются для защиты конфиденциальности информации, вторые — для защиты информации от её нелегального использования. Как правило, шифрование данных является обратимым преобразованием с ключом расшифрования, неизвестным злоумышленнику, а внедрение в данные водяного знака есть операция сокрытия последнего в данных для идентификации автора нелегальной копии данных. Предполагается, что это сокрытие производится без существенного искажения защищаемых данных, как это делается, например, при внедрении водяного знака в цифровое видео. Рассматривается проблема обеспечения защиты данных от обеих указанных угроз. Есть два тривиальных способа решить эту проблему: сначала внедрить водяной знак в данные и затем зашифровать полученный открытый текст, либо, наоборот, сначала зашифровать данные и затем после расшифрования внедрить в полученный текст нужный водяной знак. Имеются, однако, серьёзные ограничения к применению этих способов на практике [4]. В частности, второй способ предполагает доверенного получателя данных, каковым не является, например, покупатель тех же видеоданных.
В работе вводится понятие шифра с водяным знаком, называемого, для краткости, w-шифр, или, в англоязычной транскрипции, a watermarking cipher. В нём преобразование открытого текста x композицией алгоритмов зашифрования и расшифрования, использующих некоторые, должным образом подобранные ключи зашифрования и расшифрования, порождает текст x', содержащий заданный водяной знак w. Мы показываем, каким образом с помощью w-шифра возможно внедрение водяного знака в данные (в тайне от их получателя, естественно) как в процессе зашифрования данных отправителем, так и в процессе расшифрования данных их получателем. Функции зашифрования и расшифрования в w-шифре не обязательно связаны между собой отношением обратимости, как в криптографических шифрах. Это значит, что в действительности w-шифры не обязаны быть шифрами, но всякий шифр является частным случаем w-шифра (с вырожденным водяным знаком), и все термины, понятия и обозначения, оносящиеся к шифрам, вполне уместны и в применении к w-шифрам.
Далее, прежде чем дать общее определение шифров с водяными знаками и описать некоторые конкретные примеры их, мы сформулируем некоторые допущения и предположения, необходимые для того, чтобы сделать это более или менее корректно и понятно.
1. Проблема w-шифрования
Прежде всего, предположим для простоты, что защищаемые данные представлены конечной последовательностью (строкой, словом) символов, являющихся элементами аддитивной группы G с операцией сложения +. Например, G = Zn или G = Z^ для некоторого n ^ 2, и т. п. В частности, данные могут быть представлены последовательностью бит (возможно, с некоторой структурой). Для любых a = a1a2 ... ar и b = &i&2... br в Gr пусть a + b = (ai + 6i)(a2 + b2)... (ar + br), —b = (—bi)(—... (—br) и a — b = a + (—b).
Предполагается, что водяной знак является некоторой парой w = (v,n), где v = = V1V2 ...vm G (G\{0})m и n = iii2 . . . im, ¿j G {1,...,/}, j = 1, . . . , Ш, 1 ^ ¿1 < ¿2 < . . . < < ¿m ^ l для некоторого I ^ 1. В случае необходимости он обозначается (v, n)i. Водяной знак w' = (v', n), в котором v' = — v, называется инверсией знака w и обозначается —w. Очевидно, —(—w) = w. В случае |G| = 2 считаем, что G = Z2. В этом случае в любом водяном знаке w = (v, n) слово v есть вектор 11... 1, так что w однозначно определяется набором n, и мы пишем w = n.
Встраивание водяного знака w в строку данных x = x1x2 ... xi G Gl выполняется с помощью операции сложения, определённой на G. Результатом встраивания является строка данных x' = x'1x/2 ... xl, в которой xj = xj + vt, если j = ¿t G J = {¿1,... , ¿m}, и xj = xj, если j G {1,...,/} \ J. Говорим, что строка x' есть строка x с внедрённым знаком w, и обозначаем её x + w. Мы пишем также x — w вместо x + (—w). Строка v и набор n называются соответственно значением и местоположением знака w в x'. Фактически, числа ¿1, ¿2,... , ¿m в n указывают позиции в x для встраивания v1, v2,... , vm соответственно из значения v знака w. Набор n называется подходящим местоположением для w в x, если x' получается из x без заметной потери информации. В этом случае мы называем x' производной (или копией) от x с корректно (или приемлемо) встроенным (внедрённым) водяным знаком w.
Например, если x является битовой строкой цифрового видео и v = 11... 1 G Zm, то встраивание знака w в x состоит в инвертировании бит xi1, xi2,... , xim. В этом случае если позиции бит ¿1, ¿2,... , ¿m выбраны так, что инверсия этих бит в x заметно не разрушает видео, то полученная битовая строка x' является копией строки x c при-
емлемо внедрённым водяным знаком ад, обе х' и х могут равнозначно использоваться как цифровое видео, но х', кроме того, содержит водяной знак для идентификации потенциального злоумышленника.
Мы говорим, что водяной знак и строка данных взаимно подходящие, т.е. w подходит для х и наоборот, если х имеет экспоненциальное количество подходящих местоположений для и> в х. Здесь под экпоненциальным количеством подразумевается экспоненциальная функция от длины т знака ад. Такое число походящих местоположений предотвращает злоумышленника от атаки грубой силы перечислением всех возможных подходящих местоположений в х'. Так, цифровые аудио- и видеоданные являются двумя примерами битовой строки данных, для которой встраивание водяного знака путём инверсии битов в некоторых позициях является подходящим.
Кроме того, мы предполагаем, что существуют производитель (ВР) строки данных х и её покупатели, или клиенты (ВС). Производитель ВР хочет передать строку х некоторому ВС и так, что никто другой не может перехватить х или секретно получить её в своё собственное владение от и. С этой целью ВР должен выбрать уникальный и подходящий водяной знак w и некоторый ключ шифрования ке для некоторого '-шифра С, зашифровать х, применив С и ке, и послать клиенту и полученный так шифртекст у и нужный ключ расшифрования к^, построенный таким образом, что расшифрование у на этом ключе даёт в качестве результата некоторую строку данных х', которая является производной от х, с корректно внедрённым знаком ад. При этом неважно, на какой стадии, во время шифрования или расшифрования, w встроен в х. Расшифровывая у на ключе к^, клиент и получает уникальную и приемлемую копию х' данных х. Если и передаст её другому клиенту, то ВР сможет однозначно идентифицировать и по значению V из w и его местоположению п в х'.
Поскольку и сам может быть мошенником, ключ расшифрования к^ должен быть связан с водяным знаком ад так, что определить ад по к^ и шифртексту у вычислительно невозможно за реальное время, т. е. не существует алгоритма вообще или с полиномиальной сложностью (как функции от т), вычисляющего ад из к^ и у.
2. Определение ,^шифра
Итак, мы приходим к следующему понятию '-шифра: для любых взаимно подходящих водяного знака ад и открытого текста х преобразование последнего композицией операций зашифрования и расшифрования на соответствующих ключах, связанных некоторым образом друг с другом и с ад, создаёт текст х' = х + ад, представляющий собой результат внедрения ад в х: На этом пути мы вводим два типа '-шифров:
1) '-шифр с '-расшифрованием— открытый текст х зашифровывается в зависимости только от ключа к '-шифра, а полученный шифртекст у расшифровывается в зависимости от к и подходящего водяного знака ад. Таким образом, значение ке ключа зашифрования может быть произвольным, ключ расшифрования к^ должен быть предопределён выбранными ке и ад, т. е. быть функцией от к и ад;
2) '-шифр с '-зашифрованием — открытый текст х зашифровывается в зависимости от ключа к '-шифра и подходящего водяного знака ад, а полученный шифртекст у расшифровывается в зависимости только от к. Таким образом, ключ зашифрования ке должен быть функцией от к и ад, ключ расшифрования к^ должен быть функцией только от к.
Формально '-шифр определяется набором из шести объектов С = (X, К, Ж, Л, Е, Д), где X есть множество строк данных, включая открытые тексты, шифртексты и тек-
сты с встроенными водяными знаками, X = С*; К и Ш суть множества ключей и водяных знаков соответственно; Н есть ключевая функция, Н : К х Ш ^ К, и Е и Е суть алгоритмы зашифрования и расшифрования соответственно, являющиеся некоторыми отображениями Е : X х К ^ X и Е : X х К ^ X, такими, что для любых взаимно подходящих х Е X и т Е Ш и для любого к Е К удовлетворяются следующие условия:
1) в -№-шифре с w-расшифрованием —
если Е(х, к) = у, то Е(у, Н(к, т)) = х' = х + т;
2) в w-шифре с w-зашифрованием —
если Е(х, Н(к, т)) = у, то Е(у, к) = х' = х + т.
В случае Н(к,т) = к для любых к Е К, т Е Ш мы допускаем вместо к писать Н(к, т) в последних выражениях и Л вместо Н в С.
3. Примеры '-шифров
Тривиальный пример w-шифра (X, К, Ш, Л, Е, Е) над С можно построить из симметричного шифра (X, У, К, Е', Е') с X = У = С* и множества Ш водяных знаков, положив Е(х, к) = Е'(х + т, к) и Е(у,к) = Е'(у, к) или Е(х, к) = Е'(х, к) и Е(у, к) = Е'(у, к) + т.
Простейшим нетривиальным примером w-шифра является одноразовый блокнот с водяным знаком С = (X, К, Ш, Н, Е, Е), где X = К = С*. В этом w-шифре с w-рас-шифрованием для данного водяного знака т = (^,п) шифртекст у = у^2 .. .у Е X получается сложением открытого текста х = х1х2 ... х^ Е X и ключа к = ... ^ Е Е К, т. е. у = х+к, и расшифрование у в открытый текст х' = х^х2 ... х{ Е X с водяным знаком т производится вычитанием другого ключа к' = к — т = ¿1 ¿2 ... г' Е К из у, т. е. х' = у — к'.
Этот же w-шифр с w-зашифрованием описывается соотношениями к' = к + т, у = х + к', х' = у — к.
Непосредственно проверяется, что в обоих случаях х' = х + т. В первом случае ке = к, к^ = Н(к, т) = к' и знак т автоматически встраивается в х в процессе расшифрования. Во втором случае это делается в процессе зашифрования и ке = к' = Н(к,т), кл = к.
Другими словами, для любых I ^ 1, х,к Е С1 и т Е Ш
1) в С1 с w-расшифрованием —
Е(х, к) = х + к = у, Н(к, т) = к — т, Е(у, Н(к, т)) = у — Н(к, т) = у — к + т = х';
2) в С1 с w-зашифрованием —
Н(к, т) = к + т, Е(х, Н(к, т)) = х + Н(к, т) = х + к + т = у, Е(у, к) = у — к = х'.
Ещё одним примером w-шифра является поточный шифр с водяным знаком С а = = (X, К, Ш, Н, Е, Е) над конечным полем ^ с X = ^* и с генератором ключевого потока, являющимся некоторым конечным автономным автоматом А с нелинейной функцией выходов. Автомат А представляется четвёркой объектов А = (ф, д, f), где ф, ^ суть множества состояний и выходных символов соответственно, ф = п ^ 1, ^ = ^ и д^ суть функции переходов и выходов автомата А, д : ф ^ Q,f : ф ^ ^. Предполагается, что функция выходов f является непременно частью ключа к w-шифра.
Иногда начальное состояние q(1) автомата A и его функция переходов g могут быть другими частями этого ключа. Далее, для общности, произвольный ключ в K обозначается знаком k[q(1), g, f ], подразумевающим f обязательной и q(1) и g опциональными составляющими ключа. Предполагается также, что в A для любого начального состояния q(1) Е Q и целого l ^ 1 состояния q(t) = gt-1(q(1)), t = 1, 2,..., l, все различные. В этом случае для любого w = (v, п)г Е W с v = v1v2 ... vm и n = i1i2 ... im можно определить функцию íw,q(1),l : Q ^ Z таким образом, что для любого s Е Q, íw,q(1),l(s) = Vj, если s = q(ij), j Е {1, 2,... , m}, и íw,q(1),l(s) = 0 в противном случае, т. е. если s = q(t), t Е {1, 2,... , l} \ {i1, i2,... , im}. Ключевая функция h, алгоритмы шифрования и расшифрования E,D и ключи ke,kd в CA определяются в каждом из двух возможных случаев следующим образом:
1) случай w-расшифрования —
Е(x,k) = Е (x1x2 .. .xi,k[q(1),g,f ]) = У1У2 ...yi = У, где y = x + z, z = Z1Z2 ... zi, zt = f (gt-1 (q(1))), t =1, 2,... ,l; h(k,w) = h(k[q(1),g,f], (v,n)i) = k[q(1),g,f1L где f1 = f - ^w,q(1),i; D(y,k[q(1),g,f1]) = D(y^2 . ..yi,k[q(1),g,f1]) = x1x2 .. .xí = x/, где x/ = y - z/, z/ = z/z2 ...zl, zt = f1(gt-1(q(1))), t = 1, 2,...,l;
2) случай w-зашифрования —
h(k,w) = ^fc^^gj^ (v,n)i) = k[q(1),g,f2], где f2 = f + ¿w,«(1),i;
E(x, h(k, w)) = E(x1x2 ... x¿, k[q(1), g, f2]) = У1У2 ... yi = У, где y = x + z/, z/ = z1 z2 ...z/, zt = f2(gt-1(q(1))), t = 1, 2,...,l;
D(y,k) = D(y1y2.. .yi ,k[q(1),g,f]) = x1x2.. .xl = x/,
где x/ = y - z, z = z1z2 ... zi, zt = f (gt-1(q(1))), t =1, 2,..., l.
В обоих случаях непосредственно проверяется, что x/ = x+w. Кроме того, в первом случае ke = k[q(1),g,f] и = k[q(1), g, f1], во втором случае ke = k[q(1),g,f2] и = = k[q(1), g, f].
Наконец, опишем шифр с водяными знаками CR = (X, K, W, h, Е, D), являющийся конкретизацией w-шифра CA, в которой автомат A = (Q,Z, g, f) представляет собой нелинейный фильтрующий генератор ключевого потока [2], построенный из регистра сдвига с линейной обратной связью (LFSR) R некоторой длины n с примитивным характеристическим полиномом c0 + c1 u + ... + cn-1un-1 — un в Z2 [u] и нелинейной булевой фильтрующей функцией f от n переменных. Таким образом, F = Z2, X = Z2, в любом w = (v,n) Е W строка v есть вектор 11... 1, так что w = n = i1 i2 . ..im, Q = Zn, Z = Z2 и для любого s = s0s1... sn-1 Е Q имеет место g(s) = s1... sn-1sn, где sra = coso + C1s1 + ... + C„-1s„-1.
Поскольку в Z2 операции сложения и вычитания совпадают со сложением по mod 2 и сложение с 1 означает инверсию, следующие соотношения верны в CR: 1) если q(1) =
m
= 00... 0 и l ^ 2n — 1, то íw,q(1),l(s) = sq(ij), где для a = a0a1... an-1 Е Zn спра-
j=1
ведливо: s°" = sq° Л s^1 Л ... Л sn—11, s^4 = —st, если at = 0, и s^4 = st, если at = 1, t = 0,1,... , n — 1; 2) f1 = f2; 3) алгоритмы зашифрования и расшифрования в случае w-зашифрования являются алгоритмами соответственно расшифрования и зашифрования в случае w-расшифрования.
w-Шифр CR со встраиванием водяного знака в процессе расшифрования реализован и протестирован на MPEG-видеоданных. Информацию об этом см. в [5, 6].
ЛИТЕРАТУРА
1. Stinson D. R. Cryptography. Theory and Practice. CRC Press, 1995. 434 p.
2. Menezes A., van Oorshot P., and Vanstone S. Handbook of Applied Cryptography. CRC Press, 1997. 662 p.
3. Langelaar G. C. Real-time Watermarking Techniques for Compressed Video Data. Delft: Delft University of Technology, 2000. 155 p.
4. Mistry D. Comparison of digital water marking methods // Intern. J. Comp. Sci. Engin. 2010. V.2. No. 9. P. 2905-2909.
5. Анжин В. А. Метод защиты от нелегального копирования в цифровых видеотрансляциях через внедрение водяных знаков при расшифровании // Прикладная дискретная математика. Приложение. 2014. №. 7. С. 73-74.
6. https://github.com/anjin-viktor/mpeg2decwtrk/ — Method implementation for MPEG2 Video. 2014.
УДК 004.056.55 DOI 10.17223/2226308X/8/21
ПОСТРОЕНИЕ КРИПТОСИСТЕМЫ С ОТКРЫТЫМ КЛЮЧОМ НА ОСНОВЕ ПОЛНОСТЬЮ ГОМОМОРФНОГО ШИФРОВАНИЯ1
В. В. Егорова, Д. K. Чечулина
Работа посвящена изучению практической применимости схемы полностью гомоморфного шифрования, созданной в Лаборатории современных компьютерных технологий НИЧ НГУ. Рассмотрено приложение гомоморфного шифрования для построения криптосистемы с открытым ключом, основанной на алгоритме RSA. На примере этой криптосистемы продемонстрирована корректность выполнения арифметических операций над зашифрованными данными, а также отсутствие увеличения размерности зашифрованных сообщений при умножении.
Ключевые слова: гомоморфное шифрование, криптосистема с открытым ключом, алгоритм RSA.
В Лаборатории современных компьютерных технологий НИЧ НГУ в рамках проекта «Защищённая база данных» разработана и реализована схема полностью гомоморфного шифрования, позволяющая выполнять операции сложения и умножения над зашифрованными данными. Рассмотрим подробнее эту схему. Пусть требуется шифровать целые числа размера t бит. Для этого необходимо выбрать целое число — модуль m, по которому будут производиться все вычисления в схеме. Модуль является частью секретного ключа. Для того чтобы однозначно восстановить любое зашифрованное число, модуль должен удовлетворять условию 2* < m.
Кроме того, для шифрования требуется секретный вектор k G Zn, который строится следующим образом. Сгенерируем матрицу W размера n х n, обратимую по модулю m, а также вектор u G Zn, компоненты которого по модулю не превосходят m. Вектор k определим как решение системы линейных уравнений
(W ■ k) mod m = u,
которая всегда разрешима, так как матрица W обратима по модулю m. Таким образом, k = (W-1 -u) mod m. Матрица W и вектор u также являются частью секретного ключа. Перейдём к описанию алгоритма шифрования. Пусть p < 2* < m — целое число,
1 Работа поддержана грантом Минобрнауки РФ, договор №02.G25.31.0054.