А вот всегда было интересно: если мусор остался, скажем, от коллекции фильмов, закодированных каким-нибудь h264, то как у него будет с тестами на случайность? Как по мне, так вполне случайно выглядит.
Я еще раз спрошу: вот попала к вам в руки флэшка. На ней — самая обычная файловая система, записана какая-то вполне банальная фигня. Никаких хитрых файлов, скрытых каталогов или криптоконтейнеров на флэшке не наблюдается. Таких флэшек в любой организации — десятки и сотни.
Вопрос: что может вас заставить насторожиться и начать изучать именно эту флэшку посекторно?
Вы так и не смогли понять, что то, о чём Вы говорите, к стеганографии относится чуть меньше чем вообще никак.
Почти каждое введение в стеганографию начинается с истории о том, что сообщение писали на бритой голове у раба, ждали, пока он обрастет, и отсылали его к адресату. Вас послушать, это к стеганографии относится чуть меньше чем вообще никак. Но жить-то как-то надо. :)
Данные внутри фрагментов повторяются. Но данные на диск пишутся не открыто, а в шифрованном виде, в результате фрагменты с одинаковым содержимым на диске будут разными.
Если ФС затрет фрагментик, то утилита его пропустит как не содержащий секретных данных (не сойдется контрольная сумма после расшифровки). Для того и нужна избыточность.
Ведь если уж совсем-совсем прятаться, то надо так, чтоб ФС ничего про фрагментики не знала. А если она не знает, то и Вы особо не узнаете (да, можно пометить кластер как сбойный, но беда в том, что есть и реально сбойные кластеры, а не только фиктивные, а фиктивные каким-нибудь NDD обнаружатся). Вы не в ту сторону шифруетесь, ИМХО.
ФС и так ничего не знает про скрытые данные. И утилита ничего не знает про ФС. Мне кажется, вы упустили главную мысль статьи: обнаружение испорченных фрагментов происходит безо всякой помощи со стороны ФС, а восстановление целого файла происходит за счет избыточности (многократного дублирования фрагментов).
Вы же рассуждаете о том, как спрятать секретные данные там, где их обнаружить можно (причем даже не утрудили себя тем, чтобы как-то скрыть этот факт: я ведь могу просто по секторам прочитать весь диск, простейшая программа на ассемблере, и найду всё что Вы спрятали).
А с чего вдруг вам придет в голову мысль, что флэшку надо прочитать посекторно? На файловой системе вы не увидите ничего подозрительного — никаких скрытых файлов, никаких несоответствий между размером файлов и свободным пространством на диске.
Ну хорошо, допустим, вы все попавшие к вам в руки носители читаете посекторно. Что вам это даст? Скрытые данные зашифрованы и ничем не отличаются от рандомных.
Хотя, впрочем, Вы несколько правы, — но только в том смысле, что Вы скроете секретные данные только на своем носителе, с известной Вам файловой системой.
Тип файловой системы не важен. По крайней мере, подойдет любая из тех, что широко используются на переносных носителях (fat16, fat32, ntfs, exFat). Главное, чтобы не все свободное место на ней было забито.
Только вот стеганографию как бы в передаче данных больше используют, а какой носитель и ФС будет использовать Ваш визави — бабка натрое гадала.
О об использовании стеганографии и пароле договориться, значит, можно, а о том, как флэшку потом форматировать — никак не получится? Почему? :)
Так что остается ориентироваться лишь на файлы — как поток байтов, а не на структуру ФС и её алгоритмы.
В вашем же случае довольно таки навязчиво отдельные странные фрагменты данных повторяются в нескольких местах жесткого диска. А это жжж неспроста.
Ошибаетесь.
На диске не будет повторяющихся фрагментов. В заголовке каждого фрагмента — его уникальный порядковый номер на диске. Сверху все это шифруется AES-256 в режиме CBC. В результате каждый фрагмент будет отличаться от своего дубликата, ведь у того — другой порядковый номер в заголовке.
АДД: Собственно, проверить не составляет труда: достаточно зашифровать короткий файлик, влезающий в один фрагмент целиком, и убедиться, что повторяющихся фрагментов нет. Для этого эксперимента даже диск не нужно искать — вполне подойдет обычный файл:
# Создаем файлик на 10 мегабайт
$ dd if=/dev/zero of=testfile.img bs=1M count=10
# Создаем «секретный файл»
$ echo «Megasecret» > secret.txt
# прячем это все в «образ диска»
$ ./steganodisk -e -s secret.txt -p password testfile.img
Теперь можно просмотреть testfile.img в любом просмотрщике, умеющем показывать бинарные файлы (хоть в том же mcview), и убедиться, что никаких повторяющихся фрагментов там нет.
Если предоставите экземпляр SSD для опытов (желательно не очень большого объема) — обязательно попробую. Гонять эксперименты на системном SSD я пока не готов. :)
главное с чем я столкнулся, так это с вопросом — а что мешает проверяющему органу понять, что Вы что-то спрятали, а потом затребовать пароль для вскрытия шифровки?
Шифрованные данные ничем не отличаются от случайных — там нет явно видимых заголовков или повторяющихся паттернов. Поэтому проверяющие органы не смогут найти на диске подозрительных «зацепок».
Единственное, что может вызвать подозрение — это то, что в незанятых секторах не нули, а какие-то рандомные данные. Ну так всегда можно сказать, что раньше на флэшке были фильмы записаны. :)
а потом затребовать пароль для вскрытия шифровки? По идее отказ будет воспринят следствием не в лучшую сторону для Вас.
Если на диске нет шифрованных данных, то утилита не сможет ничего расшифровать.
Если дать неверный пароль, то утилита тоже не сможет ничего расшифровать.
Другими словами, доказать, что на диске есть скрытые данные, можно только имея валидный пароль.
Или таки есть возможность отмахнуться, мол не моя флешка(если речь о флешке) или не помню пароль, канает, как Вы любите вырожаться.
Вы меня с кем-то путаете. Я не люблю так выражаться.
Хотя пока писал, до меня дошло, что прятат можно не только от следствия, но и вдругих случаях(тут как раз и проявилась неудачная на мой взгляд редакция статьи — немного бы пошаманить). Бизнес, коллеги, семья, и так далее. Но что если говорить именно о хитрых следаках и их возможностях технических.
Статья не претендует на руководство по сокрытию данных. Ее цель — поделиться моими наблюдениями.
Утилита написана для проверки концепции и для развлечения. Она не предназначена для использования в бизнесе или сокрытия информации от правоохранительных органов.
Но для меня лично стеганография — это метод сокрытия секретных данных в общедоступных.
Стеганография — это сокрытие самого факта передачи секретных данных. И в этом смысле нет особой разницы между тем, передается ли тайное сообщение посредством ложных опечаток или неиспользуемых секторов. И в том, и в другой случае цель — скрыть сам факт наличия секретных данных.
Неужели? Как же так! Мне было немногим больше ~10 лет и я уже это знал, это середина 90-х. Представляете? Интернета не было.
Искренне рад за вас. Вы были очень развитым ребенком.
Немного вас разочарую: я тоже в курсе всего этого и примерно с тех же времен.
P.S. Записывается (при быстром форматировании, а кто полное делает?) только FAT и ее резервная копия (как там с NTFS не знаю, но на флешках обычно FAT).
В NTFS точно так же. Более того, и в ext2-3-4 тоже так же.
Собственно, вся статья — это развитие вот этого обсуждения: habr.com/ru/post/347604/#comment_10637312
Давненько хотел попробовать на практике то, о чем мы все знаем в теории. Сейчас вот нашел на это время. Конкретно интересовали граничные случаи — т.е. сколько данных остается на диске, если его забить под завязку. Про то и статья.
Проблема не в том, сколькажды куда писать, а в том, что при программном затирании данных очень легко упустить какую-то важную деталь. Кувалда в этом плане гораздо эффективнее. :)
а кассета — только понимаю что это где-то там возле заднего колеса, но как по ней «вверх» — вообще картинки нет в голове.
Кассета — пачка шестеренок, по которым перескакивает цепь. Ближе к спицам — самая большая шестеренка, когда на ней цепь — она выше всего. Чем дальше шестерня расположена от спиц, тем меньше диаметр и «ниже» положение цепи. Соответственно, «вверх по кассете» — это когда цепь перескакивает на шестеренку бОльшего диаметра.
Вообще уверен, что постоянная активная постановка помех (автоматическая генерация шума на диске, трафика в интернете, мусорных стегано-сообщений в рутинных файлах) — это следующий большой уже этап войны снаряда и брони.
Давайте примерим этот постулат на практике. Допустим, мы хотим бороться с кровавым режимом методом ношения на себе «помех» в виде муляжей пояса шахида. Ненуачо? Имеет право добропорядочный гражданин ходить в карнавальном костюме? Имеет. Вот и ходит. И вот, сотни теть Маш выходят на улицы в поясах шахида из говна и палок картона и старых тряпок. Кровавый режим шатается, кровавый тиран рыдает в своем кабинете и бьется головой о стену в бессильной ярости!*
(примеч.: это нам снится).
На самом деле, конечно, ни одна тетя Маша в здравом уме и твердой памяти не будет заморачиваться ни вахаббит-рукоделием, ни какой бы то ни было генерацией файлов-обманок. Потому что люди работу работают, а не разводят тучи руками в воображаемой войне.
С чуть большим интеллектом и более агрессивным поведением.
То, что утилита для уничтожения данных уничтожает данные в каком-то определенном порядке — это еще не интеллект.
Кстати, вы пробовали как-нибудь просто обойти все каталоги на большом диске с кучей файлов? Попробуйте на досуге. Может оказаться, что тереть все подряд от первого сектора к последнему — гораздо более интеллектуальное занятие.
Безопасность будет гарантированна после полной перезаписи диска, но на это нужно время.
Именно поэтому в данном посте пишут про физическое изничтожение данных. Любые программные извращения — это баловство.
Отличное пожелание для написания возможной утилиты,
Вы не понимаете, да? Утилита будет полезна в одном конкретном случае и при соблюдении множества условий. Такая утилита по определению не может быть универсальной и подходящей для всех.
Более того. Наличие такой утилиты может вызвать ложное чувство безопасности, хотя безопасность она не гарантирует.
Если мы об NTFS на механических жестких дисках, то нет, удаленные файлы не зануляются. По крайней мере, в винде по вин7 включительно это так. В десятке с ее ReFS не проверял, но подозреваю, что тоже не зануляется, иначе удаление больших файлов занимало бы столько же, сколько их запись, а это не так.
Ответ неконструктивен.
Я еще раз спрошу: вот попала к вам в руки флэшка. На ней — самая обычная файловая система, записана какая-то вполне банальная фигня. Никаких хитрых файлов, скрытых каталогов или криптоконтейнеров на флэшке не наблюдается. Таких флэшек в любой организации — десятки и сотни.
Вопрос: что может вас заставить насторожиться и начать изучать именно эту флэшку посекторно?
Почти каждое введение в стеганографию начинается с истории о том, что сообщение писали на бритой голове у раба, ждали, пока он обрастет, и отсылали его к адресату. Вас послушать, это к стеганографии относится чуть меньше чем вообще никак. Но жить-то как-то надо. :)
Если ФС затрет фрагментик, то утилита его пропустит как не содержащий секретных данных (не сойдется контрольная сумма после расшифровки). Для того и нужна избыточность.
ФС и так ничего не знает про скрытые данные. И утилита ничего не знает про ФС. Мне кажется, вы упустили главную мысль статьи: обнаружение испорченных фрагментов происходит безо всякой помощи со стороны ФС, а восстановление целого файла происходит за счет избыточности (многократного дублирования фрагментов).
А с чего вдруг вам придет в голову мысль, что флэшку надо прочитать посекторно? На файловой системе вы не увидите ничего подозрительного — никаких скрытых файлов, никаких несоответствий между размером файлов и свободным пространством на диске.
Ну хорошо, допустим, вы все попавшие к вам в руки носители читаете посекторно. Что вам это даст? Скрытые данные зашифрованы и ничем не отличаются от рандомных.
Тип файловой системы не важен. По крайней мере, подойдет любая из тех, что широко используются на переносных носителях (fat16, fat32, ntfs, exFat). Главное, чтобы не все свободное место на ней было забито.
О об использовании стеганографии и пароле договориться, значит, можно, а о том, как флэшку потом форматировать — никак не получится? Почему? :)
Образ диска — это ведь тоже файл. :)
Ошибаетесь.
На диске не будет повторяющихся фрагментов. В заголовке каждого фрагмента — его уникальный порядковый номер на диске. Сверху все это шифруется AES-256 в режиме CBC. В результате каждый фрагмент будет отличаться от своего дубликата, ведь у того — другой порядковый номер в заголовке.
АДД: Собственно, проверить не составляет труда: достаточно зашифровать короткий файлик, влезающий в один фрагмент целиком, и убедиться, что повторяющихся фрагментов нет. Для этого эксперимента даже диск не нужно искать — вполне подойдет обычный файл:
# Создаем файлик на 10 мегабайт
$ dd if=/dev/zero of=testfile.img bs=1M count=10
# Создаем «секретный файл»
$ echo «Megasecret» > secret.txt
# прячем это все в «образ диска»
$ ./steganodisk -e -s secret.txt -p password testfile.img
Теперь можно просмотреть testfile.img в любом просмотрщике, умеющем показывать бинарные файлы (хоть в том же mcview), и убедиться, что никаких повторяющихся фрагментов там нет.
Что именно плохо?
Шифрованные данные ничем не отличаются от случайных — там нет явно видимых заголовков или повторяющихся паттернов. Поэтому проверяющие органы не смогут найти на диске подозрительных «зацепок».
Единственное, что может вызвать подозрение — это то, что в незанятых секторах не нули, а какие-то рандомные данные. Ну так всегда можно сказать, что раньше на флэшке были фильмы записаны. :)
Если на диске нет шифрованных данных, то утилита не сможет ничего расшифровать.
Если дать неверный пароль, то утилита тоже не сможет ничего расшифровать.
Другими словами, доказать, что на диске есть скрытые данные, можно только имея валидный пароль.
Вы меня с кем-то путаете. Я не люблю так выражаться.
Статья не претендует на руководство по сокрытию данных. Ее цель — поделиться моими наблюдениями.
Утилита написана для проверки концепции и для развлечения. Она не предназначена для использования в бизнесе или сокрытия информации от правоохранительных органов.
Стеганография — это сокрытие самого факта передачи секретных данных. И в этом смысле нет особой разницы между тем, передается ли тайное сообщение посредством ложных опечаток или неиспользуемых секторов. И в том, и в другой случае цель — скрыть сам факт наличия секретных данных.
Обоснуйте.
Искренне рад за вас. Вы были очень развитым ребенком.
Немного вас разочарую: я тоже в курсе всего этого и примерно с тех же времен.
В NTFS точно так же. Более того, и в ext2-3-4 тоже так же.
Собственно, вся статья — это развитие вот этого обсуждения: habr.com/ru/post/347604/#comment_10637312
Давненько хотел попробовать на практике то, о чем мы все знаем в теории. Сейчас вот нашел на это время. Конкретно интересовали граничные случаи — т.е. сколько данных остается на диске, если его забить под завязку. Про то и статья.
Проблема не в том, сколькажды куда писать, а в том, что при программном затирании данных очень легко упустить какую-то важную деталь. Кувалда в этом плане гораздо эффективнее. :)
Более того, и факта требования с моей стороны личной инфы тоже нет. «Представиться» != «личная информация».
Прекрасный образец взаимоисключающих параграфов. :)
Спасибо.
Кассета — пачка шестеренок, по которым перескакивает цепь. Ближе к спицам — самая большая шестеренка, когда на ней цепь — она выше всего. Чем дальше шестерня расположена от спиц, тем меньше диаметр и «ниже» положение цепи. Соответственно, «вверх по кассете» — это когда цепь перескакивает на шестеренку бОльшего диаметра.
Это был тонкий намек на то, что автору было бы неплохо как-то представиться перед тем, как начать делиться сокровенным.
Вы всегда выдвигаете предположения об умственной неполноценности собеседника, или только в интернете?
Давайте примерим этот постулат на практике. Допустим, мы хотим бороться с кровавым режимом методом ношения на себе «помех» в виде муляжей пояса шахида. Ненуачо? Имеет право добропорядочный гражданин ходить в карнавальном костюме? Имеет. Вот и ходит.
И вот, сотни теть Маш выходят на улицы в поясах шахида из
говна и палоккартона и старых тряпок. Кровавый режим шатается, кровавый тиран рыдает в своем кабинете и бьется головой о стену в бессильной ярости!*(примеч.: это нам снится).
На самом деле, конечно, ни одна тетя Маша в здравом уме и твердой памяти не будет заморачиваться ни вахаббит-рукоделием, ни какой бы то ни было генерацией файлов-обманок. Потому что люди работу работают, а не разводят тучи руками в воображаемой войне.
То, что утилита для уничтожения данных уничтожает данные в каком-то определенном порядке — это еще не интеллект.
Кстати, вы пробовали как-нибудь просто обойти все каталоги на большом диске с кучей файлов? Попробуйте на досуге. Может оказаться, что тереть все подряд от первого сектора к последнему — гораздо более интеллектуальное занятие.
Именно поэтому в данном посте пишут про физическое изничтожение данных. Любые программные извращения — это баловство.
Вы не понимаете, да? Утилита будет полезна в одном конкретном случае и при соблюдении множества условий. Такая утилита по определению не может быть универсальной и подходящей для всех.
Более того. Наличие такой утилиты может вызвать ложное чувство безопасности, хотя безопасность она не гарантирует.