You are on page 1of 31

Chương 4 – Hàm băm, xác thực và chữ ký số

Chương 4. Hàm băm, xác thực và chữ kí số......................................................................2


4.1 Vấn đề xác thực..............................................................................................................2
4.2 Hàm băm.........................................................................................................................2
4.2.1 Các định nghĩa và tính chất cơ bản.........................................................................3
4.2.2 Các hàm băm không có khoá..................................................................................5
4.2.3 Các hàm băm có khoá (MAC).................................................................................9
4.2.4 Tính toàn vẹn của dữ liệu và xác thực thông báo................................................10
4.3 Trao đổi và thỏa thuận khóa.......................................................................................11
4.3.1 Thuật toán thỏa thuận khóa Diffie-Hellman........................................................11
4.3.2 Hệ mật dựa trên định danh....................................................................................12
4.4 Chữ kí số.......................................................................................................................15
4.4.1 Chữ ký số Shamir...................................................................................................15
4.4.2 Sơ đồ xác thực Ong-Schnorr-Shamir....................................................................21
4.5 Các sơ đồ chữ kí số có nén...........................................................................................23
4.5.1 Nén chữ ký..............................................................................................................23
4.5.2 Sơ đồ chữ ký Diffie – Lamport..............................................................................24
4.5.3 Sơ đồ chữ ký RSA...................................................................................................27
4.6 Chữ kí Elgamal.............................................................................................................29

1
Chương 4 – Hàm băm, xác thực và chữ ký số

Chương 4. Hàm băm, xác thực và chữ kí số.

4.1 Vấn đề xác thực.

