Tải bản đầy đủ (.docx) (25 trang)

XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN MÃ ECC( bao gồm code c)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (246.62 KB, 25 trang )


HỌC VIỆN KỸ THUẬT MẬT MÃ

BÀI TẬP LỚN
ĐỀ TÀI:
XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN MÃ ECC
Môn : Cơ Sở Lý Thuyết Mật Mã
Sinh viên thực hiện : Phạm Hữu Thiết
Tạ Thị Thanh Thùy
Tô Quang Hiền
Nguyễn Anh Tú

Giáo viên hướng dẫn : Hoàng Thu Phương
Lớp : AT8B
-Hà Nội,9/2014-
MỤC LỤC
Xây dựng chương trình mô phỏng thuật toán mã ECC
Lời mở đầu
Ngày nay với sự phát triển mạnh mẽ của công nghệ thông tin, truyền thông
nói chung và Internet nói riêng đã giúp cho việc trao đổi thông tin nhanh
chóng, dễ dàng, E-mail cho phép
người
ta nhận hay gửi
thư
ngay trên máy tính
của mình, E-business cho phép thực hiện các giao dịch trên mạng. Do vậy
một vấn đề phát sinh là thông tin có thể bị trộm cắp, có thể là sai lệch, có thể
giả mạo. Điều đó có thể ảnh
hưởng
tới các tổ chứa, các công ty hay cả một quốc
gia. Những bí mật kinh doanh, tài chính là mục tiêu của các đối thủ cạnh tranh.


Những tin tức về an ninh quốc gia là mục tiêu của các tổ chức tình báo trong và
ngoài nước.
Để giải quyết tình hình trên an toàn thông tin
được
đặt ra cấp thiết. Kỹ
thuật mật mã là một trong những giải pháp của an toàn truyên thông. Kỹ thuật
này có từ ngàn
xưa nhưng
nó đơn giản, ngày nay khi có mạng máy tính người ta
dùng mật mã hiện đại. Các nhà khoa học đã phát minh ra những hệ mật mã
nhằm che dấu thông tin cũng như là làm rõ chúng để tránh sự giòm ngó của
những kẻ cố tình phá hoại
như
các hệ mật: RSA, Elgamal… mặc dù cũng rất
an toàn nhưng có độ dài khoá lớn nên trong một số lĩnh vực không thể ứng
dụng được.
Chính vì vậy
người
ta đã phát minh một hệ mật đó là hệ mật trên đường
cong elliptic, hệ mật này
được
đánh giá là hệ mật có độ an toàn cao và hiệu
quả hơn nhiều so với hệ mật công khai khác, nó đã được ứng dụng trên
nhiều lĩnh vực và được sử dụng nhiều nơi trên thế giới tuy nhiên còn mới mẻ
ở Việt Nam. Trong
tương
lai gần, hệ mật trên
đường
cong Elliptic sẽ
được

sử
dụng một cách phổ biến và thay thế những hệ mật
trước
nó.
Vì lý do đó, nhóm em đã chọn đề tài “xây dựng chương trình mô phỏng hệ
mật ECC ” để nghiên cứu, tìm hiểu thêm về hệ mật trên đường cong Elliptic
nhằm tiến tới khai thác hệ mật này phục vụ cho bảo mật thông tin trong thực tế.
3
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
Chương 1. Cơ sở toán học
1.1. Cấu trúc đại số
1.1.1. Nhóm
- Định nghĩa: Nhóm là một tập hợp G ≠φ cùng với phép toán hai ngôi *
trên G. Với a, b ∈ G, a * b = ∈G thoả mãn tính chất sau:
* Tính kết hợp: (a * b) * c = a * (b * c) với mọi a, b, c ∈ G.
* Phần tử đồng nhất: Tồn tại e ∈G thoả mãn e * a = a *e = a với mọi a ∈
G (e
được
gọi là phần tử trung hoà).
* Phần tử nghịch đảo: với mỗi a ∈ G, tồn tại một phần tử b ∈G thoả mãn
b * a = a * b = e ( b là duy nhất và
được
gọi là phần tử nghịch đảo của a). Và
người
ta ký hiệu nghịch đảo của a bởi a
-1
.
- Nhóm Xyclic:
* G được gọi là nhóm Xyclic nếu nó chưa một phần tử a sao cho mọi phần tử

