1. Trang chủ
  2. » Luận Văn - Báo Cáo

Chữ ký không thể phủ nhận và ứng dụng trong các giao dịch đặt hàng qua mạng

10 435 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 136,11 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

66 Chương 3...67 Xây dựng chương trình ứng dụng chữ ký không thể phủ nhận trong việc xác thực các giao dịch đặt hàng qua mạng ..... o ứng dụng trong các giao dịch đặt hàng qua mạng o Dịc

Trang 2

a b r a = b.q + r

Đ À M C Ô N G TH Ắ N G K H O A H Ọ C M Á Y TÍ N H K H Ó A 17

Bộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC sư PHẠM HÀ NỘI 2

ĐÀM CÔNG THẲNG

CHỮ KÝ KHÔNG IHẺ PHỦ NHẬN VÀ ÚNG DỤNG TRONG CÁC GIAO DỊCH ĐẶT HÀNG QUA MẠNG

LUẬN VĂN THẠC Sĩ MÁY TÍNH

Bộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC sư PHẠM HÀ NỘI 2

ĐÀM CỒNG THẮNG

CHỮ KÝ KHÔNG THẺ PHỦ NHẶN VÀ ỨNG DỤNG TRONG CÁC GIAO DỊCH ĐẶT HÀNG QUA MẠNG

Chuyên ngành: KHOA HỌC MÁY TÍNH

LUẬN VĂN THẠC Sĩ MÁY TÍNH

Người hướng dẫn khoa học: TS Lê Văn Phùng

HÀ NỘI, 2015

LỜI CẢM ƠN

Bằng sự kính trọng và lòng biết ơn sâu sắc, em xin chân thành cảm ơn TS Lê Văn Phùng, người đã tận tình hướng dẫn và giúp đỡ em trong suốt quá trình nghiên cứu và hoàn thành luận văn này

Em xin chân thành cám ơn các thầy cô trong khoa Công nghệ thông tin, phòng Sau đại học Trường Đại học Sư Phạm Hà Nội 2, các thầy cô trực tiếp giảng dạy các học phần trong toàn khóa học đã truyền thụ những kiến thức quý báu và tạo điều kiện cho em trong suốt quá trình học tập và nghiên cứu tại trường

Xin cảm ơn gia đình, bạn bè, đồng nghiệp đã quan tâm, giúp đỡ tôi trong suốt thời gian nghiên cứu và hoàn thành luận văn

Trong quá trình nghiên cứu, hoàn thiện luận văn khó tránh khỏi những thiếu sót Rất mong nhận được sự góp ý của quý thầy cô và bạn bè đồng nghiệp quan tâm đến luân văn này

Hà nội, tháng 12 năm 2015 Học viên

Đàm Công Thắng

LỜI CAM ĐOAN

Trong quá trình hoàn thành luận văn, tôi đã tìm hiểu, nghiên cứu, tổng hợp nhiều nguồn tài liệu khác nhau, dưới sự chỉ dẫn, giúp đỡ của giáo viên hướng dẫn, kết quả của đề tài là sản phẩm lao động của cá nhân tôi Các nguồn tài liệu sử dụng được trích dẫn rõ ràng, khoa học

Nội dung luận văn này chưa từng được công bố hay xuất bản dưới bất kỳ hình thức nào

và cũng không sao chép từ bất kỳ công trình nghiên cứu nào

Tôi xin cam đoan những điều trên hoàn toàn là đúng

Hà nội, tháng 12 năm 2015 Học viên

Đàm Công Thắng

1

MỤC LỤC TRANG BÌA PHỤ

LỜI CẢM ƠN LỜI

CAM ĐOAN

MỤC LỤC 1

DANH MỤC CÁC BẢNG 3

DANH MỤC CÁC HÌNH VẼ 4

Chương 1 5

Tổng quan về mã hóa dữ liệu và chữ ký số 5

1.1 Tổng quan về mã hóa dữ liệu 5

1.1.1 Ctf sở toán học của lý thuyết mật mã 5

1.1.2 Những vấn đề chung nhất về mã hóa dữ liệu 15

1.1.3 Giới thiệu một số hệ mã hóa cổ điển 17

1.1.4 Khái quát về các hệ mã hóa khóa hiện đại 24

1.2 Tổng quan về chữ ký số 29

1.2.1 Khái niệm về chữ ký số 29

1.2.2 Một số cách phân loại chữ ký số 34

1.2.3 Giới thiệu một số chữ ký số thông dụng 35 1.2.4 Đại diện tài liệu và hàm băm 40

1.2.5 Các ứng dụng của chữ ký số 41

Kết luận 44

Chương 2 45

Chữ ký số đặc biệt và chữ ký số không thể phủ nhận 45

2.1.Sơ đồ thuật toán và ứng dụng của một số loại chữ ký đặc biệt 45

2.1.1 Chữ ký “mù” RSA 45

2.1.2 Chữ ký mù nhóm 50

2.1.3 Chữ ký mù bội (Blind Multi Signature) 53

2 2.1.4 Chữ ký không thể phủ nhận 57

2.2 Stf đồ chữ ký không thể phủ nhận 58

2.2.1 Stf đồ chữ ký không thể phủ nhận Chaum - Van Antverpen 58 2.2.2 Tính hợp thức của các giao thức 59 2.2.3 Ví dụ về các giao thức kiểm thử và chối bỏ 62 2.2.4 Các ứng dụng chữ ký sổ không thể phủ nhận trong đời sống kinh tế -xã hội 65

Kết luận 66

Chương 3 67

Xây dựng chương trình ứng dụng chữ ký không thể phủ nhận trong việc xác thực các giao dịch đặt hàng qua mạng 67

3.1 Bài toán đặt ra và môi trường thử nghiệm 67

3.1.1 Bài toán 67 3.1.2 Môi trường thử nghiệm 67 3.2 Chức năng chính của chương trình và thuật toán sử dụng 68

3.2.1 Chức năng ký trên đtfn hàng và gửi đơn hàng chữ ký 68 3.2.2 Chức năng thực hiện giao thức kiểm thử 68 3.2.3 Chức năng thực hiện giao thức chối bỏ 70 3.3 Một số giao diện quan trọng trong chương trình 71

3 DANH MỤC CÁC BẢNG Bảng 1.1 Mô tả quá trình tính toán của thuật toán Euclid 6

Bảng 1.2 Mô tả quá trình tính toán của thuật toán Euclid mở rộng 8

Bảng 1.3 Tìm phần tử nghịch đảo của 3 trong z7 13

Bảng 1.4 Mô tả quá trình mã hóa của hệ mã hóa VIGENERE 22

4 DANH MỤC CÁC HÌNH VẼ Hình 1.1 Quá trình tạo chữ ký 31

Hình 1.2 Quá trình xác thực chữ ký số 33

Hình 2.1 Lưu đồ thuật toán chữ ký mù RSA 47

Hình 3.1 Sơ đồ chức năng ký trên đơn hàng và gửi đơn hàng kèm chữ ký 68

Hình 3.2 Sơ đồ chức năng thực hiện giao thức kiểm thử 69

Hình 3.3 Sơ đồ chức năng thực hiện giao thức chống chối bỏ: 71

Hình 3.4 giao diện nhập thông số chung 71

Hình 3.5 Giao diện nhập đơn hàng 72

Hình 3.6 Giao diện nhận đơn hàng 72

Hình 3.7 Giao diện kiểm thử của N và G 73

Hình 3.8 Thông báo xác nhận chữ ký 74

Hình 3.9 Thông báo yêu cầu thực hiện giao thức chối bỏ 74

Hình 3.10 Giao diện chương trình khi thực hiện với chữ ký giả mạo 74

Hình 3.11 Giao diện thực hiện giao thức chối bỏ 75

Hình 3.12 Thông báo chữ ký trong đơn hàng nhận được là giả mạo 75

Hình 3.13 Thông báo yêu cầu thiết lập lại giao dịch 76

5

Chương 1 Tổng quan về

mã hóa dữ liệu và chữ ký số

1.1 Tổng quan về mã hóa dữ liệu

1.1.1 Cơ sở toán học của lý thuyết mật mã

1.1.1.1 Khái niệm ước số, bội số

Cho hai số nguyên a, b (Ьф 0) Neu có một số nguyên q sao cho a=b*q, ta nói rằng a chia

hết cho b, kí hiệu b\a Ta nói b là ước của a và a là bội của b ước chung lớn nhất, bội chung nhỏ nhất

- Số nguyên dđược gọi là ước chung của các số nguyên ẵj, a 2 , ,â n , nếu nó là ước của tất cả

các số đó

- Số nguyên 727được gọi là bội chung của các số nguyên Й/, a 2 , ,a n , nếu nó là bội của tất

cả các số đó

- Một ước chung dcủa tất cả các số nguyên ẵj, a 2 , aatrong đó mọi ước chung của а 2 , ã 2 ,

âỊnđều là ước của d, thì dđược gọi là ước chung lớn nhất (gcd) của ãỊ, ã 2 , ■ • •> Я-П

Ký hiệu d=gcd(aj, a 2 , , ajhay d=gcd(a h а ъ , a n) '

- Nếu gcd(ai, a 2 , a„) =1 thì các số a Ị, a 2 , a n được gọi là nguyên tố cùng nhau

- Một bội chung m>OcủdL các số nguyên ã], Й2, a m trong đó mọi bội chung của ãj, ã 2 , ■■■,

đều là bội của m thì m được gọi là bội chung nhỏ nhất (BCNN) của

ã Ị, 3-2} ■■ -Ị äff

Ký hiệu m =lcm(a h а 2 , ã„)hay m=BCNN(a h а 2 , ãn).

+ z n ={ 0, 1,2, 11 - 1 } là tập các nguyên tố không âm < n

6

+ Z n * = { eeZj, eỉầ nguyên tố cùng nhau với n} Tức

Thuật toán Euclide tìm ước chung lớn nhất Bài toán:

- Input: Cho hai số không âm ã,b (a> b)

- Output: gcd(a,b)

Thuật toán mô phỏng bằng ngôn ngữ lập trình Pascals

Readln(ã, b)

While b>0 do Begin r:=a mod b; a:= b; b:=r; end; writeln(a);

Ví dụ: a = 30, b = 18; gcd(30,18) = gcd(18,12) = gcd(12,6) = gcd(6,0) = 6

Bảng 1.1 Mô tả quá trình tính toán của thuật toán Euclid

Thuật toán Euclỉde mở rộng Bài toán:

- Input: Cho hai số nguyên không âm ã, b (ã> b)

- Output: d = gcd(a, b)vầ hai số X, y sao cho ax + by = d

- Thuật toán:

1 Nếu b = 0 thì đặt d <- a, X <- 1, y <— 0 và cho ra (d, X, y)

2 Đặt x2 = 1, Xj = 0, y2 = 0, yi = 1

7

3 Trong khi còn b > 0 thực hiện:

3.1 q <— a div b, r <— a mod b, X <— x2 - qxj, y <— y2 - qyi

3.2 a <- b, b <- r, x2 <r- x1; Xj <-x,y 2 <- yi và yi <r- y.

4 Đặt d <— a, X <— x2, y <r- y2, và cho ra kết quả (d, X, y)

Ở đây d <— a giống như trong ngôn ngữ tựa Pascal là d:=a (gán giá trị a vào biến d) Mô

phỏng thuật toán bằng ngôn ngữ Pascal:

Readln(a,b)

IF b = 0 THEN Begin

d:=a; x:=l; y:= 0;

Writeln( d, X, y);

End ELSE

Begin x2:=l; xl:= 0; y2:=0; yl:=l;

While b>0 Do Begin

q:= a div b; r:= a mod b;

x:= x2 -q*xl; y:=y2-q*yl;

a:= b; b:=r; x2:=xl; xl:= x; y2:=yl; yl:=y;

end;

d:=a; x:=x2; y:=y2;

writeln ( d, xl, x2);

end;

Ví du:

8

Dùng thuật toán Euclide mở rộng cho các số a = 4864 và b = 3458, lần lượt được các giá

trị sau đây cho các bien a, b, q, r, X, y, Xi, x2, yi, y2 (sau mỗi chu trình thực hiện hai lệnh 3.1 và 3.2)

Bảng 1.2 Mô tả quá ứình tính toán của thuật toán Euclid mở rộng

Trang 3

38 0 2 0 -91 128 -91 32 128 -45

Vì t = v 2 = -2 <0 c 0 đó X = a' 1 := t+n = -2 + 7 = 5

Dễ thử lại rằng sau mỗi lần thực hiện chu trình gồm hai lệnh 3.1 và 3.2 các giá trị X, y,

rthu được luôn thỏa mãn 4864 x+ 3458.^= r, và do đó khi kết thúc các vòng lặp (ứng với giá trị

b = 0), thực hiện tiếp lệnh 4 ta được kết quả d = 38, x=32 và y= - 45, cặp số (32, -45) thỏa mãn

4864.32 + 3458 (-45) = 38

Thuật toán cho kết quả*: GCD(4864, 3458) = 38

1.1.1.2 Quan hệ đồng dư

Khái niệm

Cho các số nguyên a, b, m (m>0) Ta nói rằng a và b đồng dư với nhau theo modul m nếu

chia a và b cho m, ta nhận được cùng một số dư.

Ký hiệu a = b (mod m)

Ví dụ: \7 = 5 ( mod 3)y\ chia 77và J"cho 3 được cùng số dư là 2 Nhận xét các mệnh đề sau đây là tương đương: a=b( modm) m\(a-b)

Tồn tại số nguyên í sao cho a = b +mt

Các tính chất của quan hệ đồng dư

9

1/ Quan hệ đồng du là quan hệ tương đương z

Với mọi số nguyên dương /nta có

a = a( mod m) V ới mọi a^Z\{ Tính chất phản xạ)

a = b( mod m) thì b = a ( mod т), ( Tính chất đối xứng)

а = b (modm) và b = с ( modm)\h\ a = с (modm); ( Tính chất bắc cầu) 2/ Tổng hay hiệu các đồng dư ( a + b)(modn) = [( amodn) +

(bmodn) ] (modn) (a - b)(modn)= [(a modn) - (b modn)] (modn) Tổng quát:

Có thể cộng hoặc trừ từng vế nhiều đồng dư thức theo cùng modulo m, ta được một đồng

dư thức theo cùng modulo m tức là:

Nếu ãj = bj(modm), i = 1, 'Ztja ] ='Ztjb 1 (moảm) với tj±l

i= 1 1=1 3/ Tích cắc đồng dư

(a*b)(modn) = [(a modn) * (bmodn)] (modn) Tổng quát:

Có thể nhân từng vế với đồng dư thức theo cùng một modulo m, ta được một đồng dư

thức theo cùng modulo m, tóc là

к к

Nếu ãị = bj (modm) với i=l, .k, thì ta có п = П bj{mod nì)

Hệ quả

+ Có thể cộng hoặc trừ cùng một số vào hai vế của một đồng dư thức.

+ Có thể chuyển vế các số hạng của đồng dư thức bằng cách đổi dấu các số hạng đó

+ Có thể cộng vào một vế của đồng dư thức một bội của modulo a = b

