Pull to refresh

Comments 29

А чем вас не устроили существующие крипто-решения для JavaScript?
Просто было интересно создать свое.
Создать свое без опыта 10 лет работы в области — можно не пытаться. Точнее, пытаться то можно, но использовать в реальных системах мягко говоря не рекомендуется.

Вот было бы интересно сравнить хотя бы с той же энигмой. Ведь последняя сейчас считается крайне слабой криптосистемой, а выглядит более сложной, чем ваш метод шифрования, который, по сути, шифр Цезаря с небольшой доработкой.
Да, точно. Я вообще очень слаб в криптографии, какие-то основы знаю, но сам предпочитаю не касаться этой темы и 12-ти метровой палкой, что обычно и советую всем, если только у них нет цели освоить криптографию. Особенно не касаюсь, если это продуктовые решения. Настроить https на nginx через сертификат — и то обычно предпочитаю, чтобы кто-то более компетентный проверил.
Но даже моих познаний достаточно, чтобы понять, что в статье очень слабый метод.

Вот если бы автор не рекомендовал эту поделку, а сделал как небольшой пример, в стиле «урок», потом дописал бы «так делать ни в коем случае нельзя», да и реализовал один из более стойких алгоритмов симметричного шифрования — думаю, у него бы не получился такой хабра-суицидальный пост, а пополнение в коллекции уроков. Жаль, что mmotor предпочел иной путь.
Кроме того, шифрование джаваскриптом в браузере это проблема курицы и яйца.
Не так давно передо мною встала задача закодировать переписку пользователей.

Кодирование != шифрование
Кодирую переписку пользователей от алкоголя и курения. Дорого. В лс.
Кстати, n-ый символ (где n — длина passCode) у вас не зашифрован. Так как в конце первого прохода по паролю maxPCmod равен коду последнего символа пароля, и по его же модулю это ноль.
Ну, во-первых — это красиво.
Ну так у автора все-таки md5 берется от пароля=)
Казалось бы, не май месяц, а весене-осенние посты постоянно пребывают
Вы показали хороший пример как делать не нужно.
Эль-Гамаль то тут при чем?

Не так давно передо мною встала задача закодировать переписку пользователей.


Может base64 было бы достаточно? Или недостаточно «мешанины»?
Первое правило криптографии: не изобретайте свой шифр.
Лучше пройдите курс на Coursera, там есть хороший по криптографии, потом посмеетесь над своей поделкой)
Количество минусов как бы намекает на то, что подобные решения никаким образом не должны попадать в рабочие продукты, и вообще статью лучше спрятать, чтобы никто случайно не воспользовался.
Кстати, а какой именно курс на курсере вы имеете в виду?
Я полагаю, что любые попытки написать свой алгоритм шифрования достойны похвалы. Даже если Ваш алгоритм и не является крипто стойким, само наличие разных алгоритмов даёт пользователям возможность выбора, а злоумышленникам усложняет жизнь. Что касается высказываний большинства комментаторов, то, возможно, они «типа шибко умные», но никто особо не заморачивается тем, чтобы указать на ошибки. А может они просто не могут это сделать? Может, ума не хватает?
Вы, видимо, решили не читать комментарии вовсе, иначе бы заметили, что создание «своего криптоалгоритма» без опыта — это одна большая ошибка, а в конкретном опусе вообще нет ничего правильного — одна сплошная дыра, видимость защиты. Так как вы не читали комментарии, позволю себе повторить лично для вас ссылку: habrahabr.ru/post/181372

На счёт «наличие разных алгоритмов даёт возможность выбора» — алгоритмов с математически доказанными свойствами стойкости масса, среди них на специальных конкурсах, где проверяют математическую базу и все доказательства годами (!), например, AES и SHA, выбираются лучшие из лучших. Поверьте, не нужны человечествую такие «альтернативы», которую автор предложил. Изобретение криптографических примитивов — это не развлечение на выходные.
Как-то у меня была идея, как раз как развлечение на выходные: сделать шифрование на основе фильтра Калмана вдруг неожиданно. Точнее само шифрование на основе системы диф. уравнений, где кодовое слово определяло бы её вид, а входные данные — были бы возмущениями этих дифуров, затем подмешивался бы случайный шум, а дешифрация осуществлялась бы фильтром. Но немного подумав пришел к нескольким выводам: превратить это из идеи в работающий алгоритм займет уже несколько месяцев, вот почти наверное что-то подобное уже есть, а так же — скорее всего, есть глупый и смешной способ взлома, благодаря чему окажется, что время потрачено впустую. Хотя идея звучит круто: один и тот же поток каждый раз будет давать разный результат, причем случайный, шифрация поточная, можно подмешивать так же несколько случайных входов — есть место для фантазии. Правда объем данных увеличится сильно, ну да ладно.
Раз я уже тут сказал эту идейку — вот просто ради интереса — есть ли что-то подобное и какой самый очевидный недостаток этого метода?

Но мораль такая, что прежде чем алгоритм пополнит возможность выбора, пройдет много времени исследований, закрытия дырок, доказательства стойкости, а потом к вам постучится МВД и потребуют лицензирования (если захотите заработать денежек на своих наработках).
ФСБ скорее только, а не МВД. Лицензированием по криптографии они у нас в стране занимаются.
Нечто похожее, но на системах линейных уравнений, уже есть — Learning With Errors. Насколько я помню, LWE считается (но не доказано) сложной проблемой для квантовых компьютеров, поэтому активно продвигается в post-quantum криптосистемах.
Sign up to leave a comment.

Articles