Криптография в цифровых технологиях необходима как инструмент защиты конфиденциальных данных. К 2022 году разработаны множество криптографических алгоритмов, которые постоянно совершенствуются.

Я предлагаю обратиться к одному из самых первых методов шифрования – методу подстановки. В 21-ом веке этот метод может показаться ненадежным.

Но в этой статье я попробую доказать обратное.

Моя идея основана на шифре омофонической замены. Принцип, лежащий в основе данной идеи заключается в замене всех байтов файла А номерами позиций этих байтов в файле В. Полученный файл С является зашифрованным файлом А (Рис. 1).

Рис. 1 – Процедура шифрования
Рис. 1 – Процедура шифрования

Теперь для того, чтобы восстановить файл А, достаточно заменить номера позиций в файле С байтами из файла В. (Рис. 2).

Рис. 2 – Процедура дешифрования
Рис. 2 – Процедура дешифрования

Для реализации данной идеи мною было разработано приложение “Homer” на языке Python.

Рассмотрим принцип шифрования в приложении Homer.

Рассмотренный ранее файл А считаем секретным. Файл В является нашей “картой” (обязательным условием файла В является присутствие в нем всех байт из файла А).

Для шифрования файла A файлом B заменим байты в файле А номерами позиций этих байт в файле В. При этом при повторении одного и того же байта в файле А пытаемся найти номер следующей позиции этого байта в файле В.

Для примера закодируем секретный файл А с содержимым “WWW” с помощью файла-карты В с содержимым “The World Wide Web” (Рис. 3).

Рис. 3 – Пример шифрования в Homer
Рис. 3 – Пример шифрования в Homer

Для рашифровки файла С считываем байты из файла карты, стоящие на позициях, указанных в файле-карте В (Рис. 4).

Рис.4 – Пример дешифрования в Homer
Рис.4 – Пример дешифрования в Homer

В результате получаем обратно исходный файл А.

На текущий момент основная проблема реализации в низкой скорости процессов шифрования/дешифрования. Но возможность использовать практически любой файл в качестве карты, без потери надежности, дает огромное преимущество перед остальными алгоритмами. Вы можете использовать фотографию, медиафайл или любой другой файл в качестве карты и хранить его в открытом доступе. Ни у кого не возникнет подозрений, что он может использоваться в качестве карты для дешифрования.

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

В то же время, не зная этого файла, взломать исходный нереально! Не верите? Тогда скажите, что содержится в этом файле?

Алгоритм будет совершенствоваться. Буду рад конструктивным предложениям и критике. Они помогут мне развивать идею.

Вы можете найти исходный код приложения Homer в моем репозитории на github.

Комментарии (8)


  1. SadOcean
    05.11.2021 01:00
    +4

    Идея простая и понятная, но не понятно, в чем преимущество этого алгоритма перед обычным гаммированием?

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

    Собственно получаются ровно те же плюсы, только шифр гаммирования проще, быстрее и не накладывает таких ограничений на секретный файл.

    Кроме того, ваш алгоритм поддается взлому через частотный анализ карты (файла С), в случае если сообщение текстовое и достаточно большое.
    При правильном подборе секретного ключа в гаммировании такой проблемы нет.


  1. NervNazarov
    05.11.2021 01:01
    +4

    Кажется, вы изобрели Шифр Вернама и шифроблокноты. При условии, что каждый блокнот (т.е. секретный файл в вашей терминологии) используется ровно один раз, это действительно система с абсолютной криптостойкостью.


    1. gearbox
      05.11.2021 01:05
      +2

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


      1. plus79501445397
        05.11.2021 10:07
        +1

        Более того.
        "Для работы шифра Вернама необходима истинно случайная последовательность (ключ)" и "защищённая передача последовательности и сохранение её в тайне". Сравните это с предлагаемым автором использовании в качестве ключа далеко не случайного содержания (и помимо заголовка) фотографии, медиафайла, любого другого файла (ага, там то уж точно тайная и «истинно случайная последовательность»;)) или (как в приведенных автором примерах) слова или устоявшиеся словосочетания, не говоря уже о странном допущении, что ключевой файл можно хранить в открытом доступе:

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


    1. static_cast
      05.11.2021 03:40
      +4

      Все еще проще. )

      Т.к. шифр симметричный и требует секретного ключа размером не менее шифруемого сообщения (чтобы исключить частотный анализ), то все эти танцы с подстановкой индексов могут быть легко заменены самой мощной криптографической функцией, гарантирующей криптостойкость (при перечисленных условиях) - побитовым XOR-ом.


  1. pohjalainen
    05.11.2021 10:15
    +4

    Поздравляю, вы изобрели книжный шифр!


  1. maxkomp
    05.11.2021 13:06

    Для школьника - Вполне себе рабочий алгоритм шифрования. Если стоит задача скрыть свои личные заметки от нежелательного прочтения родителями / учителями, (а заодно и в программировании немножко поупражняться), то почему бы и нет?

    Для любых более серьезных дел - увы и ах. Придется применять что-то более устойчивое к взлому и перехвату ключей.

    Припоминаю, когда я учился в 8 классе, одна моя одноклассница пожаловалась мне на свою чрезмерно бдительную бабушку. Дескать, она анализирует записную телефонную книжку и тщательно следит, чтобы внучка с мальчиками не общалась. (Для тех, кто не застал начало 80-х: в прошлом тысячелетии телефоны были с дисковыми номеронабирателями, а телефонные книжки выглядели как небольшие бумажные блокнотики).

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

    Так вот, я вошел в положение, сам придумал и рассказал ей про способ, как замаскировать записную телефонную книжку под тетрадочку для записи слов по английскому языку. (Благо, в ее семье иностраннымииязыками никто не владел, так что подозрений такие записи в тетрадке не вызвали). Кстати, воспользовался примерно тем же алгоритмом, который описан в статье... Назвал его "Анти-бабушка"

    Про то, что это называется "стеганографией", я узнал немножко попозже.

    В институте на первом же занятии по теории информации преподаватель расскзаал про некоторые простые алгоритмы шифрования (и про книжный шифр в частности).

    А в качестве домашнего упражнения задал разработать алгоритмы для взлома этих шифров. И исследовать их трудоемкость...

    Вот тогда мне и стало смешно... Судя по смехуечкам в аудитории, многие студенты-математики прошли через этап "мамкиных криптографов"

    И ничего страшного в этом нет.


  1. lunacyrcus
    05.11.2021 13:16
    +1

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

    Вот это так себе идейка) Часто фотки запощенные куда-то в соцсети или мессенджеры, пережимаются/перекодируются, или изменяются метаданные как минимум. Да и сомнительно постить публично ключи даже в таком виде, лучше уж пусть валяется среди кучи файлов где-то.

    А так да, шифр вполне неплох как эксперимент-поиграться для себя, тоже иногда нравилось.