К защищенным вычислениям относятся различные протоколы, целью которых является совместное вычисление некоторого значения таким образом, чтобы скрыть это значение от всех или некоторых участников. Рассмотрим два протокола защищенных вычислений.
Сокрытие информации от оракула
Пусть укастник В – оракул, который умеет вычислять значение некоторой трудновычислимой функции f. А хочет обратиться к В за вычислением f(x), но не хочет раскрывать значение х.
Параметры протокола: конструкция (K,E,D), отвечающая требованиям к криптосистеме с секретным ключом и с функцией дешифрования, удовлетворяющей условию
Dk(f (Ek(x)))= f (x). (*)
Алгоритм протокола:
1. А выбирает случайным образом ключ k, шифрует х на этом ключе: E k (x), и посылает его В.
2. В вычисляет значение f (E k (x)) функции от зашифрованного значения и отсылает его А.
3. А дешифрует полученное значение и получает по условию (*) значение функции.
Криптосистема с открытым ключом здесь не нужна, так как не нужно пересылать оракулу ни значение ключа, ни алгоритм дешифрования. Основное условие – наличие функций шифрования и дешифрования, удовлетворяющих условию (*).
Примером такого протокола может быть протокол вычисления трудновычислимой функции f(x) - дискретного логарифма x в Z* p по основанию g, (g – образующий элемент Z* p). В этом случае функции шифрования и дешифрования можно выбрать:
E k (x) = x gk mod p и D k (y) = (y-k) mod (p-1), k Î Z* p-1.
Задача о двух миллионерах.
Два миллионера хотят выяснить у кого больше миллионов, но так, чтобы никто не узнал, сколько их у другого.
Параметры протокола:
Пусть a,b – секретные значения участников А и В.
В протоколе нужна криптосистема (K,E,D) с открытым ключом и число m, такое, что a£m и b£m. Пусть k - ключ участника В.
Алгоритм протокола:
1. А выбирает большое простое число х, вычисляет t =E k (x)- a и посылает его В.
2. В выбирает простое число р, удовлетворяющее указанному ниже условию и вычисляет последовательность чисел S =(u1, …,um, p) следующим образом:
, где zi= D k (t+i)mod p,
а р выбирается так, чтобы для " i¹j выполнялось ½ zi - zj ½>1.
Заметим, что при этом ya=x.
3. А посылает В сообщение «а £ b», если ua=x mod p и «а > b» в противном случае.
Этот протокол имеет очевидные недостатки:
· Чем больше m, тем сложнее подобрать р, удовлетворяющее условиям.
· Участник А узнает результат раньше, чем В и может отказаться от выполнения 3-го шага.
Специальные виды электронной подписи.
Для решения задач аутентификации и обеспечения целостности информации используется цифровая подпись. Обычные протоколы электронной подписи, разрабатываемые для практического применения, являются неинтерактивными (т. е. весь обмен сообщениями состоит в передаче отправителем получателю подписанного сообщения). Это вызвано прежде всего требованиями к эффективности.
Однако возникают ситуации в которых к электронной подписи предъявляются дополнительные требования. Рассмотрим специальные виды электронной подписи, в которых используются многораундовые протоколы.
Слепая подпись
Смысл протокола слепой подписи состоит в том, чтобы участник В подписал предложенное участником А сообщение, не получив информации об этом сообщении. В «бумажном» документообороте такая схема может быть реализована с помощью запечатанного конверта, в котором находится документ, а поверх него лист копирки. Такая подпись используется, например, в финансовой криптографии для обеспечения свойства неотслеживаемости электронных денег.
В цифровом варианте слепая подпись представляет собой частный случай сокрытия информации от оракула. Сообщение m путем шифрования упаковываетя в цифровой конверт P (m), который подписывается S (P (m)). При вскрытии конверта получается подпись для m: P -1(S (P (m))).
Приведем реализацию слепой подписи R S A.
Протокол создания слепой подписи RSA под сообщением m ÎZm
Ключи участника В: (n,e) – открытый и (n,d) – секретный.
1. А ® В P (m)=mre mod n, r ÎZ* n
2. В ® А S (P (m))= P (m) d mod n
А вычисляет P -1 (S (P (m)))= r-1 S (P (m))= md mod n
Как правило, необходимо, чтобы В подписывал только сообщения из некоторого множества «приемлемых» сообщений М, но не знал, какое именно сообщение он подписал.
Протокол создания слепой подписи RSA под приемлемым сообщением m ÎМ.
Ключи участника В: (n,e) – открытый и (n,d) – секретный.
Пусть m1,..., mk ÎМ – сообщения, для одного из которых будет получена цифровая подпись.
1. А ® В (P 1(m1),..., P k(mk)), где Pi (mi)= mie mod n, ri ÎZ* n " i =1,..., k
2. В ® А выбирает номер конверта j Î{1, …, k }, который подпишет.
3. А ® В " (ri) i¹j, А открывает все конверты, кроме j -го, В проверяет, что " i¹j сообщения приемлимые mi ÎМ.
4. В ® А S (Pj (mj))= P (mj) d mod n.
А вскрывает подписанный конверт, то есть вычисляет подпись для т:
P -1 (S (P (mj))) = r-1 S (P (mj))= mjd mod n.
Вероятность того, что А удастся получить подпись под неприемлемым сообщением, не превосходит k -1.
Невидимая подпись.
Можно сделать так, чтобы подпись доказывающего участника Р (prover) не могла быть проверена проверяющим V (verifier) без участия Р. При этом получится так называемая невидимая подпись или неоспоримая подпись (undeniable signature, термин ввел David Chaum, впервые предложивший такую схему).
Применение невидимой подписи:
Ø предоставление фирмой возможности проверить подлинность распространяемого программного продукта только зарегистрированным пользователям;
Ø осуществление безбумажного документооборота внутри организации так, чтобы в случае утечки документа за пределы организации нельзя было доказать его подлинность.
Параметры системы:
Группа Zр, где р — простое число.
Пусть g Î Zр - образующий элемент (делит р-1).
Ключи участника Р:
x ÎZр — закрытый ключ,
y=gx — открытый ключ.
Создание подписи:
z = S (h)= hx mod p, где h Î Zр —хэш-функция сообщения.
1. P ® V число w=hagb mod p, где a,b Î Zр. - выбранные Р числа.
2. V ® P пару чисел (r,s), где r= wgt = hagb+t mod p.
где t ÎZр - выбранное V число и s=rx mod p.
3. P ® V пару чисел (a,b)
и Р проверяет, что w=hagb mod p.
4. V ® P число t
и V проверяет, что r= hagb+t и s=za yb+t mod p.
Утверждение (надежность протокола). Даже обладая неограниченной вычислительной мощностью, Р не может с вероятностью, большей р, дать верные ответы при неверной подписи.
Утверждение (безопасность протокола). В ходе протокола не происходит раскрытия информации о закрытом ключе Р, поскольку V может самостоятельно построить все сообщения протокола с тем же распределением, но без участия Р.
1.32. Разделение секрета
Криптографические схемы разделения секрета были независимо открыты Шамиром (A. S hamir) и Блэкли (G. R. Blakley). Основное назначение протоколов или схем разделения секрета - управление ключами. Во многих практических приложениях доступность информации зависит от одного-единственного секретного ключа. Если ключ каким-либо образом утерян (потерян носитель с записанным ключом, разрушена память, в которой хранится ключ, и т.д.), доступ к информации блокируется. Схемы разделения секрета позволяют решить сформулированную проблему. Идея заключается в разделении секретного ключа на компоненты с последующим их распределением среди легального сообщества участников. Восстановление ключа возможно только в том случае, если некоторая легальная коалиция участников объединит свои ключевые компоненты.
С точки зрения математики задача разделения секрета является прежде всего комбинаторной задачей. Отметим, что первая постановка задачи была сформулирована в виде следующей комбинаторной проблемы. Рассмотрим ситуацию, в которой одиннадцать ученых работают над секретным проектом. Рабочие документы проекта заперты в сейфе. Условие задачи — только шесть и более ученых, объединившись и предъявив ключи, могут отпереть сейф и получить доступ к документам.
Постановка задачи сводится к оценке наименьшего числа замков сейфа и наименьшего числа ключей у каждого из ученых. В качестве решения предлагается следующее рассуждение. По условию существует как минимум один замок, который не может быть открыт ни одним ученым из произвольной пятерки. Таким образом, каждый из шести оставшихся ученых имеет ключ от этого замка. Причем нет необходимости в более чем одном подобном замке для коалиции из пяти ученых. Таким образом, минимальное число замков и ключей оценивается как число сочетаний =462 и и =252 соответственно. Очевидно, что предлагаемое комбинаторное решение неприемлемо с практической точки зрения.
Криптографические схемы разделения секрета предлагают иное решение проблемы. Рассмотрим ее как групповой криптографический протокол с некоторым множеством участников.
Обычно в протоколах мы рассматривали пару взаимодействующих участников (А, В). В групповых протоколах вместо А будем рассматривать группы участников (А i 1,...,А ik,С), где участники выбираются из множества возможных участников U={А1,...,Аl} (их иногда называют процессорами). При этом все А i и В взаимодействуют только с выделенным участником С. Участник С называется комбинатором (combiner)или дилером (иногда, лидером) и добавлен для достижения анонимности, чтобы В не мог узнать о составе группы А i.
На множестве U выделяется структура доступа Г — множество подмножеств U, называемых разрешенными коалициями. Множество Г обычно монотонно по включению: если V Ì V ` и V `ÎГ, то V ÎГ. Протокол должен быть работоспособен, если {А i 1,...,А i k }Î Г.
Как и в других типах криптографических протоколов, в протоколе разделения секрета участники, вообще говоря, не доверяют друг другу, и каждый из них может оказаться противником, в том числе и дилер. Групповой криптографический протокол должен отвечать следующим свойствам.
· Надежность. Для любой разрешенной коалиции {А i 1,..., А i k }Î Г протокол ((А i 1,...,А i k, С), В) удовлетворяет требованиям надежности и безопасности.
· Групповая безопасность. Для любой неразрешенной коалиции
{А i 1,...,А i k }Ï Г никакие заговорщики А i1 *,..., А ik *,С* такие, что любой А i * и С* имеет доступ к секретам всех А i и С, не могут нарушить надежность системы.
В дальнейшем будем рассматривать коалиции участников как подмножества множества номеров участников IÎГÍ{1, ...,l }=L.
Помимо схем разделения секретов групповые протоколы чаще всего используются для решения следующих задач:
Ø групповое вычисление значения некоторой функции — может применяться для построения групповых криптосистем, групповой подписи, групповой идентификации /протоколы конфиденциальных вычислений/;
Ø групповая генерация псевдослучайных чисел;
Ø анонимная почта и удаленное тайное голосование.
Но круг приложений схем проверяемого разделения секрета существенно шире.