Нейронная сеть для расшифровки файлов - возможно? - PullRequest
12 голосов
/ 13 мая 2011

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


Ситуация

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

Что я хочу?

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

Мои идеи и работа до сих пор

У меня мало опыта с шифрованием. Кто-то предложил просто принять шифрование AES, чтобы я мог написать небольшую программу для пакетного шифрования файлов в кодировке ASCII. Таким образом, это будет охватывать сбор данных обучения для контролируемого обучения. Используя зашифрованные файлы и входные данные для нейронных сетей и исходные файлы в качестве обучающих данных, я смог обучить любую сеть. Но теперь я застрял, как бы вы предложили подавать входные и выходные данные в нейронную сеть. Итак, сколько входных и выходных нейронов вы бы использовали? Поскольку я понятия не имею, как будут выглядеть зашифрованные файлы, возможно, лучше всего передать данные в двоичном виде. Но я не могу просто использовать тысячи входных и выходных нейронов и передавать все биты одновременно. Может быть, периодические сети и кормить один бит за другим? Также звучит не очень эффективно.

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

Ответы [ 3 ]

14 голосов
/ 13 мая 2011

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

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

3 голосов
/ 13 мая 2011

Я думаю, что если бы это сработало, люди бы это делали. Насколько я знаю, они этого не делают.

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

0 голосов
/ 12 октября 2016

Скажем, у вас есть две клавиши A и B, которые переводят зашифрованный текст K в Pa и Pb соответственно.Pa и Pb оба являются «правильными» расшифровками зашифрованного текста K. Поэтому, если ваша нейронная сеть имеет только K в качестве входных данных, у нее нет средств для фактического предсказания правильного ответа.Большинство способов взлома шифрования включают в себя просмотр результата, если он выглядит так, как вам нужно.Например, читаемый текст, скорее всего, будет открытым текстом, а не случайным мусором.Нейронная сеть должна уметь угадывать, получит ли она правильный ответ в зависимости от того, что пользователь ожидает от содержимого, которое никогда не может быть на 100% правильным.


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

Также в отношении непрерывной и дискретной задачи это в основном решено.Выходы имеют что-то вроде сигмоидальной функции, поэтому вам просто нужно выбрать порог для 1 против 0. 5 может работать.При достаточном обучении вы теоретически могли бы получить правильный ответ в течение 1 на 0% в 100% случаев.

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

Нетэто означает, что такое решение практически выполнимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...