После некоторых исследований казалось бы, что RSA с дополнением PSS предлагается использовать, поскольку его свойства безопасности, как известно, хороши. Проблема в том, что трудно поддерживать совместимость алгоритмов подписи, особенно с такими требованиями.Совместимость алгоритма защищенной подписи
То, что я хотел бы добиться того, чтобы подписать и проверить по крайней мере, в следующих средах:
- Ботан
- OpenSSL
- Crypto ++
- Node.js (использует OpenSSL)
Также может быть интересно иметь совместимость с PolarSSL и другими.
На странице криптографии node.js
есть пример создания и проверки подписей. Это работает хорошо, но мне нужна совместимость с Botan EMSAx (SHA256), и действительно думаю, что подпись должна быть дополнена для безопасности с чем-то вроде RSA-PSS. На странице примера узла отображается только 'RSA-SHA256'
, но нет прокладки.
ПСС обивка может быть достигнуто с помощью OpenSSL:
openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:32 \
-sign rsa.key -out data.txt.sha256 data.txt
Мой тестовый код выглядит примерно так:
var s = crypto.createSign('RSA-SHA256');
var key = fs.readFileSync('rsa.key').toString();
s.update(message);
var signature = s.sign(key, 'base64');
, но он производит идентичный выход для идентичных входных данных, которые не то, что я хочу, и, очевидно, несовместим с реализацией C++, которая использует Botan.
Если невозможно добиться совместимости с минимальными усилиями, любые предложения по выбору алгоритмов, я мог бы попытаться связаться с разработчиками этих крипто-библиотек, чтобы узнать, существует ли какой-либо консенсус относительно алгоритм, который будет реализован как стандарт де-факто. (Да, я знаю, что это кажется отчаянным.) Есть ли постоянные усилия, подобные этому?
Кажется, что совместимость подписи все еще находится в зачаточном состоянии. Я боялся, что это будет ответ, но я пока не буду считать его правильным, поскольку я надеюсь, что есть другой способ, другой 'crypto' lib для Node.js или какое-то решение более высокого уровня. Я немного боюсь начать реализацию криптоалгоритмов самостоятельно, но, возможно, настало время. –
Кажется очень странным сказать, что совместимость подписи все еще находится в зачаточном состоянии, поскольку совместимость с PKCS # 1 v1.5, вероятно, 100%, и по-прежнему в основном используется в SSH, TLS и т. Д. Совместимость подписи возникает, если у вас есть специальные которые препятствуют безопасному использованию PKCS №1 v1.5. – Nakedible
@Naked, что я предлагал, было то, что я не мог найти совместимые реализации для дополнения PSS, который, казалось, был для вас способом.Как вам показалось, что вы разбираетесь в предмете; существует ли стандартный набор, который реализует значительный набор криптовальных библиотек, позволяющий писать структуру данных подписи и проверять с помощью разных алгоритмов? ECDSA (с разными кривыми)/RSA/другой? –