Должна ли защищенная криптографическая подпись находиться вне файла, на который она ссылается? - PullRequest
1 голос
/ 15 июля 2009

Я программирую проект для домашних животных на Python, и он предполагает, что пользователи A & B взаимодействуют по сети, пытаясь обеспечить, чтобы у каждого была локальная копия одного и того же файла от пользователя C.

Идея состоит в том, что C дает каждому файлу цифровую подпись. A & B торгуют цифровыми подписями, которые они имеют, и проверяют их на своих собственных копиях. Если подпись не удалась, у одного из них неверная / поврежденная / измененная версия файла.

Таким образом, вопрос заключается в том, может ли C распространять один файл, который каким-либо образом содержит собственную подпись? Или C должен предоставить файл и подпись отдельно?

Ответы [ 2 ]

5 голосов
/ 15 июля 2009

Цифровая подпись только от C должна быть достаточной как для A, так и для B, чтобы подтвердить, что их файл не поврежден, не связываясь друг с другом. Если A и B не получили подпись от C, они могут создать криптографический хэш файла и сравнить его, но это не требует цифровой подписи со стороны C.

Если вы хотите, чтобы C подписал файл, либо отправьте подпись и файл отдельно, либо оберните их обоих в какой-либо контейнер, например, в zip-файл или в собственное решение (например, первая строка в файле представляет подпись, остальное - полезная нагрузка).

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

4 голосов
/ 15 июля 2009

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

SIGNATURE=72ba51288199b829a4b9ca2ac911e60c
BEGIN_CONTENTS
... real file contents here ...
...