(modm) => a +km = b (modmỳvới mọi к + Có thể nhân hai vế của một

đồng dư thức cùng với một số: a=b( mod m) ac = be ( mod m) với mọi с G

z

10

+ Có thể nâng lũy thừa bậc nguyên không âm cho 2 vế của một đồng dư thức a=b(mod m) =>đ" =

tí 1 ( mod m) với mọi n e

+ Có thể chia 2 vế đồng dư thức cho một ước chung nguyên tố với modulo c\a, cXb, (c,m)=l, a = b(

mod m) ^>a/c= b/c( mod m)

+ Có thể nhân 2 vế đồng dư thức và modulo cùng với một số nguyên dương:

Nếu a = b (modm), c>0 =>ac = bc(modmc)

+ Có thể chia 2 vế đồng dư thức và modulo cho cùng một số nguyên dương là ước chung của chúng:

Nếu c/(a, b, m) => a/c = b/c (modm/c) + a = b(

modm )=> a=b( modk) với kị m + a = b (mod m )

=> gcd(a, m) = gcd( b,m)

Các lớp thặng dư

- Quan hệ “đồng dư” theo modulo m trên tập z( tập các số nguyên) là một quan hệ tương đương ( vì có tính chất phản xạ, đối xứng, bắc cầu), do đó nó tạo ra trên tập z một phần

hoặc chỉ gồm các lớp tương đương khi và chỉ khi chúng có cùng một số dư khi chia cho m

- Mỗi lớp tương đương đại diện bởi một số duy nhất Z m = {0, 1,2, m-1} là

số dư khi chia các số trong lớp cho m, ký hiệu một lớp được đại diện bởi số ã là /ạ/^ Như vậy

[â] m = [b] m <=> ã = b (modm)

Vì vậy ta có thể đồng nhất Z m với tập các lớp tương đương theo modulo m

- Z m = {0, 1, 2, ,m-l} được gọi là tập các thặng dư đầy đủ theo modulo m Mọi số nguyên bất kỳ

đều có thể tìm được trong Z m một số đồng dư với mình theo modulo m

1.1.1.3 Số nguyên tố

Khái niệm

Số nguyên tố là số tự nhiên lớn hơn 1 và chỉ có hai ước là 1 và chính nó

Ví dụ: Các số 2, 3, 5, 7, 11, 13, 17, 19, 31, 37 là số nguyên tố

11

Một số định lý về sỗ nguyên tổ

- Định lý về số nguyên dương lớn hơn 1 : Mọi số nguyên dương n> 1 đều có thể biểu diễn được duy nhất dưới dạng n= lộỉ^ 2 trong đó: k, n là các số tự nhiên,

Pị(i= 1, 2,3, ,k) là các số nguyên tố, từng đôi một khác nhau.

- Định lý Mersence: Cho p=ỉ — 1, nếu plà số nguyên tố thì irphải là số nguyên tố Hàm Euler

Cho số nguyên dương a, số lượng các số nguyên dương bé hơn n và nguyên tố cùng nhau

với 27 được ký hiệu 0(/O và gọi là hàm Euler [3]

Nhận xét: Neu p là số nguyên tố, thì O(p) — p— 1 Ví dụ:

Tập các số nguyên không âm nhỏ hơn 7 là z7 = { 0, 1, 2, 3, 4, 5, 6}

Do 7 là số nguyên tố, nên tập các số nguyên dương nhỏhơn 7 và nguyên tố cùng nhau với 7 là z7* ={ 1, 2, 3, 4, 5, 6} Khi đó I Z| = 0(/?) = p — 1 = 7 - 1 = 6

Định lý về hàm Euler

Nếu n là tích của hai số nguyên tố p, q thì 0(i7) = 0(p).0(q) = (p—l)(q—ĩ) Định lý

Ferma

Nếu p là số nguyên tố, a là số nguyên thì ỉ = a(modp)

Neu p nguyên tố, p không chia hết cho âthì a^ 1 =l(mod p)

Ví dụ: 4 7 = 4(mod 7); 4 7 ' 1 =1 (mod 7)

Định lý Euler

Nếu gcd(a, m) = 1 thì a^ (m) = l(mod/w)

Trường hợp m là số nguyên tố, ta có định lý Ferma.

Ví dụ ĩ m = 10,0 (m)= o (2) 0 (5)=1*4=4.

Ta có /= 1(mod 10), 9*-1(mod 10), 21 4 =\( mod 10)

Hệ quả 1

Nếu gcd(c, m)=l và a —b(mod <D (m))yởi a,b\ầ các số tự nhiên thì

12

đ = (ỳ(modm) và suy ra (f = ífmod ° (/n) (mod/72).

Nhận xét : Hệ quả trên giúp giảm nhẹ việc tính toán đồng dư của lũy thừa bậc cao

Ví dụ : Ta thấy 0(15) = 0(5) 0(3) = 4*2 =8 và 1004 = 4 (mod 8)

Do đó 21004 ( mod 15) = 24(mod 15) = 16 ( mod 15) = 1

Hệ quả 2

Nếu các số nguyên G, dthỏa mãn e.d — 1 ( mod ® (m)X thì với mọi số c nguyên tố cùng nhau

với m, ta có (đý —c(mod m)

Hệ quả này đóng vai trò then chốt trong việc thiết lập các hệ mã mũ sau này ví dụ: RSA

1.1.1.4 Phần tử nghịch đảo đối với phép nhân trong Z n theo mod n Định nghĩa:

Cho ã eZ m nếu tồn tại b £iZ n sao cho a.b=\(vaoăiì), ta nói b là phần tò nghịch đảo của a trong

Z n và ký hiệu ã 1

Một phần tử có phần tử nghịch đảo được gọi là phần tử khả nghịch.

Định lý:

gcd(a, n) = 1 «phần tử a G Z n cỏ phần tử nghịch đảo.

Chứng minh:

Nếu a ã1 =1 (modn)thì a ã]= 1+kn <-> a ã1 -kn = 1 -+(a, n) = 1.

Nếu (a,n) = 1, ta có a ã 1 +kn = 1 a ã 1 = 1 +kn do đó a ã 1 = 1(mod n).

Thuật toán Euclid mở rộng tìm phần tử nghịch đảo:

Input: n, a eZn

Output: phần tò nghịch đảo của a

Mô phỏng thuật toán bằng ngôn ngữ lập trình Pascal:

Procedure Invert(a,n);

Begin

13

g0:=n; gi:=a; u0:=l; Ui:=0; v0 :=0; Vi:=l;

i:=l;

While gi Ỷ 0 do

Begin

y:= gi_i div gi; gi+i := gi_i - y.gi;

Ui+i:= Uj.1 - y.Ui; vi+i:= Vi_i - y.vi;

i:=i+l;

End; t:= vi+i;

if t>0 then a_1:=t else a'^t+n;

End;

Ví dụ: Tìm phần tử nghịch đảo của 3 trong z7

Tức là phải giải phương trình 3.x = 1 ( mod 7), X sẽ là phần tử nghịch đảo của 3 Bảng

1.3 Tìm phần tử nghịch đảo của 3 ứongZ 7

Vậy 5 là phần tò nghịch đảo của 3 trong z7

Định lý Euler tổng quát Nếu ( a, n) = 1 thì â ^ mod n = 1 Hệ quả : Nếu p

là số nguyên tố và ( a, p) = 1 thì ap l(mod p) = 1 1.1.1.5Nhóm Cyclic Ký hiệu: Zn

zn * = { X e zn, X là nguyên tố cùng nhau với n }

14

Khái niệm Nhóm Cyclic:

Nhóm (G, *) được gọi là Nhóm Cyclic nếu nó được sinh ra bởi một phần tử g e G Tức

là với mỗi a e G, đều tồn tại số n e N để g n = g * * g = a Khi đó g được gọi là phần tò sinh hay phần tử nguyên thuỷ của nhóm G [3]

Trong lý thuyết số, người ta đã chứng minh được các tính chất sau đây của các phần tử nguyên thuỷ:

1/ Với mọi số nguyên tố p, Zp là nhóm Cyclic, và có <|)(p-l) phần tử nguyên thuỷ.

2/ Nếu p - 1 = Pi‘ P2 Ps’ là khai triển chính tắc của p - 1, và nếu

a Pl = 1 (modp), a Ps =l(modp)

thì a là phần tử nguyên thuỷ theo mod p (tức của Zp)

3/ Nếu g là phần tử nguyên thuỷ theo mod p, thì Ị3= ^ mod p với mọi imà gcd(i, p -1) = 1,

cũng là phần tử nguyên thuỷ theo mod p

Định lý 1:

Nếu p là số nguyên tố thì Zp* là nhóm Cyclic Nếu beZn* thì b^^lộnod n) Nếu p-số nguyên tố thì (p(p) = p-1 Do đó với beZp*, tức b nguyên tố với p, thì b^^límod n) hay bp l -l(mod n)

Đinh lý 2:

Ej-i.

Cho p là một số nguyên tố, và g e Zp Khi đó, g là phần tử sinh <=> g q S2Ẽ 1 (mod p) đối với mọi ước số nguyên tố q của p - 1

Ví du:

Cho p = 19 Khi đó p - 1 = 18 = 2.32 Bây giờ giả sử lấy g = 2 e z19*, xét 2 có phải là phần tử nguyên thủy hay không?

Ta có (p-l)/2 =9 và (p-l)/3 = 6 và thấy ngay rằng hệ đồng dư thức sau là đúng:

26 Ỷ 1 mod (19) và 2V 1 mod(19)

Do đó, 2 là một phần tò nguyên thủy trong z*19

15

ĐinhlỶ3:

Xét tập hợp z*p, trong đó p là số nguyên tố Giả sử g là một phần tử nguyên thủy trong z*p Khi đó, mỗi một phần tò bất kỳ a e z*n, đều tồn tại một j nguyên (j > 1) sao cho a = g1 ; số a

là phần tò nguyên thủy nếu và chỉ nếu gcd(j, p-l)=l Như vây, có bao nhiêu số j mà nguyên tố với p-1 thì sẽ có bấy nhiêu phần tử nguyên thủy trong z*p

Ví du :

Xét z*467, theo lý luận trên thì 2 là một phần tử nguyên thủy trong z*4 67, do đó ta

sẽ tìm tất cả các phần tử nguyên thủy dạng 2J với j thỏa mãn điều kiện

gcd(j, p-l)=l, tức là gcd(j, 467-1) = gcd(j,466) = 1 Vì 466 = 2.233, nên mọi j không phải là số chẵn và thỏa mãn điều kiện 1 < j < 233 thì

2 J đêu là phân tò nguyên thủy.

Cấp (Bậc) của Nhóm Cyclic:

Cho (G, *) là Nhóm Cyclic với phần tử sinh g và phần tử trung lập e

Nếu tồn tại số tự nhiên nhỏ nhất n mà g° = e, thì G sẽ chỉ gồm có n phần tò khác nhau: e, g, ị?, g 3 , , g n 1 Khi đó ơđược gọi là nhóm Cyclic hữu hạn cấp n Nếu không tồn tại số tự nhiên n để g n = e,

thì Gcó cấp oo

Ví dụ: (Z + , +) gồm các số nguyên dương là nhóm Cyclic với phần tò sinh g = 1, e = 0 Đó là

Nhóm Cyclic vô hạn, vì không tồn tại số tự nhiên n để g n = e

Cấp (Bậc) của một phần tử trong Nhóm Cyclic:

Phần tò a E G được gọi là có cấp d, nếu d là số nguyên dương nhỏ nhất sao cho a d = e,

trong đó elà phần tử trung lập của G

1.1.2 Những vẩn đề chung nhất về mã hóa dữ liệu

1.1.2.1 Giới thiệu về mã hóa

Đe đảm bảo An toàn thông tin lưu trữ trong máy tính (giữ gìn thông tin cố định) hay đảm bảo An toàn thông tin trên đường truyền tin (trên mạng máy tính), người ta phải “Che giấu” các thông tin này

16

“ Che ” thông tin (dữ liệu) hay “ Mã hóa” thông tin là thay đổi hình dạng thông tin gốc,

và người khác khó nhận ra

Hệ mã hóa được định nghĩa là một bộ năm (P, c, K, E, D), trong đó:

- Plà một tập hữu hạn các bản rõ có thể

- clà một tập hữu hạn các bản mã có thể.

- K\k tập hữu hạn các khóa có thể.

- Elà tập các hàm lập mã.

- D là tập các hàm giải mã.

Với khóa lập mã Ẩee K có hàm lập mã eke& E,eke\P—> c Với khóa giải mã Èd^K có hàm giải mã dkdELE,dkd\P—>C sao cho: dkd{eks{x)) - X ,V XG p

Ở đây X được gọi là bản rõ, ekei^x) được gọi là bản mã.[6]

Mã hoá nhằm đảm bảo các tính chất sau của thông tin:

Tính bí mật ( Confidentiality): thông tin chỉ được tiết lộ cho những ai được phép.

Tính toàn vẹn (Integrity): thông tin không thể bị thay đổi mà không bị phát hiện.

Tính xác thực (Authentication): người gửi (hoặc người nhận) có thể chứng minh đúng họ Tính không chối bỏ (Non-repudiation): người gửi hoặc nhận sau này không thể chối bỏ việc

đã gửi hoặc nhận thông tin [5]

1.1.2.2 Phần loại hệ mã hóa 1/ Hệ

mã hóa khóa đối xứng

Mã hóa khóa đối xứng là Hệ mã hóa mà biết được khóa lập mã thì có thể “dễ” tính được khóa giải mã và ngược lại Đặc biệt một số Hệ mã hóa có khóa lập mã (ke) và khóa giải mã trùng nhau (kd), như Hệ mã hóa “dịch chuyển” hay DES

2/Hệ mã hóa khóa công khai

17

- Hệ mã hóa khóa công khai hay Hệ mã hóa phi đối xứng do Diffie và Hellman phát minh vào những năm 1970

- Hệ mã hóa khóa phi đối xứng là Hệ mã hóa có khóa lập mã và khóa giải mã khác nhau

{ke ^kd), biết được khóa này cũng “khó” tính được khóa kia.

- Khóa lập mã cho công khai, gọi là khóa công khai (Public key)

- Khóa giải mã giữ bí mật, còn gọi là khóa riêng (Private key) hay khóa bí mật

Sơ đồ: ( Pivest, Shamir, Adleman đề xuất năm 1977)

- Tạo cặp khóa bí mật và khóa công khai (a, b):

Chọn bí mật số nguyên tố lớn p, q, tính n=p*q, công khai n đặt p= C=Z n

- Tính bí mật 0(/7) = (p—1) * (<7—1) Chọn khóa công khai b< O(Ậ), nguyên tố cùng nhau

0(/7)

- Khóa bí mật a là phần tử nghịch đảo của b theo 0(77): a * b= l(modO(/7))

- Tập cặp khóa ( bí mật, công khai) Á"= / a,b^Z n ,a* b = l(modO(/7))|

Với bản rõ Xe p và bản mã y& c , định nghĩa:

- Hàm mã hóa: ỵ= e k {j?) = ỉt modn

- Hàm giải mã: X— d k (ỳ) — Ỷ mod/2

1.1.3 Giới thiệu một số hệ mã hóa cỗ điển

Hệ mã hóa đối xứng đã được dùng từ rất sớm, nên còngọi là Hệ mã hóa đối xứng - cổ điển ( gọi ngắn gọn là Hệ mã hóa đối xứng cổ điển) Trong hệ mã hóađối xứng cổ điển bản mã hay bản rõ là dãy các ký tự Latin

Lập mã: thực hiện theo các bước sau:

Giải mã: thực hiện theo các bước sau:

18

Để chuyển từ CHỮ sang SỐ hay ngược lại từ SỐ trở về CHỮ, người ta theo một quy ước

nào đó, ví dụ chữ cái thay bằng số theo modulo 26 như sau:

Đe thực hiện mã hóa hay giải mã với các “sỗ”, người ta dùng các phép toán số học theo

modulo 26

Mã hóa cổ điển gồm nhiều hệ, ví dụ:

Hệ mã hóa dịch chuyển: Khóa có 1 “chìa” (Thể hiện bằng 1 giá trị)

Hệ mã hóa thay thế: Khóa có 26 “chìa” (Thể hiện bằng 26 giá trị)

Hệ mã hóa VIGENERE: Khóa có m “chìa” (Thể hiện bằng m giá trị)

Hệ mã hóa HILL: Khóa có ma trận “chìa”, (chùm chìa khóa)

1.1.3.1 Hệ mã khóa dịch chuyển

Sơ đồ:

Đặt p = c = K = z26 Bản mãỵvầ bản rốxE z26.

Với khóa k E K, ta định nghĩa:

Hàm Mã hóa: y = ek (x) = (x +k) mod 26 Hàm Giải mã: X = dk (y) = (y - k) mod 26

Ví dụ:

* Chọn khóa k = 3

19

* Bản rõ số:

* Với phép mã hóa y = ek (x) = (x +k) mod 26 = (x + 3) mod 26,ta nhận được:

* Bản mã số:

*Bản mã chữ:

L U X V Với phép giải mã X = dk (y) = (y - k) mod 26 = (y - 3) mod 26, ta nhận lại được bản rõ số, sau đó là bản rõ chữ

Đô an toàn : Độ an toàn của mã dịch chuyển: Rất thấp.

Tập khóa К chỉ có 26 khóa, nên việc phá khóa (thám khóa) có thể thực hiệndễ dàng bằng cách thử kiểm tra từng khóa: к = 1, 2, 3, ,26

1.1.3.2 Hệ mã hóa thay thế (Hoán vị toàn cục)

Sơ đồ

Đặt p = С = z26 • Bản mãỵ\à bản rốx E z26 • Tập khóa К là tập mọi hoán vị trên z26 ■

Với khóa к = IT Ё K, tức là 1 hoán vị trên z26 , ta định nghĩa:

Mã hóa: у = (x) = Tt(x)

Ví dụ:

* Chọn khóa к = ÎT là hoán vị:

Trang 4

19 7 8 18 8 18 0 2 17 24

* Mã hóa theo công thức: у = ея (x) = IT (х):

20

* Bản mã chữ:

* Giải mã theo công thức X — d^Ị (y) = lĩ 1 (y), ta nhận lại được bản rõchữ

Độ an toàn : Độ an toàn của mã thay thế: Thuộc loại cao

Tập khóa К có 26! khóa ( > 4.1026), nên việc phá khóa ( thámmã) có thể thực hiện bằng cách duyệt tuần tự 26! hoán vị của 26 chữ cái

Đe kiểm tra tất cả 26! khóa, tốn rất nhiều thời gian ! Hiện nay với hệ mã này, người ta có phương pháp thám mã khác nhanh hơn

1.1.3.3 Hệ mã hóa AFFINE

Sơ đồ:

Đặt p = С = z26 ■ Bản mãỵ\à bản rốx E z26 • Tập khóa К = {(a, b), với a, b E z26 , gcd(a,26) = 1}

Với khóa к = (a, b) E К, ta định nghĩa:

Phép Mã hóa: y — e k (x) = (a X + b) mod 26 Phép Giải mã: X — d k (у) = а 1

(у - b) mod 26

Ví du:

* Chọn khóa к = (a, b) = (3, 6)

* Bản rõ số: X =

Mã hóa theo công thức: у — e k (x) = (а X + b) mod 26 = (3x + 6) mod 26

* Bản mã số:y =

21

Giải mã theo công thức X = dị', (y) = a 1 (y - b) mod 26

= з1 (у - 6) mod 26 = 9 * (у - 6) mod 26

Độ an toàn: Độ an toàn của Hệ mã hóa Affine: Rất thấp

+ Điều kiện gcd(a, 26) = 1 để bảo đảm a có phần tử nghịch đảo a'1 mod 26, tức là thuật toán giải

mã dK luôn thực hiện được

+ Số lượng a E z26 nguyên tố với 26 là ф(26) = 12, đó là:

1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 Các số nghịch đảo theo (mod 26) tương ứng: 1, 9, 21, 15, 3, 19, 7, 23, 11, 5, 17, 25 + Số lượng b E z26 là 26

+ Số các khóa (a, b) có thể là 12 * 26 = 312 Rất ít ! Như vậy việc dò tìm khóa mật khá dễ dàng

1.1.3.4 Hệ mã hóa VIGENERE

Sơ đồ:

Đặt p = С = (Z26)m, m là số nguyên dương, các phép toán thực hiện trong z26 •

Bản mã Y và bản rõx É= (Z26)m Khóa к = (kb k2, , km), gồm m phần tử

Mã hóa: Y = (уь y2, , Уш) = e k (xb x2, xm)=(xj + kb x2 + k2, xm + km) mod 26 Giải mã: X = (xb x2, xm) = d k (yb y2, ym)= (yi - kb y2 - k2> ym - km) mod 26

Ví dụ:

* Chọn khóa к = “KWORD” = {10, 22, 14, 17, 3} với độ dài m = 5

* Bản rõ số: SX = 19 7 8 18 8 0 2 1724 15 19 14 18 24 18 19 4 12

* Mã hóa:

Chia bản rõ SX thành các đoạn, mỗi đoạn gồm m = 5 số

Với mỗi đoạn, áp dụng công thức mã hóa, ta nhận được bản mã số

22

Bảng 1.4 Mô tả quá ừình mã hóa của hệ mã hóa VIGENERE

* Bản mã số: SY = 3 3 22 9 11 2 22 16 8 1 25 15 2 9 1 2 15 18 3

* Bản mã chữ: DDWJL CWQIB ZPCJB CPSD

Đô an toàn: Độ an toàn của mã VIGENERE: Tương đối cao.

Nếu khóa gồm m ký tự khác nhau, mỗi ký tự có thể được ánh xạ vào 1 trong m kí tự có

thể, do đó hệ mật này được gọi là hệ thay thế đa biểu

Như vậy số khóa (độ dài m) có thể có trong mật Vigenere 26m Nếu dùng phương pháp “tấn công vét cạn”, thám mã phải kiểm tra 26m khóa

Hiện nay với hệ mã này, người ta có phương pháp thám mã khác nhanh hơn

1.1.3.5 Hệ mã hóa hoán vị cục bộ.

Sơ đồ:

Đặt p = С = (Z26)m, m là số nguyên dương Bản mã Yva bảnrõx t (Z26)m Tập khóa К là tập tất cả các hoán vị của {1,2, m}

Với mỗi khóa к = ĨI Ё К, к = (kb k2, , km), gồm m phần tử, ta định nghĩa:

* Mã hóa: Y = (уь y2, ym) = e k (xb x2, xm) = (xk(i), xk( 2), •••, xk(m))

* Giải mã: X = (xb x2, xm) = dk (yb y2, ym ) = (ук( 1)'\ У Ц 2) 1 , ■ ■ ■ , Ук(т)'1 )

Trong đó k"1 = ĨT 1 là hoán vị ngược của ĩĩ.

23

Ví dụ:

* Bản rõ chữ: cx = SHESEL ISSEAS HELLSB YTHESE ASHO Đặt p = С = (Z26)m, trong đó m = 6

Chọn khóa к là một hoán vị ĨI của (1, 2, 3, 4, 5, 6):

j_

Hoán vị ngược là ĨT là:

Trang 5

Tính Tính c = y 61

Tính d = c

Tách bản rõ thành từng nhóm 6 kí tự:

SHESEL I ISSEAS I HELLSB I YTHESE I ASHO Với mỗi nhóm 6 kí tự, sắp xếp lại thành các chữ theo hoán vị JT, ta nhận được: EESLSH I SALSES I LSHBLE I HSYEET I HRAE

* Bản mã chữ: CY = EESLSHSALSESLSHBLEHSYEETHRAE

* Dùng hoán vị ngược ĨE , ta sẽ thu được bản rõ cx.

Đô an toàn:

Nếu dùng phương pháp “tấn công vét cạn”, thám mã phải kiểm tra số khóa có thể là: 1 ! + 2! + 3! + + m! trong đó m < 26

Hiện nay với hệ mã này, người ta có phương pháp thám mã khác nhanh hơn

1.1.3.6 Hệ mã hóa HILL

đồ Lester s Hill đưa ra năm 1929

Đặt p = С = (Z26)m, m là số nguyên dương Bản mã Kvà bảnrõx E (Z26)m- Tập khóa

К = { К e (Z26)m*m / det (K, 26) = 1} ( К phải có K'1)

Mỗi khóa К là một “Chùm chìakhóẩ' (một Ma trận “Các chìa khóa”.).

24

Với mỗi KẼ định nghĩa:

* Hàm lập mã: Y = (yj, y2, ym) = e k (xlf x2, xm) = (xlf x2, xm) * K mod 26

* Hàm giải mã: X = (xl5 x2, xm) = d k (y u y2, ym) = (ylf y2, ym) * K 1 mod 26 Ví dụ:

* Bản rõ chữ:TUDO Chọn m =2, khóa K = , bảo đảm det (K, 26) = 1, tính K"1 = 22

Với mỗi bộ rõ số (xj, x2), theo hàmlập mã (yi, y2) = (x u x2) * K, ta tính được:

* Bản mã chữ:

JGXS Độ an toàn:

Nếu dùng phương pháp “tấn công vét cạn”, thám mã phải kiểm trả số khóa có thể với m lần lượt

là 2, 3, 4, trong đó m lớn nhất là bằng độ dài bản rõ

1.1.4 Khái quát về các hệ mã hóa khóa hiện đại

1.1.4.1 Hệ mã hóa đối xứng DES Giới thiệu

Hiện nay có nhiều hệ mã hóa đối xứng loại mới, mục này trình bày Chuẩn mã hóa dữ liệu DES (Data Encryption Standard)

15/05/1973, ủy ban tiêu chuẩn quốc gia Mỹ (NBS) (được sự thẩm định của Cục an ninh

QG (NAS) đã công bố một khuyến nghị về hệ mã hóa chuẩn

Hệ mã hóa phải có độ an toàn cao

Hệ mã hóa phải được định nghĩa đầy đủ và dễ hiểu

Độ an toàn của Hệ mã hóa phải nằm ở Khóa, không nằm ở Thuật toán

25

Hệ mã hóa phải sẵn sàng cho mọi người dùng ở các lĩnh Yực khác nhau

Hệ mã hóa phải xuất khẩu được

DES được IBM phát triển, là một cải biên của hệ mật mã LUCIPHER DES, nó được công

bố lần đầu tiên vào ngày 17/03/1975 Sau nhiều cuộc tranh luận công khai, cuối cùng DES được công nhận như một chuẩn liên bang vào ngày 23/11/1976 và được công bố vào ngày 15/01/1977 Năm 1980, “Cách dùng DES” được công bố Từ đó chu kỳ 5 năm DES được xem xét lại một lần bởi ủy ban tiêu chuẩn quốc gia Mỹ, lần gần đây nhất là 2004

Quy trình mã hóa theo DES.

Giai đoạn 1 : Bản Rõ chữ ===== ^ Bản Rõ số (Dạng nhị phân)

Chia thành

Giai đoạn 3: 64 bit Rõ số ===== ^ 64 bit Mã số

Kết nối Giai đoạn 4: Các đoạn 64 bit Mã số ===== Bản Mã số (Dạng nhị phân)

Lập mã và Giải mã DES

a) Quy trình lập mã DES Thuật toán DES tập trung thực hiện Giai đoạn 3 của quy trình mã hóa Đó là chuyển đối

bản rõ số với 64 bit thành bản mã với 64 bit

b) Thực hiện mã hóa DES theo Sơ đồ

* Bản rõ là xâu X, Bản mã là xâu y, Khóa là xâu K, đều có độ dài 64 bit

* Thuật toán mã hóa DES thực hiện qua 3 bước chính như sau:

Bước 1: Bản rõ X được hoán vị theo phép hoán vị IP, thành IP (x)

IP(x) = L0Ro, trong đó L0 là 32 bit đầu (Left), R0 là 32 bit cuối (Right)

(IP (x) tách thành LQRQ

)-26

Bước 2: Thực hiện 16 vòng mã hóa với những phép toán giống nhau.

Dữ liệu được kết hợp với khóa thông qua hàm f:

Li = Ri-1, Ri = Li.! Ф f(Ri_b kị), trong đó: ® là phép toán hoặc loại inr của hai xâu bit (cộng theo

modulo 2) kb k2, k16 là các khóa con (48 bit) được tính từ khóa gốc K.

Bước 3: Thực hiện phép hoán vị ngược IP"1 cho xâu Ri6L16, thu được bản mã y

У = IP 1 (Ri6,L16)

c) Tính các khóa con к Ị, к 2 , k 16 từ khóa gốc K.

d) Quy trình giải mã DES

