Tải bản đầy đủ (.doc) (44 trang)

MỘT SỐ THUẬT TOÁN KÝ VÀ XÁC NHẬN CHỮ KÝ ĐIỆN TỬ

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 (317.22 KB, 44 trang )

Khoá luận tốt nghiệp
Mục lục
Ngành: Công nghệ thông tin...................................................................................................1
Lời nói đầu...............................................................................................................................3
..................................................................................................................................................5
Chơng I......................................................................................................................................5
Một số khái niệm cơ sở.............................................................................................................5
1. 1. Kí hiệu và khái niệm......................................................................................................5
d là số nguyên dơng nhỏ nhất sao cho d = e trong , tức là d 1 (mod n). ......................7
1. 2. Logarit rời rạc.....................................................................................................................8
1. 3. Thặng d bậc hai và ký hiệu Legendre..........................................................................8
1. 4. Hàm một phía và hàm cửa sập một phía......................................................................8
1. 5. Thuật toán tính nghịch đảo...........................................................................................9
1. 6. Thuật toán phân tích ra thừa số....................................................................................10
Chơng II..................................................................................................................................11
Vấn đề mã hoá.......................................................................................................................11
2. 1. Đặt vấn đề......................................................................................................................11
2. 2. Khái niệm hệ Mật mã.....................................................................................................11
2. 3. Hệ mật mã RSA...............................................................................................................13
2. 3. 1. Định nghĩa sơ đồ hệ mật mã RSA ...........................................................................................13
2. 3. 2. Xét độ an toàn trong hệ mật mã RSA.......................................................................................14
Chơng III.................................................................................................................................15
Vấn đề ký điện tử................................................................................................................15
3. 1. Khái niệm ký điện tử.....................................................................................................15
3. 2. Sơ đồ chữ ký RSA............................................................................................................17
3. 2. 1. Sơ đồ chữ ký RSA.......................................................................................................................17
3. 2. 2. Chống giả mạo chữ ký .................................................................................................................18
3. 3. Sơ đồ chữ ký điện tử ELGamal.....................................................................................19
3. 3. 1. Sơ đồ chữ ký ELGamal...............................................................................................................19
3. 3. 2. Vấn đề giả mạo chữ ký..............................................................................................................20
3. 3. 3. Vấn đề Phá khóa theo sơ đồ ELGamal.....................................................................................24


3. 4. Chuẩn chữ ký số DSS (Digital Signature Standard).....................................................25
3. 5. Sơ đồ chữ ký 1 lần .........................................................................................................28
3. 6. Chữ ký không phủ định đợc..........................................................................................31
1.6. 1. Đặt vấn đề.................................................................................................................................31
6. 2. Sơ đồ chữ ký không phủ định đợc Chaum - van Antverpen.........................................................32
3. 6. 3. Các tính chất của sơ đồ Chaum - van Antverpen......................................................................33
3. 7. Sơ đồ chữ ký Fail - Stop..................................................................................................36
Chơng VI.................................................................................................................................39
Thử nghiệm ký điện tử bằng chơng trình........................................................................39
Hoàng Thị Thanh Liễu - K42 C
1
Trờng đại học quốc gia hà nội
Khoa công nghệ
Hoàng Thị Thanh Liễu
Một số thuật toán ký và
xác nhận chữ ký đIện tử
khoá luận tốt nghiệp hệ đại học chính quy
Ngành: Công nghệ thông tin


Hà Nội 6-2001
Trờng đại học quốc gia hà nội
Khoa công nghệ
Hoàng Thị Thanh Liễu
Một số thuật toán ký và
xác nhận chữ ký đIện tử
khoá luận tốt nghiệp hệ đại học chính quy
Ngành: Công nghệ thông tin
Cán bộ hớng dẫn: TS. Trịnh Nhật Tiến



