Tiểu luận môn thương mại điện tử Chữ ký điện tử - Pdf 25

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI
KHOA TIN HỌC

THƯƠNG MẠI ĐIỆN TỬ
Đề tài
Đề tài
:
:
Chữ ký điện tử
Chữ ký điện tử
GVHD : Ths.Phạm Định Sắc
LỚP: 12DTH2LT4
SVTH: Nguyễn Hồng Khôi Nguyên MSSV: 1203125
Nguyễn Bá Linh MSSV: 1203124
Cao Thị Cảnh MSSV: 1202996

Biên Hòa , Ngày …. Tháng …. Năm 2013
Niên Khóa 2012 -2013
MỤC LỤC
Lời nói đầu ………………………………………………………………….…….
Phần 1: Mã hóa và các vấn đề liên quan ………………………………….….…
1.1 Khái niệm mã hóa dữ liệu …………………………………………….……
1.2 Hàm băm ……………………………………………………………….…….
1.2.1 Hàm băm và chữ ký…………………………………………………………
1.2.2 MD5 ……………………………………………………………….……
1.3 Thuật toán mã hóa khóa công khai RSA ……………………………….……
1.3.1 Mô tả sơ lược ……………………………………………………………
1.3.2 Thuật toán RSA ………………………………………………….………

số vấn đề liên quan trong lĩnh vực mã hóa dữ liệu. Tiếp theo em tập trung trình bày giải pháp
ứng dụng chữ ký điện tử sử dụng MD5, RSA và đề ra cách thức vận dụng, triển khai trong quá
trình gửi và nhận tệp văn bản.
Trong báo cáo này do em chưa có đủ thời gian nghiên cứu sâu hơn nên còn nhiều sai sót
mong thầy đóng góp ý kiến để chương trình của em được hoàn thiên hơn .
Mã hóa
Khóa mã hóa
Hệ thống Qlý khóa Khóa giải mã
Dữ liệu mã hóa
Giải mã
Dự liệu gốc
Dự liệu gốc
Phần 1: MÃ HÓA VÀ CÁC VẤN ĐỀ LIÊN QUAN
1.1 Khái niệm mã hóa dữ liệu
Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường sang một
dạng khác, mà một người không có thẩm quyền, không có phương tiện giải mã thì không thể
đọc hiểu được. Giải mã dữ liệu là quá trình ngược lại, là sử dụng một phương pháp biến đổi dữ
liệu đã được mã hóa về dạng thông tin ban đầu.
Hình 1:Quy trình mã hóa dữ liệu
Sau đây là một số khái niệm và kí hiệu liên quan về vấn đề mã hóa dữ liệu :
- Mã hóa (Encryption): Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao
người khác không thể đọc hiểu được (kí hiệu E);
- Giải mã (Decryption): Quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã
hóa thành dạng gốc ban đầu (kí hiệu D);
- Thông điệp (Message), bản gốc (Plaintext): Tệp dữ liệu chưa mã hóa (kí hiệu M).
- Bản mã (Ciphertext): Tệp dữ liệu đã được mã hóa (kí hiệu C).
Theo quy ước, khi mã hóa thì C = E(M) và khi giải mã thì M = D(C) = D(E(M))
Theo phương pháp truy ền thống, người ta thường dùng cùng một khóa để mã hóa và
giải mã. Lúc đó, khóa phải được giữ bí mật tuyệt đối. Người ta gọi đây là hệ thống mã hóa
cổ điển (hay còn gọi là mã hóa đối xứng, một khóa, khóa bí mật, ).

trước đó một tuần. Nếu hai thông số giống nhau thì dữ liệu chưa có sự thay đổi. Nếu hai thông số có
sự khác nhau, thì dữ liệu đã bị thay đổi. Trong hình dưới đây thể hiện cơ bản về hash hay thông số
MAC.
Thông số MAC value được tính toán bởi người gửi (sender) và người nhận (receive) với
cùng một thuật toán.

Message( Tin Nhắn)

