Если вы собираетесь использовать частичное шифрование, то PKCS # 7 / CMS быстро станет клочком. PGP, вероятно, тоже не очень полезен для этого, поэтому у вас остаются стандарты XML-подписи и XML-шифрования.
Для генерации / проверки подписи было бы логично использовать цифровую подпись XML. Однако вам необходимо очень четко указать, что вы собираетесь подписать и какой выбор вы собираетесь сделать в отношении проверки. Хорошая проверка четко проверяет методы канонизации, методы хеширования и так далее. Помимо этого вы должны действительно убедиться, что вы подписываете то, что вы извлекаете из XML . Очень легко проверить одну часть и выяснить, что вы используете совершенно другую часть XML. Иногда программное обеспечение уязвимо, потому что злоумышленник может просто удалить подпись из данных!
Если вы всегда ( всегда ) проверяете свой XML перед расшифровкой, вы можете просто использовать шифрование XML и AES-CBC. Если вы этого не сделаете, вы должны использовать GCM mode . Поскольку в настоящее время это рабочий проект, может потребоваться внести некоторые изменения в текущее программное обеспечение. Без проверки или шифра с защитой целостности вы будете уязвимы для атак оракула.
Конечно, для генерации и проверки подписи, а также для шифрования / дешифрования вы должны использовать инфраструктуру x509. Вы можете настроить собственное программное обеспечение CA, например, используя EJBCA, но вы должны получить опыт для этого (покупка поддержки?). Управление сертификатами и ключами должно быть одним из основных направлений. В качестве альтернативы вы можете использовать стандартные сертификаты SSL / TLS. Это позволит вам также настроить серверы с поддержкой SSL. Если вы используете SSL / TLS (настоятельно рекомендуется), используйте аутентификацию клиента и небольшой набор безопасных наборов шифров.
Наконец, вам действительно следует ограничить количество доступных параметров, сохраняя их открытыми для будущих изменений. Если вы оставите слишком много открытых вариантов, это будет очень сложно проверить, и злоумышленники просто выберут наименее сложный вариант для атаки. Если производительность представляет интерес, выберите ECC для сертификатов X509 с хорошо известной именованной кривой, но остерегайтесь сложностей и вероятности того, что некоторые партнеры не смогут найти нужные библиотеки.
Вы можете купить все это у известных поставщиков, но я бы скептически отнесся к поддержке шифрования XML. Я отошел (даже перед тестированием) от некоторых библиотек с открытым исходным кодом, потому что просто не мог им доверять. К сожалению, я видел гораздо худшее от "коммерческих" организаций. Вам нужен крипто-эксперт с проверенной репутацией, чтобы проверить протоколы и реализации - просто взломать что-то вместе не будет достаточно хорошо.