Hà Nội 6-2001
Khoá luận tốt nghiệp
4. 1. Chơng trình mã hoá RSA................................................................................................39
4. 2. Chơng trình ký điện tử theo sơ đồ chữ ký RSA.........................................................43
Tài liệu tham khảo...............................................................................................................46
Hoàng Thị Thanh Liễu - K42 C
2
Khoá luận tốt nghiệp
Lời nói đầu
Truyền thông trên mạng đã, đang và sẽ phổ biến trong các hoạt động kinh tế
xã hội. Thông tin đợc truyền đi nhanh chóng, tiện lợi. Ngời ta có thể nói chuyện
với nhau, giải trí cùng nhau, mua bán trao đổi với nhau trên mạng,. . . khi cách xa
nhau hàng trăm ngàn cây số.
Việc mua bán trên mạng đợc thực hiện nh thế nào? Với một giao dịch mua
bán bình thờng, ngời mua và ngời bán xác nhận sự đồng ý mua bán bằng cách ký
tay vào cuối hợp đồng mua bán. Vì bằng cách nào đó ngời ta phải thể hiện đó là chữ
ký của họ và kẻ khác không thể giả mạo. Mọi cách sao chép trên văn bản thờng đều
bị phát hiện vì bản sao dễ bị phân biệt đợc với bản gốc. Mua bán trên mạng cũng đ-
ợc thực hiện theo cách thức tơng tự nh vậy. Nghĩa là ngời gửi và ngời nhận cũng
phải ký vào hợp đồng mua bán. Một số văn bản khác cũng cần phải xác nhận
trách nhiệm của ngời gửi đối với văn bản gửi đi tức là họ phải ký vào văn bản trớc
khi gửi. Nhng ký trên văn bản truyền qua mạng nh thế nào, khi tất cả nội dung
văn bản đều đợc biểu diễn dới dạng số hoá (chỉ dùng hai số 0 và 1 ta gọi văn bản
loại này là văn bản số). Việc giả mạo và sao chép lại đối với văn bản số là hoàn toàn
dễ dàng và không thể phân biệt đợc bản gốc với bản sao. Hơn nữa, một văn bản số
có thể bị cắt dán, lắp ghép là hoàn toàn có thể và ta không thể phân biệt đợc bản gốc
với bản sao. Vậy một chữ ký ở cuối văn bản loại này không thể chịu trách nhiệm
đối với toàn nội dung văn bản. Chữ ký nh thế nào thì mới thể hiện đợc trách nhiệm
đối với toàn bộ văn bản? Chắc chắn chữ ký đó phải đợc ký trên từng bít của văn bản.

Nh vậy thông tin trên mạng có thể bị lấy cắp, bị cắt dán, lắp ghép mà đối với
những văn bản cần ký tên hay cần sự xác nhận của ngời gửi đối với văn bản lại là
những văn bản quan trọng (nhất là trong các lĩnh vực quân sự, ngân hàng, thơng mại
điện tử), cần đợc bảo vệ an toàn khi truyền trên mạng. Mã hoá thông tin sẽ giúp
chúng ta bảo vệ thông tin an toàn.
Trở lại câu hỏi ký trên văn bản số đợc thực hiện nh thế nào? Thực chất của
việc ký điện tử là mã hoá. Việc xác nhận chữ ký là kiểm nghiệm việc mã hoá trên có
đúng không. Luận văn của em đi vào nghiên cứu tìm hiểu một số thuật toán ký và
xác nhận chữ ký thực chất là thuật toán mã hoá và việc kiểm tra việc mã hoá.
Hoàng Thị Thanh Liễu - K42 C
3
Khoá luận tốt nghiệp
Chơng I. Một số khái niệm cơ sở.
Trình bày những khái niệm làm cơ sở cho lý thuyết mã hoá thông tin và ký
điện tử.
Chơng II. Vấn đề mã hoá.
Trình bày khái niệm chung về hệ mật mã và một hệ mã khoá công khai - hệ
mật mã RSA.
Chơng III. Vấn đề ký điện tử.
Nghiên cứu chung về một số sơ đồ chữ ký, bao gồm một số thuật toán ký,
giao thức chối bỏ, giao thức kiểm thử . . .
Chơng IV. Một thử nghiệm ký điện tử theo sơ đồ chữ ký RSA.
Thử nghiệm mã hoá thông tin theo hệ Mật mã RSA và ký điện tử theo sơ đồ
chữ ký RSA.
Trong chơng trình thử nghiệm, việc mã hoá và ký là trên 1 văn bản với bộ
chữ cái tiếng Anh. Việc sử dụng với bộ chữ cái khác (nh bộ chữ cái tiếng Việt) cũng
tơng tự nh vậy. Chơng trình đợc viết bằng ngôn ngữ Turbo C/C++.
Hoàng Thị Thanh Liễu - K42 C
4
Khoá luận tốt nghiệp

