Сокрытие данных в объектах или как хранить важные данные на виду #конкурс2018

MEOW

New member
16.12.2018
4
10
3
#1
Приветствую!
Я являюсь специалистом в области защиты информации в компьютерных системах. Безусловно, каждый на этом форуме ищет кнопку бабло.
Сегодня речь пойдет о том, как можно хранить данные особой важности (ключи к кошелькам, пароли, сс, акки и т.д).

Кому это полезно?

Абсолютно всем! Ибо все мы хакеры мамкины :)
Вопрос безопасности стоит у нас на первом месте. Меня вопрос сохранности данных беспокоил всегда. И я слабо доверял всяким там архивам и прочим вещам, которые взламываются на ура. Тем более на подходе эра квантовых компьютеров, которые ваш пароль вскроют за несколько секунд\минут. Могу отдельно про квантовые вычисления написать, но это будет лишним, как по мне :)
Ниже постараемся понять, как можно прятаться от умных полицаев-вайтишников :)

Как мы обычно храним эти данные?
Зачастую либо тупо на компьютере (максимум засунув это в рарник какой-нибудь) или в облаке.
Метод не особо безопасный. Так как мы все любители кнопки бабло, а эта кнопка не может быть легальной априори.
На практике, хацкеры ставят не особо сложные пароли.
На это есть несколько причин:
1) Боязнь забыть пароль, ибо в этих данных целое Ваше состояние.
2) Используется длинный пароль, но его же где-то надо хранить, а хранить пароль опасно вообще.
Безусловно бывают исключения.

Для этих целей существует стеганография :)
Стеганография - наука, которая исследует методы передачи одних данных, с сокрытием в них других.

Почему мы нам не использовать стеганографию в делах наших тёмных?
Представьте, что у Вас есть много конфиденциальных данных, которые нужно хранить. Одним движением руки вы засунули все эти данные в картинку, или аудио, или даже видео О_о

Чем не прекрасно? Вы можете хоть эту картинку на аватарку поставить, и даю 100 процентов, никто не подумает что там что-то может быть по определенным причинам, которые я опишу ниже. Это может быть и вк, и телеграм, и даже форум :)

Для нас важна простота хранения данных, поэтому мы будем с Вами использовать встраивание в неподвижную область изображений. Т.е. мы будем рассматривать встраивание в jpg файлы, с уклоном в jpg (далее объясню почему).

Вы спросите: а как же можно что-либо встроить в изображение? ЭТО ЖЕ ИЗОБРАЖЕНИЕ!
Вот тут у нас получается слишком интересно :)
Все мы видели разные тесты, мол найди 100500 отличий на картинке. И не находим же! А с точки зрения технологии это огромнейшие различия.
Наше внимание всегда фокусируется в центр картинки, и не замечает изменений второго плана. Это один из методов стеганографии, который заключается в добавлении на изображение различных деталей, мало заметных для человеческого внимания. Обычно применяется в виде водяных знаков, на которые уж вообще никто не смотрим.

"Хорошо, а как это относится к сокрытию данных в изображении? Я думал там ничего не будет лишнего, ведь могут сравнить!!"
Вот в нашем случае все немного по другому.

В двух случаях (кодирования jpeg) применяется одно и то же свойство ЗСЧ (зрительной системы человека), а именно - низкая чувствительность к изменению яркости.

В современном мире в построении изображения в основу идет 3 цвета: красный, зеленый, синий (т.е. RGB)

Яркость считается по формуле:
Y = 0.2126 R + 0.7152 G + 0.0722 B

Что же значат эти цифры?

Возьмем мы зеленую картинку, и изменим яркость на 2 значения (оригинал: 255, изменили на: 253), нарисуем слово и посмотрим разницу

Что же произошло? Мы изменили яркость всего то на 2 значения, а разница видна?
Все дело в том, что наша ЗСЧ имеет самую высокую восприимчивость к изменению яркости именно зеленого цвета.
Именно поэтому в формуле яркости зеленый цвет стоит на высшей позиции.

А теперь, возьмем синий цвет, и посмотрим что же выйдет.
И что мы видим? Да практически никаких изменений :)
На этом и базируется все основное кодирование, кстати JPEG тоже это использует.

Перейдем непосредственно к сокрытию данных в JPEG:
Для начала кратко о том, как же кодируется JPEG, ведь все мы любим сжимать изображения. Никто не любит пересылать изображения весом по несколько мегабайт с малым расширением.

Если не вникать в суть, то это: дискретно-косинусное преобразование (ДКП), обход змейкой с обнулением данных в зависимости от уровня сжатия, сжатие с помощью кода Хаффмана (например) и запаковка в файл.

Нам же необходимо работать с ДКП и змейкой.

Суть ДКП заключается в том, что изображение разбивается на 3 блока: низкочастотная область, среднечастотная область, высокочастотная область.
Низкочастотная область - та область изображения, изменение пикселей которой будет слишком заметным для глаза.
Среднечастотная - область, где изменение будет слабозаметно или не заметно
Высокочастотная - изменения не заметны вообще, этим и пользуется JPEG обнуляя эти значения (в зависимости от коэф. сжатия еще и среднечастотную затрагивает, а иногда низкочастотную).

Мы же будем встраивать в среднечастотную область. Почему? Все просто! Нам необходимо обезопасится от сжатия. Вы загрузили картинку в ВК. ВК сам по себе сжимает изображение, обнуляя всю высокочастотную область. А среднечастотная будет на месте.

Как мы это делаем?

