Mục Lục
1. ĐƯỜNG CONG ELLIPTIC 2
1.1. 2
1.2. Đường cong Elliptic trên trường Galois 2
1.3. 3
1.4.
3
2. NHÚNG BẢN RÕ VÀO ĐƯỜNG CONG ELLIPTIC 3
2.1. !"#$% 3
2.2. Phép mặt nạ (mask) 4
3. SINH VÀ XÁC NHẬN CHỮ KÝ ECDSA 4
3.1. &'()*&+ 4
3.2. Xác nhận chữ ký ECDSA 5
3.2.1. Chuyển đổi giữa các loại dữ liệu 5
3.2.2. Chứng nhận khóa công khai 5
3.2.3. Cơ sở cho kiểm tra r và s trong xác minh chữ ký 6
3.2.4. So sánh DSA và ECDSA 6
3.3. Đánh giá về chuẩn chữ ký số ECDSA 6
4. XÂY DỰNG CHƯƠNG TRÌNH 7
1
SƠ ĐỒ CHỮ KÝ TRÊN ĐỪỜNG CONG ELLIPTIC
1. ĐƯỜNG CONG ELLIPTIC
1.1. Đường cong Elliptic theo công thức Weierstrass
,-./012134
.$56y
2
+a
1
xy+a
3
y =
x
3
+a
2
x
2
+a
4
x+a
6
718
9.0
:;<0=>/?%@/A1
1.2. Đường cong Elliptic trên trường Galois
B8#,
7$ C12$5D?
E
F
GEG$#%/HIJEK0)D57$D'
L#/
MN/M#O1A'P6Q
F
GRS$
R
#%TI0
2
1.3. Đường cong Elliptic trên trường hữu hạn
12EL%UD0)8
12V%@6W/HWX
WR
#
# 0
YZ>/
W
7/H#[$C\W7]A1
0*187/H#>138W^V/WH78
AUU-8#10
1.4. Đường cong elliptic trên trường F
P
(p là số nguyên tố)
)_F 7)7$9Q
F
GRS$
R
TI
0=>1
12134$`D
#/$ #>C2DXD3E7 E79 M
6
R
aE
F
GEG$0
Z/H#>1b#cd-1b#/U0&21b#\ e
M13(:6
p G< - R p J e E F
p
J p +<G R p
2. NHÚNG BẢN RÕ VÀO ĐƯỜNG CONG ELLIPTIC
B"$fgE$b%h$fg18D1b#E7
188bUP12D?DE0)8#>ND1b
UP/P0Y188RND?i"jEmbeding
/i#Xjmask 0
2.1. Phép nhúng (Embeding)
Cách 1:
b"#k /H7l9F#%Q 0
,fVk 12$`N;6
R
aE
F
GE
R
G$/fV#
f#O6IJ#Jm<IIIn<0
Y#F/#12EM#O6<III#JEJ<III#G< K
0)"o$pD'D1q';#12E
3
rE aE
F
GEG$#>?Nk//HrE a
R
#%
M#OT<#%0
b#
#
12'"#6
#
aE7rE
)8b%h%'@#s9k $5D$MF
#\-1>E\1b#
#
0
Cách 2:
Bước 1: &V%@$fD]#B'(U0)$fgD'
81>%13l7D'(U121D6I7t7Bd<0=>'/u$f
wZ/HDIJE
w
≤
B
l
0Y#>DE6
Wa
I
<
00
ln<
vwa
I
B
ln<
G
<
B
lnR
GtG
lnR
B
G
ln<
7IJE
w
JB
Bước 2: )-#>D3k ?2'B
l
KW0wH#[x^
V\
W
?'E
y
Gx0z{1b#
y
1^#-1>E|'E
y
7x|I7/?%@6
w
a'E
w
Gx7} 9
W
Bước 3: .@'$fgsy$5D?E
w
a~Em'•
2.2. Phép mặt nạ (mask)
b$b%h$fg%#<7#R D1b##8b
D%@ND#'$5DL#</#R/HD-1>E7
\D1b#0,fV81b#,98-1>E,7, ;#a
#<E,7#R, 0
3. SINH VÀ XÁC NHẬN CHỮ KÝ ECDSA
^#fD\@1b/ED#'(V%@)*&+0
3.1. Sinh chữ ký ECDSA
b'(P#>1Pm7#>UbA /H/Z#D = (q,
FR,a,b,G,n,h)/X'8'q(d,Q)?6
1.
)-€Xf€ 0
4
2.
Y?kG = (x1,y1)/b1px1s
3.
Y?r = x1 mod n0Bqr = 0 ;W$H<0
4.
Y?k
-1
mod n.
5.
Y?&:+n<(m)/b1p[$e
6.
Y?s = k-1(e + dr)mod n.Bqs = 0;W$H<0
7.
)'(\1Pm(r,s)
3.2. Xác nhận chữ ký ECDSA
bED##>'(\A (r,s)m0•812#>$fED
U\+/Z#D = (q, FR,a,b,G,n,h)/'q'8
'‚08'qD5•ƒ8EDCDD3*/‚E#
„0Q/…0R 0•12UP6
1.
vD#5/D'f~<7n<•0
2.
Y?&:+n<(m)/b1p[$e
3.
Y?w =s
-1
mod n0
4.
Y?u1 = ew mod n và u2 = rw mod n.
5.
Y?X = u1G + u2Q.
6.
BqX= 7;s'(0B27b1pEd$5E<
\vs 7/?
7.
YsC'(q/†qv = r
Bằng chứng xác thực làm việc chữ ký số: Bq#'(a (r, s)
1Pm12$`+7;s = k
-1
(e + dr) mod n012‡Eq6
B/C7u1G + u2Q = (u1 + u2d)G = kG//Cv = r^q0
5
3.2.1. Chuyển đổi giữa các loại dữ liệu
+B&ˆv‰0…RED13#>ND1bb1pD^V
fD0B8V%@1bb1p^Vx1s
$HRf^'(/$H…\^EDC
'(H'?Dx1 mod n0+B&ˆv‰0…RED13Nb1p
[$D0B8V%@b1p1^e\&:+n<
H'V%@?D#%$H„\
^'(/$HR\^EDC'(0
3.2.2. Chứng nhận khóa công khai
YH'ED#'(+1P7•^812#>$f
\+/Z#*/W1q'8'‚0+B&ˆ
v‰0…R'†3#>Nq1b1121A0YUq7EDU
'8'12LW{C0)
C'8'\$]##>[DED13%{
+/?%@+/13† 7`1L#A#*Bq1L'f
12$q1qs>% 7`1L'8'‚/#>NWED
C'()+ D0•8bV%@$fEDU'8
'\)+1bED#+1O12EDC7%18812#>$f
EDU'8'4\+0
3.2.3. Cơ sở cho kiểm tra r và s trong xác minh chữ ký
•H<\/P'b#EDC'(r/sfD
'f[1, n-1]0B'b#8b12UP{PWf7/
$PDC-1A'PDD\D>{
12$q1qD1ADW1q'(,#'U
PD'b#/?%@D>{/C7E#•$
~<R• 0&1LU2({)*&+q'b#r ≠ 0/8
7 'bUP0,fV+V%@1
$C 7`1L$%$C\#%p/
fV+V%@1b#N` \$Cn082(
#{fDUb8bU-#>1b#N`I-1>E1bf#
b$C\'?H\D#A 0=>21b#$L8
bf##>'(+1P#\U-?D+a&:+n
<# 0B88b%h%'b#{faI7a '(2Ps#0
6
3.2.4. So sánh DSA và ECDSA.
.DP#7)*&+†1Nf12s*&+$5Dq
L8#U$C q\ $Hq/HL8#\
D1b#112$`,0&U'D$P1D'b
%{)*&+/*&+12r0*&+UP1A
$5D#^V€ //Pf##%q7
8112'f[1 , q-1].)*&+'f
[1, n-1]UP1A-1>E\U-€1b#kG/
/Pf#modulo n0
3.3. Đánh giá về chuẩn chữ ký số ECDSA
)DP#OD11^12D#u#<‰Š„
$`B.$‹/w=0YN1]'()*&+%&
w1u#<‰‰R712{CŒˆ&c/u#<‰‰Š7
Œ+B&ˆ/u#<‰‰‰7/Œˆ/u#RIII0
>\N1]'()*&+%U$D1
0)1q1>\DP#OD1
1O12†{/PWf0/H$D
1;8ACDf80Y8C
D81>?D10
YCDf$D1{P
CD%•Ž7$fq'qH?D
0Y18/H8#1{/8#D?Z?
D;f#{ mR0!D0
=X'D1OL?/†5/HP#OD%U$
D18Z1>$f#C/HP#OD
%U$DL?Ds
Ž&+ ;1>%'D\P#OD%U18A
%'D‡N{A0)l/HP#ODŽ&+8A%
'D<IRQ$;P#OD$51†^1>%'D
<…F$o81>$f#CN1N0w%18/P?DDq;
1/HDP#OD1N{A0
4. XÂY DỰNG CHƯƠNG TRÌNH
7
Ý tưởng xây dựng chương trình:
vL%U#>%P%Z18%Z8bV
%@'(#>DCP0
BV8b%Z^#A#1b-/u$f^'(7${#/"'(
1b'(V%@'8$?#C%N; 0&18V/u$f1O
'(/H'8'10
BC'C12/u$f8b%Z^#A#1b'b#
'(81"\V'7/8/•'0
Xây dựng chương trình:
)N;12/q$5•/&y75#`$#@
%\N;0
8