Chơng I
Một số khái niệm cơ sở
1. 1. Kí hiệu và khái niệm
* Kí hiệu chia hết:
Cho a và b là hai số nguyên dơng.
- Số a chia hết cho số b ký hiệu là a b Tồn tại n N sao cho a = b*n,
- Khi đó ngời ta nói b là ớc của a và ký hiệu: b | a.
* ớc số chung lớn nhất:
Cho a và b là hai số nguyên dơng.
- Ước số chung lớn nhất của a và b là số tự nhiên m lớn nhất sao cho m | a và m | b.
Khi đó ký hiệu là ƯCLN(a, b) = m.
* Hai số nguyên tố cùng nhau:
Cho a và b là hai số nguyên dơng.
- Số a và số b đợc gọi là 2 nguyên tố cùng nhau ƯCLN (a, b) = 1.
*Đồng d modulo:
Cho n N, n 0 và a, b
*
n
Z
.
Kí hiệu a b (mod n) nghĩa là a đồng d với b theo mod n
tồn tại số nguyên k
*
n
Z
sao cho a = b+k*n
Tức là (a-b) = k*n, nh vậy n | (a-b).
* Một số tính chất của đồng d modulo:
(ab) (mod n) [(a mod n) (b mod n)] (mod n)
(a*b) (mod n) [(a mod n) *(b mod n)] (mod n)

Hoàng Thị Thanh Liễu - K42 C
5
Khoá luận tốt nghiệp

* Khái niệm Nhóm:
Nhóm là một cặp (G, *), trong đó G là tập hợp khác rỗng, * là phép toán hai ngôi
trên G thoả mãn ba điều kiện sau:
1. Phép toán có tính kết hợp:
(x*y)* z = x*(y*z) với mọi x, y, z G.
1. Có phần tử phần tử trung lập e G:
x*e = e*x = x với mọi x G.
3. Với mọi xG, có phần tử nghịch đảo x G:
x*x = x*x = e
* Nhóm Cyclic:
- Nhóm G đợc gọi là nhóm Cyclic nếu nó đợc sinh ra bởi một trong các phần
tử của nó. Tức là có phần tử g G mà mọi phần tử a G đều tồn tại số n N để g
n
= a.
- Khi đó g đợc gọi là phần tử sinh hay phần tử nguyên thuỷ của nhóm G.
Ví dụ: Nhóm cộng Z gồm các số nguyên là nhóm Cyclic có phần tử sinh là 1.
- Cấp của G là số phần tử của G nếu G có hữu hạn phần tử, và bằng nếu G
có vô hạn phần tử.
Ví dụ: Nhóm cộng Z gồm các số nguyên là nhóm Cyclic vô hạn.
- Nếu không tồn tại số tự nhiên n để g
n
=e thì G có cấp là .
- Trong trờng hợp ngợc lại, tồn tại số tự nhiên nhỏ nhất n mà g
n
= e thì G sẽ
gồm n phần tử khác nhau: e, g, g

2,
g
3,
.. . , g
n-1
. Khi đó G đợc gọi là nhóm Cyclic hữu
hạn cấp n.
- Phần tử G đợc gọi là có cấp d nếu d là số nguyên dơng nhỏ nhất sao
cho
d
= e. Nó có cấp 1 nếu = e.
Hoàng Thị Thanh Liễu - K42 C
6
Khoá luận tốt nghiệp
Chính vì lẽ trên, nhóm Cyclic còn đợc định nghĩa nh sau:
- Nhóm G đợc gọi là nhóm Cyclic nếu tồn tại số g sao cho mọi phần tử trong
G đều là một luỹ thừa nguyên nào đó của g.
* Nhóm con: Cho G là một nhóm, cho S G và S .
- S đợc gọi là nhóm con của G nếu
1. Phần tử trung lập e của G nằm trong S.
2. S khép kín đối với luật hợp thành trong G (tức là x*y S với mọi x, y S).
3. S khép kín đối với phép lấy nghịch đảo trong G (tức x
-1
S với mọi xS).
* Kí hiệu: Z
n
= {0, 1, 2, .. . , n-1}. Tức Z
n
là tập các số nguyên không âm < n.
Tập này cùng với phép cộng lập thành nhóm Cyclic có phần tử sinh là 1. Đó