Qui trình giải mã của DES tương tự như qui trình lập mã, nhưng theo dùng các khóa thứ

tự ngược lại: k16, k15, kj

Xuất phát (đầu vào) từ bản mã y, kết quả (đầu ra) là bản rõ X

Độ an toàn của Hệ mã hóa DES

1) Độ an toàn của Hệ mã hóa DES có liên quan đến các bảng Sji Ngoại trừ các bảng s, mọi

phép hoặc loại trừ của hai đầu ra cũng giống như phép hoặc loại trừcủa hai đầu vào, rồi tính toán đầu ra

Các bảng s chứa đựng nhiều thành phần phi tuyến của hệ mật, là yếu tố quan trọng nhất đối với độ mật của hệ thống

Khi mới xây dựng hệ mật DES, thì tiêu chuẩn xây dựng các hộp s không được biết đầy

đủ Và có thể các hộp s này có thể chứa các “cửa sập” được giấu kín Và đó cũng là một điểm

đảm bảo tính bảo mật của hệ DES

2) Hạn chế của DES chính là kích thước không gian khóa:

Số khóa có thể là 256, không gian này là nhỏ để đảm bảo an toàn thực sự Nhiều thiết bị chuyên dụng đã được đề xuất nhằm phục vụ cho phép tấn công với bản rõ đã biết Phép tấn công này chủ yếu thực hiện theo phương pháp “vét cạn” Tức là với bản rõ X và bản mã y tương ứng (64 bit), mỗi khóa có thể đều được kiểm tra cho tới khi tìm được một khóa к thỏa mãn eK(x) = y

27

1.1.4.2 Hệ mã hóa khóa công khai

a) Hệ mã hóa RSA.

Sơ đồ (Rivest, Shamir, Adleman để xuất năm 1977)

* Tạo cặp khóa (bímật, công khai) (a, b):

Chọn bí mật số nguyên tố lớn p, q, tính n = p*q, công khai n, đặt p = с = Zn Tính bí mật ф(п) = (p-l)(q-l) Chọn khóa công khai b < ф(п), nguyên tố với ф(п)

Khóa bí mật a là phần tử nghịch đảo của b theo mod ф(п): a*b = 1 (mod ф(п))

Tập cặp khóa (bí mật, công khai) к = {(a, b)/ a, b E zn, a*b = 1 (mod ф(п))}

Với Bản rõx E p và Bản mã у E c, định nghĩa:

* Hàm Mã hóa у = ek(x) = xb mod n

* Hàm Giải mã X = dk(y) = ya mod n Ví

dụ:

* Bản rõ chữ: R E N A I S S A N C E

■+ Sinh khóa:

Chọn bí mật số nguyên tố p = 53, q = 61, tính n = p*q = 3233, công khai n

Đặt p = С = zn , tính bí mật ф(п) = (p-l)(q-l) = 52*60 = 3120

+ Chọn khóa công khai b là nguyên tố với ф(п), tức là gcd (b, ф(п)) = 1, ví dụ chọn b = 71.

+ Khóa bí mật a là phần tử nghịch đảo của b theo mod ф(п): a*b - 1 (mod ф(п))

Từ a*b = 1 (mod ф(п)), ta nhận được khóa bí mật a = 791

* Bản rõ số:

RE NA IS SA N с E (Dấu cách)

17 04 13 00 08 18 18 00 13 02 04 26

41 Theo phép lập mã: Cx = Iĩiib mod n = mị71 mod 3233, ta nhận được:

28

* Bản mã số:

* Theo phép giải mã: nij = Cja mod n = Cị791 mod 3233, ta nhận lại bản rõ

Độ an toàn :

1) Hệ mã hóa RSA là tất định, tức là với một bản rõ X và một khóa bí mật a, thì chỉ

có một bản mã y

2) Hệ mật RSA an toàn, khi giữ được bí mật khóa giải mã a, p, q, Ф (n)

Nếu biết được p và q, thì thám mã dễ dàng tính được ф(п) = (q-l)*(p-l)

Nếu biết được ф(п), thì thám mã sẽ tính được a theo thuật toán Euclide mở rộng

Nhưng phân tích n thành tích của p và q là bài toán “khó”

Độ an toàn của Hệ mật RSA dựa vào khả năng giải bài toán phân tích số nguyên dương n thành tích của 2 số nguyên tố lớn p và q

b) Hệ mã hóa Elgamal.

Sơ đồ (Elgamal đề xuất năm 1985).

* Tạo cặp khóa (bí mật, công khai) (a, b):

Chọn số nguyên tố p sao cho bài toán logarit rời rạc trong Zp là “khó” giải

Chọn phần tò nguyên thủy g <= Zp* Đặt p = Zp*, с = Zp* X Zp*

Chọn khóa bí mật là a £ Zp* Tính khóa công khai h = g* mod p

Định nghĩa tập khóa: к = {(p, g, a, h): h = g* mod p}

Các giá trị p, g, h được công khai, phải giữ bí mật a

Với Bản rõx Ë p và Bản mã у Ё с, với khóa k Ё к định nghĩa:

* Lập mẵ Chọn ngẫu nhiên bí mật r E Zp_b bản mã là у = ek (x, r) = (уьуг)

Trong đó У! = g r mod p và y 2 = X * h r mod p

* Giảimẫ dk (yi, y2) = y2 (yi3)"1 mod p = X

29

Ví dụ:

41 Bản rõ X = 1299

Chọn p = 2579, g = 2, a = 765 Tính khóa công khai h = 2765 mod 2579 = 949

* Lập mã: Chọn ngẫu nhiên r = 853 Bản mã là y = (435, 2369), trong đó

У! = 2 853 mod 2579 = 435 và y 2 = 1299 * 949 853 mod 2579 = 2396

* Giải mã: X = y2 (yi*)1 mod p = 2369 * (435765) 1 mod 2579 = 1299

Độ an toàn

1) Hệ mã hóa Elgamal là không tất định, tức là với một bản rõ X và một khóa bí mật

a, thì có thể có nhiểu hơn một bản mã y, vì trong công thức lập mã còn có thành phần ngẫu nhiên r

2) Độ an toàn của Hệ mật Elgamal dựa vào khả năng giải bài toán logarit rời rạc trong Zp Theo giả thiết trong sơ đồ, thì bài toán này phải là “khó” giải: a =

Cụ thể như sau: Theo công thức lập mã: y = ek(x, r) = (yb y2), trong đó yi = gr mod p và y2

= X * hr mod p, r = log3 yl

Như vậy muốn xác định bản rõ X từ công thức y2, thám mã phải biết được r Giá trị này

có thể tính được từ công thức Уь nhưng lại gặp bài toán logarit rời rạc.

1.2.Tổng quan về chữ ký số

1.2.1 Khái niệm về chữ kỷ số

Chữ ký số là xâu bit được dùng để xác thực một tài liệu số, đảm bảo người gửi không thể chối bỏ rằng mình đã gửi bản tin và người nhận không thể giả mạo bản tin hoặc chữ ký Đồng thời, người nhận có thể chứng minh với người khác nội dung bản tin là chính xác do người gửi ban đầu gửi đến

Stf đồ chữ ký sổ:

Sơ đồ chữ ký số là bộ năm (P,A,K, s, V) trong đó; plà tập hữu hạn các văn bản có thể

30

A là tập hữu hạn các chữ ký có thể

K\dL tập hữu hạn các khóa có thể

/Slà tập các thuật toán ký Vlà tập

các thuật toán kiểm thử

