2014-06-09 2 views
0

У меня есть подписанные данные, передаваемые на мой сервер вместе с открытым ключом в шестнадцатеричном формате, с которым были подписаны эти данные. Хэш-алгоритм одинаковый для всех запросов sha-256, но открытые ключи разные для каждого запроса, потому что на клиенте создается rsa public + private.Проверка подписи с открытым ключом

Итак, мой вопрос: как проверить подпись с открытым ключом в шестнадцатеричном формате? В документах узла crypto я вижу, что мне нужен файл формата pem, но у меня его нет. И на самом деле таких запросов будет много, поэтому было бы неплохо создавать эти файлы.

+0

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

+0

Привет, @ Avery. В принципе, на стороне клиента у меня есть строка 'str'. Затем генерируется пара частных и открытых ключей и создается подпись 'sig = sha256 (str)' с закрытым ключом. На следующем шаге {'str',' sig' и 'public_key' в шестнадцатеричном формате} отправляются на сервер. На сервере мне нужно проверить подпись. – xaxa

+0

Почему? Если вы отправляете pubkey с подписанными данными, перехватчик (которого я предполагаю, что вы пытаетесь защитить от него) может просто изменить ключ. Вы не можете использовать алгоритм diffie-hellman? Это позволит вам точно знать, откуда поступают данные, и это действительно сработает. – Avery

ответ

1

Нельзя. Шутки в сторону. Не. Роллинг вашего пламени will be bad.

Вместо этого используйте https или, если вы действительно должны сделать это сами, попробуйте реализовать Diffie-Hellman. По крайней мере, с DH, вы не создаете свой собственный алгоритм. Что касается того, почему это плохо, подумайте о злоумышленнике, который хочет прочитать ваши данные. Если вы просто подписываете это, это действительно не так уж и отличается от подписания письма в реальной жизни. Это ваша подпись и (в основном) никто другой не может этого сделать. Но если я украду твое письмо, напишите его и подпишите его с помощью моей подписи (используя ваше имя), получатель узнает, что это не от вас. Но ждать! Что, если вы никогда не связывались с этим получателем раньше? Они не будут знать, кто пишет и подписывает ваше имя. Неужели это ты? Или это я? Чтобы предотвратить это, вам нужно сделать обмен ключами.

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