MAC Value: A ( MAC giá trị )
Hình 1: Thể hiện cơ bản về hash hay thông số MAC
Không như các phương thức mật mã khác, chúng sẽ làm thay đổi dữ liệu thành một dạng mật
mã, quá trình hashing sử dụng một thông số hash value và không thay đổi dữ liệu ban đầu. Bởi vì
các tính năng đặc biệt, hashing có thể sử dụng để bảo vệ và kiểm tra tính toàn vẹn của dữ liệu. Nó
cũng có khả năng sử dụng để kiểm tra khi có một tiến trình copy được thực hiện và đảm bảo tính
chính xác của dữ liệu khi chúng được copy.
Ví dụ, khi một ổ cứng được tạo ra một bản copy, một quá trình hash được thực hiện trên ổ đĩa
trước khi quá trình nhân đôi được thực hiện. Nếu hai thông số hash của ổ cứng mới được tạo ra và
thông số hash của ổ đĩa ban đầu thì quá trình nhân đôi dữ liệu được thực hiện chính xác và đảm bảo
dữ liệu không có sự thay đổi mất mát trong quá trình nhân bản. Việc hashing sử dụng để đảm bảo dữ
liệu được nguyên bản giúp dữ liệu lưu ở dạng kỹ thuật số sẽ luôn dữ được nguyên bản sau vô số lần
copy – và điều này không thể thực hiện khi lưu dữ liệu các dạng khác – ví như lưu thông tin âm
thanh bằng băng từ sẽ bị biến dạng sau nhiều lần copy.
Ví dụ, Message Digest 5 (MD5) là một thuật toán hash với 128-bit hash. Điều này có nghĩa
không có vấn đề với dữ liệu đầu vào và dữ liệu đầu ra sau quá trình hash bởi nó luôn luôn thêm vào
128 bits. Sức mạnh của quá trình hashing là nó được thực hiện một chiều và không thể có phương
thức nào có thể thực hiện ngược lại được để converts thông số hash thành dữ liệu ban đầu. Nếu một
vài người có được các thông số hash của ta, họ không thể lấy được dữ liệu ban đầu. Tuy nhiên đó
không phải là phương thức mật mã không thể tấn công. Hashing có thể bị tấn công bởi các phương
thức đảo ngược hay birthday attack. Phương thức tấn công bình thường sử dụng đó là sử dụng các
công cụ password-cracking. Hầu hết các hệ thống lưu trữ passwords trong dữ liệu accounts và được

A = 01234567; B = 89abcdef; C = fedcba98; D = 76543210
* Bước 3: xử lý message thành từng khối 512 bít (16 từ 32 bít). Quá trình tính toán được chia
thành từng giai đoạn, số giai đoạn bằng số chiều dài (tính theo bít) của message sau khi đã padding
chia cho 512. Mỗi giai đoạn nhận đầu vào là khối 512 bít của message đã được padding và
message_digest của giai đoạn trước, cho ra kết quả là message_digest mới (xem hình 1). Mỗi giai
đoạn thực hiện trong 4 bước (vòng), bốn vòng có cấu trúc giống nhau nhưng mỗi vòng sử dụng một
hàm luận lý khác nhau, được đặc tả là F, G, H, I. Trong hình 2, bốn vòng được đặt nhãn là f
F
, f
G
, f
H
,
f
I
, để chỉ rằng mỗi vòng có cấu trúc hàm tổng quát như nhau nhưng tùy thuộc vào sự khác nhau của
hàm thao tác (F, G, H, I).
Hình 3: Xử lý MD5 của khối đơn 512 bít (HDMD5).
Mỗi vòng được thực hiện 16 bước tuần tự trên các data A, B, C, D (hình 3). Biểu thức tính toán
được sử dụng trong mỗi vòng có dạng:
a = b + CLS
s
(a + g(b,c,d) + X[k] + T[i]).
Trong đó:
. a, b, c, d: là 4 word A, B, C, D theo thứ tự nào đó.
. g: là một trong các hàm F, G, H, I.
F(b,c,d) = (b & c) | (~b & d)
G(b,c,d) = (b & d) | (c & ~d)
H(b,c,d) = b ^ c ^ d
I(b,c,d) = c ^ (b & ~d)

