1. Криптография против стеганографии: сокрытие «содержания» или сокрытие «существования»?
В сфере информационной безопасности криптография и стеганография решают две ортогональные задачи. Криптография преобразует открытый текст $M$ с помощью секретного ключа $K$ в нечитаемый шифротекст $C = E_K(M)$. Когда перехватчик получает $C$, он не может прочесть семантическое содержание сообщения, однако сам факт того, что стороны ведут секретную зашифрованную переписку, остается полностью очевидным. В условиях жесткой цензуры или тотального сетевого мониторинга одна лишь передача высокоэнтропийного трафика (например, блоков PGP или нестандартных TLS-потоков) немедленно вызывает подозрение, блокировку канала или преследование.
Напротив, стеганография (от древнегреческого steganos — «скрытый, покрытый» и graphein — «писать») ставит своей целью полностью скрыть сам факт существования тайной коммуникации. От описанных Геродотом хитростей Древней Греции (татуировка на обритой голове раба или надпись на деревянной основе под слоем воска) и трактата Иоганна Тритемия Steganographia (1499) до современных алгоритмов встраивания данных в безобидные фотографии, аудиозаписи или сетевые пакеты — стеганография внедряет секретное сообщение $M$ внутрь ничем не примечательного контейнера-оригинала (Cover Object) $X$, формируя стего-объект (Stego Object) $Y$.
flowchart TD
A["Секретное сообщение M и стего-ключ K"] --> B["Криптографическое сжатие и помехоустойчивое кодирование"]
C["Естественный контейнер X (Изображение / Аудио / Видео)"] --> D["Алгоритм встраивания Emb(X, M, K): LSB / DCT / STC"]
B --> D
D --> E["Стего-контейнер Y (Stego Object)"]
E --> F["Контролируемый канал (Надзиратель Уэнди проводит стат-тесты)"]
F --> G["Алгоритм извлечения Ext(Y, K) восстанавливает сообщение M"]
В 1983 году Густавус Симмонс (Gustavus J. Simmons) сформулировал знаменитую «Задачу о заключенных (The Prisoners’ Problem)», ставшую классической моделью современной стеганографии: заключенные Алиса и Боб хотят согласовать план побега из тюрьмы, но вся их переписка проходит через надзирателя Уэнди (Warden). Если Уэнди заметит шифротекст или статистические аномалии в письмах или фотографиях, она немедленно пресечет связь и отправит обоих в карцер. Следовательно, Алиса должна спрятать секретные биты в обычном изображении $Y$ так, чтобы Уэнди не смогла статистически отличить распределение естественных контейнеров $P_X$ от распределения стего-контейнеров $P_Y$.
В 1998 году Кристиан Кэшин (Christian Cachin) дал строгое математическое определение стеганографической стойкости через дивергенцию Кульбака — Лейблера (KL-дивергенцию / относительную энтропию). Пусть $P_X$ — вероятностное распределение пустых контейнеров на множестве $\mathcal{X}$, а $P_Y$ — распределение стего-объектов. Стегосистема называется $\varepsilon$-стойкой (и совершенно стойкой при $\varepsilon = 0$), если:
$$D_{\text{KL}}(P_X \,\|\, P_Y) = \sum_{x \in \mathcal{X}} P_X(x) \log_2 \frac{P_X(x)}{P_Y(x)} \le \varepsilon$$Согласно неравенству обработки данных (Data-Processing Inequality) теории информации, какой бы сложный статистический критерий или глубокую нейросеть ни применяла надзиратель Уэнди, вероятность ложной тревоги $\alpha$ (ошибка I рода) и вероятность пропуска цели $\beta$ (ошибка II рода) жестко ограничены бинарной относительной энтропией:
$$d(1-\alpha, \beta) = (1-\alpha)\log_2 \frac{1-\alpha}{\beta} + \alpha \log_2 \frac{\alpha}{1-\beta} \le D_{\text{KL}}(P_X \,\|\, P_Y) \le \varepsilon$$При $\varepsilon \to 0$ неизбежно $\alpha + \beta \to 1$, то есть любой детектор Уэнди работает не лучше случайного подбрасывания монеты.
| Критерий сравнения | Криптография (Cryptography) | Стеганография (Steganography) | Цифровые водяные знаки (Watermarking) |
|---|---|---|---|
| Главная цель | Сокрытие содержания (семантики) | Сокрытие самого факта коммуникации | Защита авторских прав и целостности |
| Видимость секрета | Открытая (высокоэнтропийный шифротекст виден) | Строго скрытая (маскировка под обычный файл) | Видимая или невидимая (приоритет — неудаляемость) |
| Модель противника | Криптоанализ (дешифрование без ключа) | Стегоанализ: статистическое обнаружение $P_X \ne P_Y$ | Атаки удаления: сжатие, кадрирование, зашумление |
| Ключевая метрика | Вычислительная неотличимость (IND-CPA) | Статистическая незаметность ($D_{\text{KL}} \to 0$) и емкость | Робастность (Robustness) к искажениям сигнала |
2. Пространственная область: замена младшего значащего бита (LSB) и атака $\chi^2$
В несжатых изображениях или форматах без потерь (24-битный BMP, PNG или 16-битный звук WAV PCM) простейшим методом встраивания является замена младшего значащего бита (Least Significant Bit Replacement, LSB Replacement). В 8-битном полутоновом изображении яркость каждого пикселя $x_i \in \{0, 1, \dots, 255\}$ записывается в двоичном виде как:
$$x_i = \sum_{b=0}^{7} a_{i,b} \, 2^b = 128 a_{i,7} + 64 a_{i,6} + \dots + 2 a_{i,1} + a_{i,0}$$Если старший бит (MSB, $a_{i,7}$) меняет яркость на $128$, то младший бит (LSB, $a_{i,0} = x_i \bmod 2$) изменяет значение всего на $\pm 1$. Заменяя LSB каждого пикселя зашифрованным (равномерно распределенным) секретным битом $m_i \in \{0, 1\}$:
$$y_i = 2 \left\lfloor \frac{x_i}{2} \right\rfloor + m_i$$при полной загрузке ($1\,\text{бит на пиксель, bpp}$) половина пикселей не меняется вовсе, а вторая половина изменяется на $\pm 1$. Среднеквадратичная ошибка (MSE) и пиковое отношение сигнал/шум (PSNR) составляют:
$$\text{MSE} = \frac{1}{N}\sum_{i=1}^{N} (x_i - y_i)^2 = 0.5, \qquad \text{PSNR} = 10 \log_{10}\!\left(\frac{255^2}{\text{MSE}}\right) \approx 51.14\,\text{dB}$$Человеческий глаз (HVS) не способен заметить искажения при $\text{PSNR} > 40\,\text{dB}$. Но невидимость для глаза отнюдь не означает статистическую неуязвимость!
В 1999 году Андреас Вестфельд и Андреас Пфицман предложили сокрушительную атаку хи-квадрат ($\chi^2$ Steganalysis Attack). Её математическая суть кроется в асимметрии операции LSB-замены: четное значение яркости $2k$ при замене младшего бита может перейти только в $2k$ или $2k+1$, и нечетное значение $2k+1$ также может перейти только в $2k$ или $2k+1$; переходов между $2k-1$ и $2k$ никогда не происходит! Таким образом, пары $\{2k, 2k+1\}$ образуют 128 замкнутых «пар значений (Pairs of Values, PoVs)». Поскольку биты шифротекста равновероятны ($P(0)=P(1)=0.5$), частоты гистограммы $h_Y(2k)$ и $h_Y(2k+1)$ после встраивания принудительно выравниваются до их полусуммы:
$$\mathbb{E}[h_Y(2k)] = \mathbb{E}[h_Y(2k+1)] = \frac{h_X(2k) + h_X(2k+1)}{2} = \bar{h}_k$$Вычисляя статистику Пирсона $\chi^2$ по всем 128 парам:
$$\chi^2 = \sum_{k=0}^{127} \frac{\bigl(h_Y(2k) - \bar{h}_k\bigr)^2}{\bar{h}_k}$$мы мгновенно обнаруживаем LSB-замену: у естественной фотографии $\chi^2$ велико ($p \approx 0$), тогда как у стего-изображения гистограмма превращается в характерные попарные «ступеньки» ($\chi^2 \to 0, \; p \to 1$). Более того, RS-стегоанализ (Regular-Singular) Джессики Фридрих обнаруживает LSB-встраивание плотностью от $0.02\,\text{bpp}$ за счет анализа пространственных корреляций соседних пикселей. Чтобы разрушить замкнутые пары PoVs, метод LSB Matching ($\pm 1$ Embedding) случайно прибавляет или вычитает $1$ при $m_i \ne \text{LSB}(x_i)$.
3. Частотная область и матричное кодирование: JPEG 2D-DCT, алгоритм F5 и коды STC
При передаче через современные мессенджеры и соцсети пространственная LSB-стеганография мгновенно разрушается из-за сжатия с потерями (Lossy Compression) в формат JPEG. Поэтому практическая стеганография работает непосредственно в частотной (трансформационной) области.
Стандарт JPEG разбивает изображение (в пространстве $\text{YCbCr}$) на блоки $8 \times 8$ пикселей $f(x,y)$, применяет двумерное дискретное косинусное преобразование (2D-DCT) и квантует полученные 64 коэффициента $F(u,v)$ делением на матрицу квантования $Q(u,v)$ с округлением до целых чисел $F_Q(u,v)$:
$$F(u,v) = \frac{1}{4} C(u) C(v) \sum_{x=0}^{7} \sum_{y=0}^{7} f(x,y) \cos\!\left(\frac{(2x+1)u\pi}{16}\right) \cos\!\left(\frac{(2y+1)v\pi}{16}\right), \qquad F_Q(u,v) = \text{round}\!\left(\frac{F(u,v)}{Q(u,v)}\right)$$
flowchart TD
A["Пространственный блок 8x8 f(x,y)"] --> B["Двумерное дискретное косинусное преобразование (2D-DCT) F(u,v)"]
B --> C["Квантование в целые числа F_Q(u,v) = round(F/Q)"]
C --> D["Встраивание в частотной области: Матричное кодирование F5 / STC"]
D --> E["Энтропийное кодирование Хаффмана в файл Stego-JPEG"]
В 2001 году Андреас Вестфельд совершил переворот в JPEG-стеганографии, создав алгоритм F5, основанный на двух принципах:
- Уменьшение абсолютной величины: вместо замены LSB коэффициентов DCT (как в уязвимом JSteg), F5 всегда уменьшает модуль изменяемого ненулевого коэффициента на 1 по направлению к нулю, сохраняя естественную симметричную лапласовскую форму гистограммы DCT.
- Матричное кодирование (Matrix Encoding на основе кодов Хэмминга): чтобы встроить $k$ секретных бит $\mathbf{m} \in \{0,1\}^k$ в $n = 2^k - 1$ ненулевых коэффициентов $\mathbf{x} \in \{0,1\}^n$, используется проверочная матрица $\mathbf{H} \in \{0,1\}^{k \times (2^k-1)}$ двоичного кода Хэмминга. Синдром $\mathbf{s} = \mathbf{m} \oplus \mathbf{H}\mathbf{x}$ прямо указывает номер единственного коэффициента $x_j$, который нужно изменить для выполнения равенства $\mathbf{H}\mathbf{y} = \mathbf{m}$! Благодаря этому эффективность встраивания (Embedding Efficiency) возрастает до:
Современные адаптивные алгоритмы (WOW, S-UNIWARD, J-UNIWARD, HILL) объединяют локальные функции искажения $\rho_i$ с синдромно-решетчатыми кодами (Syndrome-Trellis Codes, STC, Filler et al. 2011): алгоритм Витерби прячет все изменения исключительно в сложных текстурированных участках (листва, рябь воды), где нейросетевые стегоанализаторы (SRNet) не могут точно предсказать значения соседних пикселей.
4. Закон квадратного корня для стеганографической емкости и цифровые водяные знаки
Растет ли безопасный объем скрываемых данных $m$ линейно с ростом числа пикселей $n$ ($m = O(n)$)? В 2008 году Томаш Филлер, Эндрю Кер и Джессика Фридрих доказали фундаментальный Закон квадратного корня для стеганографической емкости (Square Root Law): при доле измененных пикселей $\beta = m / n$ и информации Фишера $I_F > 0$ разложение Тейлора второго порядка для суммарной KL-дивергенции по $n$ независимым пикселям дает:
$$D_{\text{KL}}\!\left(P_X^{(n)} \,\big\|\, P_Y^{(n)}\right) = \frac{1}{2} n \beta^2 I_F + O(n\beta^3) = \frac{I_F}{2} \frac{m^2}{n} + O\!\left(\frac{m^3}{n^2}\right)$$Чтобы суммарная дивергенция $D_{\text{KL}}^{(n)} \le \varepsilon$ оставалась ограниченной константой, безопасная нагрузка $m_{\text{safe}}(n)$ может расти лишь пропорционально квадратному корню из числа пикселей $\sqrt{n}$:
$$m_{\text{safe}}(n) = O\!\left(\sqrt{n}\right)$$Наконец, в «Магическом треугольнике сокрытия информации» (Емкость, Незаметность, Робастность) цифровые водяные знаки (Digital Watermarking) занимают противоположный полюс по отношению к стеганографии: широкополосные схемы Ингмара Кокса (Spread-Spectrum Watermarking), квантование индекса модуляции (QIM), созвездие Евриона на банкнотах и система SynthID от Google DeepMind для маркировки ИИ-изображений и текстов жертвуют информационной емкостью (оставляя лишь десятки бит) ради экстремальной живучести (робастности) при сжатии, кадрировании и фильтрации.