(nguồn: http://vi.wikipedia.org/wiki/X%C3%A1c_th%E1%BB%B1c)

Xác thực( Authentication) là một hành động nhằm thiết lập hoặc chứng thực một
cái gì đó (hoặc một người nào đó) đáng tin cậy, có nghĩa là, những lời khai báo do
người đó đưa ra hoặc về vật đó là sự thật. Xác thực một đối tượng còn có nghĩa là
công nhận nguồn gốc (provenance) của đối tượng, trong khi, xác thực một người
thường bao gồm việc thẩm tra nhận dạng của họ. Việc xác thực thường phụ thuộc
vào một hoặc nhiều nhân tố xác thực (authentication factors) để minh chứng cụ thể.

Trong an ninh máy tính (computer security), xác thực là một quy trình nhằm cố
gắng xác minh nhận dạng số (digital identity) của phần truyền gửi thông tin
(sender) trong giao thông liên lạc chẳng hạn như một yêu cầu đăng nhập. Phần gửi
cần phải xác thực có thể là một người dùng sử dụng một máy tính, bản thân một
máy tính hoặc một chương trình ứng dụng máy tính (computer program). Ngược
lại, sự tin cậy mù quáng (blind credential) hoàn toàn không thiết lập sự đòi hỏi nhận
dạng, song chỉ thiết lập quyền hoặc địa vị hẹp hòi của người dùng hoặc của chương
trình ứng dụng mà thôi.

Trong một mạng lưới tín nhiệm, việc "xác thực" là một cách để đảm bảo rằng người
dùng chính là người mà họ nói họ là, và người dùng hiện đang thi hành những chức
năng trong một hệ thống, trên thực tế, chính là người đã được ủy quyền để làm
những việc đó.

Để phân biệt từ "xác thực" (authentication) với một từ gần gũi với nó, "sự ủy
quyền" (hay sự cấp phép) (authorization), hai ký hiệu viết tắt thường được dùng để
thay thế - A1 tức sự xác thực (authentication) và A2 tức sự ủy quyền
(authorization).

4.2 Hàm băm.

2
Chương 4 – Hàm băm, xác thực và chữ ký số

4.2.1 Các định nghĩa và tính chất cơ bản.


Định nghĩa hàm băm:
Hàm băm là một hàm h có ít nhất hai tính chất sau:
 Tính chất nén: h sẽ ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ ý tới một
đầu ra h x  có độ dài bit n hữu hạn.
 Tính chất dễ dàng tính toán: Với h cho trước và một đầu vào x, có thể dễ
dàng tính được h x  .

Một số tính chất của các hàm băm không có khoá.


Giả sử h là một hàm băm không có khoá, x và x ' là các đầu vào và y và y' là
các đầu ra. Ngoài hai tính chất cơ bản trên ta còn có 3 tính chất sau:
 Tính khó tính toán nghịch ảnh:
Đối với hầu hết các đầu ra được xác định trước, không có khả năng tính
toán để tìm một đầu vào bất kỳ mà khi băm sẽ cho ra đầu ra tương ứng (Tức
là tìm một nghịch ảnh x ' sao cho h x '  y với y cho trước và không biết
đầu vào tương ứng).
 Khó tìm nghịch ảnh thứ hai:
Không có khả năng tính toán để tìm một đầu vào đã cho trước (Tức là
với x cho trước phải tìm x '  x sao cho h x   h x ' )
 Tính khó va chạm. Không có khả năng về tính toán để tìm hai đầu vào
khác nhau bất kỳ x và x ' để h x   h x ' .
Hàm băm có thêm ba tính trên được gọi là hàm băm mật mã hay hàm băm an toàn.

Định nghĩa hàm băm một chiều (OWHF - oneway hash function).
OWHF là một hàm băm (có hai tính chất cơ bản) có tính chất bổ xung là :
 Khó tìm nghịch ảnh
 Khó tìm nghịch ảnh thứ hai.

Định nghĩa hàm băm khó va chạm (CRHF: Collision resistant HF)
CRHF là một hàm băm (có hai tính chất cơ bản) có tính chất bổ sung là :

3
Chương 4 – Hàm băm, xác thực và chữ ký số

 Khó tìm nghịch ảnh thứ hai


 Khó và chạm

Định nghĩa thuật toán mã xác thực thông báo (MAC).


Thuật toán MAC là một họ các hàm h k (được tham số hoá bằng một khoá bí
mật k) có các tính chất sau:
 Dễ dàng tính toán: Với h k đã biết, giá trị k cho trước và một đầu
vào x, h k x  có thể được tính dễ dàng ( h k x  được gọi là giá trị
MAC hay MAC).
 Nén: h k ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ ý tới một
đầu ra h k x  có độ dài bit n cố định.
 Khó tính toán: Với các cặp giá trị x i , h k x i  không có khả năng
tính một cặp x , h k x  với x  x i (kể cả có khả năng
h k x   h k x i  với một i nào đó).
Nếu tính chất 3 không thoả mãn thì thuật toán được coi là giả mạo MAC.

Phân loại các hàm băm mật mã và ứng dụng.

Hàm băm

Không có khoá Có khoá

MDC Các ứng dụng khác Các ứng dụng khác MDC

OWHF CRHF

Hình 4.1
4
Chương 4 – Hàm băm, xác thực và chữ ký số

4.2.2 Các hàm băm không có khoá.


Định nghĩa
Mật mã khối (n, r) là một mã khối xác định một hàm khả nghịch từ các bản rõ n
bit sang các bản mã n bit bằng cách sử dụng một khoá r bit. Nếu E là một phép mã
hoá như vậy thì E k x  ký hiệu cho phép mã hoá x bằng khoá k.

Định nghĩa
Cho h là một hàm băm có lặp được xây dựng từ một mật mã khối với hàm nén
 thực hiện s phép mã hoá khối để xử lý từng khối bản tin n bit. Khi đó tốc độ của h
là 1/s.

MDC độ dài đơn.


Ba sơ đồ dưới đây có liên quan chặt chẽ với các hàm băm độ dài đơn, xây dựng
trên các mật mã khối. Các sơ đồ này có sử dụng các thành phần được xác định trước
như sau:
 Một mật mã khối n bit khởi sinh E k được tham số hoá bằng một khoá
đối xứng k.
 Một hàm g ánh xạ n bit vào thành khoá k sử dụng cho E (Nếu các khoá
cho E cũng có độ dài n thì g có thể là hàm đồng nhất)
 Một giá trị ban đầu cố định IV thích hợp để dùng với E.
xi H i 1 xi

g E
xi E H i 1 g E
H i 1
+ + +

Hi Hi Hi
Matyas - Mayer - Oseas Davies - Mayer Miyaguchi - Preneel

5
Chương 4 – Hàm băm, xác thực và chữ ký số

Hình 4.2
Thuật toán băm Matyas - Meyer - Oseas.
VÀO: Xâu bit x
RA : Mã băm n bit của x
 Đầu vào x được phân chia thành các khối n bit và được độn nếu cần thiết
nhằm tạo khối cuối cùng hoàn chỉnh. Ta được t khối n bit: x1 x 2  x t .
Phải xác định trước một giá trị ban đầu n bit (ký hiệu IV).
 Đầu ra là H t được xác định như sau:
H 0  IV , H i  E g H  x i  x i , 1  i  t
i 1

Thuật toán băm Davies - Meyer


VÀO: Xâu bit x
RA : Mã băm n bit của x
 Đầu vào x được phân thành các khối k bit (k là kích thước khoá) và được
độn nếu cần thiết để tạo khối cuối cùng hoàn chỉnh. Biểu thị thông báo
đã độn thành t khối k bit: x1 x 2  x t . Xác định trước một giá trị ban
đầu n bit (ký hiệu IV).
 Đầu ra là H t được xác định như sau:
H 0  IV , H i  E xi H i 1  H i 1 , 1  i  t

Thuật toán băm Miyaguchi - Preneel


Sơ đồ này tương tự như C1 ngoại trừ H i 1 (đầu ra ở giai đoạn trước) được cộng
mod 2 với tín hiệu ra ở giai đoạn hiện thời. Như vậy:
H 0  IV , H i  E g H  x i  x i  H i 1 , 1  i  t
i 1

Nhận xét: Sơ đồ D - M có thể coi là sơ đồ đối ngẫu với sơ đồ M - M - O theo


nghĩa x i và H i 1 đổi vai trò cho nhau.

MDC độ dài kép: MDC -2 và MDC - 4.

6
Chương 4 – Hàm băm, xác thực và chữ ký số

MDC -2 và MDC - 4 là các mã phát hiện sự sửa đổi yêu cầu tương ứng là 2 và 4
phép toán mã hoá khối trên mỗi khối đầu vào hàm băm. Chúng sử dụng 2 hoặc 4
phép lặp của sơ đồ M - M - O để tạo ra hàm băm có độ dài kép. Khi dùng DES
chúng sẽ tạo ra mã băm 128 bit. Tuy nhiên trong cấu trúc tổng quát có thể dùng các
hệ mật mã khối khác MDC-2 và MDC- 4 sử dụng các thành phần xác định như sau:
 DES được dùng làm mật mã khối E k có đầu vào/ ra 64 bit và được tham
số hoá bằng khoá k 56 bit.
~
 Hai hàm g và g ánh xạ các giá trị 64 bit U thành các khoá DES 56 bit như
sau:
Cho U  u1 u 2  u 64 , xoá mọi bit thứ 8 bắt đầu từ u 8 và đặt các bit thứ 2 và
thứ 3 về "10" đối với g và "01" đối với ~
g.
gU   u1 1 0 u 4 u 5 u 6 u 7 u 9 u10  u 63
g U   u 01 u u u u u u  u
~
1 4 5 6 7 9 10 63

Đồng thời điều này cũng phải đảm bảo rằng chúng không phải là các khoá
DES yếu hoặc nửa yếu vì các khoá loại này có bit thứ hai bằng bit thứ ba. Đồng thời
điều này cũng đảm bảo yêu cầu bảo mật là gIV   ~g IV  .
Thuật toán MDC -2 có thể được mô tả theo sơ đồ sau:
int1
Xi int 2

~
H i 1 H i 1
g E E g
int3 int 4

+ +

A B A B

A D A D
out 1 out 2
Hi ~
Hi

7
Chương 4 – Hàm băm, xác thực và chữ ký số

Hình 4.3
Thuật toán MDC - 2
VÀO: Xâu bit x có độ dài r = 64t với t  2 .
RA : Mã băm 128 bit của x
 Phân x thành các khối 64 bit x i : x1 x 2  x t .
~
 Chọn các hằng số không bí mật IV và IV từ một tập các giá trị khuyến
nghị đã được mô tả trước. Tập ngầm định các giá trị cho trước này là (ở
dạng HEXA)
IV  0 x 52 52 52 52 52 52 52 52
~
IV  0 x 25 25 25 25 25 25 25 25

 Ký hiệu  là phép ghép và C iL , C iR là các nửa 32 bit phải và trái của C i


~
Đầu ra h x   H t H t được xác định như sau: (với 1  i  t )
~
H 0  IV , k i  g H i 1  , C i  E ki xi  xi , H i  C iL C iR
~ ~ ~ ~
  ~ ~ ~
H 0  IV , k i  g~ H i 1 , C i  E k~ xi  xi , H i  C iL C iR
i

Thuật toán MDC - 4 có thể được mô tả theo sơ đồ sau:

Xi
int 1 int 2
G i 1 ~
int 3
MDC - 2
int 4 G i 1

Hi ~
int 1 G i 1 int 2 G i 1 ~
int 3 int 4
Hi
MDC - 2

out 1 out 2

Gi ~
Gi

8
Chương 4 – Hàm băm, xác thực và chữ ký số

Hình 4.4
4.2.3 Các hàm băm có khoá (MAC).
Các hàm băm có khoá được sử dụng để xác thực thông báo và thường được gọi
là các thuật toán tạo mã xác thực thông báo (MAC).
MAC dựa trên các mật mã khối.
Thuật toán
VÀO: Dữ liệu x, mật mã khối E, khoá MAC bí mật k của E.
RA : n bit MAC trên x (n là độ dài khối của E)
 Độn và chia khối: Độn thêm các bit vào x nếu cần. Chia dữ liệu đã độn
thành từng khối n bit : x1 x 2  x t .
 Xử lý theo chế độ CBC.
Ký hiệu E k là phép mã hoá E với khoá k.
Tính khối H t như sau:
H1  E k x1 
H i  K k H i 1  x i  2it

 Xử lý thêm để tăng sức mạnh của MAC


Dùng một khoá bí mật thứ hai k '  k . Tính
 
H 't  E k 1' H t  , H t  E k H 't

 Kết thúc: MAC là khối n bit Ht xt


x1 x2 x3 H t 1
+
IV= 0 H1 H2 H3
+ + + K
E
k k ……
k E E E Ht
K'
Xử E-1

thêm H 't
K
E
Hình 4.5 Thuật toán MAC dùng CBC
Ht

9
Chương 4 – Hàm băm, xác thực và chữ ký số

4.2.4 Tính toàn vẹn của dữ liệu và xác thực thông báo.
Định nghĩa
Tính toàn vẹn của dữ liệu là tính chất đảm bảo dữ liệu không bị sửa đổi một
cách bất hợp pháp kể từ khi dữ liệu được tạo ra, được phát hoặc được lưu giữ bởi
một nguồn được xác định.

Định nghĩa
Xác thực tính nguyên bản của dữ liệu là một kiểu xác thực đảm bảo một bên
liên lạc được chứng thực là nguồn thực sự tạo ra dữ liệu đó ở một thời điểm nào đó
trong quá khứ.
Xác thực thông báo là một thuật ngữ được dùng tương đương với xác thực
nguyên gốc của dữ liệu.
Có ba phương pháp cung cấp tính toàn vẹn của dữ liệu bằng cách dùng các hàm
băm.
 Chỉ dùng MAC
Khoá bí mật
Thông báo Thuật toán MAC

Kênh không an toàn


Thông báo MAC

 Dùng MDC và mã hoá

Thông báo Thuật toán MDC Khoá bí mật

Thông báo MDC Thuật toán


mã hoá

Kênh không an toàn


Thông báo MDC

10
Chương 4 – Hàm băm, xác thực và chữ ký số

 Sử dụng MDC và kênh tin cậy

Thông báo Thuật toán MDC

Kênh tin cậy


MDC

Kênh không an toàn

Các phương pháp đảm bảo xác thực tính nguyên vẹn của dữ liệu.
 Dùng MAC.
 Dùng các sơ đồ chữ ký số.
 Gắn (trước khi mã hoá) một giá trị thẻ xác thực bí mật vào văn bản
được mã.
4.3 Trao đổi và thỏa thuận khóa.
4.3.1 Thuật toán thỏa thuận khóa Diffie-Hellman.
Giả sử A và B muốn liên lạc sử dụng hệ mật khoá bí mật. Để thoả thuận mật
khoá K chung cho cả hai bên qua một kênh không an toàn mà không ai khác có thể
biết được, A và B có thể dùng thủ tục thoả thuận khoá Diffie -Hellman sau:
 Chọn trước một số nguyên tố p thích hợp và một phần tử sinh  của
Z*p 2    p  2  . Các giá trị p và  được công khai.
x
 A gửi cho B giá trị  mod p . (2.1)

B gửi cho A giá trị  y mod p . (2.2)

 Thực hiện các bước sau mỗi khi cần có khoá chung:
o A chọn một số nguyên bí mật x: 1  x  p  2 và gửi cho B thông báo
(2.1).
o B chọn một số nguyên bí mật y: 1  y  p  2 và gửi cho A thông báo
(2.2).

o B thu được  x và tính khoá chung k: k   x   mod p


y

o A thu được  y và tính khoá chung k: k    mod p


y x

11
Chương 4 – Hàm băm, xác thực và chữ ký số

Ví dụ: Giả sử A và B chọn p = 11 và   2


Nhóm nhân xyclic sinh bởi  :
 , i  0 , 9 1, 2 , 4 , 8 , 5 ,10 , 9 , 7 , 3 , 6
i

(Các phần tử sinh của nhóm này bao gồm các phần tử sau:   2 ,  3  8 ,

7  7 , 9  6 )
Giả sử A chọn giá trị ngẫu nhiên x = 4 và gửi cho B giá trị 2 4 mod 11  5 .

Giả sử B chọn giá trị ngẫu nhiên y = 7 và gửi cho A giá trị 2 7 mod 11  7 .

B nhận được 5 và tính khoá chung k  57 mod 11  3

A nhận được 7 và tính khoá chung k  7 4 mod 11  3

4.3.2 Hệ mật dựa trên định danh.

Ý tưởng cơ bản.
Hệ mật dựa trên định danh do Shamir đề xuất [16] là một hệ mật bất đối xứng
trong đó thông tin định danh của thực thể (tên riêng) đóng vai trò khoá công khai
của nó. Trung tâm xác thực T được sử dụng để tính khoá riêng tương ứng của thực
thể này. Trong các hệ mật khoá công khai thông thường mỗi người sử dụng có một
cặp khoá (s, P) trong đó s là khoá bí mật (chỉ có người dùng này biết) còn P là khoá
công khai mà mọi người đều có thể biết. Như vậy, các khoá công khai không cần
phải giữ kín mà cần công bố rộng rãi. Tuy nhiên tính công khai này lại trở thành đối
tượng cho các tấn công tích cực như việc thay khoá công khai giả vào vị trí khoá
công khai thực trong danh bạ. Bởi vậy, ngoài cặp khoá (s, P) ta cần phải có chuỗi
định danh I và một dấu hiệu đảm bảo G để biết rằng P thực sự là khoá công khai của
người dùng I và không phải là một kẻ giả mạo. Khi ta sử dụng các hệ mật dựa trên
định danh, khoá công khai sẽ tương đương với định danh (P = I). Còn dấu hiệu đảm
bảo sẽ tương đương với khoá bí mật (tức là G = s). Hệ thống này có nhiều đặc tính
tốt do không phải lưu trữ chứng chỉ để kiểm tra.
Sau khi tính khoá riêng của một người dùng T sẽ chuyển khoá riêng cho người dùng
đó trên một kênh riêng an toàn. Khoá riêng này được tính không chỉ từ thông tin

12
Chương 4 – Hàm băm, xác thực và chữ ký số

định danh của thực thể mà còn phải là một hàm của một thông tin riêng nào đó chỉ
có T mới biết (Khoá riêng của T). Đây là điều cần thiết nhằm tránh giả mạo và bắt
chước. Điều chủ yếu là chỉ T mới có khả năng tạo các khoá riêng hợp lệ phù hợp
với thông tin định danh.
Sơ đồ trao đổi khoá Okamoto-Tanaka.
Phần này mô tả tóm lược sơ đồ trao đổi khoá Okamoto-Tanaka [17] là một hệ
thống phân phối khoá dựa trên định danh. Sơ đồ này gồm 3 pha sau:
 Pha chuẩn bị.
Trung tâm xác thực tin cậy chọn 2 số nguyên tố p và q và đưa công khai các giá
*
trị n, g và e, trong đó n = p.q, g là phần tử sinh của cả Z*p và Z*q , còn e  Z   n  . Ở

đây, hàm Carmichael của n được xác định như sau:


  n   BCNN  p  1, q  1
*
Cho d  Z   n  là khoá bí mật của trung tâm thỏa mãn điều kiện:

ed  1  mod   n 

Trung tâm T

d
sA  ID A sB  ID B d

Người dùng Người dùng


Alice Bob

x A  sA .g rA x B  sB .g rB

   
rA rB
WK AB  IDBx Be e
WK BA  ID A x A

Hình 4.6: Sơ đồ trao đổi khoá Okamoto-Tanaka

13
Chương 4 – Hàm băm, xác thực và chữ ký số

 Pha tham gia của người dùng.


Cho ID i là thông tin định danh của người dùng thứ i  i  A, B, C,... . Cho si là
khoá bí mật của người dùng i thoả mãn:

si  ID i d  mod n 

Sau đó trung tâm T sẽ công bố (e, n, g, ID i ) và phân phát si tới mỗi người
dùng i qua một kênh an toàn (hoặc bằng cách dùng thẻ).

 Pha tạo khoá chung.


Ta giả sử ở đây rằng hai người dùng Alice và Bob muốn chia sẻ một khoá
chung (chẳn hạn để dùng cho một hệ mật khoá bí mật).

Trước tiên Alice tạo một số ngẫu nhiên rA và tính:

x A  sA g rA  mod n 

và gửi nó cho Bob.


Tương tự, Bob tạo một số ngẫu nhiên rB và tính:

x B  sBg rB  mod n 

và gửi nó cho Alice.


Tiếp theo, Alice tính:

 
rA
e
WK AB  ID Bx B  mod n 
Tương tự, Bob tính

 
rB
e
WK BA  ID A x A  mod n 
WKAB và WKBA sẽ dùng làm khoá chung vì:

14
Chương 4 – Hàm băm, xác thực và chữ ký số

 
rA
e
WK AB  ID B .x B
rA

  
e
  ID B sB .g rB

rA

  .g rB e 
e
d
  ID B ID B 
 
 g e.rB .rA
 WK BA  mod n 

Ví dụ: p  11, q  13, n  p.q  143


 143   60
Z *     1,7,11,13,17,19,23,29,31,37, 41, 43, 47, 49,53,59

Giả sử e  43 , khi đó d  7
Với ID i  2 và ID j  3 ta có:

1
si  mod143
27
si  19
1
si  mod143
37
si  126
Ở pha tạo khóa chung:
Giả sử A chọn ri  3 , khi đó X i  19.23 mod143  9

A gửi X i cho B

Giả sử B chọn rj  2 , khi đó X j  126.22 mod143  75

B gửi X j cho A

   
j 2
A tính WK ij  ID i X ie mod n  2.9 43 mod143  25

43.2.3
B tính WK ji  2 mod143  25

4.4 Chữ kí số.


4.4.1 Chữ ký số Shamir

15
Chương 4 – Hàm băm, xác thực và chữ ký số

Chuỗi bít thông báo trước hết được tách thành các véctơ k bít M.
Giả sử M  0, n  1
M  m1 , , m i , , m k 
Một ma trận nhị phân bí mật k  2k (ma trận H) được chọn ngẫu nhiên cùng
với một giá trị modulus n, trong đó n là một số nguyên tố ngẫu nhiên k bít (thông
thường k = 100bít). Một vectơ A 2Kbit (được dùng làm khóa công khai) được chọn
trên cơ sở giải hệ phương trình tuyến tính sau:
 a 
 h1,1 h1,2  h1,2k 1 h1,2k   1   20 
   a2   
 h 2,1 h 2,2  h 2,2k 1 h 2,2k   1
 2 
    a 3  mod n   
      
      
 h k ,1 h k ,2  h k ,2k 1 
h k ,2k   k 1 
  a  2 
 2k 
 
Nói một cách khác, các hệ số h ij được chọn là ngẫu nhiên sao cho thỏa mãn

hệ phương trình tuyến tính sau:


 2k 
 

 h ija j  mod n  2 i 1
mod n với 1  i  k
 j1 
Đây là hệ k phương trình tuyến tính mođulo với 2k ẩn. Bởi vậy k giá trị đầu của
véctơ A được xác định theo các phương trình trên. Véctơ A cùng với n (tức là cặp
(A, n)) là các thông tin công khai, trong khi đó ma trận H được giữ kín.

M
S  Dk M 
S
M  E k S M

 
A A
r
S  M H A mod n A M  SA A mod n B

Hình 4.7: Xác thực thông báo dùng sơ đồ chữ ký


Shamir

Xác thực thông báo dùng sơ đồ Shamir.

16
Chương 4 – Hàm băm, xác thực và chữ ký số

Người gửi A có thể chứng tỏ cho một người dùng khác trên mạng B tính xác
 
thực của thông báo M bằng cách dùng khóa riêng của mình H A ,n A đối với thông
báo M.

S  Dk M 
A

S  M r  H A mod n A

Trong đó M r biểu thị véctơ đảo bít của M, tức là:

M r  m k , m k 1, , m 2 , m1 
Các bít của thông báo đã ký là:
k
si   mihij với 1  j  2k
i 1
si  0, k 

  
Chỉ có A có thể tạo ra 2Kbít si từ k bít của thông báo mi vì chỉ có A mới

 
tạo được 2.k 2 phần tử của ma trận h i, j

Kiểm tra thông báo.


Mỗi người dùng trên mạng có thể kiểm tra tính xác thực của thông báo do A gửi

bằng cách dùng thông tin công khai A A ,n A : 
E k S  S  A A mod n A

 
A

E k S  M r  H A  A A mod n A
A

E k S  M
A

Tức là :

17
Chương 4 – Hàm băm, xác thực và chữ ký số

2k 2k  k 
 s ja j mod n A  
 mi h ij  a j mod n A
j1 j1  i 1 

2k k  2k 
 s ja j mod n A   
mi 

h ija j  mod n A

j1 i 1  j1 
k
  mi 2i1 mod n A
i 1
Ví dụ: Cho k = 3, n = 7
Khi đó thông báo M  0, 6, mỗi bít của thông báo mi  0,1
Ma trận H được chọn trước như sau:
0 0 1 1 0 0
 
H  1 1 1 0 1 0
1 0 0 0 1 1 

Chẳng hạn ta chọn được k phần tử đầu tiên của véctơ A là: a1  1 , a 2  3 ,

a 3  4 . Khi đó k phần tử còn lại của A được xác định bằng cách giải:

1
 
3
0 0 1 1 0 0   1
  4  
1 1 1 0 1 0     mod 7   2  mod 7
1 a 
 0 0 0 1 1   4   4
 
a5
 
a 
 6
Kết quả ta có: a 4  4 , a 5  1 , a 5  2 .

Khi đó véctơ khóa công khai A là: A  1, 3, 4, 4,1, 2  .


Để xác thực thông báo M = 3 (tức là M = (0, 1, 1)) người gửi A dùng khóa
riêng của mình là ma trận H và tính:

18
Chương 4 – Hàm băm, xác thực và chữ ký số

S  Mr  H
0 0 1 1 0 0
 
S  1,1, 0   1 1 1 0 1 0
1 0 0 0 1 1 

S  1,1, 2, 1, 1, 0 
Ở phía thu, người thu sẽ tạo lại thông báo dựa trên thông tin về khóa công khai
của A và n.
1
 
 3
 4
M  S  A  1,1, 2, 1, 1, 0    mod 7
 4
1
 
 2
 
M  17 mod 7  3
Như vậy thông báo M đã được xác thực vì chỉ có người gửi A mới có thể tạo ra
một thông báo có nghĩa.
Sơ đồ chữ ký số Shamir được mô tả ở trên là không an toàn vì với một cặp bản
rõ – bản mã thích hợp thám mã mới có thể xác định được ma trận H. Bằng cách
ngẫu nhiên hóa thông báo M trước khi ký ta có thể tránh được nguy cơ này:

Véctơ A sẽ được nhân với một vectơ ngẫu nhiên R có 2Kbít: R  r1, , r2k 
rồi thực hiện phép biến đổi sau:
M '  M  R  A mod n
Hay M  M ' R  A mod n
Để ký cho thông báo đã biến đổi M’ ta cũng đảo ngược các bít và nhân nó với
H. Tuy nhiên kết quả này lại được cộng với véctơ R.

19
Chương 4 – Hàm băm, xác thực và chữ ký số

S '  M 'r  H  R
 h1,1 h1, 2  h1, 2 k 1 h1, 2 k 
 
 h2,1 h2, 2  h2, 2 k 1 h2, 2 k 
S '  mk' ,  , m1'   r1 ,  , r2 k 
     
 
h hk , 2  hk , 2 k 1 hk , 2 k 
 k ,1
S '  s1 ,  , s 2 k   r1 ,  , r2 k 
S '  s1' ,  , s 2' k 

Ở điểm thu, người sử dụng kiểm tra tính xác thực của thông báo S’ bằng cách
véctơ khóa công khai A:


S'A mod n  M 'r  H  R  A mod n 
 M  H  A  R  A mod n
'r

 M  R  A mod n
'

 M  R  A  R  A mod n
M
Cần chú ý rằng, vào năm 1984 Odlyzko đã phá được sơ đồ chữ ký này.
Ví dụ: Trở lại ví dụ trước với k = 3, n = 7.
Ma trận khóa công khai H có dạng:
0 0 1 1 0 0
 
H  1 1 1 0 1 0
1 0 0 0 1 1 

Véctơ khóa công khai: A  1, 3, 4, 4,1, 2 
Giả sử ra chọn ngẫu nhiên vectơ R 2Kbít như sau:
R  1,1, 0, 0, 0,1
Khi đó thông báo M’ là:
1
 
 3
 4
M '  M  R  A   3  1,1, 0, 0, 0,1    mod 7
 4
1
 
 2
 
M '  3  6 mod 7  3 mod 7  4
20
Chương 4 – Hàm băm, xác thực và chữ ký số

Thông báo đã ngẫu nhiên hóa M '  4  1, 0, 0 


Chữ ký xác thực S’ được tính như sau:
'r
S'  M  H  R
0 0 1 1 0 0
 
S'  0, 0, 1  1 1 1 0 1 0   1,1, 0, 0, 0,1
1 0 0 0 1 1 

S'  1, 0, 0, 0,1  1,1, 0, 0, 0,1
S'  2,1, 0, 0,1, 2 
Dựa trên S’ nhận được, bên thu sẽ kiểm tra bằng cách sử dụng véctơ khóa công
khai A:
1
 
 3
 4
M  S'A  2,1, 0, 0,1, 2     mod 7  10 mod 7  3
 4
1
 
 2
 

4.4.2 Sơ đồ xác thực Ong-Schnorr-Shamir.


Sơ đồ xác thực này đã được Ong,Schnorr và Shamir đưa ra vào 1984. Trong sơ
đồ này, người gửi (người sử dụng A) chọn một số nguyên lớn n A ( n A không nhất

thiết phải là một số nguyên tố). Sau đó A chọn một số ngẫu nhiên k A nguyên tố

 
cùng nhau với n A (tức là UCLN k A , n A  1 ). Khóa công khai k A được tính như
sau:
K A  k A  mod n A
2

 
Cặp k A , n A được đưa công khai cho mọi người dùng trong mạng. Để xác

thực một thông báo M (M nguyên tố cùng nhau với n A ), người gửi sẽ chọn một số

ngẫu nhiên R A ( R A cũng nguyên tố cùng nhau với n A ) rồi tính thông báo được


xác thực là cặp S  S1, S2 sau: 

21
Chương 4 – Hàm băm, xác thực và chữ ký số


S1  21 MR A1  R A mod n A  

S2  21 k A MR A1  R A mod n A  
Sau đó A gửi S cho bên thu qua mạng.
Việc kiểm tra tính xác thực ở bên thu được thực hiện như sau:


S12  K AS22 mod n A  M 
Thực vậy ta có:
    K 2 k MR   R  mod n
S12  K A S 22 mod n A  2 1 MR A1   R A
2
A
1
A
1
A A
2
A

4 1
MR   R   4 K k MR   R  mod n
1
A A
2 1
A
2
A
1
A A
2
A

4 1
MR   R   4 k k MR   R  mod n
1
A A
2 1 2
A
2
A
1
A A
2
A

4 1
MR   R   4 MR   R  mod n
1
A A
2 1 1
A A
2
A

4 1
M R  2MR R  R  M R  2MR R  R mod n
2 2
A
1
A A
2
A
2 2
A
1
A A
2
A A

4 1
M R  2M  R  M R  2M  R mod n
2 2
A
2
A
2 2
A
2
A A

4 1
2M  2M  mod n A
M

Ví dụ: Giả sử người gửi A chọn n A  27 và k A  5

(ta có .(27, 5) = 1). A tính K A như sau:

K A  k A 2 mod n A  5 2 mod 27

  2
  5 1 mod 27  112 mod 27
  121mod 27  14

Khi đó thông tin khóa công khai là K A , n A  14,27 .  


 
Sau khi A chọn một cặp số ngẫu nhiên R A với điều kiện R A , n A  1 rồi tính cặp

chữ ký S  S1, S2  từ R A và thông báo M (với điều kiện M, n A   1 ). Chẳng hạn

R A  13 và M  25 .

22
Chương 4 – Hàm băm, xác thực và chữ ký số

 
S1  2 1 MR A1  R A mod n A 
 1425.25  13mod 27
 14.638 mod 27  8932 mod 27  22

S2  2 1 k A MR A1  R A mod n A  
 14.525.25  13mod 27
 70.612 mod 27  42840 mod 27  18

(Ta có 2 1 mod 27  14 và 131 mod 27  25 ).

 
Sau đó cặp S  S1 , S2  22, 18 sẽ được gửi qua mạng tới người nhận B.
B sẽ kiểm tra tính xác thực của thông báo bằng khóa công khai của A là cặp
K A , n A   14,27. B tính :
  
S12  K AS22 mod n A  22 2  14.182 mod 27 
 484  14.324 mod 27
 5020 mod 27
 25  M

4.5 Các sơ đồ chữ kí số có nén.


Trong thực tế, các bản tin có thể là một vài trang văn bản hoặc là các file dữ liệu
lớn. Trong phần trên ta thấy rằng các chữ ký cho thông báo cũng có độ lớn như bản
thân các bản tin. Trong phần này ta sẽ mô tả một số sơ đồ chữ ký số mà độ lớn của
nó thường là nhỏ hơn và không phụ thuộc vào độ lớn của bản tin. Đó là các chữ ký
số có nén.

4.5.1 Nén chữ ký.


Hình 4.8 chỉ ra một phương pháp nén chữ ký.
S1  E K M1 

S2  E K M 2  S1 



SJ  E K M J  SJ 1 
23
Chương 4 – Hàm băm, xác thực và chữ ký số

Theo cách này ta tạo được một chữ ký Sk M 


SK M   E K M1  M 2    M J  SJ 
M1 M2 MJ

 …
 
EK  EK … EK  EK  E K SK M 
K
S1 K
S2 K
SJ 1 K
SJ K

Hình 4.8: Vòng nén chữ ký

4.5.2 Sơ đồ chữ ký Diffie – Lamport.


Trong sơ đồ này một chữ ký số cho n bít bản tin được tạo như sau:
 Chọn n cặp khóa ngẫu nhiên (chẳng hạn như khóa 56 bít của DES) được gửi
bí mật:
i 1  K1,0 , K1,1 
i2  K 2,0 , K 2,1 

in  K n,0 , K n,1 
 Chọn một dãy S gồm n cặp véctơ ngẫu nhiên (chẳng hạn như các khối đầu
vào 64 bít của DES), dãy này được đưa ra công khai:
   
S  S1,0 , S1,1 , S2,0 , S2,1 , , Sn ,0 , Sn ,1 
 Tính R là dãy các khóa mã (chẳng hạn là các dãy ra của DES)
    
R  R1,0 , R1,1 , R 2,0 , R 2,1 , , R n ,0 , R n ,1

Trong đó : R ij  E K i , j Si, j  với 1  i  n và j  0,1


24
Chương 4 – Hàm băm, xác thực và chữ ký số

Dãy R cũng được đưa công khai.



Chữ ký SG(M) của một bản tin n bít M  m1 , m 2 , , m n chính là dãy khóa 
 
sau: M   K1,i , K 2,i , , K n ,i  trong đó chỉ số khóa i j  m j .
 1 2 n 

Ví dụ : Nếu thông báo M là :


M  m1 m 2 m3 m 4  m n 1 m n
M 1 0 0 1  1 1
Thì chữ ký SG(M) là:
SG M   K1,i K 2,i K 3,i K 4,i  K n 1,i K n ,i
1 2 3 4 n 1 n
SG M   K1,1 K 2,0 K 3,0 K 4,1  K n 1,1 K n ,1

Sơ đồ chữ ký Diffie-Lamport được mô tả trên hình sau:

M
Bản tin n bít

Khối nén
HM 
Các khóa
Chọn khóa

SG(M)
S1,0 , S1,1 , S 2,0 , S 2,1  , S r ,0 , S r ,1
E K S

R
R 0,1, R1,1, R 2,0 , R 2,1  , R r,0 , R r,1

Hình 4.9: Sơ đồ chữ ký D-L (đầu phát)

Bản tin M và chữ ký SG(M) đều được gửi tới nơi thu.

25
Chương 4 – Hàm băm, xác thực và chữ ký số

Bản tin có thể kiểm tra tính xác thực của thông báo bằng việc mã hóa các véctơ
tương ứng của dãy S đã biết với chữ ký SG(M) đã nhận và so sánh bản mã tạo ra
với dãy R đã biết.
?
EK  S   R
1,i 1 
1, i1  1, i1
?
E K  S2,i   R 2,i
2 ,i 2  2  2


?
 S 
EK
n ,i n 
n , i n   R n , i n

Nếu dãy n véctơ này bằng nhau thì chữ ký được xem là đã xác thực.

 R , R ,  , R   E  S , , E  S 
 1, i 2, i n , i n 
 K 1, i K n ,i n 
1 2  1,i1  1  n ,i n 

Cần chú ý rằng sơ đồ chữ ký D-L sẽ mở rộng độ dài chữ ký chứ không phải là
nén nó ! Nếu DES được sử dụng thì một bản tin n bít sẽ cần một chữ ký số SG(M)
có độ dài là 56.n bít. Vì vậy, để khắc phục nhược điểm này bản tin n cần được nén
thành một bản tóm lược thông báo r bít r  n  bằng một hàm băm H(M) trước
khi áp dụng sơ đồ D-L.
Hình 4.10 chỉ ra quá trình kiểm tra chữ ký.
SG(M)

M
Bản tin n bít SG(M)

H(M)
K1,i , , K n,i
1 n

S1,i , , Sn,i K1,i , , K r,i


S
Chọn các phần tử của S 1 n E K S1 r

S , , S
R11,,ii1 , , Rrn,,iir
R 1 n
Chọn các phần tử của R So sánh
R1,i , , R r ,i
1 r

Đầu ra xác thực


Hình 4.10: Kiểm tra chữ ký D-L (đầu thu)
26
Chương 4 – Hàm băm, xác thực và chữ ký số

Cần chú ý rằng chữ ký ở đây chỉ còn là tập r khóa.


Một hạn chế khác cần phải nói tới là : vì một nửa số khóa đã bị lộ sau khi kiểm
tra nên sơ đồ này chỉ có thể được sử dụng một lần với một cặp khóa cho trước. Để
khắc phục nhược điểm này ta có thể sử dụng sơ đồ chữ ký dựa trên các hệ mật khóa
công khai.

4.5.3 Sơ đồ chữ ký RSA


Chữ ký số được xây dựng trên cơ sở kết hợp mã hoá khoá công khai với hàm
băm. Tuy nhiên cách sử dụng khóa ở đây khác với trong các hệ mật khóa công khai.
Các bước tạo chữ ký và kiểm tra chữ ký được mô tả trên hình sau:

Hợp đồng Thuật toán


kinh tế băm a3edbf5…
…….
Tóm lược thông báo

Bản tin gốc


Mã hoá
3408scj ….. Khoá công khai
Tóm lược đã mã

Khoá bí mật của


người gửi
3408scj …..

Hợp đồng Thông báo đã được ký


kinh tế bằng chữ ký số
…….

Hình 4.11: Tạo một thông báo có ký bằng chữ ký


số
27
Chương 4 – Hàm băm, xác thực và chữ ký số

3408scj ….. Giải mã a3edbf5…


Tóm lược đã mã Tóm lược thông báo
đã được phục hồi
Khoá công khai
của người gửi

Hợp đồng Thuật toán


kinh tế băm a3edbf5…
…….
Tóm lược thông báo

Hình4.12: Các bước kiểm tra một thông báo đã ký

Ví dụ: Sơ đồ chữ ký số RSA.


Có thể coi bài toán xác thực là bài toán "đối ngẫu" với bài toán bảo mật. Vì vậy,
sử dụng ngược thuật toán RSA ta có thể có được một sơ đồ chữ ký số RSA như sau:
Giả sử n  p.q , trong đó p và q là các số nguyên tố lớn có kích thước tương
đương.
 
K  n , e , d  : d  Z n* , ed  1 modn 

Với K  n , e , d  ta có D  d là khoá bí mật, E  n , e  là khoá công khai, m là


bản tin cần ký.
: S  sig D m   m mod n
d
Tạo chữ ký

Kiểm tra chữ ký: verE m , s = đúng  m  Se mod n .


Hoạt động của sơ đồ chữ ký RSA có thể mô tả như sau:

 Trường hợp bản tin rõ m không cần bí mật (Hình 4.13.).


A ký bản tin m và gửi cho B. Gửi cho B
A B
B kiểm tra chữ ký của A. Công bố

DA  d A E B  e B , n B 
Công bố

E A  e A , n A  Lấy

Ký: 28 Kiểm tra:

Hình4.13: Sơ đồ chữ ký số RSA (không bí mật bản tin)


Chương 4 – Hàm băm, xác thực và chữ ký số

Giả sử A muốn gửi cho B bản tin rõ m có xác thực bằng chữ ký số của mình.
Trước tiên A tính chữ ký số
SA  sig D m   m d mod n A
A
A

Sau đó A gửi cho B bộ đôi m , SA  . B nhận được m , SA  và kiểm tra xem điều
eA
kiện m  SA mod n A có thoả mãn không. Nếu thoả mãn, thì khi đó B khẳng định

rằng verE m , SA  nhận giá trị Đúng và chấp nhận chữ ký của A trên m.
A

 Trường hợp bản tin rõ m cần giữ bí mật (Hình 4.14).


A ký bản tin rõ m để được chữ ký SA . Sau đó A dùng khoá mã công khai E B
của B để lập bản mã M  E B m , SA  rồi gửi đến B. Khi nhận được bản mã M, B
dùng khoá bí mật D B của mình để giải mã cho M và thu được m , SA . Tiếp đó dùng
thuật toán kiểm tra verE để xác nhận chữ ký của A.
A

Gửi M cho B
A B
Công bố

DA  d A
Lấy
E B  e B , n B 
E A  e A , n A  Lấy
Công bố

A tính: B tính:

Kiểm tra:

Hình4.14: Sơ đồ chữ ký số RSA (có bí mật bản tin)

4.6 Chữ kí Elgamal


(http://en.wikipedia.org/wiki/ElGamal_signature_scheme)

29
Chương 4 – Hàm băm, xác thực và chữ ký số

Lược đồ chữ kí số Elgamal do Taher Elgamal đưa ra năm 1984, dựa trên độ phức
tạp tính toán của logarit rời rạc và cho phép chứng thực được tính xác thực của một
thông điệp m nhận được qua một kênh không an toàn.
Các tham số hệ thống:
 Cho H là một hàm hash khó va chạm
 Cho p là một số nguyên tố lớn sao cho tính logarit rời rạc theo modulo p là
khó.
 Cho g là một phần tử sinh được chọn ngẫu nhiên của nhóm nhân các số
nguyên theo modulo p.
Các tham số hệ thống có thể được chia sẻ cho những người dùng.
Sinh khóa
 Chọn một khóa bí mật ngẫu nhiện x, .
 Tính .
 Khóa công khai là .
 Khóa bí mật là x.
Sinh chữ kí
 Chọn một số ngẫu nhiên k để và .
 Tính
 Tính
 Nếu thì lặp lại quá trình trên.
Cặp là chữ kí số của m.
Kiểm tra
 và
Nếu tất cả các điều kiện thỏa mãn thì người kiểm tra coi là đúng và ngược lại.
Tính đúng đắn:

Tính an toàn:
Kẻ giả mạo có thể tìm khóa bí mật x hoặc tìm kiếm sự xung đột trong hàm hash
. Tuy nhiên cả hai cách này đều rất khó.
30
Chương 4 – Hàm băm, xác thực và chữ ký số

Người kí phải chọn cẩn thận giá trị k khác nhau một cách ngẫu nhiên cho mỗi lần kí
để không lộ thông tin nếu không kẻ tấn công có thể suy diễn ra khóa bí mật.

31

You might also like