Стенография в Linux. Как спрятать информацию внутри изображения?

Стеганогра́фия (от греч. στεγανός — скрытый + γράφω — пишу; буквально «тайнопись») — это наука о скрытой передаче информации путём сохранения в тайне самого факта передачи. Этот термин ввел в 1499 году Иоганн Тритемий в своем трактате «Стеганография» (Steganographia), зашифрованном под магическую книгу.

В отличие от криптографии, которая скрывает содержимое секретного сообщения, стеганография скрывает сам факт его существования. Как правило, сообщение будет выглядеть как что-либо иное, например, как изображение, статья, список покупок, письмо или судоку. Стеганографию обычно используют совместно с методами криптографии, таким образом, дополняя её.

Преимущество стеганографии над чистой криптографией состоит в том, что сообщения не привлекают к себе внимания. Сообщения, факт шифрования которых не скрыт, вызывают подозрение и могут быть сами по себе уличающими в тех странах, в которых запрещена криптография.[1] Таким образом, криптография защищает содержание сообщения, а стеганография защищает сам факт наличия каких-либо скрытых посланий — Wikipedia.

Steghide

Steghide — это утилита командной строки (как и подавляющее большинство в Linux ^_^) которая позволяет спрятать информацию внутри аудио или фото файлов. Она так же умеет сжимать и шифровать информацию которую прячут.

С установкой все понятно:

1
sudo apt-get install steghide

Начальный размер файла:

1
-rw-rw-r-- 1 booch booch 159K Feb  4 11:25 kote_original.jpg

Первый пример. Прячeм текстовый файл внутрь изображения:

1
2
3
4
steghide embed -cf kote.jpg -ef secrettext.txt 
Enter passphrase: 
Re-Enter passphrase: 
embedding "secrettext.txt" in "kote.jpg"... done

Размер файла после того, как спрятали там инфу:

1
-rw-rw-r-- 1 booch booch 161K Feb  4 11:01 kote.jpg

Поддерживаемые расширения: AU, BMP, JPEG, WAV
Извлечь наш текстовый файлик обратно можно так:

1
2
3
steghide extract -sf kote.jpg 
Enter passphrase: 
wrote extracted data to "secrettext.txt".

Получить информацию о том, каков размер спрятанного текста внутри картинки, какое использовалось шифрование, можно так:

1
2
3
4
5
6
7
8
9
10
11
steghide info kote.jpg 
 
"kote.jpg":
  format: jpeg
  capacity: 8.7 KB
Try to get information about embedded data ? (y/n) y
Enter passphrase: 
  embedded file "secrettext.txt":
    size: 668.0 Byte
    encrypted: rijndael-128, cbc
    compressed: yes

Сама утилита поддерживает кучу алгоритмов шифрования:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
steghide encinfo
 
encryption algorithms:
<algorithm>: <supported modes>...
cast-128: cbc cfb ctr ecb ncfb nofb ofb
gost: cbc cfb ctr ecb ncfb nofb ofb
rijndael-128: cbc cfb ctr ecb ncfb nofb ofb
twofish: cbc cfb ctr ecb ncfb nofb ofb
arcfour: stream
cast-256: cbc cfb ctr ecb ncfb nofb ofb
loki97: cbc cfb ctr ecb ncfb nofb ofb
rijndael-192: cbc cfb ctr ecb ncfb nofb ofb
saferplus: cbc cfb ctr ecb ncfb nofb ofb
wake: stream
des: cbc cfb ctr ecb ncfb nofb ofb
rijndael-256: cbc cfb ctr ecb ncfb nofb ofb
serpent: cbc cfb ctr ecb ncfb nofb ofb
xtea: cbc cfb ctr ecb ncfb nofb ofb
blowfish: cbc cfb ctr ecb ncfb nofb ofb
enigma: stream
rc2: cbc cfb ctr ecb ncfb nofb ofb
tripledes: cbc cfb ctr ecb ncfb nofb ofb