Với mỗi khóa kG.K, có các thuật toánSig K ^L S,Sig K '.P^> A, cóthuật toán kiểm tra chữ ký Ver k e V, Ver k : Px A—> { đúng, sai}, thỏa mãn điều kiện sau với

mọi xe p, ỵe A.

Đ ủ ì ĩ g n ể u y = S i g j / x )

Fer*(x 3 j0

S a ĩ n ể u y Ф S i g f / x )

1.2.1.1 Quá trình tạo chữ ký số

Đầu vào của quá trình này chính là bản tin cần ký, bằng cách sử dụng khóa bí mật của người gửi, ta có thể tạo ra chữ ký cho bản tin hiện thời, bản tin gửi đi bao gồm bản tin ban đầu được ký bằng chữ ký vừa tạo ra

Quá trình tạo chữ ký số được thực hiện tại bên gửi gồm hai bước:

1/ Tính giá ứị băm

Bước đầu tiên của quá trình tạo chữ ký là tạo giá trị băm của bản tin cần gửi Các hàm băm có thể sử dụng là MD2, MD4, Md5, SHA-1, SHA-256, Kết quả thu được là một message digest có chiều dài cố định, nhỏ hơn rất nhiều lần bản tin ban đầu Theo tính chất của hàm băm, xác suất để hai bản tin khác nhau có cùng một giái trị băm là rất nhỏ và có thể bỏ qua Vì vậy nếu giá trị băm của hai bản tin trùng nhau thì bản tin ban đầu cũng trùng nhau

2/ Tính toán chữ ký số

Kết quả băm thu được được ký bằng khóa bí mật của bên nhận Kết quả thu được này chính là chữ ký số Các thuật toán tạo khóa có thể sử dụng để tạo chữ ký số là

31

RSA, ELGamal, ECDSA, chữ ký này được gắn vào bản tin ban đầu và truyền đến người gửi trên môi trường mạng

Hình 1.1 Quá ứình tạo chữ ký 1.2.1.2 Quá trình xác thực chữ ký số

Đây là quá trình sử dụng khóa công khai của người nhận để xác thực chữ ký Quá trình xác thực chữ ký số gồm các bước sau đây:

1/ Tính toán giá ừị băm hiện thời

Sau khi nhận được bản tin có chữ ký người gửi, bên nhận tiến hành tách ra bản tin ban đầu, chữ ký người gửi Băm lại bản tin ban đầu thu được giá trị băm (gọi là giá trị băm hiện thời

vì nó được tính từ bản tin hiện thời)

2/ Tính toán giá ừị băm ban đầu

32

Trong bước thứ hai của quá trình giải mã, chữ ký số đính kèm được giải mã bằng khóa công khai tương ứng với khóa bí mật dùng để tạo chữ ký ở bên gửi Kết quả thu được giá trị băm ban đầu

3/ So sánh giá ừị băm hiện thời với giá trị băm ban đầu

Trong bước này ta tiến hành so sánh giá trị băm hiện thời ở (1/) với giá trị băm ban đầu

ở (2/) trong quá trình xác minh chữ ký số

Neu so sánh hai giá trị băm này trùng nhau thì quá trình xác thực thành công, bản tin đã được ký bằng khóa bí mật tương ứng với khóa công khai khi xác thực, đồng thời bản tin cũng không bị thay đổi trong quá trình truyền đi

Nếu so sánh hai giá trị băm này không trùng nhau thì quá trình xác thực thất bại, có hai trường hợp mất an toàn đã xẩy ra:

- Khóa bí mật của người gửi không được sử dụng khi tạo chữ ký

- Bản tin đã bị thay đổi trong quá trình truyền đi

33

Hình 1.2 Quả ừình xác thực chữ ký số

34

1.2.2 Một số cách phân loại chữ ký số

Có nhiều loại chữ ký tùy theo cách phân loại, sau đây xin giới thiệu một số cách [6]

- Phân loại chữ ký theo đặc trưng kiểm tra chữ ký

Chữ ký khôi phục thông điệp: Người gửi chỉ cần gửi “chữ ký” , người nhận có thể khôi phục

lại được thông điệp, đã được “ký” bởi “chữ ký” này

Ví dụ: Chữ ký RSA là chữ ký khôi phục thông điệp

Chữ ký đi kèm thông điệp: Là loại chữ ký, trong đó người gửi chỉ cần gửi “chữ ký”, phải gửi kèm cả thông điệp đã được “ký” bởi “chữ ký” này Ngược lại,người nhận sẽ không có được thông điệp gốc

Ví dụ: Chữ ký Elgamal là chữ ký đi kèm thông điệp

- Phân loại chữ ký theo mức an toàn

Chữ ký 'không thể phủ nhận”: Nhằm tránh việc nhân bản chữ ký để sử dụng nhiều lần, tốt

nhất là người gửi tham gia trực tiếp vào việc kiểm thử chữ ký Điều đó được thực hiện bằng một giao thức kiểm thử, dưới dạng một giao thức mời hỏi và trả lời

Ví dụ: Chữ ký không phủ định (Chaum- van Antverpen)

Chữ ký “một lần”: Để bảo đảm an toàn, “Khóa ký” chỉ dùng 1 lần (one - time) trên 1 tài liệu

Ví dụ: Chữ ký một lần Lamport Chữ ký Fail - Stop (Van Heyst & Pedersen)

- Phân loại chữ ký theo ứng dụng đặc trưng

+ Chữ ký “mù” (Blind Signature)

+ Chữ ký “nhóm” (Group Signature)

+ Chữ ký “bội” (Multy Signature)

+ Chữ ký “mù nhóm” (Blind Group Signature)

+ Chữ ký “mù bội” (Blind Multy Signature) [6]

35

1.2.3 Giới thiệu một sổ chữ ký sổ thông dụng

1.2.3.1 Sơ đồ chữ ký sốRSA

Đặc điểm của sơ đồ chữ ký này là mức độ tính toán phụ thuộc hoàn toàn vào độ lớn của giải thuật giải quyết các bài toán nhân số nguyên - bài toán luỹ thừa.

Sơ đồ chữ ký bao gồm cả hai loại kèm thông điệp và khôi phục thông điệp Sơ đồ chữ ký RSA được phát minh bởi 3 nhà nghiên cứu Rivest, Shamir và Adleman, đây là sơ đồ có ứng dụng thực tế rộng rãi nhất dựa trên công nghệ sử dụng khoá chung Các phương pháp tấn công RSA đầu tiên (multicative property) và các vấn đề khác liên quan tới chữ ký RSA, do Davia, Jonge và Chaum đưa ra

Thuật toán sinh khoá:

Thực thể A tạo khoá công khai RSA và khoá riêng tương ứng theo phương thức sau :

• Sinh ra hai số nguyên tố lớn ngẫu nhiên p và q cùng kích thước bit;

• Tính n = p.q và cp(n)= (p-l).(q-l);

• Chọn một số tự nhiên ngẫu nhiên e thoả mãn điều kiện sau: 1< e < tp(n) và gcd(e, <p(n))

= 1 hay ee z*p

• Sử dụng giải thuật mở rộng Euclidean để tính toán số tự nhiên duy nhất d sao cho 1 < d < tp(n) và e.d = 1 (mod cp(n))

• Khoá công khai của A là K’ = (n, e), khoá riêng của A là K” = (n, d)

Thuật toán sinh chữ kỷ:

Thực thể A ký trên thông điệp m dựa vào khóa bí mật của mình đã có

Sinh chữ ký: Thực thể A làm theo các bước sau:

• Tính m' = H(m), là một số nguyên trong khoảng [ 0,n-l]

• Tính y = m'd mod n

• Chữ ký của A cho m là y

Thuật toán kiểm thử chữ ký:

36

Thực thể В có thể xác nhận được chữ ký của A bằng khóa công khai của A và khôi phục lại thông điệp từ chữ ký Việc xác nhận chữ ký của thực thể в làm theo các bước sau:

• Nhận khoá công khai của A là (n, e)

• Tính m' = ye mod n

• Kiểm tra m' e MR nếu không sẽ không chấp nhận chữ ký

• Lấy lại thông điệp m từ m =

Độ an toàn của sơ đồ chữ ký số RSA:

Độ an toàn của chữ ký số RSA phụ thuộc vào bài toán tách n thành hai số nguyên tố p và

q Vì nếu biết được p và q thì sẽ biết được bí mật ф(п) sau đó dựa vào công thức e.d = 1 (mod

ф(п)), với e là khóa công khai đã biết thì có thể tính được khóa bí mật d.

Nếu sơ đồ ký số thực hiện đơn giản thì tội phạm dễ dàng lừa Ví dụ như họ có thể chọn

ngẫu nhiên ỵe z^và tính toán độ lớn: m= }f(moảrì) Rõ ràng quá trình thẩm tra (m,y) là hoàn toàn

đúng Ngoài ra do tính chất nhân của hàm RSA, tức là nếu có hai bức điện nij và m2 tương ứng với nó là 2 chữ ký У! và y2 thì dễ dàng hình thành chữ ký thứ ba У1У2 với bức điện thứ ba mim 2: (m L m 2 ) d —

