Введение
Задавались ли вы вопросом: могут ли нейронные сети использовать секретные ключи для защиты информации? В этой статье мы узнаем, как обучить две нейронные сети (будем называть их R2-D2 и C3PO) end-to-end шифрованию и дешифрованию сообщений с помощью секретного ключа, не предписывая им конкретные криптографические алгоритмы, а вместо этого мы будем тренировать их с нуля.
Детали обучения
Начнем с R2-D2. Он будет получать на вход n-битное сообщение (закодированное в вектор значений -1 и 1 для представления 0 и 1 соответственно) и аналогично закодированный n-битовый ключ. Задача R2-D2 состоит в том, чтобы выдать n-битный вектор, его мы воспринимаем как зашифрованный текст. R2-D2 будет представлять из себя полносвязный слой, за которым следуют четыре одномерных сверточных слоя.
В обработке изображений, чтобы воспользоваться свойством пространственной локальности в изображениях, более распространено использование сверточных слоев, за которыми следует полносвязный слой. Для криптографии же мы хотим, чтобы локальность была изученным свойством, а не заданным заранее (когда первые n-бит соответствуют тексту, а следующие n-бит - ключу).
C3PO получает в качестве входных данных зашифрованный текст и тот же ключ, который был дан R2-D2. Задача C3PO: восстановить исходное сообщение. Архитектура нейронной сети C3PO идентична R2-D2:
Вот и все, вперед нейронные сети!
Стойте стойте стойте, а ведь R2-D2 и C3PO начнут просто игнорировать ключи и передавать на выход исходное сообщение, зачем им учиться шифровать и дешифровать сообщения с помощью данного ключа? Тут нам и понадобится Чубакка.
Чубакка будет представлять из себя враждебную нейронную сеть, которая на вход получает только зашифрованный текст и пытается выдать исходный текст.
Чем лучше у Чубакки это получается, тем хуже шифруют и дешифруют сообщения R2-D2 и C3PO. И наоборот, чем лучше R2-D2 и C3PO шифруют и дешифруют сообщения, тем хуже у Чубакки получается расшифровать зашифрованный текст без ключа.
Функция потерь Чубакки и C3PO - L1 расстояние от исходного сообщения. Другими словами, они обучаются восстанавливать сообщение по зашифрованному тексту. Функция потерь для C3PO обновляется таким образом, чтобы она также учитывала оценку реконструкции Чубакки (чем лучше Чубакка восстанавливает сообщение, тем больше функция потерь C3PO).
Все вместе выглядит так:
Теперь точно все, приступаем к обучению!
Результаты обучения
Зеленая линия показывает ошибку реконструкции Чубакки, а красная линия - ошибку C3PO. Вы можете видеть, что примерно за 8000 шагов обучения C3PO и Чубакка начинают восстанавливать исходное сообщение (хотя C3PO справляется лучше, чем Чубакка). Примерно через 15000 шагов обучения C3PO эффективно дешифрует зашифрованное сообщение.
Ручная проверка сети R2-D2 показала, что эффект изменения ключевого бита или бита текста распространялся на несколько элементов зашифрованного текста (а не ограничивался одним битом, как это было бы с XOR). Обычно однобитное изменение значительно влияет на 3-6 элементов вывода с меньшими изменениями в других элементах.
P.S. реализация будет доступна позже.
Комментарии (10)
mentin
12.12.2021 01:44+1А подписи на последнем графике не перепутаны? Там красная линия помечена как Чубакка, на осях bits wrong, то есть именно Чубакка без ключа научился сводить ошибки к нулю, а не C3PO, зелёная линия которого осталась на 7-8 ;)
debagger
12.12.2021 06:47Хоть бы в двух словах написали, как был процесс обучения построен, какие данные использовались для обучающей выборки и так далее.
Проверяли ли вы, что осуществляется именно шифрование-дешифрование? Потому что, что при обучении R2-D2 и C3PO могли просто придумать свой язык обмена сообщениями, непонятный для Чубакки, а ключ шифрования игнорировать.
Travisw
Не понимаю смысл заменять алгоритм шифрования на нейронную сеть р2д2 и си3пио, Чубакка да это понятно это нужно.
Al-Kharba Автор
Это не замена алгоритмам шифрования, а возможность шифровать и дешифровать нейронными сетями.
Travisw
А 3ачем шифровать нейронными сетями? Если алгоритмом проще?
ivanrt
Я так понимаю proof of concept. Посмотреть что получится если заставить нейросеть придумать алгоритм шифрования который она сама не может взломать.