В принципе это все. Немного более подробная информация имеется на официальной странице.

OutGuess

OutGuess — утилита еще более умная и хитрая =) Она умеет находить и извлекать избыточные биты из изображения, после чего подменять их на полезные биты с информацией которую вы пытаетесь скрыть. Это усложняет сам факт обнаруженя «левой» информации внутри файла, неговоря уже о ее рашифровке и извлечении.

Установка:

1
sudo apt-get install outguess

Например встроить текст можно так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
outguess -d secrettext.txt kote.jpg kote_with_info.jpg 
 
Reading kote.jpg....
JPEG compression quality set to 75
Extracting usable bits:   139430 bits
Correctable message size: -7731 bits, 13230110958157824.00%
Encoded 'secrettext.txt': 5344 bits, 668 bytes
Finding best embedding...
    0:  2696(50.1%)[50.4%], bias  3007(1.12), saved:    -3, total:  1.93%
    1:  2659(49.5%)[49.8%], bias  2887(1.09), saved:     1, total:  1.91%
    3:  2685(49.9%)[50.2%], bias  2857(1.06), saved:    -1, total:  1.93%
    4:  2658(49.4%)[49.7%], bias  2883(1.08), saved:     1, total:  1.91%
    5:  2637(49.1%)[49.3%], bias  2880(1.09), saved:     4, total:  1.89%
    7:  2654(49.4%)[49.7%], bias  2800(1.06), saved:     2, total:  1.90%
   12:  2610(48.5%)[48.8%], bias  2776(1.06), saved:     7, total:  1.87%
  231:  2596(48.3%)[48.6%], bias  2773(1.07), saved:     9, total:  1.86%
231, 5369: Embedding data: 5344 in 139430
Bits embedded: 5376, changed: 2596(48.3%)[48.6%], bias: 2773, tot: 139230, skip: 133854
Foiling statistics: corrections: 1846, failed: 19, offset: 54.856988 +- 148.271820
Total bits changed: 5369 (change 2596 + bias 2773)
Storing bitmap into data...
Writing kote_with_info.jpg....

Как бы это не было странно, но оригинал в размере получается больше, чем фото с текстовым контейнером внутри:

1
2
-rw-rw-r-- 1 booch booch 159K Feb  4 11:38 kote.jpg
-rw-rw-r-- 1 booch booch 127K Feb  4 11:38 kote_with_info.jpg

К контейнеру можно добавить секретный ключ (типа пароль, скрытая фраза):

1
outguess -k 'secret message' -d secret.txt kote.jpg kote_output.jpg

В дальнейшем, извлечь инфу из файла, без этого ключа, будет невозможно. Если вы знаете ключ, тогда все просто:

1
outguess -k "my secret key" -r kote_output.jpg secret.txt

Чуть больше инфы:

1
man outguess

UPD: Именно эту программу использовали Cicada 3301 для шифрования своих сообщений внутри картинки, которую они потом вешали на 4сhan или Reddit. Подробнее о них можно прочитать в Вики посвященной разгадке тайны Cicada 3301.

Steg

Steg — это кросс-платформенная утилита, написанная на С++. Созданная для стенографии и криптографии информации и имеет дружественный GUI интерфейс. Одинаково хорошо работает на Windows и на Linux. Может прятать инфу в JPEG (JPG), TIFF, PNG, BMP.

Скачать для Linux:

1
wget https://googledrive.com/host/0B-_yxJMDtRxyRDNGNk1YcXR0UTg/steg-v1.0.0.2-linux32.tgz

Страница загрузки тут.
Извлекаем и запускаем:

1
2
3
tar xvf steg-v1.0.0.2-linux32.tgz
cd steg-v1.0.0.2-linux32/
./steg.sh

Интерфейс прост и понятен.

Ну и конечно фотография, содержащая послание внутри.

Поделитесь с друзьями

Добавить комментарий

0 комментариев
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x