là nhóm hữu hạn có cấp n.
*
n
Z
= {e Z
n
, e là nguyên tố cùng nhau với n}. Tức là e # 0.
- Đó là tập các số nguyên dơng < n, nhng nguyên tố cùng nhau với n.
-
*
n
Z
đợc gọi là tập Thặng d thu gọn theo mod n, lập thành một nhóm với phép
nhân mod n.
(n) là số các phần tử của tập
*
n
Z
.
* Một số kết quả: Những kết quả sau đã đợc chứng minh, nhắc lại để sử dụng.
- Định lý Lagrange: Cho G là nhóm cấp n và g G. Khi đó Cấp của g là ớc của n.
- Hệ quả: Giả sử g
*
n
Z
có Cấp m thì m là ớc của (n).
Nếu b
*
n
Z

thì b

(n)
1 (mod n).
Nếu p là số nguyên tố thì (p) = p-1.
Do đó với mọi b
*
p
Z
(tức b nguyên tố với p)
thì b

(p)
1 (mod n) hay b
p -1
1 (mod n).
- Định lý: Nếu p là số nguyên tố thì
*
p
Z
là nhóm Cyclic.
Chú ý Theo các định nghĩa trên ta có: phần tử
*
n
Z
có cấp d nếu
d là số nguyên dơng nhỏ nhất sao cho
d
= e trong
*

n
Z
, tức là
d
1 (mod n).
Hoàng Thị Thanh Liễu - K42 C
7
Khoá luận tốt nghiệp
1. 2. Logarit rời rạc
* Khái niệm Logarit rời rạc:
Cho p là số nguyên tố, là phần tử nguyên thuỷ của Z
p,

*
p
Z
Logarit rời rạc chính là việc giải phơng trình x = log

(mod p) với ẩn x.
Hay phải tìm số x duy nhất sao cho:
x
(mod p).
- Bổ đề: Nếu (a, n) = 1 thì tồn tại a
-1
Z
n
thoả mãn a * a
-1
1 (mod n)
- Định lý (Euler tổng quát): Nếu (a, n) = 1 thì a


(n)
mod n = 1
- Hệ quả: Với p là một số nguyên tố và (a, p) = 1 thì a
p-1
(mod p) = 1
1. 3. Thặng d bậc hai và ký hiệu Legendre
* Thặng d bậc hai:
Cho p là số nguyên tố lẻ, x là một số nguyên dơng p-1.
x đợc gọi là thặng d bậc hai mod p, nếu phơng trình
y
2
x mod p có lời giải.
* Kí hiệu Legendre:
Cho p là số nguyên tố lẻ, và a là một số nguyên dơng bất kỳ.
ký hiệu Legendre nh sau:
a 0 nếu a 0 mod p
= 1, nếu a là thặng d bậc hai mod p
b 1, trong các trờng hợp còn lại.
1. 4. Hàm một phía và hàm cửa sập một phía.
1. Hàm f(x) đợc gọi là hàm một phía nếu tính y = f(x) thì dễ,
nhng tính x = f
-1
(y) lại rất khó.
Ví dụ: 1. Hàm f(x) =
x
(mod p), với p là số nguyên tố lớn, ( là phần tử nguyên
thuỷ mod p) là hàm một phía.
- Hàm f(x) đợc gọi là hàm cửa sập một phía nếu tính y = f(x) thì dễ,
tính x = f