= 432AFF97
T
3
= 242070D8 T
19
= 265E5A51 T
35
= 69D96122 T
51
= AB9423A7
T
4
=
C1BDCEEE
T
20
=
E9B6C7AA
T
36
= FDE5380C T
52
= FC93A039
T
5
= F57C0FAF T
21
= D62F105D T
37
= A4BEEA44 T

= BEBFBC70 T
56
= 85845DD1
E7D3FBC8
T
9
= 698098D8 T
25
=
21E1CDE6
T
41
= 289B7EC6 T
57
= 6FA87E4F
T
10
= 8B44F7AF T
26
= C33707D6 T
42
= EAA127FA T
58
= FE2CE6E0
T
11
= FFFF5BB1 T
27
= F4D50D87 T
43

46
= E6DB99E5 T
62
= BD3AF235
T
15
= A679438E T
31
= 676F02D9 T
47
= 1FA27CF8 T
63
=
2AD7D2BB
T
16
= 49B40281 T
32
=
8D2A4C8A
T
48
= C4AC5665 T
64
= EB86D391
- Các tác vụ [abcd k s i] trong mỗi vòng là:
ABCD 0 7 1 1 5 17 5 4 33 0 6 49
DABC 1 12 2 6 9 18 8 11 34 7 10 50
CDAB 2 17 3 11 14 19 11 16 35 14 15 51
BCDA 3 22 4 0 20 20 14 23 36 5 21 52

= MD
q
+ f
I
(Y
q
, f
H
(Y
q
, f
G
(Y
q
,f
F
(Y
q
,MD
q
))))
MD = MD
L-1
Trong đó:
+ IV: giá trị khởi tạo của bộ đệm ABCD

được xác định trong bước 2.
+ Y
q
: khối message 512 bít thứ q.

sao gửi an toàn chìa khóa bí mật trên các kênh truyền tin công khai có nhiều người tham gia.
Hình: Ba nhà khoa học Shamir, Rivest và Adleman
Đầu năm 1969, James Ellis, một chuyên gia thám mã lỗi lạc của Cơ Quan Truyền Thông
Chính Phủ Anh Quốc (GCHQ) đã nảy ra ý tưởng đặc sắc rằng, nếu người nhận tin đưa một nhiễu
nào đó lên đường truyền công khai mà chỉ riêng anh ta biết cách khử nhiễu, thì mọi thông tin mật
gửi đến cho anh ta đều có thể đưa lên kênh truyền tin công khai đó. Những người khác, dù bắt
được tín hiệu cũng không thể nào giải mã được tin mật.
Cuối năm 1969, James Ellis nhận ra ý tưởng trên có thể đạt được bằng 'hàm một chiều'
(xem phụ lục) Theo đó, chỉ có thể tìm hàm ngược nếu biết thông tin nào đó, giống như khôi phục
tín hiệu khi biết cái nhiễu do mình tạo ra. Nhưng ông không thực hiện được điều này, do không
biết liệu hàm một chiều có tồn tại hay không.
Bốn năm sau Clifford Cocks- một nhân viên mới của GCHQ- được Patterson, thầy hướng
dẫn, kể cho nghe ý tưởng độc đáo của James Ellis và ông đã tìm ra hàm một chiều cần thiết chỉ
trong vòng nửa giờ: đó chính là phép nhân! Nhân hai số nguyên tố lớn bao nhiêu cũng được là
điều hết sức dễ dàng, nhưng khi biết tích của chúng, để tìm lại các thừa số thì ta cần phân tích số
đã cho ra thừa số nguyên tố. Điều này hầu như không thể làm được với các số đủ lớn. hật vậy, để
phân tích n (=p*q) ra thừa số nguyên tố, cần chia lần lượt n cho các số nguyên tố nhỏ hơn. Theo
một định lý nổi tiếng trong số học, có khoảng (n/log n) số nguyên tố bé hơn n. Nếu n có khoảng
300 chữ số thì sẽ phải làm khoảng 10150/300 phép chia. (Nếu dùng máy tính tốc độ 1 tỷ phép
tính/giây, ta sẽ mất chừng tỷ tỷ tỷ năm để phân tích số n!) Như vậy, hàm số thiết lập sự tương
ứng giữa hai số p, q với tích n=pq chính là hàm một chiều. Giải pháp thật đơn giản và Cocks
cũng không tự cảm nhận được đầy đủ ý nghĩa của kết quả đạt được. Kết quả của Cocks được giữ
tuyệt mật. Nó có sức thuyết phục lớn trong nội bộ GCHQ. Nhưng phương tiện tính toán thời đó
không cho phép triển khai thuật toán. Năm 1978, kết quả của Cocks được Rivest, Shamir và
Adleman phát minh lại! Đó chính là cuộc cách mạng trong lĩnh vực mật mã, cuộc cách mạng
mang tên RSA (ghép chữ đầu tên của ba nhà khoa học trên).
RSA, cuộc cách mạng của các nhà toán học.
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như
Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và
khóa bí mật theo các bước sau:

