Протокол меток времени с перекрёстной проверкой времени
Условные обозначения
М1, М2 — метки. М1<М2, если можно проверить по цепочке хэшей, что М2 выдана позже М1. 1
Другие условные обозначения взяты отсюда[link1].
Роли
Нам сервис отличается от СервисМетокВремени[link2] тем, что он выдаёт метки, содержащие хэш, но не время (сервисные метки). Время же ставят клиенты. 2 3 Клиент может выполнять роли:
* автор — заказывает регистрацию документа;
* проверяющий — проверяет правильность регистрации документа;
* хранитель контрольных меток или хранитель времени — контрольная метка содержит сервисную метку и время 4.
Операции
Сервис регистрирует документы. Также сервис выдаёт цепочку меток по запросу.
Хранитель контрольных меток периодически запрашивает последнюю сервисную метку у сервиса, приписывает к ней время получения метки, определяемое по собственным часам, и сохраняет как контрольную метку. По запросу он может выдавать контрольные метки.
Автор заказывает регистрацию документа. Для этого он отправляет документ Д на сервис. Сервис выдаёт метку МД для этого документа. Автор получает у сервиса цепочку меток ЦД, начинающуюся с МД. Кроме того, ЦД должна удовлетворять условию, что в ЦД должно входить не менее ККМ (например, ККМ = 100) меток, являющихся контрольными 5 6 Только после того, как автор обнаружил нужное количество контрольных меток, он сохраняет ЦД 7 и публикует свой документ.
Автор доказывает регистрацию документа проверяющему. Автор передаёт проверяющему ЦД, Д и декларируемый момент регистрации документа В. Проверяющий проверяет, что в ЦД присутствует хэш Д. Проверяющий запрашивает у хранителей контрольные метки. Он запрашивает только те метки, которые больше В и близки к В. Круг хранителей проверяющий определяет сам. Кроме того, проверяющий сам может быть хранителем, его доверие к его собственным меткам, разумеется, наивысшее. Преимущество: круг лиц, которым доверяет проверяющий, он выбирает сам. Проверяющий выбирает те контрольные метки, которые входят в ЦД, из них выбирает наиболее ранние метки, их время и будет надёжным временем Д.
Проверяющий иногда проверяет правильность контрольных меток. 8 Конфликтующими считаются контрольные метки М1 и М2, у которых М1<М2 и М1.Timestamp > М2.Timestamp. (М1<М2 определяется на основании ЦД.) Ясно, что одна из конфликтующих меток поддельная. Какая именно, это решается как-то. Хранитель контрольных меток, от которого получена поддельная метка, исключается из круга доверия. Преимущество: скомпрометированные хранители контрольных меток обнаруживаются автоматически.
1 Строго говоря, на метках можно определить отношение частичного строгого порядка[link3] (<). Сначала задаём отношение (<-) таким образом: М2.Ref-Hash = hash(М1) эквивалентно М1<-М2. Отношение (<) есть транзитивное замыкание[link4] отношения (<-).
2 Преимущество: все атаки со стороны сервиса, когда сервис проставляет неправильное время, теперь вынуждены совершать клиенты. Клиентов много, поэтому можно устроить им перекрёстную проверку.
3 Поскольку у нас сервис не проставляет времени, мы будем называть его не сервисом меток времени, а сервисом связывания хэшей.
4 СервисМетокВремени[link2] одновременно выполняет роль сервиса связывания хэшей и роль хранителя контрольных меток. То есть, сервис меток времени тоже может работать по данному протоколу, и мы можем заимствовать форматы данных и др.
5 Это условие можно проверить, запросив контрольные метки у круга доверия.
6 Сохраняя ЦД, автор одновременно зеркалирует метки. Можно доказать, что каждая метка будет зеркалирована не менее ККМ раз. А раз есть зеркалирование, то сервис может вообще не хранить архив меток.
7 ЦД является доказательством регистрации документа. Кто ещё обязан сохранять доказательства, если не сам автор?
8 Например, проверяет сразу после получения контрольной метки.
[link2] http://www.pgpru.com/chernowiki/statji/servismetokvremeni
[link3] http://ru.wikipedia.org/wiki/Частично_упорядоченное_множество
[link4] http://ru.wikipedia.org/wiki/Транзитивное_замыкание
[link5] http://creativecommons.org/licenses/by-sa/3.0/