R2-D2 и C3PO
R2-D2 и C3PO

Введение

Задавались ли вы вопросом: могут ли нейронные сети использовать секретные ключи для защиты информации? В этой статье мы узнаем, как обучить две нейронные сети (будем называть их R2-D2 и C3PO) end-to-end шифрованию и дешифрованию сообщений с помощью секретного ключа, не предписывая им конкретные криптографические алгоритмы, а вместо этого мы будем тренировать их с нуля.

Детали обучения

Начнем с R2-D2. Он будет получать на вход n-битное сообщение (закодированное в вектор значений -1 и 1 для представления 0 и 1 соответственно) и аналогично закодированный n-битовый ключ. Задача R2-D2 состоит в том, чтобы выдать n-битный вектор, его мы воспринимаем как зашифрованный текст. R2-D2 будет представлять из себя полносвязный слой, за которым следуют четыре одномерных сверточных слоя.

R2-D2
R2-D2

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

C3PO получает в качестве входных данных зашифрованный текст и тот же ключ, который был дан R2-D2. Задача C3PO: восстановить исходное сообщение. Архитектура нейронной сети C3PO идентична R2-D2:

C3PO
C3PO

Вот и все, вперед нейронные сети!

классическая ситуация в нейронных сетях
классическая ситуация в нейронных сетях

Стойте стойте стойте, а ведь R2-D2 и C3PO начнут просто игнорировать ключи и передавать на выход исходное сообщение, зачем им учиться шифровать и дешифровать сообщения с помощью данного ключа? Тут нам и понадобится Чубакка.

Чубакка
Чубакка

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

Чубакка
Чубакка

Чем лучше у Чубакки это получается, тем хуже шифруют и дешифруют сообщения R2-D2 и C3PO. И наоборот, чем лучше R2-D2 и C3PO шифруют и дешифруют сообщения, тем хуже у Чубакки получается расшифровать зашифрованный текст без ключа.

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

Все вместе выглядит так:

Теперь точно все, приступаем к обучению!

Результаты обучения

Подписи на графике перепутаны, зеленый - Чубакка, красный - C3PO
Подписи на графике перепутаны, зеленый - Чубакка, красный - C3PO

Зеленая линия показывает ошибку реконструкции Чубакки, а красная линия - ошибку C3PO. Вы можете видеть, что примерно за 8000 шагов обучения C3PO и Чубакка начинают восстанавливать исходное сообщение (хотя C3PO справляется лучше, чем Чубакка). Примерно через 15000 шагов обучения C3PO эффективно дешифрует зашифрованное сообщение.

Ручная проверка сети R2-D2 показала, что эффект изменения ключевого бита или бита текста распространялся на несколько элементов зашифрованного текста (а не ограничивался одним битом, как это было бы с XOR). Обычно однобитное изменение значительно влияет на 3-6 элементов вывода с меньшими изменениями в других элементах.

P.S. реализация будет доступна позже.

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


  1. Travisw
    12.12.2021 00:32

    Не понимаю смысл заменять алгоритм шифрования на нейронную сеть р2д2 и си3пио, Чубакка да это понятно это нужно.


    1. Al-Kharba Автор
      12.12.2021 02:26
      +1

      Это не замена алгоритмам шифрования, а возможность шифровать и дешифровать нейронными сетями.


      1. Travisw
        12.12.2021 19:46

        А 3ачем шифровать нейронными сетями? Если алгоритмом проще?


        1. ivanrt
          14.12.2021 05:28

          Я так понимаю proof of concept. Посмотреть что получится если заставить нейросеть придумать алгоритм шифрования который она сама не может взломать.


  1. mentin
    12.12.2021 01:44
    +1

    А подписи на последнем графике не перепутаны? Там красная линия помечена как Чубакка, на осях bits wrong, то есть именно Чубакка без ключа научился сводить ошибки к нулю, а не C3PO, зелёная линия которого осталась на 7-8 ;)


    1. Al-Kharba Автор
      12.12.2021 02:23

      Подписи и вправду перепутаны, спасибо!


  1. debagger
    12.12.2021 06:47

    Хоть бы в двух словах написали, как был процесс обучения построен, какие данные использовались для обучающей выборки и так далее.

    Проверяли ли вы, что осуществляется именно шифрование-дешифрование? Потому что, что при обучении R2-D2 и C3PO могли просто придумать свой язык обмена сообщениями, непонятный для Чубакки, а ключ шифрования игнорировать.


    1. ivanrt
      14.12.2021 05:40
      +1

      Если c3po научился расшифровать, то что мешает Чубакке этот язык?


  1. monane
    12.12.2021 12:37

    P.S. реализация будет доступна позже.

    Извините а как скоро будет доступна реализация?


    1. Al-Kharba Автор
      12.12.2021 22:15

      В течение недели планирую выложить в общий доступ, надо причесать код, извиняюсь за задержку)