Формат «Меток времени»
Отступление
Формат меток времени, а так же вся остальная теоретическая часть разработана участниками «OpenPGP В России».
OpenPGP Message Format
Для криптографических операций используются стандарты и форматы PGP.
Или, по-другому, выданные сервисом «метки времени» могут быть проверены при помощи стандартных PGP программ.
Используя «OpenPGP Message Format» можно легко распространять документы с ЭЦП, ключи и п.р.
Например, заверенный с помощью ЭЦП документ будет выглядеть следующим образом:
Листинг 1. Пример документа с ЭЦП в стиле «OpenPGP Message Format»
-----BEGIN PGP SIGNED MESSAGE-----
информация
-----BEGIN PGP SIGNATURE-----
подпись
-----END PGP SIGNATURE-----
«OpenPGP Message Format» распространен и стал стандартом де-факто для шифрования сообщений электронной почты.
Сам стандарт rfc4880
Связывание «меток времени»
Такая система как «Сервис меток времени» может существовать только при доверии к ней со стороны пользователей.
Что бы повысить доверие к сервису применяется «связывание меток времени» – каждая последующая метка содержит доказательство, что была выпущена именно после предыдущей (в «метку времени» включается хеш предыдущей метки).
Таким образом «метки времени» образуют цепочку.
Цепочка меток времени – последовательность «меток времени», где каждая последующая «метка времени» имеет доказательство, что была выдана именно после предыдущей.
«Цепочка меток времени» доступна всем желающим – каждый может проверить её целостность.
Если администратор попытается выдать «метку времени» задним числом, то такая метка не будет входить в цепочку. Попытку махинации можно будет обнаружить.
Два формата «меток времени»
Что бы обеспечить каждому желающему возможность проверить «цепочку меток времени», сервис должен хранить выданные метки и по требованию предоставлять любые из них.
Однако «метки времени» содержат произвольные пользовательские данные. Эти данные могут составлять тайну пользователя, а так же могут быть достаточно объемными. По этому хранимые сервисом «метки времени» не должны содержать пользовательские данные в открытом виде – будет достаточно сохранить только их хеш.
Формат «метки времени» публикуемой на сервере (хранится в БД):
Листинг 2. Формат «метки времени» публикуемой на сервере
-----BEGIN PGP SIGNED MESSAGE-----
Timestamp-version: (версия принятого формата метки времени)
Description: (краткое описание этого сообщение)
Signed-by: (URL сервиса)
Timestamp: (время по гринвичу в формате RFC 822)
Number: (порядковый номер метки)
Ref-Hash-SHA512: (SHA512 хеш от предыдущей метки)
Ref-Hash-RIPEMD160: (RIPEMD160 хеш от предыдущей метки)
Hash-SHA512: (SHA512 хеш пользовательских данных)
Hash-RIPEMD160: (RIPEMD160 хеш пользовательских данных)
-----BEGIN PGP SIGNATURE-----
подпись в формате OpenPGP
-----END PGP SIGNATURE-----
Для удобства, пользователь, проставляющий штамп времени на своей информации, получает документ аналогичный "метки времени" содержащий помимо всех обязательных атрибутов ещё и штампируемую информацию в открытом виде.
Формат «метки времени» пользователя:
Листинг 3. Формат «метки времени» выдаваемой пользователю
-----BEGIN PGP SIGNED MESSAGE-----
Timestamp-version: (версия принятого формата метки времени)
Description: (краткое описание этого сообщение)
Signed-by: (URL сервиса)
Timestamp: (время по гринвичу в формате RFC 822)
Number: (порядковый номер метки)
Ref-Hash-SHA512: (SHA512 хеш от предыдущей метки)
Ref-Hash-RIPEMD160: (RIPEMD160 хеш от предыдущей метки)
Hash-SHA512: (SHA512 хеш пользовательских данных)
Hash-RIPEMD160: (RIPEMD160 хеш пользовательских данных)
############## Timestamped data follows ###############
пользовательские данные (сообщение или ascii-кодированный файл)
-----BEGIN PGP SIGNATURE-----
подпись в формате OpenPGP
-----END PGP SIGNATURE-----
Связывание «меток времени» между собой, а также с пользовательскими данным осуществляется с помощью двух алгоритмов хеширования.

Примечание:
При подсчете хеша метки времени, хеш вычисляется не от всего pgp файла, а только от метаданных (как показано на рисунке выше).
Back