Подписывать данные цифровой подписью по мере их архивирования

StackOverflow https://stackoverflow.com/questions/1597643

Вопрос

У меня есть приложение, которое периодически записывает данные производственного процесса (различные частоты дискретизации, минимум 1 секунда, обычно максимум 10 минут или более).Клиент хотел бы знать, были ли данные изменены (изменены на месте, добавлены или удалены записи).

Данные записываются в виде двоичной записи.Может быть несколько потоков данных, каждый из которых направляется в свой файл и каждый имеет свой собственный формат данных.Данные записываются по отдельности, и если компьютер или процесс мониторинга выходит из строя, производство не обязательно останавливается, поэтому я не могу гарантировать, что процесс архивирования продолжится.Очевидно, я могу подтвердить подлинность только того, что на самом деле записываю, но запись может начинаться и останавливаться.

Какие методы можно использовать для аутентификации этих данных?Я бы предпочел использовать отдельный файл журнала для проверки данных и обеспечения обратной совместимости, но я не уверен, что это возможно.За исключением прямых ответов, есть ли предложения по поисковым запросам, чтобы найти какие-то предложения?

Спасибо!

Это было полезно?

Решение

Я не думаю, что вам обязательно нужны цифровые подписи, безопасных хешей (скажем, SHA-256) должно быть достаточно.

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

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

Немного более сложный подход заключается в использовании дерева Меркла, по сути, двоичного дерева хэшей, а не просто одного хеша файла журнала.Затем сохраните все дерево (которое не очень большое) и отправьте «корневой» хэш в разные места.Корневой хэш позволяет вам проверить целостность дерева, а дерево позволяет вам проверить целостность файла журнала, а если проверка целостности не удалась, оно также позволяет вам определить, какие записи были изменены.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top