Проверка подписей XML на удаленных клиентах

Скажем, у меня есть сценарий, в котором у меня есть несколько сотен удаленных компьютеров. Эти компьютеры никогда не подключаются к Интернету. По крайней мере раз в месяц кому-то поручают с помощью подконтрольной мне утилиты загружать обновленные данные на USB-накопитель, передавать их на удаленный ПК и подключать его. На ПК установлено программное обеспечение, которое умеет импортировать и устанавливать данные с USB-накопителя. Я также могу обновлять и контролировать это программное обеспечение. Я хотел бы начать проверку целостности и источника данных, загружаемых на эти ПК, чтобы убедиться, что никто не подделал данные, загруженные на USB-накопитель. Моя идея состоит в том, чтобы хешировать все файлы, содержащиеся на USB-накопителе, хранить эти хэши, соответствующие каждому файлу в XML-документе, и подписывать XML-документ цифровой подписью. Данные не шифруются; Меня не волнует, увидит ли кто-то данные, я просто не хочу, чтобы кто-то вмешивался в них.

Проблема, с которой я столкнулся, заключается в том, как проверить лицо, подписавшее XML-документ. Типичная практика PKI заключалась бы в том, чтобы я подписал свой открытый ключ в центре сертификации (ЦС), которому доверяет удаленный ПК, чтобы подтвердить свою личность.

Однако, поскольку эти удаленные компьютеры никогда не подключаются к Интернету, я не могу гарантировать, что удаленные компьютеры имеют актуальные версии открытых ключей от данного ЦС или даже знают о нем. Есть ли безопасный способ распространения ключей сертификатов или другой метод проверки личности, который я мог бы использовать для этого?

Схема для пояснения


person Will Carroll    schedule 07.07.2016    source источник


Ответы (1)


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

Я не думаю, что вам нужен "CA". Вам просто нужно иметь известный открытый ключ, например, встроенный в ваше приложение, который можно использовать для расшифровки содержимого XML и проверки его криптографической подписи. Это одновременно позаботится о том, чтобы знать, что XML исходит из надежного источника (вы...) и что он не был изменен.

Файл XML может храниться в целевой системе в зашифрованном виде и расшифровываться при каждом использовании. Если сокрытие XML-содержимого не важно, оно может быть криптографически подписано.

person Mike Robinson    schedule 07.07.2016
comment
Спасибо. Это имеет больше смысла для меня. - person Will Carroll; 07.07.2016