Featured image of post É possível ocultar a própria existência de um segredo?: Esteganografia e a matemática da ocultação de informação

É possível ocultar a própria existência de um segredo?: Esteganografia e a matemática da ocultação de informação

Enquanto a criptografia cifra o conteúdo de uma mensagem, a esteganografia oculta a própria existência da comunicação. Uma análise profunda do problema dos prisioneiros de Simmons, divergência KL de Cachin, inserção LSB espacial, esteganálise qui-quadrado, DCT em JPEG com codificação matricial F5, a lei da raiz quadrada e marcas d'água digitais.

1. Criptografia vs. Esteganografia: ocultar o «conteúdo» ou ocultar a «existência»?

Na segurança da informação, a criptografia e a esteganografia atuam em duas dimensões fundamentalmente ortogonais. O objetivo da criptografia é transformar um texto claro $M$, por meio de uma chave secreta $K$, em um texto cifrado ininteligível $C = E_K(M)$. Quando um interceptador captura $C$, não consegue ler o seu conteúdo semântico, mas o próprio fato de que uma comunicação secreta e cifrada está ocorrendo fica totalmente exposto. Em redes submetidas a censura severa ou vigilância governamental, o simples envio de tráfego de alta entropia (como blocos PGP ou fluxos TLS não convencionais) basta para acionar alertas, bloquear a conexão ou incriminar os comunicantes.

Em contrapartida, a esteganografia (do grego steganos, «coberto, oculto», e graphein, «escrever») visa eliminar qualquer vestígio de que a comunicação secreta sequer existe. Dos relatos clássicos de Heródoto na Grécia Antiga (mensagens tatuadas no couro cabeludo raspado de um escravo ou gravadas na madeira sob a cera de uma tabuleta) e do tratado Steganographia (1499) de Johannes Trithemius, até a incorporação digital moderna dentro de fotografias comuns, arquivos de áudio ou pacotes de rede, a esteganografia embute uma mensagem secreta $M$ dentro de um objeto portador ou de cobertura (Cover Object) $X$ de aparência inocente para gerar um estego-objeto (Stego Object) $Y$.

  flowchart TD
    A["Mensagem secreta M e chave estego K"] --> B["Pré-processamento criptográfico e código corretor"]
    C["Mídia de cobertura natural X (Imagem / Áudio / Vídeo)"] --> D["Algoritmo de inserção Emb(X, M, K): LSB / DCT / STC"]
    B --> D
    D --> E["Estego-mídia Y (Stego Object)"]
    E --> F["Canal monitorado (A carcereira Wendy aplica testes estatísticos)"]
    F --> G["Algoritmo de extração Ext(Y, K) recupera a mensagem M"]

Em 1983, Gustavus J. Simmons formulou o famoso «Problema dos Prisioneiros (The Prisoners’ Problem)», que estrutura toda a esteganografia moderna: dois prisioneiros, Alice e Bob, desejam planejar uma fuga, mas todas as mensagens trocadas passam pela inspeção da carcereira Wendy (Warden). Se Wendy detectar texto cifrado ou qualquer anomalia estatística suspeita, interromperá imediatamente a comunicação. Alice deve, portanto, esconder os bits secretos dentro de uma imagem cotidiana $Y$ de tal forma que Wendy seja incapaz de distinguir estatisticamente entre a distribuição de mídias naturais $P_X$ e a distribuição de estego-mídias $P_Y$.

Em 1998, Christian Cachin estabeleceu a definição matemática rigorosa de segurança esteganográfica utilizando a divergência de Kullback-Leibler (divergência KL / entropia relativa). Seja $P_X$ a distribuição de probabilidade dos objetos de cobertura naturais no espaço $\mathcal{X}$ e $P_Y$ a distribuição dos estego-objetos. Um sistema esteganográfico é dito $\varepsilon$-seguro (e perfeitamente seguro quando $\varepsilon = 0$) se satisfizer:

$$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$$

Pela desigualdade de processamento de dados (Data-Processing Inequality), independentemente do teste de hipóteses estatístico ou da rede neural profunda utilizada pela carcereira Wendy, a probabilidade de alarme falso $\alpha$ (erro tipo I) e a probabilidade de omissão $\beta$ (erro tipo II) estão estritamente limitadas pela entropia relativa binária:

$$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$$

Quando $\varepsilon \to 0$, tem-se $\alpha + \beta \to 1$, reduzindo qualquer detector de Wendy a um simples cara ou coroa aleatório.