-1
(y) lại rất khó. Tuy nhiên có cửa sập z để tính x = f
-1
(y) là dễ.
Ví dụ: Hàm f(x) = x
a
(mod n) (với n là tích của hai số nguyên tố lớn n = p*q)
là hàm một phía. Nếu chỉ biết a và n thì tính x = f
-1
(y) rất khó nhng nếu biết cửa sập
p và q thì tính đợc f
-1
(y) là khá dễ.
Hoàng Thị Thanh Liễu - K42 C
8
Khoá luận tốt nghiệp
1. 5. Thuật toán tính nghịch đảo
Cho a
*
n
Z
, a
-1
đợc gọi là nghịch đảo của a a*a
-1
(mod n) = 1.
Một số thuật toán tính nghịch đảo:
1. Cho a
-1
chạy từ 2 đến n-1 đến khi đợc a*a

-1
(mod n) = 1.
2. Nếu biết (n) thì chỉ cần tính: a
-1
a

(n)-1
(mod n)
3. Dùng thuật toán Euclidean mở rộng nh sau:
Đầu vào: b và n.
Đầu ra: - nghịch đảo của b theo mod n nếu tồn tại,
- 0 nếu không tồn tại
Đặt n
0
= n;
b
0
= b;
t
0
= 1;
t
1
= 1;
q = n
0
/b
0
;
r = n

0
- q*b
0
;
while(r>0)
{
t
2
= t
0
- q*t
1
;
if(t
2
0 ) t
2
= t
2
mod n;
else t
2
= n- (- t
2
mod n);
t
0
= t
1
;

t
1
= t
2
;
n
0
= b
0
;
b
0
= r;
q = n
0
/b
0
;
r = n
0
- q *b
0
;
}
if(b
0
= = 1) return t mod n;
else return 0;
Hoàng Thị Thanh Liễu - K42 C
9

Khoá luận tốt nghiệp
1. 6. Thuật toán phân tích ra thừa số
Bài toán: cho n là tích của hai số nguyên tố lớn p và q, n = p*q, bài toán đặt ra là
nếu biết n, có cách nào để tìm đợc p và q không?
Hiện nay ngời ta cha có cách nào tính trực tiếp p, q hữu hiệu từ n trừ khi biết
(n). Vì khi biết (n), ta có:
p*q = n
(n) = (p-1)*(q-1)
p+q = n-(n)+1
Dựa vào định lý Viet p và q là nghiệm của phơng trình:
x
2
- (n-(n) +1)*x+n = 0
Giải phơng trình này ta dễ dàng tìm đợc p và q.
Ví dụ n = 84773093, (n) = 84754668 q = 9539, p = 8887.
Ngoài ra theo cách cổ điển, sử dụng thuật toán :
// Input: n
// Output: p thoả mãn p | n
//
// 0 trong trờng hợp ngợc lại
for( int i = 3; i< = sqrt(n); i+ = 2)
if (!n%i) return i;
return 0;
Trong thuật toán trên vòng lặp là (n
1/ 2
/2). Nếu n có 512 bit, giá trị lớn nhất
của n là 2
512
. Nếu 1 máy tính thực hiện 10
6

chỉ lệnh trong 1 giây thì thời gian thực
hiện là:
T = n
1/ 2
/2 2
1/2*512
/2 = 2
256
/2 = 2
255
(giây)
2
238
(ngày) 2
230
năm.
(1 ngày = 60*60*24 = 86400 giây 2
17
giây.
1 năm = 30*12*86400 giây = 31104000 giây 2
25
giây.)
Nếu kẻ giả mạo muốn tìm p, q theo cách này thì đây là điều không tởng.
Hoàng Thị Thanh Liễu - K42 C
10
Khoá luận tốt nghiệp
Chơng II
Vấn đề mã hoá
2. 1. Đặt vấn đề
Ta biết rằng tin truyền trên mạng rất dễ bị lấy cắp. Để đảm bảo việc truyền

