Comments 13
Срочно делайте свой мессенджер с шифрованием и утехами.
Уполномоченным товарищам понравится.
Уполномоченным товарищам понравится.
+2
Не совсем понял, а какую задачу Вы решаете? Чем SSL/TLS не угодил? Для WEB приложений.
+1
Шифруем текст:
Der kører allerede en anden programdæmon.
После дешифровки получаем рэзультат:
Der krer allerede en anden programdmon.
Чудесный шифер, ящетаю. :)
Der kører allerede en anden programdæmon.
После дешифровки получаем рэзультат:
Der krer allerede en anden programdmon.
Чудесный шифер, ящетаю. :)
+3
Постараюсь организовать конструктивную критику.
требования, которые вы указываете, не являются требованиями к алгоритму шифрования. Фактически шифр хорош, если у вас наличие зашифрованного текста (или пар открытый текст — шифртекст) не уменьшает неопределенность криптоаналитика. В Вашем случае это не так.
Просто как пример того, что частотный анализ будет все-равно работать можете зашифровать большую последовательность одинаковых символов. Пример:
![](https://habrastorage.org/r/w1560/webt/it/gv/ey/itgvey3frr6qmfs37ypz28rk8ku.png)
![](https://habrastorage.org/r/w1560/webt/5h/2r/om/5h2romgr_nnotrtkgkmk14dnztu.png)
На счет
Мне близка позиция Брюса Шнаера. Он говорит, что в мире и так много плохих систем, зачем делать еще одну. Очень рекомендую к прочтению его книгу Практическая криптография.
Итак, напишем собственную систему обратимого шифрования с приватным и публичным ключом, такую, которая будет обладать следующими признаками мало мальски защищенного криптографического алгоритма:
требования, которые вы указываете, не являются требованиями к алгоритму шифрования. Фактически шифр хорош, если у вас наличие зашифрованного текста (или пар открытый текст — шифртекст) не уменьшает неопределенность криптоаналитика. В Вашем случае это не так.
Для усложнения частотного анализа будем кодировать каждый исходный символ сообщения двумя символами шифра
Просто как пример того, что частотный анализ будет все-равно работать можете зашифровать большую последовательность одинаковых символов. Пример:
![](https://habrastorage.org/webt/it/gv/ey/itgvey3frr6qmfs37ypz28rk8ku.png)
![](https://habrastorage.org/webt/5h/2r/om/5h2romgr_nnotrtkgkmk14dnztu.png)
На счет
Другая сторона истины в том, что развитие какой-то области знаний происходит только при постоянном притоке свежих идей и оригинальных решений в ней.
Мне близка позиция Брюса Шнаера. Он говорит, что в мире и так много плохих систем, зачем делать еще одну. Очень рекомендую к прочтению его книгу Практическая криптография.
+6
Дополню.
1. То, что homoastricus называет «приватным ключом», на самом деле и является единственным ключом шифрования в его системе. «Публичный» ключ в этой системе — это всего лишь соль.
2. Автор путает кодирование и шифрование (отсюда, например, радостные утверждения, будто кодирование одного исходного символа двумя символами шифротекста есть борьба с частотным анализом). Если бы автор отвлекся от печатных символов и начал свою систему шифрования «из байтов в байты», было бы проще понять эту ошибку. А закодировать в печатный текст можно уже после шифрования. Благо, кодировок для этого придумано выше крыши: хочешь — хексами байты изображай, хочешь — Base64, а ежели совсем на хардкор тянет — есть ascii85.
3. Странный набор результирующих символов. Проблема в том, что строки, состоящие из сплошной пунктуации, не очень подходят для передачи по каналам связи методом копи-пасты. Прикиньте, сколько смайликов найдет в такой строке какой-нибудь мессенджер. :)
4. При анализе системы шифрования исходят из того, что все исходники есть у атакующей стороны. Все шифрование у автора построено вокруг одной таблицы пермутаций, которая строится по фиксированному хэшу (плюс какие-то прыжки вокруг присланной снаружи соли — лень было разбираться). А это значит, что атакующему достаточно выяснить «приватный ключ» (сиречь — единственный ключ шифрования), и он сможет прочесть всю переписку. Что-то мне подсказывает, что подобрать содержимое таблицы, имея энное количество перехваченных сообщений, вполне себе решаемая задача.
1. То, что homoastricus называет «приватным ключом», на самом деле и является единственным ключом шифрования в его системе. «Публичный» ключ в этой системе — это всего лишь соль.
2. Автор путает кодирование и шифрование (отсюда, например, радостные утверждения, будто кодирование одного исходного символа двумя символами шифротекста есть борьба с частотным анализом). Если бы автор отвлекся от печатных символов и начал свою систему шифрования «из байтов в байты», было бы проще понять эту ошибку. А закодировать в печатный текст можно уже после шифрования. Благо, кодировок для этого придумано выше крыши: хочешь — хексами байты изображай, хочешь — Base64, а ежели совсем на хардкор тянет — есть ascii85.
3. Странный набор результирующих символов. Проблема в том, что строки, состоящие из сплошной пунктуации, не очень подходят для передачи по каналам связи методом копи-пасты. Прикиньте, сколько смайликов найдет в такой строке какой-нибудь мессенджер. :)
4. При анализе системы шифрования исходят из того, что все исходники есть у атакующей стороны. Все шифрование у автора построено вокруг одной таблицы пермутаций, которая строится по фиксированному хэшу (плюс какие-то прыжки вокруг присланной снаружи соли — лень было разбираться). А это значит, что атакующему достаточно выяснить «приватный ключ» (сиречь — единственный ключ шифрования), и он сможет прочесть всю переписку. Что-то мне подсказывает, что подобрать содержимое таблицы, имея энное количество перехваченных сообщений, вполне себе решаемая задача.
+2
Господа, h0t_max, berez, я поражаюсь вашему спокойствию!
Данная поделка, вкупе с использованной терминологией и ложными утверждениями в статье, ничего кроме нецензурных слов не вызывают!
homoastricus, пишите статью про необратимое шифрование, это будет новое слово в науке.
Данная поделка, вкупе с использованной терминологией и ложными утверждениями в статье, ничего кроме нецензурных слов не вызывают!
homoastricus, пишите статью про необратимое шифрование, это будет новое слово в науке.
0
ППКС
Автор секретный язык придумал, а вы на полном серьезе его лингвистическое несовершенство обсуждаете.
Единственная проблема — секретные языки обычно в младшем школьном возрасте изобретают, а автор вроде на школьника не похож.
Автор секретный язык придумал, а вы на полном серьезе его лингвистическое несовершенство обсуждаете.
Единственная проблема — секретные языки обычно в младшем школьном возрасте изобретают, а автор вроде на школьника не похож.
0
Не скажу за h0t_max, а лично я всегда считаю человека небезнадежным, пока он не докажет обратное. Автор интересуется шифрованием — это хорошо. Автор берется реализовать самописную шифрульку — это тоже неплохо.
Плохо, что автор так и не смог найти внятных введений в криптографию. Нахватался где-то терминов, понял их как смог, написал что попало.
В дополнение к книге Брюса Шнайера рекомендую homoastricus купить и почитать
Книгу шифров Саймона Сингха. Написана очень легким языком, читается запоем. Просто и доходчиво объясняются базовые концепции криптографии. Пойдет в качестве введения и этакого исторического экскурса в криптографию. После нее книги Шнайера читаются и понимаются не в пример легче.
Плохо, что автор так и не смог найти внятных введений в криптографию. Нахватался где-то терминов, понял их как смог, написал что попало.
В дополнение к книге Брюса Шнайера рекомендую homoastricus купить и почитать
Книгу шифров Саймона Сингха. Написана очень легким языком, читается запоем. Просто и доходчиво объясняются базовые концепции криптографии. Пойдет в качестве введения и этакого исторического экскурса в криптографию. После нее книги Шнайера читаются и понимаются не в пример легче.
+1
Одна из основных истин криптографии гласит, что не стоит изобретать чего-либо в этой сфере, если вы не профессионал.
Вот совершенно согласен. К сожалению, мои познания в высшей математике (необходимые для разработки чего-то типа асимметричного или полностью гомоморфного шифрования) далеки от идеальных, а школьные эксперименты типа шифрования на XOR (и даже с рандомным зашумлением) вряд ли будут кому интересны.
Гораздо интереснее другое. Есть немало проверенных и отлаженных алгоритмов шифрования, применяемых для самых разных целей: PGP, зашифрованные сеансы в сети, децентрализованные анонимные сети, блокчейн и т.д…
Пусть эти алгоритмы будут «черными ящиками», но с очень хорошим описанием того, в каких случаях их можно и нужно применять, а в каких — нельзя. Вот хочется хороший, качественный мануал такого типа.
Ну и качественная библиотека, где все эти алгоритмы собраны, тоже не помешает. Тут на опеннете проскакивала новость про библиотеку Tink от Google, в которой собраны некоторые примитивы шифрования. Вот по идее нужно что-то такое, и с хорошим мануалом «для чайников», где буквально разжеваны понятия и примеры применения.
0
Эм, а разве не проще и на порядки надёжнее будет как-нибудь, на вскидку:
Т.е. для каждого символа применяем сдвиг, равный одному из символов ключа. Сделать из этого по публичному+приватному ключу — дело 5ти минут, надо всего лишь привязать один к другому через любое хеширование.
foreach ($chars as $i => $char) {
yield \bin2hex($char >> \ord($key[$i % \strlen($key)]));
}
Т.е. для каждого символа применяем сдвиг, равный одному из символов ключа. Сделать из этого по публичному+приватному ключу — дело 5ти минут, надо всего лишь привязать один к другому через любое хеширование.
0
На порядок надежнее будет использовать какую-либо криптобиблиотеку, или же, если уж хочется самому закодить на коленочке — реализовать TEA/XTEA.
Ассимитричную криптографию с открытым и закрытым (public & private) ключами на коленочке закодить посложнее, но авторское поделие к ней отношения не имеет. Собственно как и к криптографии в принципе.
Ассимитричную криптографию с открытым и закрытым (public & private) ключами на коленочке закодить посложнее, но авторское поделие к ней отношения не имеет. Собственно как и к криптографии в принципе.
-1
Если зашифровать
И испортить шифр, то класс все равно его корректно декодирует
Error: Incorrect message found
И испортить шифр, то класс все равно его корректно декодирует
0
Sign up to leave a comment.
Увлекательная криптография или изыскания на тему обратимого шифрования на PHP