n( ■ nị — ỵ x ỵ 2

1.2.3.2 Sơ đồ chữkýElgama

Sơ đồ chữ ký ElGamal được đề xuất năm 1985, gần như đồng thời vói sơ đồ hệ mật mã ElGamal, cũng dựa trên độ khó của bài toán lôgarit rời rạc Sơ đồ được thiết kế đặc biệt cho mục đích ký trên các văn bản điện tò, được mô tả như một hệ

s=(n, A, K, 2, Ç),

trong đó П = 2? p , A=z* p xz x, vớiplà một số nguyên tố sao cho bài toán tính lôgarit rời rạc ừong -Z*

là rất khó Tập họp к gồm các cặp khoá K={K\K")

Thuật toán sinh khóa:

37

Chọn K’= а е 2* bất kì làm khóa bí mật K”={p, a, ß) (với a là một phần tò nguyên tìiuỷ của Zp , và

ß=ot mod P) là khóa công khai.

Thuật toán kỷ:

Để tạo chữ ký trên Xta chọn thêm một số ngẫu nhiên к <= , rồi tính sig K , (x,k) = (ỵ,S), với

ỵ = a í modp, ổ - (x- aỵ).k l mod(/7-l)

Thuật toán kiểm thử chữ kỷ:

ver K „(x,(ỵ,ổ)) = đúng ß ỵ .Ỵ S = a x(mod/>)

Dễ thấy rằng sơ đồ chữ ký được định nghĩa như trên là họp thức Thật vậy, nếu sig K (x, k) = (ỵ,ổ ), thì ta có :

ß r -Y S - c? 7 cF s moảp - a x moảp,

vì kô+aỵ= xmoẩ(j}-\) Do đó, ver K ,{x, (ỵ,ổ)) = đúng.

Độ an toàn của sơ đồ chữ kỷ số Elgamal:

Sơ đồ chữ ký ElGamal được xem là an toàn, nếu việc ký trên một văn bản là không thể giả mạo được, nói cách khác, không thể có một người nào ngoài chủ thể họp pháp có thể giả mạo chữ ký của chủ thể họp pháp đó trên một văn bản bất kỳ Vì vậy, việc giữ bí mật khoá K’=XA dùng để tạo chữ ký là có ý nghĩa quyết định đối với việc bảo đảm tính an toàn của chữ ký

1/ Khả năng để lộ khoá : Cũng như đối với sơ đồ hệ mật mã ElGamal, khoá bí mật a có thể bị phát hiện trong trường hợp để lộ số ngẫu nhiên к ở một lần ký nào đó, hoặc sử dụng cùng một số ngẫu nhiên к ở hai lần ký khác nhau

2/ Khả năng giả mạo chữ ký trên một văn bản cho trước: Giả sử chủ thể A chọn sơ đồ

chữ ký ElGamal với cặp khoá К —ỢC\K\ trrong đó К = а là khoá bí mật Một người ngoài О

không biết khoá bí mật К = а mà muốn giả mạo chữ ký của A trên một văn bản X thì phải có khả năng tạo ra được chữ ký (ỵ,ố) mà không cần biết a Có hai cách : hoặc chọn trước ỵrồi tìm ổ tương ứng, hoặc ngược lại, chọn trước ổ rồi tìm ỵ tương ứng.

38

3/

Giả mạo chữ ký cùng với văn bản được ký : Có một khả năng giả mạo khác là giả mạo

cả văn bản gửi đi X cùng với chữ ký (ỵ,ổ) ừên X Khả năng đó xẩy ra khi kẻ giả mạo chọn được X

(ỵ,ổ) thoả mãn điều kiện kiểm thử, cụ thể khi chọn được x,ỵ,ổ có dạng sau đây :

ỵ -

a i .ß j modp, ỗ = -ỵ.f l

mod(/?-l), x=-ỵ.i.j

'mod(jơ-l),

trong đó ị, 7 là các số nguyên sao cho 0< i, j< p-2, gcd(/■ /7-1) = 1, và j~ l được tính theo

mod(/7-l)

1.2.3.3 Sơ đồ chữkýDSA Giới thiệu :

Sơ đồ chữ ký DSS dựa trên giải thuật ký điện tử DSA Chữ ký dạng DSS là một dạng chữ

ký kèm thông điệp, điều đó có nghĩa là chữ ký phải được gửi kèm với thông điệp mà bản thân chữ

ký không chứa, hoặc không sinh ra thông điệp Thường thì các chữ ký dạng này đều đòi hỏi có một hàm băm trên thông điệp (do nội dung thông điệp có độ dài không xác định) Hàm băm này được sử dụng trong quá trình sinh chữ ký để xây dựng một dạng nén của dữ liệu Dữ liệu này gọi

là đại diện văn bản Phần đại diện văn bản này là đầu vào của giải thuật sinh chữ ký Người xác nhận chữ ký cũng sử dụng hàm băm này để xây dựng phương pháp xác nhận chữ ký Đối với sơ

đồ chữ ký DSS hàm băm là SHA, được miêu tả trong FIPS 186, hàm băm này tạo ra một giá trị số nguyên 160 bit đặc trưng cho một thông điệp, điều này làm hạn chế một trong các giá trị tham số của DSS phải là 160 bit Ngoài ra, chuẩn này yêu cầu việc sinh chữ ký phải sử dụng một khóa riêng cho mỗi người ký, ngược lại để xác nhận chữ ký, người xác nhận phải có một khóa công khai tương ứng với khóa riêng của người gửi

Giải thuật sinh khóa DSA :

Mỗi thực thể tạo một khóa công khai và một khóa mật tương ứng theo cách sau:

1 Chọn một số nguyên tố q sao cho 2 159 < q < 2 160

39

2 Chọn một số nguyên tố p sao cho 2 511+64t < p < 2 512+64t ở đó te [0,8]

3 Chọn số như sau:

Chọn g là một số nguyên bất kỳ nhỏ hơn p, a =g (p " 1)/q mod p, a khác 1

4 Chọn số nguyên a sao cho: 1 - a - <7 _ 1 1

5 Tính P = a a vữữáp

6 Khóa riêng của thực thể là a, khóa công khai là bộ (p,q, a,ß )

Thuật toán sinh chữ ký:

Khi cần sinh chữ ký cho một thông điệp X thực thể phải làm những việc như sau:

1 Chọn một số nguyên mật k, 0 < k <q-l

2 Tính ỵ - (a.Ẩmod />)mod q

3 Tính k -1 mod q

4 Tính ổ = k-l(Ji(x) + a r )roũả q

Thuật toán kiểm thử chữ kỷ:

Các bước cần thực hiện :

• Loại bỏ chữ ký nếu hoặc 0< r <q hoặc 0< s <q không thỏa mãn

• Tính w = (s)-l mod q

• Tính ul = (SHA-l(m)*w) mod q

• Tính u2 = (r*w) mod q

• Tính V = ((gul*yu2) mod p) mod q

• Chữ ký là có hiệu lực nếu V = r Độ an

toàn :

Độ an toàn của chữ kí phụ thuộc vào độ bí mật của khoá riêng Người sử dụng phải được bảo vệ trước về khoá riêng của mình Nếu khoá riêng đảm bảo an toàn tuyệt đối thì chữ kí cũng có mức

độ an toàn hầu như tuyệt đối Mặt khác, với khoá riêng là công khai, chữ ký DSA là an toàn khi

từ khoá công khai không thể tìm được khoá riêng

40

1.2.4 Đại diện tài liệu và hàm băm

Khi thực hiện xây dựng chữ ký số có một số Yấn đề cần được giải quyết như: Vấn đề 1:

Ký số thực hiện trên từng bit tài liệu nên độ dài của chữ ký số ít nhất cũng bằng độ dài của tài liệu Một số chữ ký trên bản tin có kích thước gấp đôi bản tin gốc Trong khi đó trên thực tế, ta cần phải ký vào các bản tin có kích thước rất lớn từ vài chục MegaByte Như vậy phải tốn nhiều

bộ nhớ để lưu trữ “chữ ký ”, mặt khác tốn nhiều thời gian để truyền chữ ký trên mạng

Vấn đề 2: Với một sơ đồ chữ ký “an toàn”, thì tốc độ ký lại chậm vì chúng dùng nhiều phéptính

số học phức tạp như số mũ modulo

Vấn đề 3: Thực tế có thể xảy ra trường hợp: với nhiều bản tin đầu vào khác nhau, sử dụng hệmã

hóa hay sơ đồ ký giống nhau, nhưng lại cho ra bản mã hay chữ ký giống nhau(đó là ánh xạnhiều một), như hình dưới Điều này sẽ dẫn đến phức tạp cho việc xác thực thông tin

Đe giải quyết vấn đề trên, người ta thường dùng hàm băm để tạo đại diện cho tài liệu sau

đó mới ký số lên đại diện này

Hàm băm là thuật toán không dùng khóa để mã hóa (Ở đây dùng thuật ngữ “băm” thay cho “ mã hóa”, nó có nhiệm “ lọc” (băm) tài liệu (bản tin) và cho kết quả là một giá trị băm có kích thước cố định, còn gọi là “đại diện tài liệu” hay “ đại diện bản tin”, “ đại diện thông điệp”

Hàm băm là hàm một chiều (One-way Hash) theo nghĩa giá trị hàm băm là duy nhất và từ giá trị băm này khó thể suy ngược lại được nội dung hay độ dài ban đầu của tài liệu gốc

Đặc tính của hàm băm

1/ Với tài liệu đầu vào (Bản tin gốc) X, chỉ thu được giá trị băm duy nhất z=h(x)

2/ Nếu dữ liệu trong bản tin X bị thay đổi hay bị xóa thành bản tin jr’thi giá trị băm

ỉ^x')^Iịx)

3/ Nội dung từ bản tin gốc khó thể suy ra từ giá trị băm của nó

41

Hai tính chất quan trọng nhấ của hàm băm là Tính một chiều và Tính duy nhất Hiện nay, một số kỹ thuật băm được sử dụng phổ biến như: SHA-1, SHA-256, SHA- 384, SHA-512; MD-4, MD-5

1.2.5 Các ứng dạng cửa chữ ký số

Chữ ký số đảm bảo được sự toàn vẹn cho dữ liệu được đánh dấu và xác định dữ liệu đã được đánh dấu Chính vì lý do này Digital Signature được sử dụng trong nhiều lĩnh vực như thư tín điện tó, các thiết bị truyền tải điện tử, trao đổi dữ liệu điện tó, phân phối phần mềm, lưu trữ

dữ liệu, trao đổi qua mạng và các ứng dụng khác yêu cầu sự chứng thực gốc và toàn vẹn dữ liệu

Chữ ký số có vai trò rất lớn trong các giao dịch điện tò trong hoạt động tài chính như hoạt động ngân sách nhà nước, tài chính, ngân hàng, thuế, kho bạc, hải quan, chứng khoán, kiểm toán (Nghị định 27/2007/NĐ-CP/ ngày 25/02/2007) Hành chính công khai (khai sinh, khai tử, nộp thuế, cấp các loại giấy tờ chứng chỉ, được sử dụng nhiều ở Nhật Bản), mua bán đấu thầu qua mạng, y tế, giáo dục

Chữ ký số được sử dụng trong lĩnh vực thư tín điện tử, sau khi một phía đối tác A tạo một văn bản có thể sử dụng khoá riêng để ký tên và gửi cho bên B Sau khi xác minh lại thông báo nhận được với độ tin cậy nào đó, bên B có thể ký kết hợp đồng với bên A và tất nhiên lúc này bên B xác minh được thông báo nhận được không bị biến đổi sau khi ký

Chữ ký số cũng được sử dụng trong hệ thống chuyển tiền tự động Giả sử một nguồn tài chính điện tử gửi thông báo yêu cầu chuyển 10.000$ cho một tài khoản khác Nếu thông báo được chuyển qua mạng không được bảo vệ, thì rất có thể sẽ bị đối phương thay đổi và yêu cầu chuyển 100.000$ chứ không phải là 10.000$ Lúc này nếu không có thông tin bổ sung thì người nhận không thể biết thông báo đã bị thay đổi Tuy nhiên, nếu dùng Digital Signature để đánh dấu thông báo truớc khi gửi thì người nhận sẽ phát hiện ra sự thay đổi và yêu cầu chuyển tiền không thể thực hiện

42

Chữ ký số là mô hình đảm bảo an toàn dữ liệu khi truyền trên mạng và được sử dụng để tạo chứng nhận trong các giao dịch qua mạng Internet Ví dụ A gửi đến tổ chức Certificate Authority (CA) yêu cầu cấp chứng nhận điện tử kèm theo khóa công khai của họ Tổ chức CA sẽ

“ký nhận” vào đó và cấp Digital Certificate cho A Khách hàng này sẽ thông báo Certificate của mình trên mạng Giả sử có B muốn gửi cho A một message thì công việc đầu tiên B sẽ lấy certificate của A và kiểm tra tính hợp lệ của certificate Nếu hợp lệ, B sẽ lấy public key trong Digital Certificate để mã hóa dữ liệu và gửi cho A

Chữ ký số có ứng dụng trong ngân hàng (Điều 11 đến điều 16 trong chương 3 luật giao dịch điện tử trong hoạt động tài chính), trong quá trình giao dịch giữa ngân hàng và thẻ của khách hàng Khi mà tài khoản của khách hàng (vì một lý do nào đó) phải trừ tiền (chẳng hạn rút tiền) Thì phải mất một quãng đường từ máy rút tiền đến ngân hàng Trên đường đi xảy ra sự cố chẳng hạn như mất điện, rớt mạng, thì ở máy rút tiền, tiền của khách hàng đã được trừ nhưng ở ngân hàng thì chưa bởi vậy người ta phải đồng bộ dữ liệu Nghĩa là ngân hàng phải gửi dữ liệu gốc ở ngân hàng tới máy rút tiền, để khôi phục lại tài khoản cho khách hàng Tài khoản bao gồm: số tài khoản, số dư tài khoản và những thông tin này phải được mã hóa

Chữ ký số cũng được sử dụng trong nhiều lĩnh vực kinh doanh yêu cầu thay thế chữ ký

“handwritten” Ví dụ như Digital Signature được dùng trong Electronic Data Interchange (EDI) EDI là trao đổi thông báo tài liệu kinh doanh giữa các máy tính với nhau Trong chính quyền liên bang, công nghệ này được sử dụng để tìm kiếm hàng hoá và các dịch vụ Trong những giao dịch EDI này chữ ký số hoá đã thay thế cho chữ ký “handwritten” Ví dụ như: hợp đồng điện tử giữa chính phủ và nhà cung cấp sẽ được điều đình Chính phủ sẽ gửi thông báo, đã được ký, yêu cầu thầu cho nhà cung cấp và nhà cung cấp muốn trả lời thì trước tiên phải xác minh lại thông báo đã nhận được Hoạt động này đảm bảo nội dung của tài liệu không bị biến đổi và được ký bởi một viên chức có đủ thẩm quyền Sau khi xác minh yêu cầu thầu, nhà cung cấp có thể tạo

43

và ký một gói thầu điện tử rồi gửi cho chính phủ Viên chức đại diện chính phủ sẽ xác minh lại thông báo trả lời của nhà cung cấp và nếu gói thầu được chấp nhận thì hai bên sẽ đề ra những điều khoản hợp đồng chung Hợp đồng sẽ được hai bên ký kết và nếu sau một thời gian, hai bên

có vấn đề phát sinh thì sẽ có một đối tượng thứ ba đứng ra để xác minh lại hợp đồng và chữ ký có liên quan Các nhà doanh nghiệp muốn tham gia đấu thầu có thể truy cập trực tiếp vào website

nghiệp được phép tham gia dự thầu cùng một thẻ thông minh PKI để tải hồ sơ dự thầu từ website nói trên

Trong những hệ thống pháp lý, chúng ta thấy được sự cần thiết phải đóng dấu ngày tháng năm thực hiện tài liệu, cũng như thời gian bắt đầu có hiệu lực của nó Thời gian điện tử có thể được đóng dấu lên mẫu điện tử và sau đó được chữ ký số đánh dấu Việc sử dụng chữ ký số để bảo vệ tài liệu và tính toàn vẹn của dữ liệu và của thời gian nó đóng dấu lên Vậy chữ ký số còn

có giá trị như con dấu (Điều 24 Luật giao dịch điện tử)

Chữ ký số cũng rất hữu ích trong việc phân phối phần mềm Một chữ ký số ho á được ứng dụng cho phần mềm, để nó có hiệu lực và phê chuẩn cho việc phân phối Trước khi cài đặt một phần mềm trên máy tính, chữ ký dùng để xác minh không có sự xâm phạm bất hợp pháp (như virus) xảy ra làm thay đổi dữ liệu phần mềm Chữ ký để xác nhận tính toàn vẹn của phần mềm

Trong những ứng dụng cơ sở dữ liệu, sự toàn vẹn của thông tin cất trong cơ sở dữ liệu rất quan trọng và chữ ký số được dùng để đảm bảo khả năng này Chẳng hạn thông tin sẽ được ký khi vào cơ sở dữ liệu, hệ thống cũng có thể yêu cầu cập nhật và cải biến thông tin được ký Trước khi người dùng sử dụng thông tin đã được ký, họ kiểm tra để xác nhận thông tin không bị truy nhập bất hợp pháp

44

Kết luân

Trong chương 1 đã nêu được tổng quan về mã hóa dữ liệu bao gồm: Cơ sở toán học của lý thuyết mật mã, những vấn đề chung về mã hóa dữ liệu như mô hình mã hóa dữ liệu, phân loại và giới thiệu một số phương pháp mã hóa dữ liệu

Ngoài ra, trong chương 1 cũng trình bày một cách tổng quan các lý thuyết về chữ ký số như khái niệm, phân loại và một số loại chữ ký số thông dụng cùng ưu, nhược điểm của chúng Chữ ký số là xâu bit được dùng để xác thực một tài liệu số, đảm bảo người gửi không thể chối bỏ rằng mình đã gửi bản tin và người nhận không thể giả mạo bản tin hoặc chữ ký Đồng thời, người nhận có thể chứng minh với người khác nội dung bản tin là chính xác do người gửi ban đầu gửi đến Một số loại chữ ký số thông dụng như chữ ký số RSA, chữ ký số Elgamal, chữ ký số DSA

45

Chương 2 Chữ ký số đặc biệt và chữ ký số không thể phủ nhận 2.1.

Stf đồ thuật toán và ứng dụng của một số loại chữ ký đặc biệt

2.1.1 Chữ kỷ “mù” RS A

Chữ ký mù được David Chaum giới thiệu vào năm 1983, nó là một loại chữ ký số, trong

đó nội dung của thông điệp cần được ký bị “che” đi trước khi nó được ký Chữ ký thu được có thể được xác thực như là đối với chữ ký số thông thường Chữ ký mù thường được dùng trong các vấn đề đòi hỏi sự nặc danh như trong các ứng dụng tiền điện tử, bỏ phiếu điện tử,

2.1.1.1 Sơ đồ chữ ký RSA 1/

Sinh khóa.

+ Chọn p, q là số nguyên tố lớn ( > 10 150 )

Tính n = p*q 4>(n) = (p-l)*(q-l)

Đặt p = A= Zn + Chọn kiểm tra chữ ký (khoá công khai) b:

l < b < ф(п), b nguyên tố cùng nhau với ф(п), (tức là: gcd(b, ф(п))=1)

+ Chọn khoá ký (khoá công khai) a:

a

là phần tử nghịch đảo của b theo ф(п), (tức là: a*b = 1 (mod ф(п))

Giá trị n, b là công khai, giá trị а, p, q, ф(п) là bí mật

2/ Ký số.

Chữ ký trên m e p định nghĩa là у = Sig (m) = m a mod n

3/ Kiểm ứa chữ ký.

Chữ ký trên m đúng: Ver (m, y)= đúng <=> m = у b (mod n)

Ví dụ

46

1/ Sinh khóa\

+ Chọn các số nguyên tố p=3, q=5.

Tính n = p*q = 15

ф(п) = (p-l)*(q-l) = 2* 4 = 8

Đặt P=A=Zn

+ Chọn kiểm tra chữ ký (khoá công khai) b: Chọn b =3 l < b <

ф(п), b nguyên tố cùng nhau với ф(п)

+ Chọn khoá ký (khoá công khai) a: Chọn a = 3

A

là phần tử nghịch đảo của b theo ф(п), (tức là: a*b = 1 (mod ф(п)) 2/ Ký sơ

Chữ ký trên m —2 e p là у = Sig (m) = m a mod n =2 3 mod 15 = 8 3/ Kiểm ứa chữ ký

Ver (m, y) = đúng <=> m = у b (mod n)

2= 8 3 (mod 15), do đó chữ ký y=8 là đúng

2.1.1.2 Chữ ký mù theo sơ đồ chữkýRSA

- Mục đích là có chữ ký RSA trên m:

Theo sơ đồ chữ ký RSA, chữ ký trên m là giá trị у = m a (mod n)

- Các bước thực hiện:

1/

Người nhận chữ ký:

Làm “mù” thông điệp m, (hay “che giấu” m)

Giá trị “mù” của m là: z = Blind(m) = m rb (modn) (z là thông điệp “mù”)

2/

Người kỷ \

Tạo chữ ký trên z, (hay chữ ký “mù” trên m)

Y - mu = Sig(z) = z a (mod n)

= (m r b ) a (mod n)

47

= m a * r b a (mod n)

= m a * r (mod n)

3/

Người nhận chữ ký:

Xoá mù trên chữ ký у - mu, Nhận được chữ ký у trên m

UnBlind (y-mu) = y-mu / r

= m a * r (mod n) / r = m

a (mod n)

Ta đã đạt mục đích !

Hình 2.1 Lưu đồ thuật toán chữ ký mù RSA

V

í du

Mục đích là có chữ ký RSA trên m =2

Theo ví dụ trên, chữ ký là giá trị у = m a (mod n)

48

= 2 3 (mod 15) = 8

Các bước thực hiện:

1/

Người nhận chữ ký:

Làm “mù” thông điệp m = 2

Phần tó “làm mù” được chọn là r = 4

Giá trị “mù” của m là z = Blind(m) = m г b (mod n)

= 2 4 3 (mod 15)

= 8

2/

Người ký :

Tạo chữ ký trên z, (hay chữ ký “mù” trên m) y-mu = Sig(z) = z a (mod n)

= 8 3 (mod 15)

= 2 .

3/

Người nhận chữ kỷ\

Xoá mù trên chữ ký y-mu

Nhận được chữ ký trên m là у = m a (mod n) = 8

UnBlind (y-mu) = y-mu / r

= 2/4(mod 15) = 8 (Vì 4 8 (mod

15) = 2).

Ta đã đạt mục đích !

2.1.1.4 ứng dụng chữ ký “mù”

ửng dạng chữ ký “ m ù ” trong bỏ phiếu điện tử.

Phương thức bỏ phiếu “điện tử”, mỗi lá phiếu phải có Thông tin định danh

Nó có thể là một con số X nào đó và phải khác nhau Trên mỗi lá phiếu phải có chữ ký trên Số định danh X, thì lá phiếu mới có giá trị để bầu cử

49

Nếu cử tri CT chuyển ngay số định danh X cho Ban kiểm phiếu KP ký, thì họ lập tức xác lập được mối liên hệ giữa cử chi CT và số định danh X (Ví dụ qua địa chỉ nơi gửi trên Internet)

Đó là điều cử tri CT không muốn vì sợ rắc rối sau này

Cử tri biến đổi X thành y trước khi đưa cho Ban KP ký xác nhận Ban KP ký vào y, mà không

được chữ ký của Ban KP trên số định danh X, như vậy CT có quyền bầu cử

Với kỹ thuật này, cuộc bỏ phiếu bảo đảm được : quyền bỏ phiếu và bí mật Tức là : Chỉ người có quyền bầu cử mới được bỏ phiếu (Vì lá phiếu đã có chữ ký của Ban KP)

ủng dụng trong hệ thống tiền điện tử :

Giả sử Alice muốn mua quyển sách Q giá 50.000 VNĐ từ Bob Giả sử 2 người cùng sử dụng dịch vụ của một ngân hàng Giao thức giao dịch gồm 3 giai đoạn như sau :

1/ Rút tiền (Withdrawal) :

+ Alice tạo tiền điện tò c (Với thông tin : số seri, giá trị của c, ví dụ 50.000 VNĐ)

+ Alice yêu cầu ngân hàng ký “mù” lên c

+ Giao thức ký thành công, thì ngân hàng sẽ trừ 50.000 VNĐ trong tài khoản của Alice 2/ Thanh toán (Spending) :

+ Alice đưa c đã có chữ ký của ngân hàng cho Bob và yêu cầu quyển sách Q

+ Bob kiểm tra chữ ký trên C Nếu chữ ký không hợp lệ thì Bob kết thúc giao thức

3/ Gửi tiền (Deposit) :

+ Bob lấy c từ Alice và gửi cho ngân hàng

50

+ Ngân hàng xác thực chữ ký trên c.

Neu chữ ký hợp lệ, thi ngân hàng kiểm tra xem c đã được tiêu trước đó chưa

Nếu c chưa được tiêu, thì ngân hàng cộng thêm vào tài khoản của Bob

+ Nếu việc gửi tiền thành công, Bob sẽ gửi quyển sách Q cho Alice

Bob “khó” thể biết c từ tài khoản nào Khi Bob gửi c vào tài khoản của mình, ngân hàng cũng “khó” biết đồng tiền đó nhận từ Alice YÌ nó đã được ký “mù”

Như vậy tiền điện tử c không lưu lại dấu vết của những ai đã “tiêu” (Spending) nó

2.1.2 Chữ ký mù nhóm

Chữ ký số “mù nhóm” (Blind Group Signature) kết hợp thuộc tính của chữ ký “nhóm” và chữ ký “mù” Sơ đồ chữ ký số “mù nhóm” được Lysyanskaya và Ramzam đưa ra năm 1998

Các thủ tục trong sơ đồ chữ ký “mù nhóm”:

Setup: Dùng thuật toán xác suất để sinh khoá công khai y của nhóm và khoá quản lý bí mật Ç cho Trưởng nhóm

Join: Giao thức tương tác giữa Trưởng nhóm và thành viên mới của nhóm để cung cấp cho thành viên này khoá bí mật a và chứng nhận thành viên p

Sign: Giao thức tương tác giữa thành viên nhóm là Bob và người dùng bên ngoài nhóm là Alice có thông điệp m, để Bob có thể tạo chữ ký $ trên thông điệp này

($, o để xác định thành viên của nhóm đã ký chữ

ký $

2.1.2.1 Sơ đồ chữ ký “mù nhóm” CS97

- Người ký thực hiện các bước:

+ Chọn r e z n * và tính g = g q , z = g y

51

TjSKLOGLOG _ ~la Ui ) + Chọn Ui với 1< i < 7, 2 < Ui < 2 ц - 1, tính £

+ Chọn Vị e Zn* với 1< i < 1 tính * 1 ẽ

+ Gửi ( g, z , { ± i } , { -Гг }) cho người dùng (User)

- Người dùng chữ ký thực hiện các bước:

+ Chọnbímật b € {1, 2, , ^ -1}, f e z? n và tính w = ( a f ) e b (mod n)

+ Tính g = g w , z = z w

+ Thực hiện các bước của giao thức SKLOGLOG mù với các giá trị , Ĩ Ị SKLOGLOG t _ 1 - , _, , Ấ , f fSKLOGLOG 1 l ì , 1

{ } đê làm hợp lí các kêt quả { tị } băng cách thêm eb.

+ Thực hiện các bước của giao thức SKROOTLOG mù với các giá trị

rySKROOTLOG 4 * Ẵ 1 л 1 I r r 1 * 4 - ' ( j-SKROOTLOG 4 - ì r -, 1 Л + 1 Л / /74e b

Tính tiếp

Vj = SKLOGLOG Ị [a/z=g a ](m),v 2 =SKROOTLOGi[ß! zg= g ß ](m)

- Chữ ký “mù nhóm” ừên thông điệp m là( ềf z , VI, V2).

Nhận xét:

Chữ ký “mù nhóm” có thể xác thực bằng cách xác thực VI , V2

V 1 chứng tỏ rằng người ký biết một khoá thành viên a

v 2 chứng tỏ rằng anh ta biết một chứng nhận thành viên ß tương ứng với khoá đó

/\ *Lâ a л (^ a +l)

Vi cho thấy rằng: Z— ê vì thế: §

У 2 cho thấy rằng: (a a + 1) = ß với khóa bí mật e a của người ký và chứng nhận thành viên ß

của người ký

52

Việc làm này chỉ có thể xảy ra khi người ký là một thành viên nhóm

- Chữ ký có tính mù:

+ Đầu vào của người ký trong giao thức ký đã được làm “ mừ ’ từ Jr,z thành g,z bằng nhân

tố mù ngẫu nhiên w Hơn thế, hai SK được sử dụng đã có cấu trúc “mừ\ Do đó chữ ký ( g,z, X, V 2 )

không liên quan đến việc người ký có xem được thông điệp mà mình ký

+ Mô hình này cho phép mở rộng nhóm, kết nạp thêm thành viên sau khi đã thiết lập nhóm Hơn thế, số lượng thành viên nhóm có thể rất lớn, không phụ thuộc vào khoá công khai nhóm

2.1.2.2 ứng dụng chữ ký “mù nhóm ửng dụng chữ ký “mù nhóm ” cho Hệ thống bỏ phiếu điện tử

Chữ ký “mù nhóm” được Ban đăng ký sử dụng để cấp quyền bỏ phiếu cho cử tri

Với loại chữ ký này, chỉ cần một thành viên của Ban đăng ký ký vào lá phiếu là đủ đại diện cho cả Ban đăng ký ủng dụng chữ ký “mù nhóm ” cho đồng tiền điện tử

Alice là khách hàng của Ngân hàng A, Bob là khách hàng của Ngân hàng B

Alice cần trả một số tiền cho người bán hàng Bob Giao thức trả tiền như sau:

Thiết lập (Setup):

Các ngân hàng trong một nhóm, Trưởng nhóm là ngân hàng trung tâm Sau đó nếu có ngân hàng muốn gia nhập nhóm thì chỉ cần thực hiện giao thức join với Trưởng nhóm

1/ Rút tiền (Withdrawcal):

Thực hiện các bước sau:

+ Alice tạo đồng tiền điện tò T gồm sốSeri và mệnh giá.

+ Alice yêu cầu Ngân hàng A ký “mù nhoai’ vào T.

53

+ Ngân hàng A ký “mù nhóm” vào T và rút số tiền tương ứng từ tài khoản của Alice

Bây giờ Alice sở hữu tiền T có giá trị trong cả nhóm ngân hàng

2/ Thanh toán (Spending):

Thực hiện các bước sau:

+ Alice đưa cho Bob tiền T đã có chữ ký “ nhoai' của Liên ngân hàng.

+ Bob kiểm tra và xác thực chữ ký “nhóm” của Liên ngân hàng trên T

Việc này có thể thực hiện dễ dàng nhờ kho á công khai của nhóm

3/ Gửi tiền (Deposit):

Thực hiện các bước sau:

+ Neu các bước trên hoàn thành, Bob gửi tiền T cho Ngân hàng B Ngân hàng B nhận, vì

T là tiền “chung’ trong Liên ngân hàng.

+ Ngân hàng B xác thực chữ ký trên T cần nhớ rằng B không cần biết A là ai khi thực hiện việc này, mà chỉ cần sử dụng khoá công khai của nhóm

+ Ngân hàng B kiểm tra tiền T đã được tiêu chưa qua danh sách các đồng tiền đã tiêu lưu

ở ngân hàng, để tránh tiêu tiền T 2 lần

Nếu kiểm tra hoàn tất, Ngân hàng B nạp thêm vào tài khoản của Bob số tiền T Bob yên tâm gửi hàng cho Alice

2.1.3 Chữ ký mù bội ('Blind Multi Signature)

Từ năm 1997, Các hệ mật trên đường cong elliptic (Elliptic Curve Cryptography

- ECC) thu hút ngày càng nhiều hơn sự quan tâm của các chuyên gia mật mã Các hệ mật được xây dựng trên đường cong Elliptic thực sự làm hài lòng các nhà nghiên cứu do tính nhỏ gọn của khoá, yêu cầu tính toán không nhiều và đặc biệt là có thể triển khai trên các

hệ thống nhỏ với sức tính toán yếu, như các thiết bị cầm tay Đó là những tính chất và ưu thế vượt trội của ECC so với các hệ mật khác

54

2.1.3.1 Sơ đồ chữ ký bội ứên ECC Sinh khóa:

- Chọn các tham số cho đường cong Elliptic E:

+ Số nguyên tố p và số nguyên n.

+ Phần tử ã], ã 2 của GF(ịP), xác định phương trình của iítrên GF(jf) Đó 1 di Ý =jị3 +ãjX + a 2 trong trường hợp p>3 (với 4 a !3 + 2 7 a2 ^ 0 )

+ Phần tử Xp và y p trong GF( Ị ?) xác định điểm p = (x p , ỵ p ) trên E(GF( Ị P)) Giả thiết p & o (ơlà điểm trung hòa) và Pcó bậc q

+ Hàm chuyển c: GF(p n ) -ỳ z^ được định nghĩa là:

c(x) = ^ c k Ị j e z , X = e G F ( j f ) , 0 < C ị < p, a là cơ số của Hệ cơ số.

- Chọn các khóa:

+ Chọn ngẫu nhiên khóa mật d e [2, q-1] Khóa công khai Q = dp, đó là một điểm

trên E

Chữ ký “mù bội” trên đại diện thông điệp m:

1/ Sinh khóa:

Giả sử rằng có t người ký Ui, với i =1, 2, t Việc sinh khóa được thực hiện như sau:

- Mỗi người ký Uị chọn ngẫu nhiên khóa bí mật đi e [2, q-1].

- Khóa công khai của người ký Uj là điểm:

Qi = diP=(x ăi , y ă ), i = l , 2, t

- Khóa công khai chung cho nhóm người ký là:

Q = Qi + + Qt = dP = (x d ,ỵ d ^trong đó d = ổỊ + + d t (modq)

2/ “Chữ ký mù bội” trên đại diện thông điệp m:

+ Người ký Ui tạo cặp {kị,Rị)- Chọn ngẫu nhiên ẨỊ.e[1,^—1] và tính R i = ịp={x ki ,yộ

55

Uị tính tiếp ĩị = c(xộ, sau đó gửi ĩị và Rị cho Ban thư ký của nhóm.

+ Ban thư ký chọn tham số làm “mù” a, b e [2, ợ-l].

Tính R— aR+ bQ— ( xk , yk ) và r — c(x k ) mod q trong đó R= + Q= Q + + Ọ t

Làm “mù” / 22bằng cách tính /77= (m+ r+ b)a~ l —ĩ Gửi bản tin “mù” ĩ ĩ ị r , tới người ký Uj.

+ Mỗi người ký Uj tính chữ ký Sj = dj(m+ r) + i: y (mod q) Sau đó gửi Sj tới Ban thư ký.

+ Ban thư ký xóa “mù” bằng cách tính s= asmodq với s = s l + + s t mod

g-

Cặp (r, s) là “chữ ký” thật trên đại diện thông điệp m.

3/ Kiểm tra chữ ký “mù”:

+ Tính SjP- (ĨĨ 1 + ĩ) Q = (x £ị ,y e ).

7 + Kiểm tra Tj = c(x e ){moáq ), V i =l , , t Nếu đúng thì (r, s) là chữ ký hợp

lệ

2.1.3.2 ứng dụng chữ ký “mù bội”

Các hệ mật trên đường cong Elliptic (ECC) có thể được sử dụng hiệu quả trong các thiết

bị không dây như là Cell phone, PDA, Smart card, vì ECC có thể hoạt động được trên các thiết bị nhỏ (bộ nhớ nhỏ, bộ tính toán nhỏ, số “cổng” ít, tốn ít năng lượng), mà vẫn đảm bảo độ mật cao [4] Với ECC, chỉ cần sử dụng các khoá độ dài nhỏ, nhưng vẫn hiệu quả như các hệ mật khác có

độ dài gấp nhiều lần Ví dụ hệ mật RSA dùng khóa độ dài 1024 bit, nhưng ECC chỉ cần khoá 160 bit

đã mang lại độ mật tương tự Mặt khác, ECC còn tính nhanh hơn 4 lần

56

Khoá RSA 1024-bit có thể thoả đáng với các giao dịch ngày nay, nhưng đến cuối thập kỷ này, để bảo đảm độ mật cần thiết, phải sử dụng khoá RSA 2048 -bit Trong khi đó, để có được độ mật tương tự, ECC chỉ cần khoá 203-bit Hơn thế nữa, thời gian tính toán chỉ bằng 1/10, chưa kể việc ECC sinh khóa nhanh hơn RSA

Các hoạt động kinh tế xã hội (thanh toán, rút tiền, bỏ phiếu, đấu thầu, góp ý kiến, ) diễn

ra mọi lúc mọi nơi Các thiết bị cầm tay có thể kết nối an toàn từ xa (Smart card, E-token, ) chắc chắn sẽ được sử dụng nhiều để tiết kiệm thời gian và sức lực Khi đó không thể quên công nghệ ECC

Việc xây dựng ứng dụng “Đa chữ ký mù” trong Hệ thống bỏ phiếu điện tử và Hệ thống thanh toán liên ngân hàng giúp hệ thống trao đổi thông tin được toàn hơn ứng dụng ứong bỏ phiếu

điện tử

Theo phương thức bỏ phiếu “điện tử”, mỗi lá phiếu phải có Thông tin định danh Nó có thể là

một con số X nào đó, và phải khác nhau Trên mỗi lá phiếu phải có chữ ký trên Số định danh X, thì

lá phiếu mới có giá trị để bầu cử Nếu cử tri CT chuyển ngay Số định danh X cho ban kiểm phiếu (KP) ký, thì lập tức họ xác lập được mối liên hệ giữa CT và X (VD qua địa chỉ nơi gửi trên Internet)

Đó là điều CT không muốn vì sợ rắc rối sau này Đe tránh tình huống trên, cử tri biến đổi

X thành y trước khi đưa cho Ban KP kí xác nhận Ban KP ký vào y, mà không biết đó là Số định danh X đã bị che dấu (làm mù) Họ trao chữ ký trên y là z cho CT Cử tri “xoá mù” trên z sẽ được chữ ký của Ban KP trên số định danh X, như vậy CT có quyền bầu cử

Đe phòng tránh sự gian lận “thông đồng” giữa một người nào đó trong Ban KP và cử tri,

Hệ thống dùng “Đa chữ ký mù’ để bảo đảm sự nhất trí cao khi cấp quyền bỏ phiếu cho cử tri.

ửng dụng trong hệ thống tiền điện tử.

Một đồng tiền điện tử c có 2 thông tin quan trọng nhất : số Seri giá trị của đồng tiền

57

Cũng như đồng tiền thông thường (bằng giấy), Hệ thống phải bảo đảm các yêu cầu sau : Ngân hàng phát hành đồng tiền c “ khổ ’ nhận biết đồng tiền này (ví dụ : số Seri) của người mua

hàng đã rút ra từ tài khoản của họ ; Ngân hàng thu nạp đồng tiền c cũng “khổ’ thể biết đồng tiền

c đã được nhận từ người bán hàng ; Mặt khác người bán hàng “Ắốơ” thể biết c được rút ra từ tài khoản nào Để thực hiện được yêu cầu trên, hiện nay người ta dùng “Chữ ký mù’ để ký lên đồng

tiền c

Như vậy tiền điện tò c không lưu lại dấu vết của những ai đã “tiêu” (Spending) nó

Trên thực tế đồng tiền c không chỉ do một ngân hàng phát hành, nó có thể là đồng tiền chung của nhiều ngân hàng Vì vậy nó phải mang dấu ấn của các ngân hàng liên quan Trong trường hợp này Tổ chức liên ngân hàng sẽ thống nhất một “Đa chữ ký mử' để ký lên đồng tiền c.

2.1.4 Chữ ký không thể phủ nhận

Chữ ký “không thể phủ nhận” [6], [11], [14] được 2 tác giả là David Chaum và Hans van Antwerpen đề xuất vào năm 1989 Sơ đồ chữ ký này có 2 đặc điểm chính:

1/ Tiến trình thẩm định chữ ký được tác động qua lại, vì vậy người ký có thể giới hạn người xác minh chữ ký : Nghĩa là, người ký cho phép duy nhất những người đã được xác thực có quyền truy cập tài liệu để xác minh chữ ký của họ Nếu tài liệu bị rơi vào người thứ 3 thì người thứ 3 này không thể xác minh chữ ký một cách chính xác

2/ Giao thức chối bỏ là một giao thức mật mã cho phép xác định liệu chữ ký có phải là chữ

ký giả mạo hay không

Trong phần trước ta đã trình bày một số sơ đồ chữ ký điện tử Trong các sơ đồ đó, việc kiểm thử tính đúng đắn của chữ ký là do người nhận thực hiện Nhằm tránh việc nhân bản chữ ký

để sử dụng nhiều lần, tốt nhất là để người gửi tham gia trực tiếp vào việc kiểm thử chữ ký Điều

đó được thực hiện bằng một giao thức kiểm thử, dưới dạng một giao thức mời hỏi và trả lời

58

Giả sử tài liệu cùng chữ ký từ G gửi đến N Khi N yêu cầu G cùng kiểm thử chữ ký, thì một vấn đề nảy sinh là làm sao để ngăn cản G chối bỏ một chữ ký mà anh ta đã ký, G có thể tuyên bố rằng chữ ký đó là giả mạo ?

Đe giải quyết tình huống trên, cần có thêm giao thức chối bỏ, bằng giao thức này, G có thể chứng minh một chữ ký là giả mạo Neu G từ chối tham gia vào giao thức đó, thì có thể xem rằng G không chứng minh được chữ ký đó là giả mạo, tức là không chối bỏ được chữ ký của mình

Sơ đồ chữ ký không phủ định được gồm 3 phần [3]:

1- thuật toán ký, 2- giao thức kiểm thử, 3- giao thức chối bỏ

2.2 Stf đồ chữ ký không thể phủ nhận

2.2.1 Sơ đồ chữ ký không thể phủ nhận Chaum - Van Antverpen

1/ Chuẩn bị các tham sỗ:

Chọn số nguyên tố p sao cho bài toán log rời rạc trong Z p là khó

p = 2*q+l, q cũng là số nguyên tố.

Gọi p là nhóm nhân con của Zp* theo q (Pgồm các thặng dư bậc hai theo modp)

Chọn phần tử sinh g của nhóm p cấp q

Đặt P = A , K = ị(p, g, ã, h): ã e zq, h =g a m o d p }

2/ Thuật toán kỷ:

Dùng khoá bí mật k’ =a để ký lên x :

Chữ ký là y =Sig *> (x) = x a mod p.

3/ Giao thức kiểm thử:

Dùng khoá công khai k”=(p, g, h)

Với X, ỵ e p, người nhận N cùng người gửi G thực hiện giao thức kiểm thử:

1) N chọn ngẫu nhiên ej, Õ 2 e Zq*

59

2) N tính с = y h 1 2 modp, và gửi cho G

ã 1 mod g

3) G tính а = с mod рук gửi cho N

4) N chấp nhận y là chữ ký đúng, nếu d = x J g 2 ( m o d p)

41 Giao thức chối bỏ:

1) N chọn ngẫu nhiên e 2) N tính с = ý 1 h 2 mod p và gửi cho G.

ã' mod q

3) G tính d = c mod p và gửi cho N.