У нас есть метод LSB т.е. наименее значущий бит. Мы берем среднечастотную область изображения, и начинаем из байтов делать биты по известной формуле :)
И начинаем встраивание. Идем по среднечастотной области, и встраиваем биты наших данных. Разницу между яркостью 255 и 254 заметить будет очень тяжело даже на низкочастотном уровне. Встроили бит, а потом превратили обратно в байт и записали в файл. На выходе получаем файл с данными который внешне не отличается от оригинала.
К этому всему можно применить шифрование, тогда вообще красиво выходит.

Помимо LSB существуют различные методы типа "псевдослучайная последовательность" или "псевдослучайный интервал".
При псевдослучайной последовательности или интервале у нас появляется так называемый ключ (пароль) - чисельные значения куда мы встраиваем данные. Этот метод прекрасно подходит под кодирование bmp файлов, и имеет огромную устойчивость к несанкционированному доступу. Но весь минус в том, что это только для bmp, так как он использует в себе 3 массива цветности rgb соответственно.
Для JPEG это уже не подходит, т.к. JPEG не содержит в себе RGB как таковой. В нем используется более интересная технология YCbCr, где Y — компонента яркости, Cb и Cr являются синей и красной цветоразностными компонентами.

Как же извлекать?
Точно так же! Только не встраиваем, а извлекаем :)
Т.е. мы берем изображение, делаем все то-же дискретно-косинусное преобразование. Преобразуем байты в биты и читаем последний бит. Далее записываем, расшифровываем, делаем что хотим.

Плюсы и минусы
Данный метод имеет огромный плюс: большая пропускная способность, т.е. в 1 изображение можно засунуть большое количество информации (в зависимости от изображения, и не обязательно от размера).
К тому же у этого метода высокая устойчивость к сжатию. Сжатие на 30% перенесет на ура. Больше - как повезет, в зависимости от данных изображения.

Самый большой минус этого метода - возможность детектирования. Люди, которые знают, что у вас в этом конкретном изображении находится столько-то информации, могут её извлечь.
Как минимум, эта проблема решается благодаря шифрованию.
Но в 99 процентах случаев, противник даже не поймет, что там что-то есть.
Ведь на это нужна точная наводка.

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




Помимо кодирования изображений так же существует кодирование звука и лингвистическое кодирование.

Начнем со звука.
Можно так же передавать данные через песенки или голосовые сообщения. Допустим вы сказали "привет, как дела?", а там передалась ссылка на privnote документ. Интересно, правда?

Для этого у нас есть целых 3 метода кодирования:
1) Метод LSB. Абсолютно тот же способ, что и для изображения.
Человеческое ухо не всеслышно :)
Только тут может быть пропускная способность больше, из за использования двух каналов, стерео собственно.
Точно так же разбивается на байты, потом на биты, меняем, записываем, все красиво!

А потом берем и извлекаем :)

2) Эхо кодирование
Наш мозг не различает мелкие эхо сигналы. На основании этого можно брать мелкие частички аудио и делать эхо смещая на определенную позицию. Допустим сместили на пункт - "1", сместили на 2 пункта - "0". И так выходит 010110110 и т.д.
Этот метод мало используется, поскольку зачастую у аудиофайла есть своё эхо, и оно перебьет кодирование, будет не красиво.

3) Фазовое кодирование
Эффективный метод, но с очень низкой пропускной способностью. Заключается в разбиении на мелкие куски аудиофайла и сравнении фаз каждого куска. На этом строится новые куски. При этом получателю должны быть известны: длина сегмента, и точки ДКП.

Лингвистическое кодирование:
Кодирование невидимых символов
В данном методе берется обычный текст, и кодируется с помощью спец символов.
К примеру: вариаций пробелов в windows уйма, каждый из них имеет свой код.
Что мешает встроить данные используя несколько видов данного символа?
На глаз мы это вряд ли заметим :)

один пробел - "1"
другой пробел - "0"

Пример: "я вот пишу вам, а вы не догадываетесь, что тут закодировано целое послание Богу Ра, или другим неизвестным наркоманам"
И выходит (кодирования в самом деле нет, просто пример): 010001101001010010
Все просто :)

Есть еще куда более жесткий метод под названием 3D кодирование:
Тот метод, когда в любую деталь можно запрятать важную информацию О_о
В данном методе используется заполнение-пустота. То есть, мы строим 3D модель, почему бы не строить на кубиках размером с милиметр?
Допустим пустой кубик - "0"
Заполненный кубик - "1"
Так и заполняем контейнер и печатаем красивую фигурку с паролями внутри :D
Правда этот метод не нашел должного применения на данный момент, поскольку толковых сканеров не изобрели под это. Но я надеюсь, что этому будет дан ход, ибо этот метод тоже стоит свеч. Длительное хранение данных тоже хорошо.
Только представьте, появилась новая криптовалюта и вы запрятали ключ с кучей денег на будущее в статуэтке.
А через столько лет вспомнили и разбогатели. Разумеется, если мама или жена не выкинула это, потому что нарушает ауру комнаты.

По вашему запросу, специально для этого форума могу написать небольшой комплекс встраивания в изображение данных :)

Надеюсь вам понравилось :)
Ожидаю ваших комментариев и вопросов, буду рад ответить :)
 
Последнее редактирование:

MariaBOISM

New member
12.08.2019
6
0
1
#3
Хочу поставить нормальную двустороннюю сигнализацию с датчиками удара,наклона, движения. Из этой статьи мне знакома только СтарЛайн - но она как мне кажется уж больно дорогая =) Кто себе какие ставил, выбирал может недавно, может посоветовать что-то? Думаю в 500-600грн уложиться.


:)
 

О нас

  • Данный форум посвящен разработкам команды Tenebris, а также связанным с их использованием направлениями в деятельности пользователей. Мы рады приветствовать Вас на форуме и искренне надеемся, что отзывчивое сообщество позволит значительно повысить качество вашей и нашей работы. Присоединяйтесь!

Быстрая навигация

Меню пользователя