Dimensão de comparaçãoCriptografia (Cryptography)Esteganografia (Steganography)Marca d’água digital (Watermarking)
Objetivo centralOcultar o conteúdo semânticoOcultar a própria existência da comunicaçãoComprovar direitos autorais e integridade
Visibilidade do segredoPública (o texto cifrado de alta entropia é visível)Estritamente oculta (camuflada como arquivo normal)Visível ou invisível (prioriza a não remoção)
Modelo de adversárioCriptoanálise (decifração sem a chave)Esteganálise: detecção estatística $P_X \ne P_Y$Ataques de remoção: compressão, corte, ruído
Métrica principalIndistinguibilidade computacional (IND-CPA)Indetectabilidade estatística ($D_{\text{KL}} \to 0$) e capacidadeRobustez (Robustness) contra distorções de sinal

2. Domínio espacial: substituição do bit menos significativo (LSB) e o ataque $\chi^2$

Em imagens digitais sem compressão ou com compressão sem perdas (BMP de 24 bits, PNG ou áudio WAV PCM de 16 bits), o método espacial mais clássico é a substituição do bit menos significativo (Least Significant Bit Replacement, LSB Replacement). Em uma imagem em tons de cinza de 8 bits, o valor de cada pixel $x_i \in \{0, 1, \dots, 255\}$ é representado em binário por:

$$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}$$

Enquanto o bit mais significativo (MSB, $a_{i,7}$) altera a luminância em $128$ níveis, o bit menos significativo (LSB, $a_{i,0} = x_i \bmod 2$) provoca uma variação de apenas $\pm 1$. Substituindo diretamente o LSB por um bit secreto cifrado e uniformemente distribuído $m_i \in \{0, 1\}$:

$$y_i = 2 \left\lfloor \frac{x_i}{2} \right\rfloor + m_i$$

na capacidade máxima ($1\,\text{bit por pixel, bpp}$), metade dos pixels permanece inalterada e a outra metade muda em $\pm 1$. O erro quadrático médio (MSE) e a relação sinal-ruído de pico (PSNR) resultam em:

$$\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}$$

O sistema visual humano (HVS) não distingue diferenças acima de $40\,\text{dB}$. Contudo, invisibilidade a olho nu jamais significa segurança estatística!

Em 1999, Andreas Westfeld e Andreas Pfitzmann apresentaram o devastador ataque qui-quadrado ($\chi^2$ Steganalysis Attack). A falha reside na assimetria estrutural da substituição LSB: um valor par $2k$ só pode se tornar $2k$ ou $2k+1$, e um valor ímpar $2k+1$ também só pode se tornar $2k$ ou $2k+1$; nunca há transição entre $2k-1$ e $2k$. Assim, os pares $\{2k, 2k+1\}$ formam 128 «Pares de Valores (Pairs of Values, PoVs)» fechados. Como os bits cifrados seguem $P(0)=P(1)=0.5$, as contagens do histograma $h_Y(2k)$ e $h_Y(2k+1)$ na imagem estego igualam-se forçosamente à sua média:

$$\mathbb{E}[h_Y(2k)] = \mathbb{E}[h_Y(2k+1)] = \frac{h_X(2k) + h_X(2k+1)}{2} = \bar{h}_k$$

Calculando a estatística $\chi^2$ de Pearson sobre os 128 pares:

$$\chi^2 = \sum_{k=0}^{127} \frac{\bigl(h_Y(2k) - \bar{h}_k\bigr)^2}{\bar{h}_k}$$

uma foto natural exibe um $\chi^2$ elevado ($p \approx 0$), enquanto uma imagem submetida à substituição LSB apresenta barras de histograma emparelhadas em degraus idênticos ($\chi^2 \to 0, \; p \to 1$), denunciando imediatamente a manipulação. Além disso, a esteganálise RS (Regular-Singular) de Jessica Fridrich detecta taxas de apenas $0.02\,\text{bpp}$ analisando correlações espaciais entre pixels vizinhos. Para eliminar os PoVs, o LSB Matching ($\pm 1$ Embedding) soma ou subtrai $1$ aleatoriamente quando $m_i \ne \text{LSB}(x_i)$.


3. Domínio da frequência e codificação matricial: DCT em JPEG, F5 e códigos STC

