Отправка сообщения в будущее
. Схема разделения секрета. Математика разделения секрета
достаточно сложна, и является темой отдельного разговора,
поэтому дадим неформальное определение данного понятия. Схемой
разделения секрета называется такая схема, которая позволяет
«распределить» секрет между n участниками таким образом, чтобы
заранее заданные разрешённые множества ( множества “теней
секрета” ) участников могли однозначно восстановить секрет, а
неразрешённые - не получили никакой дополнительной информации о
возможном значении секрета. Пороговая схема разделения секрета,
(n , ? ) – схема, позволяет восстанавливать секрет, если
разрешённым множеством является любое множество из ? или
более “теней секрета”.
Схема с использованием доверенных агентов.
Данная схема является более предпочтительной для
сохранения секретности сообщения долгое время, именно эта схема
должна использоваться в ситуации с «замороженными» людьми, так
как время пребывания в летаргическом сне ограничивается ни
несколькими годами, а несколькими десятилетиями.
Итак, подход данного метода заключается в
использовании доверенных агентов для хранения сообщения М в
течение заданного интервала времени t . Для большей надёжности
схемы шифрования , ключ К , на котором собираемся зашифровать
сообщение М поделим на d “теней”, воспользовавшись техникой
разделения секрета предложенной А.Шамиром, и распределим “ тени “
секретного ключа среди нескольких агентов, заручившись с их
стороны обязательством, что соответствующие фрагменты будут
предъявлены по истечении времени t . Заметим, что используемая
техника разделения секрета обладает избыточностью и позволяет
восстанавливать секретный ключ в случае, когда некоторые агенты
не в состоянии выполнять свои функции. Тогда криптограмма С =Е (
К,М ) может быть помещена в общедоступное место с тем, чтобы
можно было получить сообщение М (воостановив ключ К и дешифровав
сообщение С ) по истечении времени t .
Итак Райвист, Шамир и Вагнер предложили альтернативный
метод со следующими свойствами:
. Агенты не хранят ключи, применяемые в схеме шифрования..
Каждый агент хранит “тень” ключа, получаемую с помощью
техники разделения секрета. Необходимый объём памяти,
выделенной под “тень” ключа, фиксирован и не зависит
от числа секретных компонент, доверенных агенту.
. Сначала, каждый агент формирует свой секретный ключ,
который он раскроет в момент времени t . Далее, с
помощью этого ключа, агент должен будет подтверждать своё
существование и свою личность.
. Основная задача агента : периодически ( например, в начале
каждого часа ) раскрывать ранее секретное значение - Si,t (
получать новое значение хеш-функции) и заверять раскрытый
секрет цифровой подписью на своём секретном ключе,
который раскрывается в заданный момент времени. Под
выражением ранее секретное значение - Si,t понимается
старый результат хеш-функции.
. Также, агент должен отвечать на вопросы вида : “Для
заданных значений у и t возвратите значение функции E( y
, Si,t ) – результат шифрования у на секретном ключе Si,t
, который Вы предполагаете раскрыть в момент времени
t”. Предполагается, что используемая для шифрования
криптосистема устойчива к атаке на открытом тексте, то
есть злоумышленник не сможет восстановить секретный ключ
Si,t , располагая результатами шифрования различных у –ов
на фиксированном ключе Si,t. Сформировать сообщение,
подписать его на открытом ключе пользователя и на
закрытом агента. Сформированное сообщение должно содержать
номер агента, текущее время, время t, раскрытый и
подписаный секрет Si,t и значение функции E( y , Si,t ).
. каждый агент всегда подписывает свои секретный и
открытый ключи.
Итак, схема с использованием доверенных агентов выглядит
так : сначала на случайно выбраном ключе К при помощи
симметричной криптосистемы пользователь шифрует сообщение М , и
получает
С=( К, М ).
Далее, выбрав d агентов i1, i2,… ,id пользователь публикует :
( С, i1, i2,… ,id. , r1, rrrRRgКкпрпл2,… ,rd ) ,
где r1, rrrRRgКкпрпл2,… ,rd - d криптограмм “теней” ключа К .
“Тени” получены по схеме разделения секрета, позволяющие
восстанавливать ключ К в момент времени t ,после того, как агенты
раскроют свои секреты. Размер “тени” ключа фиксирован и не зависит
от числа секретных компонент, доверенных агенту. Также
пользователь может установить порог ? (0 < ? ? d ) такой, что
восстановление ключа К будет возможно только при ? или
большем числе “теней” ключа К . Для этого пользователь просто
разбивает ключ К на d “теней” по любой схеме разделения секрета
с порогом ?.
После шифрования ключ К удаляется.
Далее пользователь просит агента возвратить ему
криптограмму, соответствующей агенту, «тени» ключа на секрете
агента . Тогда
rj = E( yj , Si,t ) ,
где (y1, y2 , …. ,yd) d “теней” ключа К .
После, пользователь генерирует составной модуль
n = pq ,
как произведение двух простых случайно выбранных чисел p и
q . После чего вычисляет
f(n) = (p-1) (q-1) и
e = 2t(mod f(n)).
Пара чисел (e, n) и будет являться открытым ключём
пользователя.
Итак, данная схема представляет собой асимметричную
систему с открытым ключом. Каждый из участников данной схемы
имеет свой открытый и закрытый ключ, закрытые ключи агентов -
их секреты, у пользователя количество закрытых ключей
может равняться количеству агентов, так, чтобы понимать их
сообщения или же пользователь должен иметь один универсальный
закрытый ключ, который он смог бы применять для дешифрования
всех получаемых им сообщений.
Таким образом обязанности агента заключаются в следующем:
. переодически раскрывать ранее секретное значение –получать
новое значение хеш-функции. Обозначим за Sij,t секретное
значение раскрываемое ij агентом в момент времени t .
Последовательность секретов, раскрытых одним агентом, не
зависит от последовательности секретов раскрытых другими
агентами. Такая последовательность обладает следующим
свойством : из каждого Sij,t? можно просто вычислить
Sij,t для всех t? ? t .Секрет, раскрываемый агентом может
быть использован для вычисления всех ранее раскрываемых
секретов в силу следующего рекуррентного уравнения :
Si,(t-1) = F ( Si,t )
(3),
где f -
некоторая односторонняя хеш-функция (Si,(t-1) –новый
секрет, Si, t – старый, индекс (t-1) - означает
время которое осталось до раскрытия секрета, 1 применяемая
в записи, условна и означает время, которое прошло с
прошлого раскрытия секрета до текущего момента времени)
Поскольку функция F является односторонней, раскрытие Si,t не
позволяет раскрыть прошлые секреты Si,t. (В противном
случае злоумышленник мог бы вычислить последовательность
секретов по формуле (3), начиная с некоторой точки в
будущем, или выбрать функцию F с “лазейкой”, так чтобы
только он смог вычислить Si,t - секретный ключ агента из
Si,(t-1) ).
Каждый раскрытый
секрет агент должен подписать на своём секретном ключе.
Новый, полученый секрет объявляется открытым и
используется для общения агента с пользователем то есть,
чтобы пользователь мог удостовериться в личности агента .
. дешифровать, на своём секретном ключе, сообщение