Тема защиты авторских прав в нынешнее время стала максимально востребованной, появилось множество способов не допустить нелицензионного тиражирования, Один из таких способов – цифровой водяной знак (англ. Digital Watermarking, ЦВЗ),  добавление к исходной информации (цифровому изображению, видео- или звуковому файлу) некоторых скрытых маркеров, устойчивых к каким-либо атакам. В основном Digital Watermarking используют для определения факта нарушения авторских прав, но, конечно же, сфера применения цифровых водяных знаков этим не ограничивается. Например, цифровые водяные знаки могут использоваться для передачи секретной информации, проверки подлинности электронных документов и в ряде других приложений. Во многих приложениях и сайтах внедрена защита видеопродукции при помощи ЦВЗ, где происходит построение множества идентификационных меток, внедрение одной из меток в видеопоследовательность, извлечение метки из пиратской копии видеопоследовательности, поиск участников коалиции по извлеченной метке.

Давайте рассмотрим внедрение и проверку цифрового водяного знака на примере работы алгоритма дискретного wavelet-преобразования для изображения.

Дискретное wavelet-преобразование

Дискретное wavelet-преобразование раскладывает сигнал на взаимно ортогональный набор вейвлетов (математических функций, позволяющих анализировать различные частотные компоненты данных), что является основным отличием от непрерывного вейвлет-преобразования. Вейвлет может быть сконструирован из функции масштаба, которая описывает свойства его масштабируемости. Ограничение состоит в том, что функция масштаба должна быть ортогональна своим дискретным преобразованиям, что подразумевает некоторые математические ограничения на них:

φ(x)=\sum_{k=-∞}^∞a_kφ(Sx-k).

где S - фактор масштаба (у нас он будет равен 2), более того, площадь под функцией должна быть нормализована, и функция масштабирования должна быть ортогональна, поэтому:

\int_{-∞}^∞ φ(x)φ(x+l)dx=δ_{0,l}

После введения некоторых дополнительных условий (поскольку вышеупомянутые ограничения не приводят к единственному решению) мы можем получить результат этих уравнений, т.е. конечный набор коэффициентов a_k которые определяют функцию масштабирования, а также вейвлет. Набор вейвлетов затем формирует ортонормированный базис, который мы используем для разложения, обычно только несколько коэффициентов a_kбудут ненулевыми, что упрощает расчёты.

Схема работы алгоритма

Давайте рассмотрим схему работы на растровом изображении.

Зададим двумерный массив B, имеющий размеры (2^n+1)×(2^n+1), обозначающий яркость конкретной координаты по одному из цветов ( B[x,y]– яркость пикселя с координатами (x,y)для всех  x,y = 0..2^n)

Далее давайте рассмотрим i-й шаг: создадим четыре массива (модель двумерного wavelet-преобразования):