tin an toàn, ngời ta thờng mã hoá thông tin trớc khi truyền đi. Việc mã hoá cần theo
quy tắc nhất định gọi là Hệ mật mã. Hiện nay có hai loại Mật mã: Mật mã cổ điển
và Mật mã khoá công khai. Mật mã cổ điển dễ hiểu, dễ thực thi nhng có độ an toàn
không cao. Vì giới hạn tính toán chỉ thực hiện trong phạm vi bảng chữ cái sử dụng
trong văn bản cần mã (ví dụ là Z
26
nếu dùng các chữ cái tiếng Anh, Z
256
nếu dùng
bảng mã ASCII . . .). Với các hệ mã cổ điển, nếu biết khoá lập mã hay thuật toán
lập mã, ngời ta có thể tìm ra ngay đợc bản rõ. Ngợc lại, các hệ mật mã khoá công
khai cho biết khoá lập mã K và hàm lập mã e
k
, thì cũng rất khó tìm đợc cách giải
mã. Và việc thám mã là rất khó khăn do độ phức tạp tính toán lớn. Vì thế trong ch-
ơng này, đầu tiên ta định nghĩa khái niệm về mật mã sau đó tìm hiểu Hệ mật mã
công khai RSA vì nó thiết thực cho ký điện tử.
Sau đây là khái niệm hệ mật mã.
2. 2. Khái niệm hệ Mật mã
Hệ mật mã đợc định nghĩa là bộ năm (P, C, K, E, D), trong đó:
1. P là một tập hữu hạn các bản rõ có thể.
2. C là một tập hữu hạn các bản mã có thể.
3. K là một tập hữu hạn các khoá có thể.
4. E là tập các hàm lập mã.
5. D là tập các hàm giải mã. Với mỗi k

K, có một hàm lập mã e
k

E,

e
k
: P

C, và một hàm giải mã d
k

D, d
k
: C

P sao cho d
k
(e
k
(x)) = x

x

P.
Hoàng Thị Thanh Liễu - K42 C
11
Khoá luận tốt nghiệp
Đờng đi của thông tin trong sơ đồ mã hoá nh sau:
Ngời gửi G Ngời nhận N

Kẻ tấn công H
Ngời gửi G muốn gửi một văn bản cho ngời nhận N, thay vì gửi văn bản bình
thờng, G mã hoá văn bản đó rồi mới gửi (tất nhiên phải cho ngời nhận biết khoá để
giải mã). Khi ngời N nhận đợc bản mã, họ dùng khoá do G gửi để giải mã thì mới

đọc đợc. Nếu H lấy cắp bản tin này trên mạng thì anh ta cũng không đọc đợc nếu
không có khoá mở.
L u ý:
1. Sau này khi nhắc đến các ký hiệu P, C, K, E, D, ta ngầm định chúng có ý
nghĩa nh trong định nghĩa sơ đồ chữ ký trên.
2. Đối với các hàm mã hoá e
k
(x), hàm lập mã d
k
(y), . . . thì đó là các ký hiệu
chung. Còn khi dùng chỉ số khác (nh G, H, N) thì ta ngầm định là do ngời gửi (G),
ngời nhận (N), hay kẻ tấn công (H) đa ra.
Sau đây ta xét một hệ mật mã cụ thể.
Hoàng Thị Thanh Liễu - K42 C
12
Khoá luận tốt nghiệp
2. 3. Hệ mật mã RSA
2. 3. 1. Định nghĩa sơ đồ hệ mật mã RSA
Cho n = p*q với p, q là số nguyên tố lớn. Đặt P = C = Z
n
Chọn b nguyên tố với (n), (n) = (p-1). (q-1).
Ta định nghĩa: K = {(n, a, b): a*b 1 (mod (n))}.
Giá trị n và b là công khai, và a là bí mật
Với mỗi K = (n, a, b), mỗi x P, y C, định nghĩa:
Hàm mã hoá:
y = e
k
(x) = x
b
mod n

Hàm giải mã:
d
k
(x) = y
a
mod n
Hình 1: Sơ đồ hệ mật mã RSA
Chú ý: Theo sơ đồ trên, ngời thờng ta chọn b trớc sau đó tính a = b
-1
.

Ví dụ 1
- Chọn p = 109, q = 409 khi đó
n = p*q = 109*409 = 44581,
(n) = (p-1)*(q-1) = 108*408 = 32*27*51 = 44064.
- Chọn b sao cho b nguyên tố với (n) tức là chọn b sao cho b không chia hết cho 2,
3 và 51.
Lấy b = 43*929 = 39947 khi đó a = b
-1
trong (n) a = 13475.
Khi đó phép lập mã và giải mã đợc tính:
e
k
(x) = x
b
mod n = x
39947
mod 44581
d
k

