Электронная подпись ГОСТ Р 31.10-2001

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

примере параметры a и b принимают следующие значения:

 

a = 710=4330887654676727690576590459565093199594211179445103958325296884203384958041410

 

*Порядок группы точек эллиптической кривой

В данном примере параметр m принимает следующее значение:

 

m =5789604461865809771178549250434395392708293458372545062238097359213763106961910

 

*Порядок циклической подгруппы группы точек эллиптической кривой

В данном примере параметр q принимает следующее значение:

 

q =5789604461865809771178549250434395392708293458372545062238097359213763106961910

 

*Коэффициенты точки эллиптической кривой

В данном примере координаты точки Р принимают следующие значения:

 

Хр = 210=401897405653903750333544942293705977563573938990554508069097936521343156628010

 

*Ключ подписи

В данном примере считается, что пользователь обладает следующим ключом подписи d:

 

d =5544119606536324612635562413032418319657670922234001657210809775000609752554410

 

*Ключ проверки

В данном примере считается, что пользователь обладает ключом проверки Q, координаты которого имеют следующие значения:

 

Xq=5752021612617680844363140502333807117663010490631363218289674134220660485940310=1761494441921378154380939194965408003194266204536363926070984785943828676399410

 

) Процесс формирования ЦП

Пусть после выполнения шагов 1 - 3 были получены следующие числовые значения:

е =2079889367447645201713406156150827013063714251537965328995261725266146887242110=5385413767734846373140384114799661924150400343430202071296083852889319623339510

При этом кратная точка С = kP имеет координаты:

 

Xc=2970098091581795287437120498393825699042275210799431965163268798205921093339510=3284253527868466347709466532251708450680472103245454326813285455653927406091010

 

Параметр r = х (mod q) принимает значение:

 

r =2970098091581795287437120498393825699042275210799431965163268798205921093339510

 

Параметр s = (rd + ke) (mod q ) принимает значение:

 

s =57497340027008465417892531001914703845522704264909856393371899917551583955210

 

) Процесс проверки ЦП

Пусть после выполнения шагов 1 - 3 было получено следующее числовое значение:

 

е =2079889367447645201713406156150827013063714251537965328995261725266146887242110

 

При этом параметр v = e (mod q ) принимает значение:

 

v =1768668360593446867730171382490026856274688308067549671528803657243114571897810

 

Параметры и принимают значения:

=3769916750090193855684105729351265610884134519049194261930453241274372099975910

=141719984273434721125159179695007657692466558389728621144999326533336710922110

 

Точка имеет координаты:

 

Xc=2970098091581795287437120498393825699042275210799431965163268798205921093339510=3284253527868466347709466532251708450680472103245454326813285455653927406091010

 

Тогда параметр принимает значение:=2970098091581795287437120498393825699042275210799431965163268798205921093339510

 

Поскольку выполнено равенство R = r, то цифровая подпись принимается.

 

ПРИМЕР ИСПОЛЬЗОВАНИЯ

 

На основе ГОСТ 34.10-2001 построен механизм так называемой слепой подписи, который применяется в электронном голосовании.

Механизм одновременно и защищает приватность поданного голоса, и однозначно верифицирует избирателя. Достигается это с помощью так называемой слепой электронной подписи. Задачу, решаемую с помощью слепой подписи, можно в двух предложениях сформулировать примерно так:

Алиса желает анонимно отправить некую достоверную информацию Цезарю;

Боб может удостоверить источник информации (Алису), но не должен знать ее суть.

Для этого используется следующее решение:

Алиса запечатывает листок с информации в конверт;

Алиса приносит запечатанный конверт Бобу;

Боб видит, что Алиса это Алиса и ставит штамп на конверт с информацией, не видя ее сути;

Алиса идет на почту и отправляет конверт со штампом Цезарю без обратного адреса;

Цезарь получает конверт, видит штамп Боба и доверяет источнику информации, не зная этот источник.

Принцип в следующем. Тот, кто будет удостоверять нашу личность (валидатор), не должен знать, за кого мы отдали свой голос в бюллетене. А тот, кто считает наш бюллетень (счетчик), не должен знать нашу личность. Следовательно, наши сообщения валидатору и счетчику должны отличаться друг от друга, притом так, чтобы валидатор и счетчик, сговорившись, не могли определить, какой бюллетень кому принадлежит. Пусть валидатор подписывает сообщение, умножив его на 2, т.е. мы отправляем валидатору число, он возвращает нам удвоенное число в качестве подписи, и счетчик такую подпись признает истинной. Мы отправляем валидатору 1, он нам возвращает 2, мы пересылаем счетчику пару (1,2), счетчик смотрит, что да, действительно, 2 ровно в 2 раза больше 1 и признает подпись истинной. А теперь мы делаем иначе, мы берем наше сообщение (1), отправляем валидатору удвоенное сообщение (2), он его подписывает, возвращает подпись (4), мы производим обратное преобразование, делим четверку на два, получаем истинную подпись (2) для нашего сообщения. Таким образом, валидатор не знал нашего сообщения (ведь он знает, на сколько изначально сообщение умножили), но из его подписи нашего замаскированного сообщения мы восстановили истинную подпись для нашего секретного сообщения.

Таким образом, мы получаем общую схему:

Избиратель устанавливает защищенное соединение с валидатором, т.е. во-первых, избиратель точно знает, что валидатор это валидатор, а валидатор точно знает, что избиратель это избиратель;

Избиратель генерирует избирательный бюллетень, голосует за любую партию, добавляет к бюллетеню уникальную последовательность символов и хеширует бюллетень;

Избиратель добавляет к хешу бюллетеня маскирующий множитель и направляет на подпись валидатору;

Валидатор проверяет, голосовал ли уже этот избиратель. В случае отрицательной проверки, подписывает замаскированный хеш;

Избиратель извлекает из подписи маскирующий множитель и получает корректную подпись для своего оригинального хеша