Каковы хорошие методы для передачи XML с шифрованием и проверкой целостности? - PullRequest
1 голос
/ 02 апреля 2011

Нас попросили начать разработку стандартизированного подхода к передаче данных XML в проекте, который в конечном итоге будет использоваться во всей этой конкретной отрасли. Некоторые из требований включают в себя:

  • XML должен разрешать частичное / полное шифрование данных
  • Должен быть в состоянии проверить источник XML (сервер и клиент будут известны друг другу)
  • Должен поддерживать как онлайн, так и офлайн обработку (пакеты)
  • Любая онлайн-обработка должна выполняться по безопасному каналу

Сервер и клиент будут «регистрироваться» друг с другом и инициировать отправку сообщений.

Некоторые мысли, высказанные консорциумом:

  • SOAP не нравится большинству участников - он часто вызывает больше проблем и накладных расходов, чем решает
  • Целостность и шифрование XML важнее, чем транспорт
  • Большинство членов предпочитают концепцию шифрования / дешифрования на уровне приложения, а не только на транспорте
  • SSL-соединения будут подключены к сети, только в режиме реального времени и не могут быть применены на уровне веб-приложений.

У нас уже есть базовая XML-схема, которая использовалась на этапе проверки концепции и в основном состоит из:

  • Тип команды / ответа
  • Переменные / ответные сообщения

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

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Если вы собираетесь использовать частичное шифрование, то 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. Я отошел (даже перед тестированием) от некоторых библиотек с открытым исходным кодом, потому что просто не мог им доверять. К сожалению, я видел гораздо худшее от "коммерческих" организаций. Вам нужен крипто-эксперт с проверенной репутацией, чтобы проверить протоколы и реализации - просто взломать что-то вместе не будет достаточно хорошо.

0 голосов
/ 16 января 2012

Я не знаю, смогу ли я ответить на ваш вопрос в достаточной степени с предоставленной информацией, но вы запрашиваете открытый ключ / Web of Trust Infrastructure.

XML должен разрешать частичное/ полное шифрование данных

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

Должен быть в состоянии проверить источник XML (сервер и клиент будут известны друг другу)

HMAC.Простые и простые HMAC, с подписанным и аутентифицированным обменом ключами через Diffie-Hellman Systems.

Но, честно говоря, Стандарты не существуют так, как вам бы этого хотелось.Есть лучшие практики и криптосистемы, которые вы можете собрать.Хотя НИКОГДА не рекомендуется изобретать собственную систему.Это сломается.Лучше всего использовать SSL / TLS и инфраструктуру x509.

...