Стеганография — это искусство и наука скрывать информацию внутри другой, более очевидной и безопасной для передачи или хранения. В отличие от криптографии, основная задача стеганографии не заключается в шифровании данных, а в его маскировке так, чтобы никто и не догадывался о наличии скрытой информации. Существуют сотни традиционных методов, таких как скрытие в изображениях, аудиозаписях или видеофайлах. Однако с развитием вычислительных технологий и сложных форматов данных появились совершенно новые подходы к сокрытию данных. Один из таких инновационных методов — использование NaN значений в числах с плавающей запятой для хранения секретов.
Числа с плавающей запятой широко используются в различных областях науки и техники, начиная от физики и заканчивая компьютерной графикой и машинным обучением. Они позволяют представлять очень разнообразные диапазоны чисел благодаря спецификации IEEE 754. В этой спецификации есть особое состояние — NaN (Not a Number, не число). Такие значения могут появляться в вычислениях при делении на ноль, операциях с бесконечностями и других нестандартных случаях. Особенность NaN состоит в том, что они содержат неиспользуемый битовый пространство, которое до сих пор не было активно применено для передачи полезной информации.
Именно этот факт и послужил основой для разработки метода стеганографии, который позволяет кодировать данные непосредственно в этих дополнительных битах NaN, не меняя саму концепцию и функцию чисел. Преимущество данного метода в том, что использование NaN для сокрытия информации позволяет интегрировать секретные послания в потоки данных без изменения визуального или вычислительного результата. Для многих программ и алгоритмов NaN — это уже обычное явление, и они практически не обращают внимания на структурные подстановки внутри этих специальных чисел. Благодаря этому можно аккуратно внедрять шифры, изображения или текст, спрятанный внутри NaN, что делает этот способ востребованным в тех сферах, где важна дискретность и неприметность скрытых данных. Современные библиотеки и инструменты на Python реализуют подобные методы весьма удобно.
Например, библиотека Steganan предоставляет механизмы кодирования и декодирования информации непосредственно в массивах чисел с плавающей запятой. Можно, к примеру, взять цветное изображение, представить его в виде массива чисел и затем преобразовать эти данные в набор NaN значений, заполняя внутренние биты. Далее такой массив можно сохранить в файл без потери данных, если формат поддерживает точное хранение чисел с плавающей запятой. Позже, при необходимости, зашифрованную или скрытую информацию можно легко извлечь обратно. Применение этого метода выходит далеко за рамки простой игры с данными.
Например, в сфере дистанционного зондирования Земли, где используются многомерные числовые массивы для анализа спектральных данных, можно внедрять метаинформацию или авторские знаки прямо в исходные данные без видимых искажения их научной смысловой нагрузки. Это существенно облегчает процессы лицензирования, проверки подлинности и отслеживания источника данных без необходимости создания отдельного инфраструктурного субстрата для метаданных. Также метод очень полезен для защиты интеллектуальной собственности, поскольку традиционные подходы к водяным знакам в изображениях или мультимедиа могут быть уязвимы к компрессиям и преобразованиям. Напротив, скрытие в NaN возможных чисел с плавающей запятой обеспечивает высокую устойчивость и моментальную интеграцию без изменения внешнего представления. Для пользователей и специалистов важно понимать и обратное: чтобы наносить изменения прямо в число с плавающей запятой, необходима высокая точность при сохранении форматов документов.
Многие распространённые типы файлов, например PNG для изображений или TIFF для многоканальных данных, сохраняют точную структуру чисел, что позволяет применять метод без потери информации. Если же используется формат с потерями или преобразованиями, данные будут утрачены. У метода есть и свои ограничения. Во-первых, скрываемый объём зависит от количества и распределения NaN в исходных данных. Если таких значений мало, или они сгруппированы локально, емкость для хранения информации ограничена.
Во-вторых, для чтения и извлечения данных требуется специализированный софт, который понимает структуру NaN в заданном формате и умеет интерпретировать внутренние биты. Это добавляет определённую сложность, но современные инструменты для работы с научными и инженерными данными успешно решают эту задачу. Перспективы развития данного направления связаны с интеграцией инструментов с современными системами защиты данных, где метод стеганографии не только прячет информацию, но и комбинирует ее с криптографией и сжатием. Это позволяет передавать максимально гибкие и защищённые сообщения в прозрачных научных и технических потоках данных. Также возможна автоматизация процессов внедрения и извлечения, что будет очень полезно для систем мониторинга, обмена измерениями и интеллектуального анализа больших массивов данных.