Professional Documents
Culture Documents
1
Chương 4 – Hàm băm, xác thực và chữ ký số
(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).
2
Chương 4 – Hàm băm, xác thực và chữ ký số
Đị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ố
Hàm băm
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ố
Đị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.
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
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.
gU 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à gIV ~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
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 2it
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
10
Chương 4 – Hàm băm, xác thực và chữ ký số
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)
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).
11
Chương 4 – Hàm băm, xác thực và chữ ký số
(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 .
Ý 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 . Ở
ed 1 mod n
Trung tâm T
d
sA ID A sB ID B d
x A sA .g rA x B sB .g rB
rA rB
WK AB IDBx Be e
WK BA ID A x A
13
Chương 4 – Hàm băm, xác thực và chữ ký số
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ẻ).
x A sA g rA mod n
x B sBg rB mod n
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
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
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
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
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
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
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
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
j1 j1 i 1
2k k 2k
s ja j mod n A
mi
h ija j mod n A
j1 i 1 j1
k
mi 2i1 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 .
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ố
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 21 MR A1 R A mod n A
S2 21 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 A1 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
2
5 1 mod 27 112 mod 27
121mod 27 14
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
1425.25 13mod 27
14.638 mod 27 8932 mod 27 22
S2 2 1 k A MR A1 R A mod n A
14.525.25 13mod 27
70.612 mod 27 42840 mod 27 18
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
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ố
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
M
Bản tin n bít
Khối nén
HM
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
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
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
DA d A E B e B , n B
Công bố
E A e A , n A Lấy
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
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:
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