(x) = y
a
mod n = y
13475
mod 44581
Nếu lấy x = 9798, ta đợc y = 9229.
Hoàng Thị Thanh Liễu - K42 C
13
Khoá luận tốt nghiệp
2. 3. 2. Xét độ an toàn trong hệ mật mã RSA
Ta thấy hệ mật mã RSA chỉ đợc an toàn khi giữ bí mật khoá giải mã a và 2
thừa số p và q hay giữ bí mật (n).
Trờng hợp biết đợc p và q thì H dễ dàng tính đợc (n) = (q-1)*(p-1).
Khi biết đợc (n) thì H sẽ tính đợc a theo thuật toán Euclidean mở rộng.
Khi biết a thì toàn hệ thống sẽ bị phá vỡ ngay lập tức. Vì khi biết a, toàn bộ
khoá K = (n, a, b) đều đợc biết và H đọc ngay đợc bản rõ. Ngoài ra, H có thể lập mã
trên văn bản khác để gửi tiếp đến N. Mà ta biết việc H đọc đợc bản rõ hay lập mã
trên văn bản khác là cực kỳ nguy hiểm. Nhất là những thông tin liên quan đến an
ninh quốc gia, quân đội, ngân hàng. . .
Hoàng Thị Thanh Liễu - K42 C
14
Khoá luận tốt nghiệp
Chơng III
Vấn đề ký điện tử
3. 1. Khái niệm ký điện tử
* Kí điện tử là gì ?
* Kí điện tử nh thế nào ?
- Truyền trên mạng là các thông tin số hóa, tức là dãy các bít.
- Vậy phải kí trên từng bit một
Sơ đồ chữ ký là một bộ năm (P, A, K, S, V ), trong đó:

1. P là một tập hữu hạn các văn bản có thể.
2. A là một tập hữu hạn các chữ ký có thể.
3. K là một tập hữu hạn các khoá có thể.
4. S là tập các thuật toán ký.
5. V là tập các thuật toán kiểm thử.
6. Với mỗi K

K, có một thuật toán ký sig
K


S, sig
K
: P

A, và một thuật toán
kiểm thử ver
K


V, ver
K
: P
ì
A


{
đúng, sai
}

, thoả mãn điều kiện sau đây với mọi
x

P, y

A:
Ver
K
(x, y) = đúng, nếu y = sig
K
(x),
sai, nếu y # sig
K
(x).
Hoàng Thị Thanh Liễu - K42 C
15
Khoá luận tốt nghiệp
Ta hình dung một quá trình ký, nhận và kiểm thử nh sau:
- Ngời gửi G chuyển văn bản trên mạng cho ngời nhận N. Khi nhận đợc, N sẽ
kiểm thử xem chữ ký đó là đúng hay sai để hồi đáp lại cho G. Kẻ tấn công H có thể
đột nhập vào quá trình truyền thông tin từ G đến N, lấy cắp văn bản, giả mạo chữ ký
sau đó mới gửi đến N.
- Liệu H có thể giả mạo đợc không? Điều này là hoàn toàn có thể khi các
thuật toán ver
k
và sig
k
là các thuật toán đa thức, tập văn bản và tập chữ ký đều là hữu
hạn, thì H sẽ thử mọi trờng hợp có thể để đạt đợc điều kiện kiểm thử đúng.
- Cụ thể là để chuyển đi văn bản x, G ký y= sig