4) N thử điều kiện d £ x 1 g 2 (mod p) Nếu điều kiện đúng thì thực hiện bước 5, nếu sai

thì chấp nhận chữ ký đúng

5) N chọn ngẫu nhiên f j , Î 2 e Z q

6) N tính С = y 1 h 2 m o d p N ầ gửi cho G

mod q

7) G tính D = С mod p và gửi cho N.

8) N thử điều kiện D ^ X 1 g

2

(mod p) Neu điều kiện đúng thì thực hiện bước 9, nếu sai thì chấp nhận chữ ký đúng

9) N kết luận y là chữ ký giả mạo nếu:

(d*g G2 f= (D*g f2 ỹ (mod p)

2.2.2 Tính hợp thức của các giao thức

Ta sẽ chứng minh hai định lý sau đây để chứng tỏ tính hợp thức của các giao thức kiểm thử và chối bỏ của sơ đồ chữ ký Chaum-van Antverpen

Định lý 1:

a) Nếu y đúng là chữ ký của G trên X, tức

y = X a (mod p), thì việc N chấp nhận y là chữ ký của G trên X theo giao thức kiểm thử là đúng

60

b) Nếu y 7 Ế x a (mod p), tức y không phải là chữ ký của G trên X , thì việc N, theo giao thức kiểm thử, chấp nhận y là chữ ký của G trên X, có thể xẩy ra với xác suất 1/q Chứng minh:

