Биометрический идентификатор с электронной цифровой подписью

  • 29 апр. 2014 г.
  • 4555 Слова
Московский энергетический институт
Институт информационной и экономической безопасности

Курсовая работа
«Биометрический идентификатор с электронной цифровой подписью»
по дисциплине: Защита информационных процессов в компьютерных системах

ЦП ИИЭБГруппа :
Работу выполнил:___
Работу проверил:___ А.А. Рытов

Москва 2013
Цель работы: В фотографию с помощью стеганографических методов встроить данные, содержащиеся в студенческом билете, и создать ЭЦП этогоцифрового объекта.

Часть 1. Разработка программного модуля ЭЦП на основе эллиптической кривой (ЭК).
Задана эллиптическая кривая y2 = x3 + ax2 + bx +( c+i ) над полем GF(p). Коэффициент а=0 для всех вариантов, переменная i – целое 0,
стартовое значение i=0.
Остальные параметры кривой приведены в Табл. 1.
Номер варианта определяется следующим образом: (25*(Nгр)mod4 + N)mod50,
где Nгр – номер группы (4или 5), N – номер по списку в группе.
1. Найти базовую точку P(x,y), принадлежащую ЭК, со следующими параметрами:
* x – координата задается из условия x Floor[p/2];
* порядок точки должен быть простым числом, большим 2p/3;
* поиск точки может быть проведен с помощью изменения (инкремента) переменной "i";
* эллиптическая кривая должна бытьгладкой.
2. Разработать программный модуль, реализующий алгоритм ЭЦП и хэш- функцию, согласно варианту в Табл. 1.
3. Провести верификацию программного модуля ЭЦП на текстовом файле, содержащем данные из студенческого билета.

NN=6;
Ngr=4;
Nvar=Mod[25*Mod[Ngr,4]+NN,50]
6

6 | 7 | 3+i | 1085827 | Nyberg-Rueppel | "SHA384" |

1. Найти базовую точку P(x,y), принадлежащую ЭК, соследующими параметрами:

* x – координата задается из условия x Floor[p/2];
* порядок точки должен быть простым числом, большим 2p/3;
* поиск точки может быть проведен с помощью изменения (инкремента) переменной "i";
* эллиптическая кривая должна быть гладкой.

(*Ввод данных из задания*)
Needs["FiniteFields`"]
a = 0;
b = 7;
c = 3 + i
p = 1085827;
n =Table[0, {i, 100000}]; GF[p];

EllipticAdd[p_,a_,b_,c_,P_List,Q_List]:=
Module[{lam,x3,y3,P3},
Which[
P=={O},Q,
Q=={O},P,
P[[1]]!=Q[[1]],
lam=Mod[(Q[[2]]-P[[2]])PowerMod[Q[[1]]-P[[1]],p-2,p],p];
x3=Mod[lam2-a-P[[1]]-Q[[1]],p];
y3=Mod[-(lam(x3-P[[1]])+P[[2]]),p];
{x3,y3},
(P==Q)(P[[2]]==0),{O},
(P==Q)(P!={O}),
lam=Mod[(3*P[[1]]2+2a*P[[1]]+b)PowerMod[2P[[2]],p-2,p],p];
x3=Mod[lam2-a-P[[1]]-Q[[1]],p];
y3=Mod[-(lam(x3-P[[1]])+P[[2]]),p];
{x3,y3},
(P[[1]]==Q[[1]])(P[[2]]!=Q[[2]]),{O}]]

tl = 0;
l = 0;
Do[i = 2; c = c + l;
g = Discriminant[x^3 + a*x^2 + b*x + c, x, Modulus -> p];
If[g != 0, Clear[x, y];
d = {x, y} /.
Flatten[Table[
Solve[{y^2 == x^3 + a*x^2 + b*x + c, x== u,
Modulus == p}], {u, (Floor[p/2] - 1), p - 1}], 1];
Do[link = d[[j]];
While[link != {O}, link = EllipticAdd[p, a, b, c, link, d[[j]]];
i++]; n[[j]] = i - 1;
If[And[PrimeQ[n[[j]]], n[[j]] > 2*p/3], tl = j; Break[]];
i = 2, {j, 1, Length[d]}]]; , {l, 0, 200}]

n[[j]]
1085867
g=Discriminant[x^3+a*x^2+b*x+c,x,Modulus->p]
1080567
d[[j]]
{542913,188797}
c
12
PrimeQ[1085867]
True
1085867>=(2*p)/3
True

2. Разработать программный модуль, реализующий алгоритм ЭЦП и хэш- функцию, согласно варианту в Табл. 1.

data = Import["D:\\data.txt"]
Наименование документа: студенческий билет. Номер документа: \
20093500. Фамилия: Бондарев. Имя: Дмитрий. Отчество: Владимирович. \
Группа: ИБ-04-10. Номер по списку в группе:...