Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Слепая подпись Blind Signature

Лекция



Привет, Вы узнаете о том , что такое слепая подпись blind signature, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое слепая подпись blind signature , настоятельно рекомендую прочитать все из категории Теория вероятностей. Математическая статистика и Стохастический анализ .

Слепая подпись (Blind Signature) — разновидность ЭЦП, особенностью которой является то, что подписывающая сторона не может точно знать содержимое подписываемого документа. Понятие слепой подписи придумано Дэвидом Чаумом (англ.)[1] в 1982 году, им же предложена первая реализация через алгоритм RSA. Безопасность схемы слепой подписи основывалась на сложности факторизации больших составных чисел. С тех пор было предложено большое количество других схем[2][3].

 

Содержание

  • 1Описание
  • 2Алгоритмы слепой подписи
    • 2.1Полностью слепая подпись
    • 2.2Слепая подпись
      • 2.2.1Протокол RSA
      • 2.2.2Слепая подпись на основе ЭЦП Шнорра
      • 2.2.3Слепая подпись на основе ГОСТ Р 34.10-94
        • 2.2.3.1Параметры:
        • 2.2.3.2Вычисление:
        • 2.2.3.3Проверка:
      • 2.2.4Слепая подпись на основе стандарта СТБ 1176.2-99
    • 2.3Коллективная слепая подпись
      • 2.3.1Проверка коллективной слепой подписи
  • 3Применение
    • 3.1Банковские системы
    • 3.2Тайное голосование
  • 4Уязвимости подписи вслепую
  • 5Примечания
  • 6Литература

 

Описание 

Основная идея слепых подписей заключается в следующем:

  • Отправитель А шифрует документ и посылает его стороне В.
  • Сторона В, не видя содержимое документа, подписывает его и возвращает обратно стороне А.
  • Сторона А снимает свой шифр, оставляя на документе только подпись стороны В.

По завершении этого протокола сторона В ничего не знает ни о сообщении t, ни о подписи под этим сообщением.

Эту схему можно сравнить с конвертом, в котором размещен документ и копировальный лист. Если подписать конверт, то подпись отпечатается на документе, и при вскрытии конверта документ уже будет подписан.

Цель слепой подписи состоит в том, чтобы воспрепятствовать подписывающему лицу В ознакомиться с сообщением стороны А, которое он подписывает, и с соответствующей подписью под этим сообщением. Поэтому в дальнейшем подписанное сообщение невозможно связать со стороной А.

Схема безопасной слепой подписи должна удовлетворять 3 свойствам, а именно :

1) Нулевое разглашение. Это свойство помогает пользователю получить подпись на данном сообщении, не раскрывая самого сообщения подписывающей стороне.

2) Непрослеживаемость. Подписывающая сторона не может отследить пару подпись-сообщение после того, как пользователь обнародовал подпись на своем сообщении.

3) Неподложность. Только подписывающая сторона может сгененировать действительную подпись. Это свойство самое важное и должно удовлетворяться для всех схем подписей.

Благодаря свойствам нулевого разглашения и непрослеживаемости, схема слепой подписи может быть широко задействована в приложениях, где необходима конфиденциальность, например, в системах электронного голосования[4] [5] [6] [7].

Алгоритмы слепой подписи 

Полностью слепая подпись 

Дана ситуация: Боб — нотариус. Алисе нужно, чтобы он подписал документ, не имея никакого представления о его содержании. Боб только заверяет, что документ нотариально засвидетельствован в указанное время. Тогда они действуют по следующему алгоритму:

Слепая подпись Blind Signature