a) Giả sử y = xa (mod p) Khi đó, y = X (mod p) (chú ý rằng tất cả các số mũ

ã 1

đêu được tính theo mod q) Ta cũng có h = g (mod p) Do đó:

d — С =y h =x g (modp)

và theo giao thức kiểm thử, N chấp nhận y là chữ ký của G trên X , việc chấp nhận đó là đúng b) Bây giờ giả sử y £ -X й (mod p) Trước hết ta chú ý rằng mỗi lời mời hỏi с tương ứng với đúng q cặp (e b e 2 ), vì ỵvầ h là các phần tử của nhóm nhân G cấp q Khi G nhận được câu hỏi

с , G không có cách gì để biết là N đó dùng cặp (e b e 2 ) nào trong

q cặp có thể đó Ta chứng minh rằng, do y í x a (mod p), nên trong q cặp đó chỉ có đúng một cặp thoả mãn đồng dư thức d — X 'g (mod 2 p) Thực vậy, ta có thể đặt: с =g*, d=gj, X =gk,ỵ=g1

với i, j, к, 1 e Zq

g là phần tử sinh của G , và hai đồng dư thức с = y 1 h 2 và d = X 1 g 2 (mod p )tương đương với hai

phương trình:

ji = lei + ae 2 (mod q)

Ịj = kei + e 2 (mod q)

Từ giả thiết ỵ £ (mod p) => g 1 0 g ak => 1 - ak í 0 (mod q), tức định thức của hệ phương trình nói trên (với các ẩn số ei, e 2 ) là ỉ 0 (mod q) Như vậy, mỗi d eG là câu trả lời đúng (theo giao thức kiểm thử) chỉ với một cặp (e b e 2 ) trong q cặp có thể

Vì vậy, nếu yí X 1 (mod p) , thì xác suất để N chấp nhận y là chữ ký của G trên X (theo giao thức) là bằng 1/q Định lý được chứng minh

Đối với giao thức chối bỏ, ta có định lý sau đây :

61

Định lý 2:

a) Neu y í X a (mod p), và cả G, N đều tuân theo giao thức chối bỏ thì:

(d*g e2 /‘=(D*g^ 2 ) €l ( m o d p ) , tức giao thức cho kết quả chính xác.

b) Nếu y = x a mod p, G và N đều tuân theo giao thức, và có:

ei

&2

dix g (mod p)

fl f 2

D í X g (mod p)

Khi đó, đông dư thức (d*g ) = (D*g ) (mod p) đúng với xác suât 1/q , tức nêu y đúng là chữ ký của G trên X , thì theo giao thức, N có thể kết luận rằng nó là giả mạo (một cách sai lầm) với xác suất 1/q

Chứng minh:

a) Giả thử yí x a mod p, và G, N cùng thực hiện giao thức chối bỏ Do y không là chữ ký của G trên X nên N sẽ kiểm thử đúng các bất đồng dư thức trong các bước 3 và 6 của giao thức Vì h =

g a (mod p), nên ta có:

