-
Notifications
You must be signed in to change notification settings - Fork 5
Схема разделения секретной визуальной информации
Идея: разбиение исходного изображения на несколько шифрованных («теневых» изображений, shadow images), каждое из которых не дает никакой информации об исходном изображении кроме, может быть, его размера (изображение – а-ля «белый шум»). При наложении шифрованных изображений друг на друга, можно получить исходное изображение. Данная технология обладает криптоустойчивостью за счет того, что при разделении исходного изображения на множество шифроизображений происходит случайным образом.
Алгоритм визуальной криптографии:
Наор и Шамир продемонстрировали (k, n)-визуальную схему секретного обмена, где изображение было разбито на n частей, таким образом, что кто-либо, обладавший любыми k частями мог расшифровать его, в то время как любые k-1 частей не давали никакой информации о содержании исходного изображения. Когда все k частей будут наложены друг на друга, мы увидим исходное изображение. Для того чтобы разбить исходное черно-белое изображение на n частей, каждый пиксель изображения представляется в виде некоторого количества меньших частей (subpixels). Количество белых и черных частей всегда одинаковое. Если пиксель делится на две части, то получается один белый и один черный блок. Если пиксель делится на четыре равные части, то получаем два белых и два черных блока. Рассмотрим (2, 2)-визуальную схему секретного обмена, т.е. исходное изображение разбивается на два теневых изображения, каждое из которых представляет собой изображение белого шума, но при наложении дают исходное изображении. Каждый пиксель исходного изображения будем разбивать на четыре части, таким образом, если размер исходного изображения был M×N, то размеры теневых изображений будут 2M×2N. На рисунке показано, что пиксель, разделенный на четыре части, может иметь шесть разных состояний:
Если пиксель на первом слое имеет одно положение, пиксель на втором слое в свою очередь может иметь два положения: идентичное либо инвертированное пикселю первого слоя. Если пиксель части 2 идентичен пикселю части 1, то пиксель, полученный в результате наложения обоих теневых изображений, будет наполовину белый и наполовину черный. Такой пиксель называют серым или пустым. Если пиксели части 1 и части 2 противоположны, то пиксель, полученный в результате наложения, будет полностью черным. Он будет являться информационным. Опишем процесс получения теневых изображений для исходного изображения для схемы (2, 2): для каждого пикселя исходного изображения, для первого теневого изображения случайным образом выбирается одно из шести возможных состояний пикселя, приведенных на рисунке 1. Состояние пикселя второго теневого изображения выбирается идентичным или симметричным состоянию пикселя первой «тени» в зависимости от того, белый или черный это был пиксель в исходном изображении соответственно. Схожим образом можно построить любую (k, n) визуальную схему секретного обмена. Результаты: Исходное изображение:
Теневое изображение 1:
Теневое изображение 2:
Результат при правильном наложении:
В статье Y.C. Hou. Visual cryptography for color images. In Pattern Recognition, 2003 описывается данный подход в применении к цветным изображениям. Но здесь недостатком является потеря качества изображения:
Результат визуальной криптографии на цветном изображении:
Литература:
-
Visual cryptography for color images http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.457.5077&rep=rep1&type=pdf
-
Visual cryptography http://link.springer.com/chapter/10.1007/BFb0053419
-
Схема разделения секретной визуальной информации http://habrahabr.ru/company/nordavind/blog/177355/
- Стили кодирования
- [Java](Код стайл для языка Java)
- [C/C++](Стиль написания кода на С )
- [C#](Стиль написания кода на С# )
- [Swift](Руководство по оформлению кода на языке Swift )
- Написание комментариев к коммитам
- Android
- Android DevGuide
- [QR codes](Работа c QR на Android)
- [Полезные вещи](Полезные вещи для Android разработки)
- [Архитектура приложения](Архитектура приложения)
- [Используемые компоненты](Используемые компоненты)
- [Инструкция по сборке проекта](Инструкция по сборке проекта)
- iOS
- [Код на C++ под iOS](Использование кода и библиотек cpp при создании приложений на языке Swift)
- Стилевые таблицы NSS
- Структура проекта в Xcode
- Clean Architecture
- C и C++
- [Использование CMake для проектов на C++ и C ](Использование CMake для проектов на C и CPP)
- Форматы файлов
- [.bmp](Cтруктура хранения bmp файлов)
- [.jpg](Cтруктура хранения jpg файлов)
- [.png](Cтруктура хранения png файлов)
- Алгоритмы шифрования
- Кодирование информации псевдослучайными последовательностями чисел
- Визуальная криптография
- Схема разделения секретной визуальной информации
- Шифрование RGB изображения с помощью Фурье образа
- RSA-шифрование .bmp файлов
- Примеры использования
- [Библиотека матричной алгебры](Пример использования библиотеки матричной алгебры)
- Описание процесса кодирования файла
- Способ обезопасить использование приложения
- Java фасад библиотеки алгоритмов
- Алгоритм шифрования bmp на java заглушке
- Матричная арифметика
- [A+B](Сложение матриц)
- [A*p](Умножение матрицы на скаляр)
- [A*B](Умножение матриц)
- [Обратные матрицы](Нахождение обратной матрицы)
- Взятие по модулю
- [A
mod
p](Взятие матрицы по модулю простого числа) - [A
mod
P](Взятие матрицы по модулю - матрицы из простых чисел)
- Суперпозиция (модуль - простое число)
- [A+B
mod
p](Сложение матриц по модулю простого числа) - [A*c
mod
p](Умножение матрицы на скаляр по модулю простого числа) - [A*B
mod
p](Умножение матриц по модулю простого числа)
- Суперпозиция (модуль - матрицы из простых чисел)
- [A+B
mod
P](Сложение матриц по модулю - матрице простых чисел) - [A*c
mod
P](Умножение матрицы на скаляр по модулю - матрице простых чисел) - [A*B
mod
P](Умножение матриц по модулю - матрице простых чисел)
##Прочее
- [Утечки памяти](Memory Leaks)
- [Базовые цвета](Базовые цвета)
- [Clean Architecture](Clean Architecture)