Pull to refresh

Comments 13

Срочно делайте свой мессенджер с шифрованием и утехами.
Уполномоченным товарищам понравится.

Шифруем текст:
Der kører allerede en anden programdæmon.

После дешифровки получаем рэзультат:
Der krer allerede en anden programdmon.

Чудесный шифер, ящетаю. :)
Постараюсь организовать конструктивную критику.
Итак, напишем собственную систему обратимого шифрования с приватным и публичным ключом, такую, которая будет обладать следующими признаками мало мальски защищенного криптографического алгоритма:

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

Для усложнения частотного анализа будем кодировать каждый исходный символ сообщения двумя символами шифра

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



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

Мне близка позиция Брюса Шнаера. Он говорит, что в мире и так много плохих систем, зачем делать еще одну. Очень рекомендую к прочтению его книгу Практическая криптография.

Дополню.

1. То, что homoastricus называет «приватным ключом», на самом деле и является единственным ключом шифрования в его системе. «Публичный» ключ в этой системе — это всего лишь соль.

2. Автор путает кодирование и шифрование (отсюда, например, радостные утверждения, будто кодирование одного исходного символа двумя символами шифротекста есть борьба с частотным анализом). Если бы автор отвлекся от печатных символов и начал свою систему шифрования «из байтов в байты», было бы проще понять эту ошибку. А закодировать в печатный текст можно уже после шифрования. Благо, кодировок для этого придумано выше крыши: хочешь — хексами байты изображай, хочешь — Base64, а ежели совсем на хардкор тянет — есть ascii85.

3. Странный набор результирующих символов. Проблема в том, что строки, состоящие из сплошной пунктуации, не очень подходят для передачи по каналам связи методом копи-пасты. Прикиньте, сколько смайликов найдет в такой строке какой-нибудь мессенджер. :)

4. При анализе системы шифрования исходят из того, что все исходники есть у атакующей стороны. Все шифрование у автора построено вокруг одной таблицы пермутаций, которая строится по фиксированному хэшу (плюс какие-то прыжки вокруг присланной снаружи соли — лень было разбираться). А это значит, что атакующему достаточно выяснить «приватный ключ» (сиречь — единственный ключ шифрования), и он сможет прочесть всю переписку. Что-то мне подсказывает, что подобрать содержимое таблицы, имея энное количество перехваченных сообщений, вполне себе решаемая задача.
Господа, h0t_max, berez, я поражаюсь вашему спокойствию!

Данная поделка, вкупе с использованной терминологией и ложными утверждениями в статье, ничего кроме нецензурных слов не вызывают!

homoastricus, пишите статью про необратимое шифрование, это будет новое слово в науке.
ППКС
Автор секретный язык придумал, а вы на полном серьезе его лингвистическое несовершенство обсуждаете.

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

Плохо, что автор так и не смог найти внятных введений в криптографию. Нахватался где-то терминов, понял их как смог, написал что попало.

В дополнение к книге Брюса Шнайера рекомендую homoastricus купить и почитать
Книгу шифров Саймона Сингха. Написана очень легким языком, читается запоем. Просто и доходчиво объясняются базовые концепции криптографии. Пойдет в качестве введения и этакого исторического экскурса в криптографию. После нее книги Шнайера читаются и понимаются не в пример легче.
Одна из основных истин криптографии гласит, что не стоит изобретать чего-либо в этой сфере, если вы не профессионал.

Вот совершенно согласен. К сожалению, мои познания в высшей математике (необходимые для разработки чего-то типа асимметричного или полностью гомоморфного шифрования) далеки от идеальных, а школьные эксперименты типа шифрования на XOR (и даже с рандомным зашумлением) вряд ли будут кому интересны.
Гораздо интереснее другое. Есть немало проверенных и отлаженных алгоритмов шифрования, применяемых для самых разных целей: PGP, зашифрованные сеансы в сети, децентрализованные анонимные сети, блокчейн и т.д…
Пусть эти алгоритмы будут «черными ящиками», но с очень хорошим описанием того, в каких случаях их можно и нужно применять, а в каких — нельзя. Вот хочется хороший, качественный мануал такого типа.
Ну и качественная библиотека, где все эти алгоритмы собраны, тоже не помешает. Тут на опеннете проскакивала новость про библиотеку Tink от Google, в которой собраны некоторые примитивы шифрования. Вот по идее нужно что-то такое, и с хорошим мануалом «для чайников», где буквально разжеваны понятия и примеры применения.
Эм, а разве не проще и на порядки надёжнее будет как-нибудь, на вскидку:
foreach ($chars as $i => $char) {
    yield \bin2hex($char >> \ord($key[$i % \strlen($key)]));
}


Т.е. для каждого символа применяем сдвиг, равный одному из символов ключа. Сделать из этого по публичному+приватному ключу — дело 5ти минут, надо всего лишь привязать один к другому через любое хеширование.
На порядок надежнее будет использовать какую-либо криптобиблиотеку, или же, если уж хочется самому закодить на коленочке — реализовать TEA/XTEA.

Ассимитричную криптографию с открытым и закрытым (public & private) ключами на коленочке закодить посложнее, но авторское поделие к ней отношения не имеет. Собственно как и к криптографии в принципе.
Если зашифровать
Error: Incorrect message found

И испортить шифр, то класс все равно его корректно декодирует
Sign up to leave a comment.

Articles