A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Criptografia Numaboa

LSB - Técnica dos bits menos significativos

Seg

21

Mar

2005


19:10

(1 voto de 5.00) 


LSB, ou Least Significant Bit, é o bit menos significativo de um byte.

O formato BMP 24 bits

Nas imagens em formato BMP (bitmap) de 24 bits, por exemplo, cada pixel é representado por três bytes que determinam a quantidade de vermelho (Red), de verde (Green) e de azul (Blue). É por isto que este padrão de cores é chamado de RGB. O bmp é de 24 bits porque precisa de três bytes, cada um de oito bits (3 x 8 = 24), para especificar a cor de cada pixel.

Um byte pode expressar valores de 0 a 255, portanto, cada pixel pode ter 256 valores de vermelho associados a 256 valores de verde e a 256 valores de azul. A combinação destes valores, 256 x 256 x 256 = 16.777.216, permite que cada pixel assuma uma entre as mais de 16 milhões de cores possíveis.

Se apenas o bit menos significativo de cada byte for alterado, o valor deste byte aumenta ou diminui em uma unidade, ou seja, altera-se o valor da cor em apenas 1/256. Esta diferença é tão pequena que não pode ser detectada a olho nu. Para exemplificar, observe as cores abaixo:

A cor da esquerda tem 255 de vermelho, zero de verde e zero de azul; a da direita tem 254 de vermelho e zero de verde e de azul. Note que é praticamente impossível notar alguma diferença. É justamente esta característica que pode ser aproveitada para esconder informações numa imagem BMP de 24 bits ou outro formato qualquer que use bytes para caracterizar seus pixels.

EXEMPLO DE OCULTAÇÃO LSB

Se quisermos esconder a palavra SEGREDO numa imagem BMP, vamos precisar de 56 bytes, dos quais usaremos apenas o bit menos significativo. A explicação é simples. Cada uma das letras da palavra tem um valor ASCII que é representado por um byte, ou seja, 8 bits. Isto é o mesmo que dizer que cada letra vai usar 8 bits menos significativos, portanto, serão precisos 8 bytes de pixel para "emprestar" os bits que cada letra precisa. Como a palavra possui sete letras, tomaremos emprestados os bits menos significativos de 7 x 8 = 56 bytes. Como numa imagem BMP de 24 bits cada pixel é representado por três bytes, a imagem precisa ter no mínimo 19 pixels (56/3 = 18.6666) para que possa esconder a palavra SEGREDO - na verdade, uma imagem muito pequenininha.

Para a coisa ficar mais clara, vamos a um exemplo de como esconder apenas a letra S, que tem o valor ASCII 83, numa imagem que seja vermelho=255, verde=0 e azul=0. Em primeiro lugar, vamos expressar o valor de S em bits:

   S = 83 decimal = 53 hexadecimal = 0101 0011 binário

Esta é a sequência de bits que precisam ser inseridos nos bits menos significativos dos bytes dos pixels da imagem. Agora vamos expressar o valor dos bytes dos pixels em binário (os bits menos significativos estão destacados em vermelho):

   Vermelho = 255 decimal = FF hexadecimal = 1111 1111 binário
   Verde    =   0 decimal = 00 hexadecimal = 0000 0000 binário
   Azul     =   0 decimal = 00 hexadecimal = 0000 0000 binário

Usando apenas os valores binários dos bytes dos pixels da imagem, teríamos uma longa sequência dos seguintes bits:

   |- 255 -|   |-- 0 --|   |-- 0 --|   |- 255 -|   |-- 0 --|   |-- 0 --|

   1111 1111   0000 0000   0000 0000   1111 1111   0000 0000   0000 0000   ...

Colocando estes bytes em colunas e trocando os bits menos significativos pelos bits que compõem o valor ASCII da letra S temos o seguinte:

    Sequência de bits da letra S = 0101 0011

                              Valor original     Valor ajustado
                            |-----------------|-----------------|
     |---- Byte do vermelho |    1111 1111    |    1111 1110    |
   Pixel   Byte do verde    |    0000 0000    |    0000 0001    |
     |---- Byte do azul     |    0000 0000    |    0000 0000    |

     |---- Byte do vermelho |    1111 1111    |    1111 1111    |
   Pixel   Byte do verde    |    0000 0000    |    0000 0000    |
     |---- Byte do azul     |    0000 0000    |    0000 0000    |

     |---- Byte do vermelho |    1111 1111    |    1111 1111    |
   Pixel   Byte do verde    |    0000 0000    |    0000 0001    |
     |---- Byte do azul     |    0000 0000    |                 |

Gostou da idéia? Parece perfeita, mas (e sempre existe um mas), apesar da aparente impossibilidade de se detectar alterações a olho nu, é possível mostrar a presença de dados ocultos em imagens de cobertura. Veja como no artigo "Detectando a presença de dados em imagens" nos Papers da Criptografia Numaboa.

Na seção de downloads, em Criptologia/Esteganografia, você encontra os programas InPlainView, Puff, ImageHide e stegoBMP. Todos usam a técnica LSB para esconder mensagens ou dados em imagens. Adicione-os à sua caixa de ferramentas criptológicas e brinque um pouco com este truque. Observando e comparando é que se aprende e se adquire prática.

Abraço a todos

vovo vovó Vicki

mfx brokerбиол казанотзывытрансформер ноутбукtopodin.com аксессуарыbroker mfx

Informações adicionais