của G đều là lũy thừa nguyên nào đó của a
* a được gọi là phần tử sinh ( hay phần tử nguyên thủy của nhóm G)
1.1.2. Vành
Cho R ≠ 0 với phép toán 2 ngôi ( +, * ) được gọi là một vành nếu:
- Với phép cộng: R là nhóm Aben
- Với phép nhân:
* Tính kết hợp: a*(b*c) = (a*b)*c
* Tính phân phối: a*(b + c) = a*b + a*c
(b + c) *a = b*a + c*a
Nếu phép nhân có tính giao hoán thì tạo thành vành giao hoán. Nếu phép nhân
có nghịch đảo và không có thương 0 ( không có hai phần ≠0 ) mà tích của chúng
lại bằng 0 thì nó tạo thành miền nguyên.
4
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
1.1.3 Trường
Trường là một tập hợp F với hai phép toán “ + ” và “ * ” thỏa mãn tính chất:
- F là một vành
- Với phép “ * ”, F trừ phần tử 0 là nhóm Aben
Có thể nói là có các phép toán “ +, -, * , / ” số khác 0. Phép trừ được coi như là
cộng với số đối của phép cộng và phép chia là nhân với số đối của phép nhân
a- b = a+ (-b)
a/b = a.b
-1
1.2. Phần tử Sinh
* Định nghĩa: Cho α Z
*
n
. Nếu cấp của α = thì α được gọi là phần tử sinh của Z
n

*
( hay còn gọi là phần tử nguyên thủy ).
Nếu Z
n
*
có phần tử sinh thì Z
n
*
được gọi là nhóm xyclic.
VD: Z
20
*
có phần tử sinh hay không?
Z
20
*
không có phần tử sinh vì = | Z
20
*
| = 8
Nhưng max( ord(a) ) = 4 ≠ 8 với a Z
20
*
.
* Tính chất của phần tử sinh
- Z
n
*
có phần tử sinh nếu và chỉ nếu n = 2, 4, p
k