В этой схеме Алиса хочет, чтобы Боб вслепую подписал сообщение {\displaystyle m}Слепая подпись Blind Signature. Для этого:

  1. Алиса зашифровывает сообщение {\displaystyle m}Слепая подпись Blind Signature функцией {\displaystyle f}Слепая подпись Blind Signature, получая зашифрованное сообщение {\displaystyle c=f(m)}Слепая подпись Blind Signature.
  2. Алиса отсылает зашифрованное сообщение Бобу.
  3. Боб вслепую (так как не знает, что находится внутри) подписывает сообщение {\displaystyle c}Слепая подпись Blind Signature функцией {\displaystyle g}Слепая подпись Blind Signature, получая {\displaystyle c^{'}=g(c)=g(f(m))}Слепая подпись Blind Signature.
  4. Боб посылает {\displaystyle c^{'}}Слепая подпись Blind Signatureобратно Алисе.
  5. Алиса получает {\displaystyle c^{'}}Слепая подпись Blind Signature и убирает свое шифрование, получая: {\displaystyle c^{''}=g(f(m))*f^{-1}=g(m)}Слепая подпись Blind Signature.

Этот протокол работает, только если функции подписи и шифрования коммутативны.

Слепая подпись 

  1. Боб готовит n документов на каждом из которых написано некоторое уникальное слово (чем больше n, тем меньше у Боба шансов смошенничать).
  2. Боб маскирует каждый документ уникальным маскирующим множителем и отправляет их Алисе.
  3. Алиса получает все документы и случайным образом выбирает n-1 из них.
  4. Алиса просит Боба выслать маскирующие множители для выбранных документов.
  5. Боб делает это.
  6. Алиса вскрывает n-1 документов и убеждается, что они корректны.
  7. Алиса подписывает оставшийся документ и отсылает Бобу.
  8. Теперь у Боба есть подписанный Алисой документ с уникальным словом, которое Алиса не знает.

Протокол RSA 

Первая реализация слепых подписей была осуществлена Чаумом с помощью криптосистемы RSA:

Допустим, что изначально у Боба есть открытый ключ {\displaystyle (p,e)}Слепая подпись Blind Signature , где {\displaystyle p}Слепая подпись Blind Signature - это модуль, а {\displaystyle e}Слепая подпись Blind Signature - публичная экспонента ключа.

  1. Алиса выбирает случайный маскирующий множитель {\displaystyle r}Слепая подпись Blind Signature , взаимно простой с {\displaystyle p}Слепая подпись Blind Signature, и вычисляет {\displaystyle m^{'}\equiv mr^{e}{\bmod {p}}}Слепая подпись Blind Signature.
  2. Алиса посылает {\displaystyle m^{'}}Слепая подпись Blind Signature по открытому каналу Бобу.
  3. Боб вычисляет {\displaystyle s^{'}\equiv (m^{'})^{d}{\bmod {p}}}Слепая подпись Blind Signature, используя свой закрытый ключ {\displaystyle (p,d)}Слепая подпись Blind Signature.
  4. Боб отсылает {\displaystyle s^{'}}Слепая подпись Blind Signature обратно Алисе.
  5. Алиса убирает свою изначальную маскировку и получает подписанное Бобом исходное сообщение {\displaystyle m}Слепая подпись Blind Signature следующим образом: {\displaystyle s\equiv s^{'}*r^{-1}{\bmod {p}}\equiv m^{d}{\bmod {p}}}Слепая подпись Blind Signature.

Чаум придумал целое семейство более сложных алгоритмов слепой подписи под общим названием неожиданные слепые подписи. Об этом говорит сайт https://intellect.icu . Их схемы еще сложнее, но они дают больше возможностей[1].

Слепая подпись на основе ЭЦП Шнорра 

Пусть Алиса хочет подписать сообщение {\displaystyle m}Слепая подпись Blind Signature у Боба таким образом, чтобы, во-первых, Боб не мог ознакомиться с сообщением в ходе подписи, во-вторых, чтобы Боб не мог впоследствии при получении сообщения {\displaystyle m}Слепая подпись Blind Signature и соответствующей подписи идентифицировать пользователя, инициировавшего протокол слепой подписи для данного конкретного сообщения (Алису). Данный протокол реализуется следующим образом:

  1. Алиса инициирует взаимодействие с Бобом.
  2. Боб отправляет Алисе значение {\displaystyle R=a^{k}\mod p}Слепая подпись Blind Signature.
  3. Алиса вычисляет значения {\displaystyle R^{'}=Ra^{-w}y^{-t}\mod y}Слепая подпись Blind Signature (w и t - случайные числа, не превосходящие {\displaystyle y}Слепая подпись Blind Signature), {\displaystyle E^{'}=H(m||R^{'})}Слепая подпись Blind Signature и {\displaystyle E=E^{'}+t\mod y}Слепая подпись Blind Signature, после чего отправляет Бобу значение{\displaystyle E}Слепая подпись Blind Signature .
  4. Боб вычисляет значение {\displaystyle S}Слепая подпись Blind Signature, такое что {\displaystyle R=a^{S}y^{E}\mod p}Слепая подпись Blind Signature, и отправляет {\displaystyle S}Слепая подпись Blind Signature Алисе.
  5. Алиса вычисляет подпись {\displaystyle (E^{'},S^{'})}Слепая подпись Blind Signature, где {\displaystyle E^{'}=E^{-t}\mod y}Слепая подпись Blind Signature и {\displaystyle S^{'}=S-w\mod y}Слепая подпись Blind Signature, которая является подлинной по отношению к сообщению {\displaystyle m}Слепая подпись Blind Signature[8].

Доказательство  

Подлинность подписи доказывается следующим образом. Из {\displaystyle R=a^{S}y^{E}\mod p}Слепая подпись Blind Signature следует {\displaystyle Ra^{-w}y^{-t}=a^{S-w}y^{E-t}modp}Слепая подпись Blind Signature и {\displaystyle R^{'}=a^{S^{'}}y^{E^{'}}\mod p}Слепая подпись Blind Signature. При этом проблема анонимности решается, поскольку любая тройка {\displaystyle (R,S,E)}Слепая подпись Blind Signature из множества таких троек, которые формировались Бобом, может быть сопоставлена с подписью {\displaystyle (E^{'},S^{'})}Слепая подпись Blind Signature к данному документу {\displaystyle m}Слепая подпись Blind Signature. Действительно, имеем: {\displaystyle R=a^{S}y^{E}\mod p}Слепая подпись Blind Signature и {\displaystyle R^{'}=a^{S^{'}}y^{E^{'}}\mod p}Слепая подпись Blind Signature{\displaystyle \Rightarrow }Слепая подпись Blind Signature {\displaystyle R^{'}/R\equiv a^{S^{'}-S}y^{E^{'}-E}\mod p\equiv a^{-w}y^{-t}\mod p}Слепая подпись Blind Signature, т.е. при равновероятном случайном выборе слагаемых {\displaystyle w}Слепая подпись Blind Signature и {\displaystyle t}Слепая подпись Blind Signature подпись {\displaystyle (E^{'},S^{'})}Слепая подпись Blind Signature с равной вероятностью была порождена из любой тройки, входящей в множество троек, сформированных подписывающим. Отметим также, что Боб не имеет даже возможности доказать, что на момент формирования подписи данного документа {\displaystyle m}Слепая подпись Blind Signature он не был ознакомлен с ним.

 

Слепая подпись на основе ГОСТ Р 34.10-94 

Параметры: 

p — простое число, 510 ≤ |p| ≤ 512 (либо 1022 ≤ |p| ≤ 1024), где |p| — разрядность двоичного представления числа p.

q — большой простой делитель числа p-1, 255 ≤ |q| ≤ 256 (либо 511 ≤ |q| ≤ 512)

α ≠ 1, α < p, {\displaystyle \alpha ^{q}}Слепая подпись Blind Signature mod p = 1.

Вычисление: 

  1. Необходимо сгенерировать случайное k, 1 < k < q;
  2. R = ({\displaystyle \alpha ^{k}}Слепая подпись Blind Signature mod pmod q — первая часть подписи;
  3. H = Hash(m), где Hash — хэш-функция, описанная в стандарте ГОСТ Р 34.11-94, m — подписываемое сообщение;
  4. S = kH + zR mod q, где z — закрытый ключ.
  5. Если S=0, то повторить операции 1-4.

Проверка: 

  1. Если R < q или S < q, то подпись недействительна. Иначе:
  2. R' = ({\displaystyle \alpha ^{R/H}y^{S/H}}Слепая подпись Blind Signature mod pmod q, где y — открытый ключ;
  3. Если R = R', то подпись действительна[9].

Слепая подпись на основе стандарта СТБ 1176.2-99 

Стандарт Белоруссии предусматривает следующий протокол генерации слепой подписи к документу M:

  1. Необходимо сгенерировать случайное k такое, что 1 < k < q и вычислить {\displaystyle R=a^{k}}Слепая подпись Blind Signature. Эти действия выполняет подписывающий. Далее он передает число R пользователю;
  2. Пользователь генерирует случайные числа ε и τ такие, что 1 < ε, τ < q и затем вычисляет {\displaystyle R'=R*y^{\tau }*a^{\epsilon }}Слепая подпись Blind Signature, {\displaystyle E'=F_{H}(R'||M)}Слепая подпись Blind Signature и E = E' - τ mod qE — первый элемент подписи — направляется подписывающему;
  3. Подписывающий вычисляет второй элемент подписи S = (k - xE) mod q и передает S пользователю;
  4. Пользователь вычисляет S' = S + ε mod q.

В данном описании использованы следующие параметры: q — модуль, по которому ведутся вычисления, простое; a — порождающий элемент; x — закрытый ключ; y — открытый ключ[9].

Коллективная слепая подпись 

Пусть {\displaystyle {\overline {y_{1},y_{s}}}}Слепая подпись Blind Signature — открытые ключи, которыми владеют s пользователей. Пусть есть сообщение M, которое хотят подписать m из них. В таком случае все подписи можно объединить в одну, длина которой равна длине подписи одного пользователя и не зависит от m. Это реализуется по правилам следующего 1протокола:

  1. Каждый из m пользователей генерирует случайное число {\displaystyle t_{\alpha _{j}}}Слепая подпись Blind Signaturep, где j = {\displaystyle {\overline {1,m}}}Слепая подпись Blind Signaturep — большое простое число. Далее каждый из m пользователей вычисляет {\displaystyle R_{\alpha _{j}}=(t_{\alpha _{j}})^{k}}Слепая подпись Blind Signature mod p (k — большая простая степень) и рассылает это число всем остальным пользователям из данной группы.
  2. Каждый пользователь вычисляет {\displaystyle R=\prod _{j=1}^{m}R_{\alpha _{j}}}Слепая подпись Blind Signature mod p. Далее вычисляется e = f(R,M) = RH mod q, где q — большое простое число, отличное от pH = Hash(M) — хэш-функция. Число e будет первым элементом коллективной подписи.
  3. {\displaystyle S_{\alpha _{j}}=x_{\alpha _{j}}^{e}t_{\alpha _{j}}}Слепая подпись Blind Signature mod p — доля пользователя. Эту долю каждый пользователь вычисляет и предоставляет остальным.
  4. Каждый из пользователей далее вычисляет {\displaystyle S=\prod _{j=1}^{m}S_{\alpha _{j}}}Слепая подпись Blind Signature mod p. Это второй элемент коллективной подписи.

Проверка коллективной слепой подписи 

{\displaystyle y=\prod _{j=1}^{m}y_{\alpha _{j}}}Слепая подпись Blind Signature mod p — коллективный открытый ключ. На его основе происходит проверка коллективной слепой подписи по следующему алгоритму:

  1. Вычисляется {\displaystyle R=S^{k}y^{-e}}Слепая подпись Blind Signaturemod p.
  2. Вычисляется e' = f(R,M) = RH mod q
  3. Если e' = e, то подпись действительна.[9]

Применение 

Банковские системы 

Наиболее широкое применение протокол слепых подписей нашел в сфере цифровых денег. Например, чтобы вкладчик не обманул банк, может использоваться такой протокол: вкладчик пишет одинаковый номинал купюр на ста документах с разными номерами и депонирует в зашифрованном виде у банка. Банк выбирает случайным образом и требует раскрыть 99 (или n-1) конвертов, убеждается, что везде написано $10, а не $1000, тогда подписывает оставшийся конверт вслепую, не видя номера купюры.

Может быть предусмотрен более простой вариант: за каждым номиналом купюры у банка закреплена своя пара открытых ключей. Тогда под подпись присылается только номер купюры, и необходимость проверки номинала перед подписью отпадает[1].

Тайное голосование 

Слепые подписи используются для тайного голосования. В протоколе Фуджиока, Окамото и Охта, избиратель подготавливает избирательный бюллетень со своим выбором, который он сделал, шифрует его секретным ключом, и маскирует его. Далее избиратель подписывает избирательный бюллетень и посылает его валидатору. Валидатор проверяет, что подпись принадлежит зарегистрированному избирателю, который еще не голосовал.

Если избирательный бюллетень действителен, валидатор подписывает избирательный бюллетень и возвращает его избирателю. Избиратель удаляет маскировку, раскрывая таким образом зашифрованный избирательный бюллетень, подписанный валидатором. Далее избиратель посылает в результате полученный подписанный, зашифрованный избирательный бюллетень счетчику, который проверяет подпись на зашифрованном избирательном бюллетене.

Если избирательный бюллетень действителен, счетчик размещает его в списке, который будет издан после всего голосования. После того, как список издан, избиратели проверяют, что их избирательные бюллетени находятся в списке и посылают счетчику ключи расшифрования, необходимые, чтобы открыть их избирательные бюллетени. Счетчик использует эти ключи для расшифрования избирательных бюллетеней и добавляет голос к общему числу. После выборов счетчик издает ключи расшифрования наряду с зашифрованными избирательными бюллетенями, чтобы избиратели могли независимо проверить выбор[10].

Уязвимости подписи вслепую 

Алгоритм RSA может являться объектом атаки, благодаря которой становится возможным расшифровать ранее подписанное вслепую сообщение, выдав его за сообщение, которое только еще предстоит подписать. Исходя из того, что процесс подписи эквивалентен расшифровке подписывающей стороной (с использованием ее секретного ключа), атакующий может подложить для подписи уже подписанную вслепую версию сообщения {\displaystyle m}Слепая подпись Blind Signature, зашифрованного с помощью открытого ключа подписывающей стороны, то есть подложить сообщение {\displaystyle m'}Слепая подпись Blind Signature.

{\displaystyle {\begin{aligned}m''&=m'r^{e}{\pmod {n}}\\&=(m^{e}{\pmod {n}}\cdot r^{e}){\pmod {n}}\\&=(mr)^{e}{\pmod {n}}\\\end{aligned}}}Слепая подпись Blind Signature

где {\displaystyle m'}Слепая подпись Blind Signature - это зашифрованная версия сообщения. Когда сообщение подписано, открытый текст {\displaystyle m}Слепая подпись Blind Signature легко извлекаем:

{\displaystyle {\begin{aligned}s'&=m''^{d}{\pmod {n}}\\&=((mr)^{e}{\pmod {n}})^{d}{\pmod {n}}\\&=(mr)^{ed}{\pmod {n}}\\&=m\cdot r{\pmod {n}}{\mbox{, since }}ed\equiv 1{\pmod {\phi (n)}}\\\end{aligned}}}Слепая подпись Blind Signature

где {\displaystyle \phi (n)}Слепая подпись Blind Signature - это Функция Эйлера. Теперь сообщение легко получить.

{\displaystyle {\begin{aligned}m=s'\cdot r^{-1}{\pmod {n}}\end{aligned}}}Слепая подпись Blind Signature

Атака работает, потому что в этой схеме подписывающая сторона подписывает непосредственно само сообщение. Напротив, в обычных схемах подписи подписывающая сторона обычно подписывает, например, криптографическую хеш-функцию. Поэтому из-за этого мультипликативного свойства RSA, один ключ никогда не должен использоваться одновременно для шифрования и подписания вслепую[8].

Примечания 

  1. ↑ 1 2 3 Брюс Шнайер, "Прикладная криптография. 2-е издание. Протоколы, алгоритмы и исходные тексты на языке С", издательство "Триумф", 2002г.
  2.  Жан Каменич, Жан-Марк Пивето, Маркус Штадлер, "Слепые подписи, основанные на задаче дискретного логарифмирования", журнал "Eurocrypt", страницы 428-432, издательство "Springer-Verlag", 1995г.
  3.  Калиан Чакраборту, Жан Мехта, "A stamped blind signature scheme based on elliptic curve discrete logarithm problem", журнал "International Journal of Network Security",выпуск 14, страницы 316-319, 2012г.
  4.  Лун-Чанг Лин, Мин-Шианг Ханг, Чин-Чен Чанг "Повышение безопасности для анонимного электронного голосования через сеть", журнал "Computer Standards and Interfaces", выпуск 25, страницы 131-139, 2003г.
  5.  Татсуаки Окамото, "Эффективная слепая и частично-слепая подписи без случайных предсказаний", сборник статей "Теория Криптографии", страницы 80-99, издательство "Springer-Verlag", 2006г.
  6.  Маркус Рукерт, "Слепая подпись на основе решеток", сборник статей конференции Asiacrypt, страницы 413-430, издательство "Springer-Verlag", 2010г.
  7.  Даниэль Ортис-Арройо, Клаудия Гарсия-Самора, "Очередное улучшение протокола электронного голосования Му-Варадараджана", журнал "Computer Standards and Interfaces", выпуск 29, страницы 471-480 , 2007г.
  8. ↑ 1 2 Молдовян Н.А. Практикум по криптосистемам с открытым ключом. — 2007. — 304 с. — ISBN 5-9775-0024-6.
  9. ↑ 1 2 3 Н.А. Молдовян. Теоретический минимум и алгоритмы цифровой подписи. — БВХ-Петербург, 2010. — 304 с. — ISBN 978-5-9775-0585-7.
  10.  Анисимов В.В. Протоколы двух агентств Фудзиока-Окамото-Охта и Sensus. Криптографические методы защиты информации.

Представленные результаты и исследования подтверждают, что применение искусственного интеллекта в области слепая подпись blind signature имеет потенциал для революции в различных связанных с данной темой сферах. Надеюсь, что теперь ты понял что такое слепая подпись blind signature и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Теория вероятностей. Математическая статистика и Стохастический анализ

создано: 2017-06-18
обновлено: 2024-11-15
168



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Теория вероятностей. Математическая статистика и Стохастический анализ

Термины: Теория вероятностей. Математическая статистика и Стохастический анализ