B_i[x,y] = B_{i-1}[2x,2y]H_i[x,y] = B_{i-1}[2x+1,2y] - \frac{1}{2}(B_{i-1}[2x,2y]+B_{i-1}[2x+2,2y]),V_i[x,y] = B_{i-1}[2x,2y+1] - \frac{1}{2}(B_{i-1}[2x,2y] + B_{i-1}[2x,2y+2],C_i[x,y] = B_{i-1}[2x+1,2y+1] - \frac{1}{4}(B_{i-1}[2x,2y] + B_{i-1}[2x+2,2y] + B_{i-1}[2x,2y+2] + B_{i-1}[2x+2,2y+2]),

Для всех x,y = 0..2^{n-i}.

Здесь H_i означает отклонение яркости точки с координатами (2x+1,2y)от среднего арифметического яркостей двух соседних по горизонтали точек (2x,2y) и (2x+2,2y)  (рис. 1),

V_i  означает отклонение яркости точки с координатами (2x,2y+1) от среднего арифметического яркостей двух соседних по горизонтали точек (2x,2y) и (2x,2y+1) (рис. 2),

C_i означает отклонение яркости точки с координатами (2x+1,2y+1) от среднего арифметического яркостей четырех соседних точек. (рис. 3)

Рис.2
Рис.2
Рис.1
Рис.1
Рис.3
Рис.3

Далее мы «обновляем» точки массива B_i:

B_i[x,y] = B_i[x,y] + \frac{1}{4}(H_i[x,y]+V_i[x,y] + C_i[x,y].

Обновление нужно для того, чтобы средняя энергия изображения B_i (его средняя яркость) была равна средней яркости исходного массива. Очевидно, что изображение B_{i-1}, и как следствие, B однозначно восстанавливается. Стоит также заметить, что каждый раз, когда мы вычисляем новые элементы H_i, V_i, C_i, мы можем больше не запоминать те, что использовали для их вычисления ( B_{i-1}[2x+1,2y], B_{i-1}[2x,2y+1], B_{i-1}[2x+1,2y+1]). Это значит, что наш алгоритм не привлекает дополнительной памяти.

Выполняем наши шаги до того момента, пока наш массив B не будет размера  (2×2). То есть, теперь мы имеем и наборы H_1, V_1, C_1; H_2, V_2, C_2;..; H_n, V_n, C_n

Заметим, что H_i, V_i, C_i  влияют только на 2^i+1пикселей, таким образом, каждый шаг соответствует разной степени резкости (детализации). Например, для i=1 каждый коэффициент влияет на всего лишь 3 пикселя, если i = 2то на 5 и т д.

Попробуем теперь внедрить наш ЦВЗ в изображение, для этого мы выбираем α∈(0,1) - «заметность» водяного знака, резкость -­ шаг k и массив H, V или C, на котором и будем введен водяной знак.

Пусть для определенности это будет H_k, тогда заменим его на массив H_k^{'}, такой что:

H_k^{'}[x,y]=(1-α)H_k[x,y]+αW[x,y].

Здесь W_k, и как следствие H_k^{'}, имеет тот же размер, что и H_k. W_kможно назвать коэффициентами wavelet-преобразования другого изображения B^w.

Произведем обратное wavelet-преобразование и получим новое изображение, назовем его B^{'}.

Теперь, давайте поговорим о том, как автор, имея только B^w, или еще проще сами коэффициенты W_k[x,y], их легко вычислит, зная все остальное), параметр k ,в какой массив внедрялся Wи заметность α, сможет проверить наличие ЦВЗ.

Зная исходное изображение, можно проверить, помечено ли наше изображение, просто сравнивая разность коэффициентов и массив W.

Теперь рассмотрим случай, когда нам не известно изображение-оригинал B и, по этим же причинам B^{'}. Тогда мы не можем точно сказать, использован ли тут ЦВЗ, но можем оценить вероятность его нахождения. Для этого мы предположим, что наше изображение осмысленное, то есть не является хаотичным распределением яркостей пикселей. Соответственно массив H_k, предположительно несущий в себе водяной знак и напрямую связанный с изображением, тоже являет собой некоторую упорядоченную структуру. Значит, что H_k до добавления в него αW_kбыл более не менее упорядоченной структурой, значит, что нам надо для H_k-αW_k(с точностью до коэффициента 1-α) ввести меру упорядоченности – сложности. Вполне подходит вариация функции. Действительно, чем меньше резких перепадов функции, тем меньше ее вариация. Для двумерного массива введем аналог вариации:

Var(H_k)=\sum_{x,y = 0}^{2^{n-k}-1}(|H_k[x,y]-H_k[x+1,y]|+|H_k[x,y]-H_k[x,y+1]|).

Давайте поймем, как можно применить данную функцию: как и описывалось ранее, если H_k - результат нанесения водяного знака ( αW_k), то он будет более сложным, чем H_k-αW_k, значит будет выполняться:

Var(H_k)>Var(H_k-αW_k).

Для более надежной работы алгоритма, можно ввести порог, после которого будем считать, что ЦВЗ обнаружен, если

Var(H_k)-Var(H_k-αW_k)>βαVar(W_k),

где значение αVar(W_k) будет соответствовать максимально возможному увеличению вариации при добавлении αW_k к массиву H_k, а β-параметр подбирается экспериментально.

Заключение

Стоит сказать, что приведенный алгоритм на основе дискретного wavelet-преобразования лишь один способ из многих, которыми можно осуществить внедрение цифрового водяного знака и проверить наличие такового в файле. Например, для текста можно использовать кодирование со сдвигом строки, для изображения - водяные знаки домена DСT, а для звука - кодирование с наименьшей значимостью. Преимущество приведенного выше алгоритма заключается в том, что такие водяные знаки устойчивы по отношению к сжатию JPEG (для изображений) и некоторым другим искажения, вот почему данный метод остается актуальным и по сей день.

Комментарии (11)


  1. Dzzzen
    28.11.2021 22:02
    +6

    Можете привести примеры изображений до и после внедрения водяных знаков? И такой вопрос - с юридической точки зрения эти внедренные знаки имеют какую-то силу?


    1. borovinskiy
      29.11.2021 00:38
      +2

      С юридической точки зрения как в договоре написано, так и будет.

      Если правообладатель продает ресурс сервису и договор с сервисом предусматривает ответственность за утечку и потом вдруг ресурс утек к пиратам и по водяному знаку выяснили от кого именно утек, правообладатель может требовать с сервиса деньги как в договоре прописано.


      1. GospodinKolhoznik
        29.11.2021 07:22

        Любое положение договора может быть признано юридически ничтожным, если оно противоретит какому либо нормативно правовому акту. Соотвественно вопрос о юридической силе водяного знака в первую очередь это не вопрос того, что написано в договоре, а того, что написано в законодательстве и какова судебная практика.


        1. borovinskiy
          29.11.2021 08:38

          Есть соображения какие статьи водяной знак нарушает?


          1. GospodinKolhoznik
            29.11.2021 08:47
            +1

            Не сам водяной знак, а требование денег за "утечку" на основании водяного знака.

            Первое, что приходит в голову - где подтверждение того, что утечка произошла именно на стороне покупателя, а не на стороне правообладателя, который специально слил ресурс с водяным знаком покупателя, чтобы затребовать с него денег? Или же слил кто то из сотрудников компании правообладателя намеренно с водяным знаком покупателя, чтобы отвести подозрение от себя.


            1. borovinskiy
              29.11.2021 09:00

              Это не про нарушение законов, а про формулирование пунктов договора. Если там будет сформулировано что-то типа: "стороны договорились, что доказательством нелицензионного распространения является наличие водяного знака с идентификатором лицензиата на нелицензионных копиях"... то лицензиат либо подписывается под этим, либо нет. Если не подписывается, не будет договора. Если подписывается, значит он верит, что правообладатель сам выкладывать ресурс с его идентификатором не будет.


  1. borovinskiy
    29.11.2021 00:43
    +1

    Скрытые водяные знаки в целях поиска места утечки актуальны прежде всего в B2B.

    В B2C лучше социальный DRM (видимое внедрение меток кто скачал ресурс). Удалить его, конечно, можно. Но технически не подкованных людей это будет скорее психологически останавливать. Да и всегда есть вероятность, что кроме видимого водяного знака есть скрытый. Так что палево покупать и потом на торрентах выкладывать.

    Для некоторых типов ресурсов вообще лучше без DRM обойтись. Например ЛитРес утверждает, что книги без DRM приносят существенно больше прибыли так как легальные покупатели не хотят покупать книги с ограничениями по использованию (для воспроизведения нужны только определенные читалки).


    1. Moskus
      29.11.2021 01:11

      Я правильно понимаю, что только из-за того, что водяные знаки - это тоже DRM, вы утверждаете, что водяные знаки могут быть вредны, потому что может быть вреден другой вид DRM, доставляющий дополнительные неудобства потребителю?

      Если да, то это странная логика с некорректной индукцией.


      1. borovinskiy
        29.11.2021 02:44
        +1

        А какой смысл? Ну узнали вы, что на торрентах книга, купленная Ивановым И.И.

        Если Иванов не видит водяного знака (он скрытый), его водяной знак и не остановит.

        Дальше если вы и докажите, что это именно Иванов И.И. книгу выложил (что не факт, что сможете), с большой степенью вероятности много денег вы с него не стрясете. И смысл тогда заморачиваться этим всем?

        С юриками проще. Юрики, раз правообладатель поставляет им лицензионный контент, от правообладателя зависимы, им лучше будет миром все уладить, пообещать принять меры по недопущению пиратства и т.д.


        1. Moskus
          29.11.2021 03:23

          Ну начнем с того, что DRM не ограничивается одними только b2b, b2c. Кроме того, мало ли какие санкции могут быть в отношении физических лиц в самых разных контекстах.


          1. borovinskiy
            29.11.2021 10:50
            +1

            Согласен, не ограничивается. Не утверждал, что есть единственно правильный в любых контекстах вариант -)

            Мой комментарий для правообладателей, которые слишком много думают про "как бы у них не украли" и слишком мало про то, какую ценность их ресурс несет покупателю и насколько удобно пользоваться тем, кто платит свои деньги.