(dg 2 ỷ = ((y' Ể 2 f g 2 f (mod p)

ã 1 в! Ĩ! e 2 ã 1 f, -e 2 fi .

=/ h g (modp)

= y ’ a f ' (modp)

Tương tự, ta cũng có

~ fĩ - e ' ‘ a f ’ J 4

(Dg ) =y (modp)

Như vậy, đồng dư thức ở điểm 9 của giao thức được nghiệm đúng, và kết luận y là chữ ký giả mạo của A trên X là chính xác, không thể bác bỏ được

b) Bây giờ giả thiết y = x a (mod p), và G, N cùng thực hiện giao thức chối bỏ

w l/ei -еУе/

Đặt x 0 = d g mod p, ta có:

я ß/ei -aeyei ei e 2 м/в! -аеУв! „ , ,

x 0 = d g =(x g ) g = r =y(modp).

62

Theo điểm b) trong định lý 1, в có thể chấp nhận y là chữ ký của A trên x 0 , tức là có đồng dư thức

D = Xo 1 g Í2 (mod p), với xác suất 1/q Nhưng đồng dư thức đó tương đương với đồng dư thức

-e 2 fi _ -Ỉ2 ei

(dg ) = ( D g ) (mod p), tức đồng dư thức này cũng có thể xẩy ra với xác suất 1/q Định lý được chứng minh

Ta chú ý rằng trong giao thức chối bỏ, cặp (e b e 2 ) được sử dụng để tạo ra x 0 với xồ ^ y(mod p); còn cặp (f b f 2 ) được dùng để kiểm thử xem у có là chữ ký của G trên x 0 hay không

2.2.3 Ví dụ về các giao thức kiểm thử và chối bỏ

2.2.З.1 Ví dụ ỉ

về giao thức kiểm thử:

Ký trên X = 229 1/ Chuẩn bị các tham số'

Chọn số nguyên tố p = 467=2 * q +1, q =233 cũng là số nguyên tố.

Chọn phần tò sinh của nhóm p là g = 4, (p là nhóm nhân con cấp q của Zp*)

Đặt p = A = p, K= {(p, g, a, h): a e z *, h = g a m o d p }

Chọn khóa mât a = 121

Khóa công khai h =g a mod p = 4 121 mod 467= 422

2/

Thuật toán ký:

Dùng khoá bí mật k’ =a để ký lên X =229:

Chữ ký là y =Sig к’ (x) = X a mod p

=22S? 21 mod 467 = 9

3/ Giao thức kiểm thử:

Dùng khoá công khai k”=(p, g, h ) = (467, 4, 422)

63

1/

N chọn ngẫu nhiên в! =48, e 2 =213 £ z *

2/

N tính с =ý‘h 2 modp = 7 và gửi cho G.

3/

G tính d= с 4 modp =339và gửi cho N.

4/

N chấp nhận у là chữ ký đúng, nếu d = x‘g 2 mod p

N thử điều kiện d = x g mod p 2

Rõ ràng 235= 229 48 * 4 (mod 467) 213

N chấp nhận 3» =9 đúng là chữ ký của G trên X =229 về giao

thức chối bỏ:

Giả sử G gửi tài liệu JC =226với chữ ký у = 183 Giao thức chối bỏ thực hiện: 1/ N

chọn ngẫu nhiên ej =47, e 2 = 137 e z q *

2/

N tính с = у 1 h 2 modp = 306, và gửi cho G.

3/

G tính d = с 4 mod p = 283 , và gửi cho N

4/

N thử điều kiện d z Ế x g mod p 2

Điều kiện trên đúng vì 283 ^ 226 47 * 4 137 = 145 mod 467

N lại tiếp tục thực hiện bước 5 của giao thức

5/

N chọn ngẫu nhiên fỵ =225, Í2 = 19 G Zq

6/

N tính С =ỷ lí 2 modp = 348, và gửi cho G.

7/ G tính D = cỉ q modp = 41, và gửi cho N.

8/

N thử điều kiện D ^ x ỉl g f2 (modp)

D = 41 trong khi x g ( m o d p ) =226 225 * 4 19 = 295 mod 467

Điều kiện 8 là đúng, nên N thực hiện bước 9:

9/

N kết luận ỵ là chữ ký giả mạo nếu:

(d*g 62 ỷ = (D*g Í2 ỹ (modp)

64

N tính giá trị của 2 vế đồng dư:

(d*g e2 f= (283 *4 137 f 5 = 79 mod 467 (D*g f2 )'=(41 * 4~ 1 9 f 7 = 7 9 mod 467 Hai giá trị đó bằng nhau

Kết luận chữ ký y là giả m ạ o

2.2.3.2 Ví dụ 2 về giao thức kiểm thử:

Chọn p = 467, q =233 (p = 2q +1), g = 4 là phần tò sinh của một nhóm con p cấp 233 của Z 467 Chọn a =101, khi đó ta có h = g a mod p = 4101 mod 467 = 449

G

có cặp khoá К =(k’, k") với k’= а =101, và k" = (467, 4, 449) Giả sử G ký trên văn bản

X =119 với chữ ký:

y = 119101 mod 467 =129

N có thể dùng giao thức kiểm thử để biết y có đúng là chữ ký của G trên X hay không như sau: N chọn ngẫu nhiên e!=38, e 2 =397, và tính с = 13; G sẽ trả lời lại bằng d = 9 N thử điều kiện:

d = x ' g 2 mod p, tức là 9=

11938.4397 (mod 467)

Đồng dư thức đó đúng, в chấp nhận 129 đúng là chữ ký của A trên văn bản 119 về giao

thức chối bỏ:

Giả thử A gửi văn bản X =286 với chữ ký у = 83 в chọn ngẫu nhiên e!=45, e 2 =237, rồi tính с

=305 và gửi cho A; A trả lời lại bằng d =109 в thử điều kiện:

_ ei e 2 _

d ^ X g mod p,

điều kiện đó được thoả mãn vì 109^149 (= 28645.4237 mod 467)

В lại tiếp tục phần sau của giao thức bằng cách chọn ngẫu nhiên fl =125, f 2 =9, và tính

С =270, gửi cho A, A trả lời lại bằng D =68 в lại thử điều kiện D Ỉ 2Ẻ X 1 g 2 , điều kiện này cũng được thoả mãn YÌ:

65

68

* 25 (=286.125.49 mod 467).

Bây giờ B lại thử điều kiện cuối cùng của giao thức bằng cách tính:

( d a - *) Ẩ =(109.4“ 237) ) 125 =188 (mod 467)

= (68.4” 9 ) 43 =188 (mod 467) Hai giá trị đó bằng nhau B có thể kết luận y không phải là chữ ký của A trên X với xác suất sai lầm là 1/233

Ví dụ này được trình bày với mục đích minh hoạ, nên chỉ sử dụng các số nguyên

tố p, q bé cho dễ tính

Trong thực tế ứng dụng, để bảo đảm tính an toàn, ta phải dùng các số p, q rất lớn, chẳng hạn phải là các số có biểu diễn nhị phân cỡ 512 bit, khi đó ta có q > 2 510 , tức là

1/q < 2" 510 , một xác suất rất bé, có thể bỏ qua; và vì vậy, các yêu cầu đối với các giao

thức kiểm thử và giao thức chối bỏ có thể xem là được thoả mãn

2.2.4 Các ứng dụng chữ ký số không thể phủ nhận trong đời sống kinh tế -xã hội

Chữ ký số nói chung và chữ ký số không thể phủ nhận nói riêng đã và đang được ứng dụng rộng rãi trong đời sống kinh tế - xã hội Một số ứng dụng phổ biến có thể được kể ra như:

o Bản quyền phần mem (licensing softwares), o Đấu giá

và bỏ phiếu điện tử o ứng dụng trong các giao dịch đặt hàng qua mạng o Dịch vụ chứng thực chữ ký số

o ứng dụng trong ký và mã hóa sử dụng chứng thư số trong E-Office o ứng dụng trong việc thu thuế của cá nhân và doanh nghiệp

66

Kết luân

Trong chương 2 đã trình bày về một số chữ ký số đặc biệt như: chữ ký mù RSA, chữ ký

mù nhóm, chữ ký mù bội đồng thời trình bày được thuật toán ký của các chữ ký số đặc biệt trên

và các ứng dụng của chúng trong thực tế

Chương này cũng trình bày cụ thể về chữ ký số không thể phủ nhận Chaum - Van Anterpen như sơ đồ chữ ký, chứng minh tính hợp thức của các giao thức trong sơ đồ chữ ký và một số ví dụ minh họa để làm rõ thêm về phương thức tạo chữ ký số theo sơ đồ Chaum - Van Anterpen Ngoài ra, trong chương 2 cũng trình bày một số ứng dụng của chữ ký số không thể phủ nhận trong đời sống kinh tế, xã hội như: Bản quyền phần mem (licensing softwares), đấu giá và

bỏ phiếu điện tử, ứng dụng trong các giao dịch đặt hàng qua mạng, dịch vụ chứng thực chữ ký số, ứng dụng trong ký và mã hóa sử dụng chứng thư số trong E-Office, ứng dụng trong việc thu thuế của cá nhân và doanh nghiệp

67

Chương 3 Xây dựng chương trình ứng dụng chữ ký không thể phủ nhận trong việc xác thực các giao dịch đặt hàng qua mạng

3.1 Bài toán đặt ra và môi trường thử nghiệm

3.1.1 Bài toán

Khi tham gia thương mại điện tò, người sử dụng thu được rất nhiều lợi ích như:

- Thu thập được nhiều thông tin

- Giảm chi phí bán hàng và tiếp thị và giao dịch

- Xây dựng quan hệ đối tác một cách nhanh chóng, thuận tiện

- Tạo điều kiện sớm tiếp cận kinh tế tri thức

Tuy nhiên, bên cạnh những lợi ích trên, trong thương mại điện tử vẫn còn tồn tại những

- Làm sao để xác nhận được những thông tin giao dịch đúng là của đối tác?

- Làm sao để xác nhận được thông tin giao dịch không phải là bản sao chép?

- Làm sao để tránh được các nguy cơ đánh cắp, thay thế sửa sai hoặc cố tính phá hỏng thông tin, nguy cơ mạo danh hay chối cãi nguồn gốc Giả sử một đơn hàng cùng chữ ký của người gửi (G) được gửi đến người nhận (N), làm sao để N có thể ngăn cản G chối bỏ chữ ký mà G đã ký (G có thể tuyên bố rằng chữ ký đó là giả mạo hoặc được sao chép từ đơn hàng và chữ ký trước đó của G)?

Từ những vấn đề trên, bài toán đặt ra là: “Xây dựng một giao thức để thông qua giao thức này người ký có thể chứng minh một chữ ký không phải của mình đúng thực là giả mạo” Như vậy, nếu người ký từ chối không tham gia giao thức đó thì người nhận có bằng chứng để chứng tỏ rằng người ký không chứng minh được đó là chữ ký giả mạo, tức người gửi không thể chối bỏ được chữ ký của mình

3.1.2 Môi trường thử nghiệm

- Ngôn ngữ lập trình: Visual c# (công dụng + lý do chọn)

68

- Môi trường cài đặt thử nghiệm:

Cấu hình máy tính đề nghị để cài đặt chương trình:

+ CPU @2.0 Ghz + Ram 512 MB + Memory 40 GB + Hệ điều hành: Window XP, Win 2000, Win Vista, Win7,

3.2 Chức năng chính của chương trình và thuật toán sử dụng

3.2.1 Chức năng kỷ trên đơn hàng và gửi đơn hàng kèm chữ ký

Để thực hiện chức năng ký trên đơn hàng và gửi đơn hàng kèm chữ ký, chương trình thực hiện các bước như sau:

Bước 1 : G lựa chọn các thông số ban đầu như p, g Bước 2: G nhập đơn hàng cần ký và khóa bí mật Bước 3 : Thực hiện ký trên đơn hàng và gửi đơn hàng kèm chữ ký cho N Quá trình thực hiện ký được thực hiện theo sơ đồ sau:

Hình 3.1 Sơ đồ chức năng ký trên đơn hàng và gửi đơn hàng kèm chữ ký

3.2.2 Chức năng thực hiện giao thức kiểm thử

Đây là chức năng cho phép người G xác thực chữ ký của mình, chương trình thực hiện các bước như sau:

Bước 1: N chọn một cặp (ei, e 2 ) tùy ý e Zp

69

Bước 2: N tính mã kiểm tra c = y h 2 mod p và gửi c cho G

a' 1 mod q

Bước 3: G tính mã xác thực d = c mod p rôi gửi lại cho N

Bước 4: N so sánh d với X g 2 mod p Nếu d = X g 2 mod p, N xác nhận chữ ký của G và đưa ra thông báo “Xác nhận chữ ký Giao dịch an toàn!”, ngược lại đưa ra thông báo "Có nghi vấn trong giao dịch Xin kiểm tra lại thông qua giao thức chối bỏ!" và chuyển qua chức năng thực hiện giao thức chối bỏ

Quá trình thực hiện chức năng thực hiện giao thức kiểm thử được mô tả bằng sơ

đồ sau:

Chuyển sang giao thức chối bỏ

Hình 3.2 Sơ đồ chức năng thực hiện giao ứiức kiểm thử

70

3.2.3 Chức năng thực hiện giao thức chối bỏ

Đây là chức năng cho phép người G chối bỏ chữ ký (trong trường hợp chữ ký là giả mạo), chương trình thực hiện các bước như sau:

Bước 1: N chọn một cặp (f b f 2 ) tùy ý e Zp

fl Î2

Bước 2: N tính mã kiêm tra с = y .h mod p và gửi с cho G

a' 1 mod q

Bước 3: G tính mã xác thực D = с mod p rôi gửi lại cho N

Bước 4: N so sánh D với X mod g p Nêu D = X .g mod p, N xác nhận chữ ký của G và đưa ra thông báo “Xác nhận chữ ký Giao dịch an toàn!”, ngược lại N chuyển sang bước 5

Bước 5: N so sánh (dg 2 )‘ với (Dg 2 ) 1 Nếu (dg 2 )‘= (Dg 2 ) mod p, N kết luận được chữ ký của

G

đã bị giả mạo và đưa ra thông báo "Cảnh báo! Chữ ký trong đơn hàng là chữ ký giả mạo ! "

Quá trình thực hiện chức năng thực hiện giao thức chối bỏ được mô tả bằng sơ

đồ sau:

71

Hình 3.3 Sơ đồ chức năng thực hiện giao thức chống chối bỏ:

3.3 Một số giao diện quan trọng trong chương trình

3.3.1 Giao diện nhập thông số chung

Giao nhiện nhập thông số chung có cấu trúc như sau:

Phần thong số chung

Chọn sõ p- 467 Phân tử sinh g = pr

Hình 3.4 giao diện nhập thông số chung Cho phép

người G nhập các thống số:

- Số nguyên tố p

- Phần tử sinh g

72

3,3.2 Giao điện nhập đơn hàng và nhện đơn hàng

Giao nhiên nhập đơn hàng có cấu trúc áhư sau:

Phần dành cho khách hàng (Người gừỉ - G)

Trang 6

Chữ ký giả mạo: I

Trang 7

G iao thức xác thực củ a N

Chọn cặp sõ KT ngẫu nhiên lần 1: e1= ps e2= |213 4 Nhập I

Mã xác thực nhận đưdc lãn 1 d = 333 0, Kiểm tra I

Hình 3.5 Giao diện nhập đơn hàng Tại giao diện

này, người sử dụng cần thực hiện các thao tác:

- Nhập khóa bí mật (khóa riêng) a tại ô số 1

- Nhập văn bản (đơn hàng) tại ô số 2

- Thực hiện ký và gửi đom hàng cho người nhận tại nút “3.Ký và gửi”

- Ngoài ra, chương trình còn cho phép tạo ra chữ ký giả mạo (nhằm mục đich thử nghiệm giao thức chối bỏ) Để tạo chữ ký giả mạo, người sử dụng nhập chữ ký giả vào ô “Chữ ký giả” rồi ấn nút “3\Ký giả và gửi”

Sau khu thực hiện các bước trên, đơn hàng và chữ ký sẽ được gửi sang cho N Giao nhiên nhận đơn hàng có cấu trúc như sau:

Phần dành cho cừa hàng (Người nhận - N)

Khóa công khai nhận được p= p67 g= h= \ A Z 2

Văn bản nhận được: |229

Hình 3.6 Giao diện nhận đơn hàng

73

Giao diện này cho phép người sử dụng nắm được các thông tin như số nguyên tố p, phần

tử sinh g, khóa công khai h

3.3.3 Giao điện giao thức kiểm thử

Giao diện giao thức kiểm thử có cấu trủc gồm 2 phần như sau:

Trang 8

Phần thông số chung

Chọn số p= 467 Phân từ sinh g = |4 GIAO THỨC XÁC THựC VÀ CHỐI Bổ CHỮ KÝ

I.Nhập khóa riêng: |l21

3.Ký và gửi

Khóa cồng khai nhận đưdc p= 1^67 g= \ A h= 1^22 2.Nhập văn bản: |22G Văn bàn nhận đưđc: |226

Chữ kỷ thật: 1

hai 3'.Kýgiàvà Chữ ký già mạo: |

ltu

G iao thức xáo thực cùa G

Mã kiểm tra nhận đưdc c= 1^06

Chữ ký nhận được: |l 83 G iao thức xáo thực cùa N Chọn cặp sõ KT ngẫu nhiên lân 1: e1= |47 e2=|l37 4.Nhập

I Mã kiểm lăn 1 c = |30G S.Gừi I 6.Tính mã xác thực |d= |£83 7-Gừi 1 Mã xác thực nhận được lăn 1 d = |283 ; 8.Kiểm

tra

Mẫ kiểm tra nhận được c= 1^8

11 Tính mã xác 1 D= |41 12 Gửi 1 Chọn cặp Sũ KT ngẫu nhiên lăn 2: f1- |225 f2= |19 9.Nhập I

Mã kiểm lăn 2 c = |348 1Ũ.Gửi 1

Mã xốc thực nhận đưdc lăn 2 D = |41 13.Kiể

m tra

Giao thức xác thực cùa G

Mã kiểm tra nhận được c= y 7.Gửi

Hình 3.7 Giao điện kiểm thử cùa N và G Giao diện này cho phép người sử

dụng thực hiện các thao tác kiểm thử như sau:

- Người nhận N nMp vào cặp số ngẫu nhiên ei và e 2 rồi nhấn nút “4.Nhập” Sau khi N nhấn nút “4.Nhập”, chương trình hiển thị mã kiểm tra c

- N nhấn vào nút “5.Gửi”, chương trình sẽ gửi mã kiểm tra cho G

- Tại giao diện kiểm thử của G, sau khi nhận được c, G tiến hành tính d tại “ó.Tính mã xác thực” rồi gửi d cho N thông qua nút “7.Gửi”

- T ạ i giao diện kiểm thử của N, sau khi nhận được d, N tiến hành so sánh d với x ei g 62

mod p tại nút “8.Kiểm tra” Nếu d = x ei g 62 mod p chương trình sẽ hiển thị lên thông báo xác nhận chữ ký:

74

Xác nhận chữ ký Giao dịch an toàn!

OK

Hình 3.8 Thông báo xắc nhận chữ ký

Nếu d ĨẺ X \g 2 chương trình sẽ hiển thị lên thông báo yêu cầu thực hiện giao thức chối bỏ:

có nghi vẩn trong giao dịch Win kiẽm tra lại thông qua giao thức chũi bỏ!

QK

Hình 3.9 Thông báo yêu cầu thực hiện giao thức chối bỏ

3.3.4 Giao diện giao thức chối bỏ

Giả sử, khi giả mạo chữ ký trên đơn hàng như hình:

Phân dành cho khách hàng (Người gửi - G) Phân dành cho cừa hàng (Người nhận - N)

Giao Thức Chối Bò

Hình 3.10 Giao diện chương trình khi thực hiện với chữ ký giả mạo

75

Lúc này, khi nhấn nút “8.Kiểm tra”, giao diện giao thức chối bỏ sẽ hiện lên như sau:

Giao Thức Chối Bò

Trang 9

Hình 3.11 Giao diện thực hiện giao thức chối bỏ N và G sẽ

thực hiện các bước như sau:

- N thực hiện nhập cặp số ngẫu nhiên (f l5 f 2 ) sau đó nhấn nút “9.Nhập” Sau khi nhấn nút

“9.Nhập”, chương trình thực hiện tính mã kiểm tra lần 2 c và hiển thị giá trị của c

- N thực hiện gửi mã kiểm tra c cho G bằng cách nhấn vào nút “10.Gửi”

- G nhận được mã kiểm tra c sẽ tiến hành thực hiện tính mã xác thực D bằng cách nhấn vào nút “11.Tính mã xác thực” Sau đó G tiến hành gửi mã xác thực D cho N bằng cách nhấn vào nút “12.Gửi”

- N nhận được mã xác thực D sẽ tiến hành kiểm tra (d*g ỷ= (D*g 2 2 ) 1 (modp) Nếu điều kiện

trên là đúng thì chương trình sẽ hiển thị thông báo: "Cảnh báo! Chữ ký trong đơn hàng là chữ ký giả mạo!"

cảnh báo! Chữ ký trong đơn hảng là chữ ký giả mạo!

OK

Hình 3.12 Thông báo chữ ký ứong đơn hàng nhận được là giả mạo

Nếu điều kiện trên là sai, chương trình sẽ hiển thị thông báo "Cảnh báo! Giao dịch không

rõ ràng Đề nghị thiết lập lại giao dịch!"

Trang 10

cành báo! Giao dịch không rõ ràng, Đi nghị thiẽt lập lại giao dịch!

OK

Hừih 3.13 Thông bắo yêu cầu thiết lập lại giao địch.

3.4 Kết quả thử nghiệm chương trình và đánh gỉá

Chương trình đã thực hiện được các công việc sau:

- Đã thực hiện được việc kiểm tra và cho phép nhập thông số ban đầu là các số p, g thỏa mãn điều kiện:

+ p là số nguyên tố lẻ sao cho p có dạng p=2*q +1 với q cũng là số nguyên tố

+

g là phần tử sinh của nhóm nhân p là nhóm con của Zp* theo q

- Đã thực hiện được việc ký trên đơn hàng đáp ứng thuật toán ký của chữ ký số không thề phủ nhận

- Đã thực hiện được việc kiểm thử chữ ký đáp ứng giao thức kiểm thử của chữ ký số không thể phủ nhận

- Đã thực hiện được giao thức chối bỏ chữ ký đáp ứng giao thức chối bỏ của chữ ký số không thể phủ nhận

- Xây dựng được ứng dụng của chữ ký số không thể phủ nhận trong các giao dịch đặt hàng qua mạng đảm bảo các yêu cầu:

+ Chống giả mạo chữ ký + Chống sao chép đơn hàng và chữ ký + Chống chối bỏ

chữ ký Hạn chế cửa chương trình:

Bên cạnh những mặt đã đạt được, chương trình vẫn còn một số hạn chế sau:

- Chưa thực hiện được việc nhập dữ liệu từ file và xuất dữ liệu ra file

77

- Giao diện chương trình còn đơn giản, chưa thực sự hấp dẫn, dễ hiểu với người sử dụng

- Để thực hiện được chương trình vẫn còn phải thực hiện nhiều thao tác, chưa đơn giản hóa được số thao tác cần thực hiện cho người sử dụng dẫn đến việc sử dụng chương trình dễ bị lúng túng trong quá trình thao tác

Hướng mở rộng chương trình:

Hoàn thiện chức năng nhập dữ liệu đầu vào từ file chứa thông tin của chữ ký số

Hoàn thiện chức năng xuất file các thông tin kiểm thử

- Cải thiện giao diện của chương trình, giảm thiểu các thao tác phải thực hiện cho người dùng

- Phát triển ứng dụng để có thể áp dụng trong thực tế cuộc sống

78

KẾT LUẬN

Sau khi hoàn thành, luận văn đã đạt được một số kết quả cụ thể như sau:

- về mặt lý thuyết:

+ Tổng quan về chữ ký số, nhất là chữ ký số đặc biệt và khả năng ứng dụng của

chúng

+ Nghiên cứu các đặc trưng của một loại chữ ký đặc biệt là chữ ký không thể phủ nhận được

- về mặt thực tiễn, luận văn đã xây dựng được và thử nghiệm có kết quả chương trình ứng dụng chữ ký không thể phủ nhận được vào việc giao dịch đặt hàng qua mạng

79

TÀI LIỆU THAM KHẢO

A Tiếng Việt

[1] Phan Đình Diệu (2006), Lý thuyết mật mã và An toàn thông tin, NXB Đại học Quốc gia

Hà Nội

[2] Nguyễn Đăng Hậu (2004), Kiến thức thương mại điện tử, Viện Đào tạo công nghệ và Quản lý

Quốc tế

[3] Lê Văn Phùng (2012) Bài giảng an toàn thông tin

[4] Trịnh Nhật Tiến, Trương Thị Thu Hiền (2005), Chữ ký mù bội ứên đường cong elliptic và ứng dụng, Trường Đại học công nghệ- ĐHQGHN.

[5] Trịnh Nhật Tiến, Đinh Vinh Quang (2006), Giải pháp và công nghệ sử dụng tiền điện tử, Đại học

Quốc gia Hà Nội

[6] Trịnh Nhật Tiến (2008), Giáo ừinh An toàn Dữ liệu, Hà Nội.

[7] Trịnh Nhật Tiến (2005) “Chữ ký mù, Chữ ký nhóm, Chữ ký mù nhóm” và ứng dụng, Báo cáo tại Hội nghị FAIR tại TP Hồ Chí Minh

[8] Nguyễn Hữu Tuân (2008), Giáo ừình an toàn và bảo mật thông tin, Đại học Hàng Hải

B Tiếng Anh

[9] B.Schneier (1996), “Applied Cryptography” 2nd edition, John wiley&sons.

[10] D O’Mahony, M.Peirce, H.Tewari (2001), “Elecứonic payment systems”, Artech

House

[11] David Chaum, van Heijst, Eugene and Pfitzmann, Birgit (1992), “Crỵptographically

sứong undeniable signatures, unconditionally secure for the signer ” (extended abstract), In CRYPTO

91

[12] H.M Deitel, PJ Deitel, T.R Nieto (2001), “E-Busines & E-Commerce”How to

Progarm, Prentice Hall, New Jersey.

c Internet

Ngày đăng: 20/06/2016, 23:34

HÌNH ẢNH LIÊN QUAN

Tức là phải giải phương trình 3.x = 1 ( mod 7), X sẽ là phần tử nghịch đảo của 3. Bảng - Chữ ký không thể phủ nhận và ứng dụng trong các giao dịch đặt hàng qua mạng
c là phải giải phương trình 3.x = 1 ( mod 7), X sẽ là phần tử nghịch đảo của 3. Bảng (Trang 3)
Sơ đồ - Chữ ký không thể phủ nhận và ứng dụng trong các giao dịch đặt hàng qua mạng
Sơ đồ (Trang 3)
Bảng 1.4 Mô tả quá ừình mã hóa của hệ mã hóa VIGENERE - Chữ ký không thể phủ nhận và ứng dụng trong các giao dịch đặt hàng qua mạng
Bảng 1.4 Mô tả quá ừình mã hóa của hệ mã hóa VIGENERE (Trang 4)
Hình 3.7 Giao điện kiểm thử cùa N và G   Giao diện này cho phép người sử - Chữ ký không thể phủ nhận và ứng dụng trong các giao dịch đặt hàng qua mạng
Hình 3.7 Giao điện kiểm thử cùa N và G Giao diện này cho phép người sử (Trang 8)
Hình 3.8 Thông báo xắc nhận chữ ký - Chữ ký không thể phủ nhận và ứng dụng trong các giao dịch đặt hàng qua mạng
Hình 3.8 Thông báo xắc nhận chữ ký (Trang 8)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w