hoặc 2.p
k
. trong đó p là số
nguyên tố lẻ và k ≥ 1.
- Nếu α là 1 phần tử sinh của Z
n
*
thì:
Z
n
*
= { α
i
mod n | 0 ≤ i ≤ – 1
- Giả sử α là một phần tử sinh của Z
n
*
. Khi đó b = α
i
mod n cũng là phần tử sinh
của Z
n
*
nếu và chỉ nếu ( i, ) = 1
5
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
Nếu Z
n
*

là xyclic thì số phần tử sinh là
- α Z
*
n
là phần tử sinh của Z
n
*
nếu và chỉ nếu α^( ≠ 1 mod n đối với mỗi số
nguyên tố p của
VD : Z
25
*
là nhóm xyclic và có phần tử sinh α = 2. Tìm các phần tử sinh còn lại
của Z
25
*
.
+ Ta có n = 25 = 5
2
.
=> = 25.(1-1/5) = 20
+ = 20 = 2
2
.5 => = 8
+ α= 2 là phần tử sinh của Z
25
*

i Z
20

*
= {1, 3, 7, 9, 11, 13, 17, 19 }
=> 2
1
mod 25 = 2
2
3
mod 25 = 8
2
7
mod 25 = 2
5
.2
2
mod 25 = 3
……………………………
……………………………
……………………………
2
17
mod 25 = 22
2
19
mod 25 = 13.
Vậy các phần tử sinh của Z
25
*
là :
{ 2, 4, 8, 12, 13, 17, 22, 23 }
1.3 Phương trình đồng dư bậc hai và thặng dư bậc hai

* Ta xét
phương
trình đồng dư bậc hai có dạng như sau:
6
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
x
2
≡ a (mod n)
Trong đó n là số nguyên
dương,
a là số nguyên với gcd(a, n) ≡ 1, và x
là ẩn số. Phương trình đó không phải bao giờ cũng có nghiệm, khi nó
có nghiệm thì ta gọi a là thặng dư

bậc hai mod n.
Ngược
lại thì a gọi là một
bất thặng dư

bậc hai mod n.
Tập các số nguyên nguyên tố với n
được
phân hoạch thành hai tập con. Tập Q
n
các thặng dư

bậc hai mod n, và tập các bất thặng dư

bậc hai mod n.

* Ký hiệu Legendre
Cho p là một số nguyên tố lẻ và a là một số nguyên. Ký hiệu Legendre








p
a
được xác định như sau:







∈−
∈=









p
p
Qa1
Qa1
ap0
p
a
* Ký hiệu Jacobi
- Cho n≥ 3 là các số nguyên lẻ có phân tích . Khi đó ký hiệu Jacobi
k21
e
k
e
2
e
1
pp.pn 
=
được định nghĩa là

k21
e
k
e
2
e
1
p
a
p

a
p
a
n
a
























=








Ta thấy rằng nếu n là một số nguyên tố thì ký hiệu Jacobi chính là ký hiệu
Legendre.
- Tính chất của kí hiệu Jacobi
7
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
Cho
3n

là các số nguyên lẻ
Zb,a

. Khi đó ký hiệu Jacobi có các tính
chất sau:
(1)
1,0
n
a
=







hoặc
1

. Hơn nữa
0
n
a
=






nếu và chỉ nếu
( )
1n,aUCLN

.
(2)




















n
b
.
n
a
n
b.a
. Bởi vậy
*
n
Za

thì
1
n
a
2
=









(3)





















n

a
.
m
a
n.m
a
.
(4) Nếu
( )
nmodba

thì






=






n
b
n
a
.

(5)
1
n
1
=






(6)
( )
( )
2/1n
1
n
1

−=







. Bởi vậy
1
n

1
=







nếu
( )
4mod1n

1
n
1
−=







nếu
( )
4mod3n

(7)
( )

( )
8/1n
2
1
n
2

−=






. Bởi vậy
1
n
2
=






nếu
1n

hoặc
( )

8mod7

1
n
2
−=






nếu
3n

hoặc
( )
8mod5
(8)
( )
( )( )
4/1n1m
1
m
n
n
m
−−








=






8
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
Nói một cách khác






=






m

n
n
m
trừ phi cả hai số m và n đều đồng dư với
( )
4mod3
, trong trường hợp này






−=






m
n
n
m
.
Từ các tính chất của ký hiệu Jacobi ta thấy rằng n lẻ và
1
e
a2a
=

trong đó
1
a
là một số lẻ thì:
( )
( ) ( )
4/1n1a
1
1
e
1
e
1
1
a
amodn
n
2
n
a
n
2
n
a
−−
















=














=







Từ công thức này ta có thể xây dựng thuật toán đệ quy sau để tính






n
a

không cần phải phân tích n ra các thừa số nguyên tố .
1.4. Thuật toán Euclide mở rộng tìm số nghịch đảo
* Nếu GCD( m, b) = 1 thì tìm nghịch đảo của b theo modulo của m. Ta mở rộng
thuật toán Euclide
* Tìm UCLN (m,b)
* Tính nghịch đảo trong trường hợp GCD(m, b) = 1
B1. ( A
1
, A
2
, A
3
) = (1, 0, m); ( B
1
, B
2
, B
3

) = ( 0, 1, b)
B2. If B
3
= 0 then return A
3
= gcd (m, b) , no inverse
B3. If B
3
= 1 then return B
3
= gcd ( m, b); B
2
= b
-1
mod n
B4. Q = A
3
div B
3
B5. ( T
1
, T
2
, T
3
) = ( A
1
– Q*B
1,
A

2
– Q*B
2,
A
3
– Q*B
3
)
B6. ( A1, A2, A3) = ( B
1
, B
2
, B
3
)
9
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
B7. ( B
1
, B
2
, B
3
) = ( T
1
, T
2
, T
3

)
B8. goto B2
VD: cho b = 550, m = 1759 => 550
-1
mod 1759
Ta xét bảng sau:
Q A
1
A
2
A
3
B
1
B
2
B
3
_ 1 0 1759 0 1 550
3 0 1 550 1 -3 109
5 1 -3 109 -5 16 5
21 -5 16 5 106 -339 4
1 106 -339 4 -111 355 1
Thấy B
3
= 1 = GCD( 550, 1759)
=> 550
-1
mod 1759 = 355
10

AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
Chương 2. Đường cong elliptic
2.1. Đường cong elliptic thực
Một đường cong elliptic là một phương trình bậc 3 có dạng sau:
y
2
+ axy + by = x
3
+ cx
2
+ dx + e
Trong đó a, b, c, d, e là các số thực.
Trên các đường cong E ta xác định một phép cộng đặc biệt với một điểm O được
gọi là điểm vô cực. Nếu trên đường thẳng cắt đường cong E ở ba điểm thì tổng
của chúng bằng điểm vô cực O (điểm O này có vai trò như phần tử đơn vị trong
phép cộng này). Hình sau mô tả các đường cong E
y
2
= x
3
+ 2x + 5 và y
2
= x
3
- 2x + 1
2.2. Đường cong elliptic hữu hạn
11
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC

2.2.1. Phân loại
Có 2 dạng:
* Đường cong nguyên tố E
p
(a, b) được xác định trên Z
p
- Sử dụng các số nguyên modulo số nguyên tố
- Tốt cho phần mềm
* Đường cong nhị phân E
n
(a,b) xác định trên GF ( 2
n
)
- Sử dụng đa thức với hệ số nhị phân
- Tốt cho phần cứng
2.2.2. Định nghĩa đường cong eliptic trên trường Galois
Cho p>3 là số nguyên tố, đường cong elliptic y
2
= x
3
+ ax + b trên Z
p
là tập hợp
các nghiệm ( x,y) Z
p
x Z
p
để phương trình đồng dư: y
2
= x

3
+ ax + b ( mod p),
trong đó a,b Z
p
là các hằng số thỏa mãn 4a
3
+ 27b
2
≠ 0( mod p) cùng với một
điểm đặc biệt O được gọi là điểm vô cực
2.3. Các phép toán cộng và nhân trên các nhóm E
Ta định nghĩa phép toán trên E là phép cộng , do đó đường cong Elliptic E tạo
thành một nhóm Abel( nhóm các phép toán thực hiện trên Z
p
).
- Giả sử P = (x
1
, y
1
), Q = (x
2
, y
2
) là hai điểm thuộc E
p
(a,b). Phép cộng được định
nghĩa như sau:
* Nếu x
2
= x

1
, y
2
= - y
1
thì P + Q = 0
* P + Q = (x
3
, y
3
) trong đó :
x
3
= λ - x
1
– x
2
mod p
x
3
= λ (x
1
– x
3
) – y
1
mod p

12
AT8B – Học Viện Kỹ Thuật Mật Mã

Xây dựng chương trình mô phỏng thuật toán mã ECC
λ = nếu P
λ = nếu P
* P + 0 = 0 + P = P,
* Phép lấy nghịch đảo được tính toán khá dễ dàng.
Nghịch đảo của ( x, y) là – (x, y) và là (x, -y).
- Phép nhân
* Phép nhân trên nhóm E
p
(a, b) thực hiện tương tự như phép lũy thừa modulo
trong RSA
* Phép nhân kP nhận được bằng cách thực hiện k lần phép cộng
2.4. Các bước xác định điểm trên E
Cho E
p
(a, b). Ta cần xác đinh các điểm trên E
- Bước 1: với mỗi điểm x Z
p
ta xác định được mỗi z = y
2
= x
3
+ ax + b mod p
- Bước 2: kiểm tra xem z có phải là thặng dư bậc 2 trên Z
p
hay không?
- Bước 3: tính căn bậc 2 của z trên Z
p
, đó chính là các giá trị của y ứng với x
VD:

Cho E
7
(1, 6) . tìm các điểm thuộc E
Giải:
Ta có E: y
2
= x
3
+ x + 6
Trước hết ta tính các z = y
2
= x
3
+ x + 6 tương ứng như bảng dưới đây:
- Xét xem các giá trị z có thặng dư bậc 2 trên Z
7
hay không?
Ta có: Z
7
*
= { 1, 2, 3, 4, 5, 6 }
= 7 – 1 = 6 = 2.3
13
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
Giả sử a là phần tử sinh. a sẽ thỏa mãn:
<=> (1)
Xét với a= 2 không thỏa mãn (1)
Xét với a = 3 thỏa mãn (1) . Vậy a = 3 là phần tử sinh của Z
7

*
Ta có:
i 0 1 2 3 4 5
α
i
mod 7
1 3 2 6 4 5
=> Q
7
= {1, 2, 4 }
Với z là thặng dư bậc hai thì ta tính giá trị y là căn bậc hai trên Z
7
:
Ta có 7 3 mod 4 nên ta có:
+ với z= 1, ta tính căn bậc 2 của 1 mod 7
có r = 1
(7+1)/4
mod 7 = 1 . => hai căn bậc hai là 1 và 6.
x Z= y
2
= x
3
+ x + 6
mod 7
z Q
7
? y
0 6 không
1 1 có 1, 6
2 2 có 4,3

3 8 không
4 4 có 2,5
5 3 không
6 4 có 2,5

Chương 3. Mật mã trên đường cong Elliptic
14
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
Trong hệ mật này , bản rõ M được mã hóa thành một điểm P
M
trong tập hữu hạn
các điểm của nhóm
E
p
(a, b)
Ta xét 3 quá trình trong hệ mật ECC:
3.1. Quá trình tạo khóa
- Bước 1: Trước hết, ta chọn E
p
(a, b) . Chọn G là phần tử sinh với bậc lớn, tức
là n lớn sao cho
nG = 0.
- Bước 2: Hai người sử dụng A và B chọn khóa riêng của mình là n
A
và n
B
sao
cho n
A

n, n
B
n.
Ta tính các khóa công khai của A và B:
P
A
= n
A
x G
P
B
= n
B
x G
Công bố công khai P
A
và P
B
.
-Bước 3: Ta xác định được khóa công khai KCK: E
p
(a, b) , P
A
, P
B
.
Và khóa bí mật KBM : n
A
, n
B

.
3.2. Quá trình mã hóa
- B thực hiện : mã hóa M thành điểm P
M


E
p
(a, b)
- Bước 1: Nhận KCK: P
A
- Bước 2: chọn số k ngẫu nhiên và tính bản mã P
C
là một cặp điểm E
p
(a, b) theo
nguyên tắc:
P
C
=[ ( kG ), ( P
M
+ kP
A
) ]
15
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
Sau đó gửi P
c
cho A

3.3. Quá trình giải mã
A thực hiện
- Bước 1: A nhận P
C
- Bước 2: A tính P
M
= ( P
M
+ kP
A
) – n
A
( kG).
VÍ DỤ:
Cho E
11
( 1, 6), và G = ( 2, 7)
Khóa riêng của A và B lần lượt là n
A
= 3, n
B
= 4. Giả sử A cần gửi tin P
M
cho B.
Hãy mô phỏng quá trình mã hóa bản tin P
M
= ( 10, 9) và giải mã bản mã thu
được. Cho trước k = 3.
Giải:
* Tạo khóa công khai:

- P
A
= n
A.
G = 3G = 2G + G
Ta tính : 2G = G + G = ( 2, 7) + ( 2, 7) = ( x
3
, y
3
)
λ = mod 11 = 1 mod 11 = 1.
x
3
= λ
2
– x
1
– x
2
mod p = 1
2
– 2 – 2 mod 11 = -3 mod 11 = 8
y
3
= λ(x
1
– x
3
) – y
1

mod p = 1(2 – 8 ) – 7 mod 11 = -13 mod 11 = 9
Vậy 2G = ( 8, 9)
Ta tính 2G + G = ( 8, 9) + ( 2, 7) = ( x
3
, y
3
)
λ = mod 11 = mod 11 =3
-1
mod 11
=> λ = 4.
x
3
= λ
2
– x
1
– x
2
mod p = 4
2
– 8 – 2 mod 11 = 6
16
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
y
3
= λ(x
1
– x

3
) – y
1
mod p = 4( 8 – 6) – 9 mod 11 = -1 mod 11 = 10
Vậy 3G = ( 6, 10) hay P
A
= ( 6, 10).
- P
B
= n
B .
G = 4G = 3G + G = ( 6, 10) + ( 2, 7) = ( x
3
, y
3
)
λ = mod 11 = 3. 4
-1
mod 11
=> λ = 3.3 mod 11 = 9
x
3
= λ
2
– x
1
– x
2
mod p = 9
2

– 6 – 2 mod 11 = 7
y
3
= λ(x
1
– x
3
) – y
1
mod p = 9( 6 – 7 ) – 10 mod 11 = -19 mod 11 = 3
Vậy P
B
= ( 7, 3)
* Mã hóa: A thực hiện
Ta cần tính Pc = [ (kG ), (P
M
+ k P
B
) ]
= [ (6, 10 ), (10, 9)

+ 3(7, 3) ]
- Tính 3( 7, 3) = 2( 7, 3) + ( 7, 3)
Tính 2(7, 3) = ( 7, 3) + ( 7, 3) = ( x
3
, y
3
)
λ = mod 11 = 149. 6
-1

mod 11
= 149.2 mod 11 = 1
x
3
= λ
2
– x
1
– x
2
mod p = 1
2
– 7 – 7 mod 11 = -13 mod 11 = 9
y
3
= λ(x
1
– x
3
) – y
1
mod p = 1( 7 – 9 ) – 3 mod 11 = -5 mod 11 = 6
Vậy: 2 (7, 3) = ( 9, 6)
Tính 2( 7, 3) + ( 7, 3) = ( 9, 6) + (7, 3) = ( x
3
, y
3
)
λ = mod 11 = 3. 2
-1

mod 11
= 3.6 mod 11 = 7
17
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
x
3
= λ
2
– x
1
– x
2
mod p = 7
2
– 9 – 7 mod 11 = 0
y
3
= λ(x
1
– x
3
) – y
1
mod p = 7( 9 – 0 ) – 6 mod 11 = 2
Vậy 3.(7, 3 ) = ( 0, 2)
Tính ( 10, 9 ) + ( 0, 2) = ( x
3
, y
3

)
λ = mod 11 = 7. 10
-1
mod 11 =7.10 mod 11 = 4
x
3
= λ
2
– x
1
– x
2
mod p = 4
2
– 10 – 0 mod 11 = 6 mod 11 = 6
y
3
= λ(x
1
– x
3
) – y
1
mod p = 4( 10 – 6 ) – 9 mod 11 = 7 mod 11 =7
=> ( 10, 9 )+ ( 0, 2) = ( 6, 7 )
Vậy Pc = [ (6, 10), ( 6, 7) ]
* Giải mã
Tính P
M
= P

M
+ k.P
B
– n
B
.kG
P
M
= ( 6, 7) – 4. 3G = (6, 7) – 4.( 6, 10)
- Tính 4.( 6, 10) = 2.( 6, 10) + 2.( 6, 10)
Tính 2.( 6, 10) = ( 6, 10) + ( 6, 10)
λ = mod 11 = 11. 2
-1
mod 11 = 0
x
3
= λ
2
– x
1
– x
2
mod p = 0
2
– 6 – 6 mod 11 = -12 mod 11 = 10.
y3 = λ(x1 – x3) – y1 mod p = 0( 6 – 10 ) – 10 mod 11 = -10 mod 11 =1
2.( 6, 10) = ( 10, 1)
Tính 4.( 6, 10) = ( 10, 1) + ( 10, 1) = ( x
3
, y

3
)
λ = mod 11 = 151 mod 11 = 8
x
3
= λ2 – x1 – x2 mod p = 8
2
– 10 – 10 mod 11 = 0
18
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
y
3
= λ(x1 – x3) – y1 mod p = 8( 10 – 0 ) – 1 mod 11 = 2
=> 4( 6, 10) = ( 0, 2)
=> P
M
= ( 6, 7) – ( 0, 2) = ( 6, 7) + ( 0, 9) = ( x
3
, y
3
)
Ta có :
λ = mod 11 = -3
-1
mod 11
ta đã tính được 3
-1
mod 11 = 4
nên λ = - 4 mod 11 = 7

x
3
= λ2 – x1 – x2 mod p = 7
2
– 6 – 0 mod 11 = 10
y
3
= λ(x1 – x3) – y1 mod p = 7( 6 – 10 ) – 7 mod 11 = -2 mod 11 = 9
Vậy bản rõ ban đầu: P
M
= ( 10, 9)
Chương 4. Độ an toàn của hệ mật trên đường
cong elliptic
Sức mạnh của ECC nằm ở sự khó khăn đối với thám mã khi phải xác định
số ngẫu nhiên bí mật k từ kP và P. Phương pháp nhanh nhất dể giải bài toán này
là phương pháp phân tích S – Pollard. Để phá độ phức tạp tính toán khi dung
phương pháp này là 3,8.10
10
MIPS – năm với kích thước khóa 150 bít ( đây là số
năm cần thiết với một hệ thống tính toán có tốc độ hàng triệu lệnh/giây. Để so
sánh với phương pháp nhanh nhất phá RSA ( là phương pháp sàng trường số để
phân tích hợp số thành tích của hai số nguyên tố p và q ) ta thấy rằng với n có
19
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
kích thước 768 bít độ phức tạp tính toán là : 2.10
8
MIPS – năm, với n có kích
thước 1024 bít , độ phức tạp tính toán là 3.10
11

năm
Nếu độ dài khóa của RSA tăng lên tới 2048 bít thì cần 3.10
20
MIPS – năm , trong
khi đó với ECC chỉ cần độ dài khóa là 234 bít đã phải yêu cầu tới 1,6.10
28
MIPS
– năm.
Tóm lại: Độ an toàn của hệ mật ECC
- Phụ thuộc vào độ khó của việc xác định số nguyên ngẫu nhiên bí mật k khi biết
2 điểm P và kP
- Chính là bài toán logarit rời rạc trên ECC
- So sánh với RSA cùng mức an toàn thì hệ mật ECC có độ dài khóa nhỏ hơn.
Chương 5. Một vài ứng dụng
5.1. Lược đồ chữ ký số trên đường cong elliptic (Elliptic Curve Signature
Algorithm ) – ECDSA
Sơ đồ chữ ký ECDSA
được
xây dựng
tương
tự
như
sơ đồ chữ ký ElGamal.
Tuy nhiên các thuật toán ký và thuật toán kiểm thử
được
xây dựng dựa
trên
đường
cong Elliptic.
20

AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
Để thiết lập sơ đồ chữ ký ECDSA, cần xác định các tham số: lựa chọn đường
cong E trên trường hữu hạn F
q
với đặc số p sao cho phù hợp và
công khai cho tất cả mọi
người,
điểm cơ sở G


E(F
q
).
Một số khuyến nghị khi lựa chọn các tham số:
1. Kích thích q của
trường,
hoặc q = p (p>2) hoặc q= 2
m
.
2. Hai phần tử a, b thuộc F
q
xác định
phương
trình
đường
cong Elliptic:
y
2
= x

3
+ ax + b (p>2) hoặc y
2
+xy = x
3
+ax
2
+ b (p = 2).
3. Hai phần tử x
G
và y
G
thuộc F
q
xác định điểm cơ sở G = (x
G,
y
G
).
4. Bậc n của điểm G với n> 2
160
và n >4
* Sinh khoá
1. Chọn số ngẫu nhiên d trong khoảng [2, n-1 ] làm khoá bí mật
2. Tính Q = dG làm khoá công khai.
* Thuật toán ký trên bản rõ m
Người
dùng A ký lên thông điệp m theo các
bước
sau:

1. Chọn một số ngẫu nhiên k,
2
≤ k ≤ n

1
2. Tính kG = (x
1
, y
1
).
3. Tính r = x
1
mod n. Nếu r =0, quay lại
bước
1
4. Tính k
-1
mod n.
5. Tính s = k
-1
(m +dr) mod n. Nếu s = 0, quay lại
bước
1.
6. Chữ ký trên thông điệp m là ( r, s ).
* Thuật toán kiểm tra chữ ký
Người
dùng B kiểm tra chữ ký (r, s ) trên thông điệp m theo các
bước
sau:
21

AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
1. Kiểm tra r và s có là các số tự nhiên trong khoảng [ 2, n-1 ] không.
2. Tính w = s
-1
mod n.
3. Tính u
1
= mw mod n và u
2
= rw mod n.
4. Tính X = u
1
G + u
2
Q = (x
X
, y
X
).
5. Nếu X = O thì phủ nhận chữ ký.
Ngược
lại tính v = x
X
mod n.
6. Chữ ký chỉ
được
chấp nhận nếu v = r.
5.2. Độ an toàn của sơ đồ chữ ký ECDSA
Các hệ mã hoá

đường
cong elliptic đầu tiên
được
phát minh năm 1985 bởi Neal
Kobliz và Victor Miller. Tuy nhiên sơ đồ chữ ký ECDSA do Scott Vanstone
đưa ra năm 1992, được chấp nhận là chuẩn ISO vào năm 1998, là chuẩn
ANSI vào năm 1999, và là chuẩn IEEE vào năm 2000.
Độ an toàn của sơ đồ ký ECDSA dựa trên bài toán logarit rời rạc
đ
ư
ờng
cong
elliptic. Cho đến nay độ an toàn của các hệ mã hoá
đường
cong elliptic đã
được chỉ ra là rất an toàn và hiệu quả. Đối với bài toán logarit rời rạc
đường cong elliptic thì có nhiều thuật toán giải nó. Tuy nhiên chưa có thuật
toán nào có độ phức tạp tính toán trong thời gian đa thức.
Thuật toán giải bài toán logarit rời rạc
đường
cong elliptic tốt nhất hiện nay là
thuật toán Pollard’s Rho, phiên bản thiết kế theo
hướng
tính toán song
song. Theo đó với nhóm
đường
cong elliptic cấp n và có r máy tính cùng tính
toán thì phải mất
/ 2.r phép toán
Mặt khác người ta đã phân tích và chỉ ra rằng với hệ mã hoá dựa trên bài toán

logarit rời rạc
đường
cong elliptic có cùng độ bảo mật với hệ mã hoá dựa trên
bài toán phân tích số nguyên thành các thừa số nguyên tố
(như
RSA)
thì độ dài khoá của hệ mã hoá dựa trên
đường
cong elliptic có chiều dài khoá
ngắn hơn rất nhiều . Chẳng hạn với hệ mã hoá RSA có chiều dài khoá là 1024
bit thì hệ mã hoá bằng
đường
cong elliptic chỉ cần độ dài khoá 163 bit sẽ có
22
AT8B – Học Viện Kỹ Thuật Mật Mã
Xây dựng chương trình mô phỏng thuật toán mã ECC
độ bảo mật
tương đương.
Và do đó việc tính toán các tiến trình đối với các hệ
mã hoá
đường
cong elliptic là nhanh hơn rất nhiều.
23
AT8B – Học Viện Kỹ Thuật Mật Mã
KẾT LUẬN
Công nghệ thông tin đã và đang là một trong những lĩnh vực đem lại
nhiều lợi ích cho xã hội, nó không thể thiếu trong nền kinh tế hội nhập và
toàn cầu hoá. An toàn và bảo mật thông tin là một trong những yếu tố quan
trọng cho nhiều ứng dụng trong thực tiễn.
Trong quá trình nghiên cứu các giải pháp bảo mật người ta đã phát

minh hệ mã hoá công khai dựa trên
đường
cong elliptic. Cho đến nay hệ mã
hóa
đường
cong elliptic
được
xem là hệ mã hoá an toàn và hiệu quả nhất. So
với các hệ mã hoá công khai khác, ECC
được
xem là
ưu
việt hơn bởi ở cùng
độ bảo mật
như
nhau thì độ dài khoá trong ECC nhỏ hơn nhiều so với các hệ
mã hoá khác. Điều này dẫn tới các hệ mã hoá ECC có khả năng thực
thi nhanh hơn, hiệu quả hơn các hệ mã hóa công khai khác.
Mong rằng những vấn đề nhóm trình bày trong bài tập lớn này sẽ có ích
cho mọi người khi muốn tìm hiểu về HỆ MẬT ECC.
Trong quá trình làm đề tài không khỏi tránh những hạn chế nhất định,
mong cô giáo và bạn bè góp ý kiến để nhóm có thể hoàn thiện hơn
Tài liệu tham khảo
1. />uong-cong.html
2. GS.TS. Nguyễn Bình
TS. Trần Đức Sự - Giáo trình Cơ sở lý thuyết mật mã
3.

×