2014-12-15 3 views
0

Могу ли я сделать PHP-скрипт для шифрования вещей с помощью специального ключа шифрования и обеспечить его безопасность?Пользовательский метод шифрования

Скажем, у меня был пароль password, и у меня был массив, содержащий значения, чтобы заменить каждую букву и номер на ряд букв и цифр, и я использовал preg_replace. Если значения для каждой буквы и числа были уникальными, было бы безопасно и, возможно, даже более безопасным, чем стандартный метод шифрования?

Имейте в виду, что я раньше ничего не делал с шифрованием, и мне просто интересно, будет ли это работать. Главный вопрос: безопасно ли оно.

EDIT: Итак, я сделал простую функцию, чтобы использовать то, что я думал изначально, и он изменяет «шустрая лиса перепрыгнула через ленивую собаку» в

Tv596 l34j 0v9 b75 75 v596 l34j 0v9 b75 75 l34j 0v9 b75 v596 l34j 0v9 b75 75 9 ll34j l34j 0v9 09 ghf9 l34j l34j 0v9 09 57 7 cn0n l34j f3ghf9 l34j l34j 0v9 09 5v596 l34j 0v9 b75 75 l34j 0v9 b75 v596 l34j 0v9 b75 75 9 56bv d543 a608v 4v596 l34j 0v9 b75 75 l34j 0v9 b75 v596 l34j 0v9 b75 75 9 ghf9 l34j l34j 0v9 09 57 dg53 608v n56bv h6 608v 45f l34j 0v9 b75 ;9 dg53 v596 l34j 0v9 b75 cn0n ghf9 df5 5fg6 v596 l34j 0v9 b75 75 l34j 0v9 b75 v596 l34j 0v9 b75 75 9 56bv cn0n 7ghf9 l34j l34j 0v9 09 57 dg53 l34j 0v9 v596 l34j 0v9 b75 75 l34j 0v9 b75 v596 l34j 0v9 b75 75 9 ghf9 l34j l34j 0v9 09 57 l34j l34j 0v9 09 v596 l34j 0v9 b75 75 v596 l34j 0v9 b75 75 l34j 0v9 b75 v596 l34j 0v9 b75 75 9 l608v 45f l34j 0v9 b75 ;9 6ghf9 v596 l34j 0v9 b75 75 l34j 56bv 56bv cn0n 7ghf9 l34j l34j 0v9 09 57 dg53 608v 45f 

В основном, длинная строка чисел, поэтому, если бы кто-то мог подробно объяснить мне, как это будет небезопасно , если ключ был закрыт.

+0

A (классический) шифр замещения гораздо менее безопасен, чем практически все современные подходы. Я слышал, AES хорош. Но использование хорошего шифрования не гарантирует, что оно безопасно. Протокол обмена ключами и хранения ключей оказывает очень большое влияние на безопасность * системы *. –

+2

Пожалуйста, ** пожалуйста ** не делайте этого ни в чем, даже отдаленно напоминающем производственную систему. – ircmaxell

+0

@ircmaxell Можете ли вы посмотреть мое редактирование. – Core

ответ

1

Это называется Substitution Cipher.

Насколько это безопасно или нет, в общем, это не так.

Существует одна безопасная конструкция, которая известна как одноразовая панель.

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

key = 01 02 01 05 01 
plaintext = "apple" 
ciphertext = "brqqf" 

Это простой ключ (реальные ключи будут полными байтами).

И это безопасно, при условии вы НИКОГДА не повторно использовать ключ (и, следовательно разовый). Если вы когда-либо повторно используете ключ, даже один раз, то безопасность рушится.

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

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

Here's a video I did on the matter

Как редактировать, я процитирую слова Брюс Шнайер:

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

Тот факт, что вы не знаете, как его сломать, и что никто не сломал его, не означает, что его нельзя сломать.

Прямо сейчас ваша безопасность связана с тем, что алгоритм является секретным. Мы называем это Security Through Obscurity.Только способ узнать, является ли алгоритм безопасным, это опубликовать сам алгоритм. Затем люди могут проанализировать его и определить, действительно ли безопасность зависит от ключа или нет.

Это известно как Kerchoffs's Principle:

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

2

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

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

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

Смежные вопросы