Алгоритм шифрования с симметричным ключом - PullRequest
9 голосов
/ 18 декабря 2011

Я ищу безопасный алгоритм шифрования с симметричным ключом, совместимый как с JavaScript, так и с Java.

Я пытался реализовать его, но у меня были некоторые проблемы с кодированием.

Ответы [ 4 ]

32 голосов
/ 23 декабря 2011

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

Я пытался реализовать один, но у меня были некоторые проблемы с кодированием.

Вы пытались написать свой собственный алгоритм шифрования?Вы пошли против всего, что дорогой мир безопасности.Нет. Фактические учебники, которые объясняют, как работает шифрование, настолько напуганы, что люди собираются что-то испортить, потому что они не понимают математику, стоящую за этим, я действительно видел это в одном из них:

enter image description here

Если вы не понимаете шифрование, например, что такое «криптографически безопасный генератор псевдослучайных чисел» и обычные атаки на него, вы не должны этого делать.

Есливы не понимаете такие вещи, как атаки по побочным каналам, вы не должны этого делать.

Если вы не понимаете, что происходит в криптографии, и прочитали по крайней мере две книги, у вас нет никакого делареализуя это.

Crypto - это не волшебный черный ящик, это очень ОЧЕНЬ легко облажаться, даже не касаясь какого-либо кода в упакованном решении.

Что должен делать?Забудьте о шифровании JS.Я знаю, я попробовал это сам.Это пустая трата времени.Учитесь на моих ошибках.

Получите сертификат SSL, SSL - лучший способ для нас шифровать сообщения на транспортном уровне от сервера к клиенту.Это настолько безопасно, насколько вы можете получить.Если вы сталкиваетесь с оберегом, который может победить SSL, поверьте мне, ваша криптография на основе JS также будет взломана.

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

Кроме того, прочитайте эти книги:

This one is free This one is cash money

Затем, когда вы понимаете, они возвращаются и кричат ​​на меня, почему я не прав, и не понимаете, сколько вам нужно JS на клиенте для криптографии.

3 голосов
/ 18 декабря 2011

В JS есть отличная реализация DES (и, как следствие, 3DES), которую я использую довольно часто. Я поставлю ссылку в понедельник, когда буду в офисе и буду готова. Результаты этого (после кодирования base64 для транспорта) отлично работают с .Net / Mono (встроенный), Java (bulitin) и PHP (mcrypt).

Найдены ссылки, но обе мертвы: http://www.shopable.co.uk/des.html и http://www.netdealing.com. Я поднял его на http://pastebin.com/KbRsWKJY

1 голос
/ 19 декабря 2011

Эта страница имеет режим CTR, который доступен в Java.Я бы порекомендовал ключи длиной 128 бит, иначе у вас могут возникнуть проблемы с политиками экспорта Java для ключей больших размеров.

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

Существует множество библиотек для JavaScript, но проблемы кодирования символов будут присутствовать на любом,Поэтому убедитесь, что вы используете одну и ту же кодировку как на стороне JavaScript, так и на стороне Java.Быстрый просмотр заверяет меня, что JavaScript использует UTF-16 для внутреннего использования, но не останавливайте меня на этом.

Наконец, не пытайтесь сделать это дома, библиотеки есть, используйте их (особенно еслиони упоминают тесты и / или официальные векторы испытаний).

0 голосов
/ 05 августа 2016

Как и в других ответах, если вам не нужно шифровать с помощью JavaScript, избегайте этого.Тем не менее, существуют некоторые допустимые варианты использования для шифрования в JavaScript.

Когда вам нужно, я рекомендую эту библиотеку: https://keybase.io/triplesec/.

Это более безопасно, чем DES, на который ссылается другой ответ.

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