c
d
≡ (m
e
)
d
≡ m
ed
(mod N)
Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nên:
(m
ed
≡ m (mod p) và m
ed
≡ m (mod q)
Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý số dư Trung quốc, ta có:
(m
ed
≡ m (mod p*q)
hay:
c
d
≡ m (mod N)
Có thể tóm tắt giải thuật RSA như bảng sau:
Tạo khóa Độ phức tạp
Tạo 2 số nguyên tố lớn p và q
Tính n = p*q, 0(n) = (p-1)*(q-1)
Chọn 1 số ngẫu nhiên 1<e<0(n): gcd(0(n), e) = 1
Tính d: d = e
-1

+ 2 k bít mod n : 0(k
2
)
+ x
c
mod n : 0(k
3
)
Để tính x
c
mod n cần c-1 phép nhân modulus  không hiệu quả (do c lớn)  sử dụng giải thuật
square_multiply để giảm số phép nhân mod nhiều nhất 2l (l là số bít nhị phân của c, l<=k với k là số
bít nhị phân của x)
Ví dụ
Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng những số nhỏ để tiện tính toán
còn trong thực tế phải dùng các số có giá trị đủ lớn.
p = 61 — Số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)
q = 53 — Số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
N = pq = 3233 — Môđun (công bố công khai)
e = 17 — Số mũ công khai
d = 2753 — Số mũ bí mật
Bảng 3: Ví dụ cụ thể RSA
Khóa công khai là cặp (e, N). Khóa bí mật là d. Hàm mã hóa là:
encrypt(m) = m
e
mod N = m
17
mod 3233
với m là văn bản rõ. Hàm giải mã là:
decrypt(c) = c

b. Bẻ khóa khi biết được số mũ d của hàm giải mã:
c. Bẻ khóa dựa trên các attack lặp lại:
d. Sự che dấu thông tin trong hệ thống RSA
e. Tấn công dựa trên thời gian
f. Tấn công lựa chọn thích nghi bản mã
1.3.4 Các vấn đề đặt ra trong thực tế
Quá trình tạo khóa
Việc tìm ra 2 số nguyên tố đủ lớn p và q thường được thực hiện bằng cách thử xác suất các số
ngẫu nhiên có độ lớn phù hợp (dùng phép kiểm tra nguyên tố cho phép loại bỏ hầu hết các hợp số). p
và q còn cần được chọn không quá gần nhau để phòng trường hợp phân tích n bằng phương pháp
phân tích Fermat. Ngoài ra, nếu p-1 hoặc q-1 có thừa số nguyên tố nhỏ thì n cũng có thể dễ dàng bị
phân tích và vì thế p và q cũngcần được thử để tránh khả năng này.
Bên cạnh đó, cần tránh sử dụng các phương pháp tìm số ngẫu nhiên mà người tấn công có thể
lợi dụng để biết thêm thông tin về việc lựa chọn (cần dùng các bộ tạo số ngẫu nhiên tốt). Yêu cầu ở
đây là các số được lựa chọn cần đồng thời ngẫu nhiên và không dự đoán được. Đây là các yêu cầu
khác nhau: một số có thể được lựa chọn ngẫu nhiên (không có kiểu mẫu trong kết quả) nhưng nếu có
thể dự đoán được dù chỉ một phần thì an ninh của thuật toán cũng không được đảm bảo. Một ví dụ là
bảng các số ngẫu nhiên do tập đoàn Rand xuất bản vào những năm 1950 có thể rất thực sự ngẫu
nhiên nhưng người tấn công cũng có bảng này. Nếu người tấn công đoán được một nửa chữ số của p
hay q thì chúng có thể dễ dàng tìm ra nửa còn lại (theo nghiên cứu của Donald Coppersmith vào năm
1997)
Một điểm nữa cần nhấn mạnh là khóa bí mật d phải đủ lớn. Năm 1990, Wiener chỉ ra rằng nếu giá trị
của p nằm trong khoảng q và 2q (khá phổ biến) và d < n
1/4
/3 thì có thể tìm ra được d từ n và e.
Mặc dù e đã từng có giá trị là 3 nhưng hiện nay các số mũ nhỏ không còn được sử dụng do có
thể tạo nên những lỗ hổng (đã đề cập ở phần chuyển đổi văn bản rõ). Giá trị thường dùng hiện nay là
65537 vì được xem là đủ lớn và cũng không quá lớn ảnh hưởng tới việc thực hiện hàm mũ.
Kích thước và tốc độ mã hóa khóa trong RSA
- Kích thước khóa trong RSA:

Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai là một trong những
yếu tố quyết định đối với độ an toàn của RSA. Quá trình phân phối khóa cần chống lại được tấn
công đứng giữa (man-in-the-middle attack). Giả sử Eve có thể gửi cho Bob một khóa bất kỳ và khiến
Bob tin rằng đó là khóa (công khai) của Alice. Đồng thời Eve có khả năng đọc được thông tin trao
đổi giữa Bob và Alice. Khi đó, Eve sẽ gửi cho Bob khóa công khai của chính mình (mà Bob nghĩ
rằng đó là khóa của Alice). Sau đó, Eve đọc tất cả văn bản mã hóa do Bob gửi, giải mã với khóa bí
mật của mình, giữ 1 bản copy đồng thời mã hóa bằng khóa công khai của Alice và gửi cho Alice. Về
nguyên tắc, cả Bob và Alice đều không phát hiện ra sự can thiệp của người thứ ba. Các phương pháp
chống lại dạng tấn công này thường dựa trên các chứng thực khóa công khai (digital certificate) hoặc
các thành phần của hạ tầng khóa công khai (public key infrastructure - PKI).
Chuyển đổi văn bản rõ:
Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ (chuyển đổi từ M
sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không an toàn. Nếu không có quá
trình này, RSA sẽ gặp phải một số vấn đề sau:
• Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng
• Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá trị m
e
cũng nhận
giá trị nhỏ (so với n). Như vậy phép môđun không có tác dụng và có thể dễ dàng tìm được m
bằng cách khai căn bậc e của c (bỏ qua môđun).
• RSA là phương pháp mã hóa xác định (không có thành phần ngẫu nhiên) nên người tấn công
có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra giữa bản rõ và bản
mã. Khi gặp một bản mã, người tấn công sử dụng bảng tra để tìm ra bản rõ tương ứng.
Trên thực tế, ta thường gặp 2 vấn đề đầu khi gửi các bản tin ASCII ngắn với m là nhóm vài ký
tự ASCII. Một đoạn tin chỉ có 1 ký tự NULL sẽ được gán giá trị m = 0 và cho ra bản mã là 0 bất kể
giá trị của e và N. Tương tự, một ký tự ASCII khác, SOH, có giá trị 1 sẽ luôn cho ra bản mã là 1. Với
các hệ thống dùng giá trị e nhỏ thì tất cả ký tự ASCII đều cho kết quả mã hóa không an toàn vì giá
trị lớn nhất của m chỉ là 255 và 255
3
nhỏ hơn giá trị n chấp nhận được. Những bản mã này sẽ dễ

Key) và khóa công khai (Public Key).
Chữ ký điện tử hoạt động khi một người gửi một thông điệp, người đó dùng khóa riêng
của mình để mã hóa thông điệp sang một dạng khó nhận dạng. Người nhận dùng khóa công khai của
ngườ i gửi để mã hóa thông điệp. Tuy nhiên, để an toàn thật sự phải có các bước bổ sung. Do đó,
thuật toán băm MD5 và thuật toán mã hóa RSA có thể được áp dụng để xây dựng ứng dụng chữ ký
điện tử.
Sơ đồ chữ ký RSA được cho bởi bộ năm:
S = (P, A, K, S, V)
Trong đó P = A = Z
n
, với n = p.q là tích của hai số nguyên tố lớn p,q, K là tập các cặp khóa K
= (K’, K”), với K’ = a và K” = (n,b), a và b là hai số thuộc
*
n
Z
thỏa mãn a.b ≡ 1 (mod φ (n)). Các
hàm sig
K’
và ver
K”
được xác định như sau :
sig
K’
(x) = x
a
mod n
ver
K’
(x,y) = đúng ⇔ x ≡ y
b

x
= (K’
s
, K”
s
) với
K”
x
= a và K”
s
= (n,b) trong hệ S
2
. A có thể gửi đến B một thông báo vừa bảo mật vừa có chữ ký để
xác nhận như sau : A ký trên thông báo x trước, rồi thay cho việc gửi đến B văn bản đó được lập
theo khóa công khai của B, tức là gửi cho B e
K’
((x,
)x(sig
'
s
K
). Nhận được văn bản mật mã đó B sẽ
dùng thuật toán giải mã d
K”
của mình để thu được (x,
)x(sig
'
s
K
), sau đó dùng thuật toán kiểm thử

k’’
(x, y) = true ⇔ x ≡ y
b
mod n ;
Ví dụ:
Chọn p =23, q = 29 ; ta tính được n = 23 * 29 = 667 ; φ(n) = 22 * 28 = 616;
chọn b = 3, a = 411 (411 * 3 = 1233 ≡ 1 mod 616 )
ký x = 56; y = 56
411

=235.
Kiểm tra: 56 ≡ 235
3
(=12977875)mod 667 nên chữ ký là đúng
Mô hình chữ ký điện tử sử dụng khóa công khai:
Hình 5: Mô hình chữ ký điện tử
Chữ ký điện tử (digital signature) là đoạn dữ liệu ngắn đính kèm với văn bản gốc để chứng
thực tác giả của văn bản và giúp người nhận kiểm tra tính toàn vẹn của nội dung văn bản gốc.
Chữ ký điện tử được tạo ra bằng cách áp dụng thuật toán băm một chiều trên văn bản gốc để
tạo ra bản phân tích văn bản (message digest) hay còn gọi là fingerprint, sau đó mã hóa bằng private
key tạo ra chữ ký số đính kèm với văn bản gốc để gửi đi. Khi nhận, văn bản được tách làm 2 phần,
phần văn bản gốc được tính lại fingerprint để so sánh với fingerprint cũ cũng được phục hồi từ việc
giảimã chữ ký số (xem hình 3).
Chữ ký điện tử và chứng chỉ điện tử
Chữ ký điện tử hoạt động dựa trên hệ thống mã hóa khóa công khai. Hệ thống mã hóa này
gồm hai khóa, khóa bí mật và khóa công khai (khác với hệ thống mã hóa khóa đối xứng, chỉ gồm
một khóa cho cả quá trình mã hóa và giải mã). Mỗi chủ thể có một cặp khóa như vậy, chủ thể đó sẽ
giữ khóa bí mật, còn khóa công khai của chủ thể sẽ được đưa ra công cộng để bất kỳ ai cũng có thể
biết. Nguyên tắc của hệ thống mã hóa khóa công khai đó là, nếu ta mã hóa bằng khóa bí mật thì chỉ
khóa công khai mới giải mã thông tin được, và ngược lại, nếu ta mã hóa bằng khóa công khai, thì chỉ

Digital Signature được tạo ra và kiểm tra bằng mật mã, đó là một phương pháp thuộc lĩnh vực
toán học, nó chuyển toàn bộ message thành một dạng khó có thể nhận dạng và có thể được giải mã.
Digital signature sử dụng hai khóa thông dụng, một khóa để tạo ra digital signature hoặc chuyển
message thành dạng khó nhận dạng, một khóa dùng để kiểm tra digital signature hoặc để chuyển
message đã mã hóa về dạng nguyên thủy của nó.
Digital signature là cách cơ bản để bảo mật cho một tài liệu điện tử (e-mail, spreaDigital
Signatureheet_bảng tính, text file, ) đáng tin cậy. Đáng tin nghĩa là ta biết ai đã tạo ra tài liệu và ta
biết nó không bị thay đổi trong bất cứ cách nào từ người tạo ra nó.
Digital signature dựa vào thuật toán mã hoá để bảo đảm độ tin cậy. Mã hoá là quá trình mang
tất cả dữ liệu từ một máy tính gửi sang máy tính khác và mã hóa nó thành một dạng mà chỉ có máy
tính được gửi mới có thể giải mã. Độ tin cậy là quá trình kiểm tra xác nhận được thông tin đến từ
một nguồn tin cậy. Hai quá trình này liên quan chặt chẽ đến digital signature.
Một Digital Signature có thể được xem như một giá trị số, được biểu diễn như một dãy các ký
tự, và được sử dụng trong tin học như một biểu thức toán học. Biểu thức phụ thuộc vào hai đầu vào:
dãy các ký tự biểu diễn dòng dữ liệu điện tử được ký và số bảo mật được tham chiếu đến như một
signature public key, điều này có nghĩa là với mỗi chữ ký thì chỉ duy nhất người đã ký mới có thể
truy xuất đến public key. Public key là khoá công khai cho tất cả mọi người, nó giống như số điện
thoại trong danh bạ điện thoại, cho phép việc kiểm tra chữ ký. Kết quả cho thấy việc biểu diễn chữ
ký số gắn vào dữ liệu điện tử giống như sử dụng chữ ký tay trên giấy trong tài liệu văn bản.
Digital signature làm việc dựa trên hai khoá là public key và private key và thực hiện qua hai
giai đoạn là việc hình thành chữ ký trên tài liệu ở phía người gửi và việc xác nhận tài liệu nhận được
chính xác và nguyên vẹn hay không ở phía người nhận.
Vấn đề bảo mật ở digital signature không giống với các phương pháp mã hoá cổ điển là chỉ
dùng một khoá cho cả việc mã hoá ở người gửi và giải mã ở người nhận mà sử dụng hai khoá:
private key để mã hoá và public key để giải mã kiểm tra.
2.2.1 Quá trình ký trong Message
 Bước một:“Băm” tài liệu gửi thành các hash-value hay còn được gọi là
Message Digest, các Message Digest này sẽ được tính toán để đưa vào quá trình mã hoá chữ
ký.
 Bước hai: Tính Message Digest

Trong bước một, một hash-value của message đã ký được tính. Với việc tính này thì vẫn sử dụng
thuật toán băm như đã dùng trong suốt quá trình ký. Hash-value nhận được được gọi là current
hash-value bởi vì nó được tính từ trạng thái hiện thời của message.
 Bước hai: Tính Original Hash-Value
Trong bước hai của quá trình kiểm tra digital signature, digital signature được giải mã với cũng với
thuật toán mã hoá đã được sử dụng trong suốt quá trình ký. Việc giải mã được thực hiện bằng khoá
public key tương ứng với khoá private key được dùng trong suốt quá trình ký của message. Kết quả
là, chúng ta nhận được original hash-value mà đã đựơc tính từ message gốc trong suốt bước một
của quá trình ký (original message digest)
 Bước ba: So sánh Current hash-value với Original hash-value
Trong bước ba, chúng ta đối chiếu current hash-value nhận được trong bước một với original
hash-value nhận được trong bước hai. Nếu hai giá trị này giống hệt nhau thì việc kiểm tra sẽ thành
công nếu chứng minh được message đã được ký với khoá private key đúng với khoá public key đã
được dùng trong quá trình kiểm tra. Nếu hai giá trị này khác nhau thì nghĩa là digital signature là sai
và việc kiểm tra là thất bại.
Hình 7: Quá trình kiểm tra xác nhận chữ ký trên tài liệu


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status