K
(x) sao cho ver
K
(x, y) = true.
Khi trộm đợc x, H kiểm tra với mọi y có thể trên x cho đến khi ver
K
(x, y) = true.
Hiện nay có nhiều loại sơ đồ chữ ký, sau đây em xin trình bày một số sơ đồ
chữ ký.
Hoàng Thị Thanh Liễu - K42 C
16
Ngời gửi G
Kẻ tấn công H Kiểm thử
Ngời nhận N
Khoá luận tốt nghiệp
3. 2. Sơ đồ chữ ký RSA
Thuật toán ký phải dựa vào hệ mã hoá bởi vì các thông tin cần đợc ký chắc là
các thông tin phải đợc giữ bí mật hoặc là phải tránh bị tấn công, do đó bản ký và cả
chữ ký đều cần đợc bảo mật. Trên cơ sở một số hệ mật mã, ngời ta đã xây dựng nên
các sơ đồ chữ ký tơng ứng. Sơ đồ chữ ký RSA đợc xây dựng dựa trên hệ mật mã
RSA.
3. 2. 1. Sơ đồ chữ ký RSA
Cho n = p*q với p, q là số nguyên tố lớn. Đặt P = A = Z
n
K= {(n, p, q, a, b): n = p*q, p, q là các số nguyên tố, a*b 1 (mod
(n))}.
Giá trị n và b là công khai, và các giá trị a, p, q là bí mật.
Với mỗi K = (n, p, q, a, b), x P ta định nghĩa:
y = sig
K

(x) = x
a
mod n, y A.
ver
K
(x, y) = đúng x y
b
(mod n).
Hình 2: Sơ đồ chữ ký RSA
Chú ý
- So sánh giữa sơ đồ chữ ký RSA và sơ đồ mật mã RSA ta thấy có sự tơng
ứng. Việc G ký vào x tơng ứng với việc mã hoá văn bản x. Thuật toán kiểm thử
chính là việc sử dụng hàm giải mã nh trong RSA để kiểm tra xem sau khi giải mã có
đúng là văn bản trớc khi ký không. Khi thuật toán kiểm thử là công khai, bất kỳ ai
cũng có thể kiểm thử chữ ký đợc.
- Nh vậy việc ký chẳng qua là một lần mã hoá, việc kiểm thử lại chính là việc
giải mã. Nh đã nói ở trên, cả văn bản gửi đi cũng cần phải đợc giữ bí mật. Do đó văn
Hoàng Thị Thanh Liễu - K42 C
17
Khoá luận tốt nghiệp
bản gửi đi x cần phải đợc mã hoá trớc khi gửi. Nhng giữa việc ký và mã hoá có mối
liên hệ gì không? Nên ký trớc hay mã hoá trớc?
3. 2. 2. Chống giả mạo chữ ký
* Giả sử G muốn gửi văn bản x cùng bản ký đến N, xuất hiện 2 cách xử lý :
a. Trờng hợp G ký y = sig
K
(x) trớc, sau đó sử dụng hàm mã hoá e
N
để mã hoá
cả x và y đợc z = e

N
(x, y) rồi gửi bản mã đến N. Khi N nhận đợc, đầu tiên dùng
hàm giải mã d
N
để đợc x, y sau đó kiểm tra ver
K
(x, y) = true?
b. Trờng hợp G mã hoá x trớc bằng z = e
N
(x) sau đó ký:
y = sig
G
(z) = sig
G
(e
N
(x)).
Tiếp theo gửi cặp (z, y) đến N. N giải mã z đợc x và dùng thuật toán kiểm thử
ver
G
với y để đợc x.
* Giả sử H lấy cắp đợc thông tin trên đờng truyền từ G đến N.
Trong trờng hợp a, H lấy đợc z.
Trong trờng hợp b, H lấy đợc (z, y).
- Nếu muốn tấn công văn bản x thì trong cả hai trờng hợp, H đều phải giải
mã thông tin lấy đợc. Nhng nếu muốn tấn công vào bản ký (để giả mạo) thì sao?
- Trong trờng hợp a, H phải giải mã z thì mới có thể tấn công vào chữ ký.
- Trong trờng hợp b, H sẽ thay chữ ký y của G bởi y = sig
H
(e

N
(x)), sau đó
gửi đến N. Khi nhận đợc, N kiểm thử thấy sai sẽ gửi phản hồi lại G. G có thể chứng
minh chữ ký đó là giả mạo và gửi văn bản cùng chữ ký đúng cho N nhng quá trình
truyền tin sẽ bị chậm lại. Nh vậy trong trờng hợp này, H có thể giả mạo chữ ký mà
không cần giải mã.
- Vì thế có lời khuyên là ta nên ký trớc khi mã hoá.
Hoàng Thị Thanh Liễu - K42 C
18

×