Na prática da Internet, a esteganografia espacial sucumbe diante da compressão com perdas (Lossy Compression): ao enviar uma foto por redes sociais ou aplicativos de mensagens, ela é recodificada em JPEG, destruindo os LSBs espaciais. Por isso, a esteganografia moderna atua diretamente no domínio da transformação (Transform Domain).

O pipeline JPEG divide a imagem (no espaço $\text{YCbCr}$) em blocos de $8 \times 8$ pixels $f(x,y)$, aplica a Transformada Discreta de Cosseno bidimensional (2D-DCT) gerando 64 coeficientes de frequência $F(u,v)$, e os divide por uma matriz de quantização $Q(u,v)$ arredondando para inteiros $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["Bloco espacial 8x8 f(x,y)"] --> B["Transformada Discreta de Cosseno (2D-DCT) F(u,v)"]
    B --> C["Quantização inteira F_Q(u,v) = round(F/Q)"]
    C --> D["Inserção frequencial: Codificação matricial F5 / STC"]
    D --> E["Codificação de entropia Huffman gerando arquivo Stego-JPEG"]

Em 2001, Andreas Westfeld revolucionou a esteganografia JPEG com o algoritmo F5, introduzindo duas inovações cruciais:

  1. Decremento do valor absoluto: em vez de trocar LSBs nos coeficientes DCT (como fazia o JSteg), o F5 reduz sempre o módulo do coeficiente modificado (positivos $-1$, negativos $+1$), preservando a forma laplaciana monótona centrada em zero do histograma DCT natural.
  2. Codificação matricial (Matrix Encoding via códigos de Hamming): para embutir $k$ bits secretos $\mathbf{m} \in \{0,1\}^k$ em $n = 2^k - 1$ coeficientes não nulos $\mathbf{x} \in \{0,1\}^n$, utiliza-se a matriz de paridade $\mathbf{H} \in \{0,1\}^{k \times (2^k-1)}$ de um código de Hamming binário. O síndrome $\mathbf{s} = \mathbf{m} \oplus \mathbf{H}\mathbf{x}$ indica diretamente o índice $j$ do único coeficiente $x_j$ que precisa ser alterado para satisfazer $\mathbf{H}\mathbf{y} = \mathbf{m}$! Assim, a eficiência de inserção (Embedding Efficiency) sobe para:
$$e(k) = \frac{k}{1 - 2^{-k}} = \frac{k \cdot 2^k}{2^k - 1}\,\text{bits por modificação}$$

Os algoritmos adaptativos modernos (WOW, S-UNIWARD, J-UNIWARD, HILL) aliam custos de distorção local $\rho_i$ aos Códigos em Treliça por Síndrome (Syndrome-Trellis Codes, STC, Filler et al. 2011), usando o algoritmo de Viterbi para concentrar todas as alterações em regiões de textura complexa (folhagens, ondas), onde redes neurais de esteganálise (como SRNet) têm baixa precisão preditiva.


4. A Lei da Raiz Quadrada da capacidade esteganográfica e as Marcas d’Água Digitais

A carga útil secreta segura $m$ cresce linearmente com o número de pixels $n$ da imagem ($m = O(n)$)? Em 2008, Tomáš Filler, Andrew D. Ker e Jessica Fridrich demonstraram a fundamental Lei da Raiz Quadrada da Capacidade Esteganográfica (Square Root Law): para uma taxa de modificação $\beta = m / n$ em $n$ pixels independentes com informação de Fisher $I_F > 0$, a expansão de Taylor de segunda ordem da divergência KL total satisfaz:

$$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)$$

Para manter $D_{\text{KL}}^{(n)} \le \varepsilon$ constante e escapar da detecção estatística, o número máximo de bits seguros $m_{\text{safe}}(n)$ só pode crescer proporcionalmente à raiz quadrada do número de pixels:

$$m_{\text{safe}}(n) = O\!\left(\sqrt{n}\right)$$

Por fim, no «Triângulo Mágico da Ocultação de Informação» (Capacidade, Imperceptibilidade, Robustez), a marca d’água digital (Digital Watermarking) ocupa o vértice oposto à esteganografia: métodos como o espalhamento espectral (Spread-Spectrum Watermarking) de Ingemar Cox, a modulação de índice de quantização (QIM), a constelação EURion em cédulas bancárias ou o SynthID do Google DeepMind para identificar imagens e textos gerados por IA reduzem a carga útil a poucas dezenas de bits para garantir robustez extrema contra compressão com perdas, cortes e distorções geométricas.

comments powered by Disqus