Hệ mật mã Elgamal được T.Elgamal đề xu t năm 1985, dựa vào độ ph c tạp c a bài toán tính logarit rời rạc, và sau đó đã nhanh chóng được sử dụng rộng rãi không những trong v n đề b o mật truyền tin mà còn trong các v n đề xác nhận và chữ ký điện tử.
Hệ mật Elgamal là một hệ mật không xác định vì b n mã phụ thuộc vào c b n rõ
xlẫn giá trị ngẫu nhiên k do Gchọn. Bởi vậy sẽ có nhiều b n mã được mã từ cùng một b n rõ, nghĩa la có rât nhiều gia tri ̣ chữ ky cho cùng mô ̣t bưc điê ̣n cho trươc. Thuâ ̣t toan xác minh phải có khả năng nhâ ̣n bât ky gia tri ̣ chữ ky nao như la viê ̣c xac thực [4]. Sơ đô chữ ky Elgamal được miêu tả như sau:
Cho plà một số nguyên tố như là bài toán logarit rời rạc trong Zp α Zp*là một phần tử nguyên tử
P = Zp* , A = (Zp*).Zp-1
- Định nghĩa:K = {(p, α, a, ): ≡ αa
(mod p)}
Trong đo giá trị p, α và là công khai, còn alà bi mật.
Với K = (p, α, a, )và chọn một số ngẫu nhiên k Zp-1 * - Định nghĩa: sigk (x,k ) = ( , δ)
Trong đó = α k
mod p; δ = (x – a. ). k-1 mod(p -1).
Với x, Zp* và δ Zp-1.
- Định nghĩa: verk(x,( , δ)) = TRUE ↔ . δ≡ αx
Ta th y rằng sơ đồ chữ ký được định nghĩa như trên là hợp th c. Thực vậy, nếu sigk(x,k) = ( , δ) thì ta có : . δ≡ αa
.αkδmod p≡ α x
mod p. Vì k.δ + a. ≡ x mod (p -1). Do đó, verk(x,( , δ)) = TRUE.
Bên nhận B sẽ tinh toan chữ ky bằng viê ̣c sử dụng cả gia tri ̣ bi mâ ̣t a (mô ̣t phân của khoa) và số bí mật ngẫu nhiên k (giá trị để ký b c điện). Viê ̣c xac minh có
thể thực hiê ̣n được chỉ vơi cac thông tin được công khai.
Ví dụ: Gi sử p = 467, α = 2, a = 127. Khi đó β = 2127 mod 467 = 132. Cho x = 100; ta chọn ngẫu nhiên k =213 ( Z*466 )và được k-1 mod 466 = 431. Chữ ký trên văn b n x = 100với số ngẫu nhiên k = 213 là ( , δ), trong đó
= 2213 mod 467 = 29 và δ = (100 - 127.29).431 mod 466 = 51.
Để kiểm thử ta tính : . δ = 1322 9
.295 1 ≡ 189 (mod 467), và αx
= 21 0 0 ≡ 189 (mod 467). Hai giá trị đó đồng dư với nhau theo mod 467, chữ
ký ( . δ) = (29, 51) được xác nhận là đúng.
2.7.2 Hàm băm
2.7.2.1 Giới thiệu
Theo các sơ đồ chữ ký ở trên thì chữ ký c a thông điệp cũng có độ dài bằng độ dài c a thông điệp, đó là một điều b t tiện. Ta mong muốn như trong trường hợp chữ ký viết tay, chữ ký có độ dài ngắn và hạn chế cho dù văn b n có độ dài bằng bao nhiêu. Vì chữ ký số được ký cho từng bit c a thông điệp, nếu muốn chữ ký có độ dài hạn chế trên thông điệp có độ dài tùy ý thì ta ph i tìm cách rút gọn độ dài thông điệp. Nhưng b n thân thông điệp không thể rút ngắn được, nên chỉ còn cách là tìm cho mỗi thông điệp một thông điệp thu gọn có độ dài hạn chế và thay việc ký trên thông điệp , ta ký trên thông điệp thu gọn , t c la chia thông điệp lơn thanh những đoa ̣n nhỏ 160 bit, và sau đó ký lên mỗi đoạn nhỏ đó , điều nay cũng tương tự như mã hoa một chuỗi dai bản rõ bằng viê ̣c mã hoa tưng ky tự bản rõ sử dụng cùng một khóa [9].
Để gi i quyết v n đề này, người ta sử dụng hàm băm (hash function). Các hàm
băm đóng vai trò cơ b n trong mã khóa công khai. Hàm băm sẽ tạo ra một đầu ra từ b n tin đầu vào. Đầu ra này được định nghĩa là một mã băm.
2.7.2.2 Khái niệm
Mô ̣t ham băm H sẽ lây ở đâu vao mô ̣t thông tin X có kich thươc biên thiên va sinh kêt quả la một chuỗi có độ dai cô đi ̣nh , được go ̣i la b n tóm lược của thông điệp (message digest).
Ví dụ: khi bên B muôn ky mô ̣t thông điệp x (đô ̣ dai bât ky ), đâu tiên anh ta ph i có b n tóm lược của thông điệp z = h(x) (đô ̣ dai cô đi ̣nh) và sau đó ký y = sigk(z). Anh ta phat că ̣p (x,y) lên kênh truyền, bây giơ viê ̣c kiểm tra có thể thực hiê ̣n bằng viê ̣c tinh la ̣i b n tóm lược của thông điệp z = h(x), sau đó kiểm tra
verk(z,y)có bằng TRUE hay không.
Hình 2.3. Sơ đồ ký và kiểm thử sử dụng hàm băm
Hàm băm là một hàm tính toán có hiệu qu khi ánh xạ các dòng nhị phân có độ dài tuỳ ý thành các dòng nhị phân có độ dài cố định nào đó.
2.7.2.3 Đặc tính của hàm băm
Mô ̣t vân đề cân ban ở đây la tinh đụng đô ̣ của ham băm . Theo nguyên ly
Diricle: nếu co n+1con thỏ được bỏ vào n cái chuồng thì ph i tồn tại it nh t một cái chuồng mà trong đo co it nh t là hai con thỏ ở chung . Ta th y vơi không gian gia tri ̣ băm nhỏ hơn rât nhiều so vơi không gian c a thông điệp về mă ̣t kich thươc thì chăc chăn sẽ tôn ta ̣i đụng đô ̣, nghĩa là có hai đoạn thông điệp con x ≠ x’ mà giá trị băm c a chúng là giống nhau, tưc h(x) = h(x’).
Sau đây chúng ta sẽ xét cac da ̣ng tân công có thể có , tư đó rút ra cac tinh chât c a hàm băm:
Dạng t n công th nh t là người C bắt đầu với một thông điệp được ký có giá trị
(x, y), trong đó y = sigk(h(x)) (că ̣p (x, y)có thể la bât ky thông điệp trươc đó ma B đã ký). Sau đó, C tinh z = h(x)và cố gắng tìm x’≠ xđể h(x’) = h(x).Nêu C lam được điều này thì cặp (x’, y) sẽ la mô ̣t bưc điê ̣n được ky có gia tri ̣ (mô ̣t bưc điê ̣n giả ma ̣o có gia trị). Để ngăn cản viê ̣c nay, hàm băm h ph i thỏa mãn tính ch t sau:
Tính chất 1:
Một hàm băm h có tính không va chạm yếu khi với một bức điện x cho trước ,không tìm ra một bức điện x’≠ x sao cho h(x’) = h(x).
Mô ̣t da ̣ng tân công khac ma ngươi C có thể lam la : đâu tiên anh ta tìm hai thông điệp x ≠ x’ sao cho h(x) = h(x’). Sau đó C đưa thông điệp x cho B va thuyêt phục B ký vào b n tóm lược th ông điệp h(x); và vì vậy, anh ta tìm được y. Như vâ ̣y,
că ̣p (x’, y) là một cặp chữ ký gi có giá trị . Điều nay la nguyên nhân ma viê ̣c thiêt kê ham băm phải thoả mãn tinh chât 2 như sau:
Tính chất 2:
Một hàm băm h có tính không v a chạm mạnh khi không có khả năng tính toán để tìm ra thông điệp x và x’ sao cho x’ ≠ x và h(x’) = h(x).
Nhận xét: Không va chạm mạnh bao hàm cả va chạm yếu
Dạng t n công th ba là chọn một giá trị b n tóm lược z ngẫu nhiên . Ngươi C sẽ tinh mô ̣t chữ ký vơi mô ̣t gia tri ̣ ngẫu nhiên z, sau đó anh ta tìm mô ̣t thông điệp x sao cho z = h(x).Nêu anh ta lam được điều nay thì că ̣p (x, y) là cặp chữ ký gi có giá trị. Như vâ ̣y mô ̣t tính ch t nữa mà hcân thoả mãn la tinh một chiều:
Tính chất 3:
Một hàm băm h có tính một chiều khi cho trước một bản tóm lược của thông điệp z, không thể thực hiện về mặt tính toán để tìm được một thông điệp x sao cho h(x) = z.
2.7.2.4 Tìm hiểu một hàm băm đặc trưng
Có r t nhiều hàm băm được sử dụng trong việc mã hóa các thông điệp c a người gửi, các hàm băm được coi là an toàn là các hàm băm 128 bit (như MD5...) vì khi đó số phép thử cần tính sẽ là 264. Tuy nhiên hiện nay với sự phát triển c a các thuật toán thám mã hàm băm mới được phát hiện thì các hàm băm 128 bit cũng được khuyến nghị là không nên sử dụng trong các hệ thống b o mật mới mà thay vào đó các hàm băm được khuyến nghị nên sử dụng là là các hàm băm 164 bit như
DSS, SHA-2.
Dưới đây là những lý thuyết cơ b n về hàm băm SHA-1.
SHA (Secure Hash Algorithm) có nguồn gốc từ NIST & cơ quan An ninh Quốc gia Hoa Kỳ (National Security Agency – NSA) vào năm 1993, sau đó được nâng c p vào 1995 theo chuẩn US và chuẩn là FIPS 180-1 1995 và Internet
RFC3174, được nhắc đến như SHA-1. Nó được sử dụng với sơ đồ chữ ký điện tử
DSA (Digital Signature Algorithm). Thuật toán là SHA dựa trên thiết kế MD4 với một số khác biệt tạo nên giá trị băm 160 bit.
* Mô tả
Đầu vào c a thuật toán là một thông điệp có chiều dài b t kỳ nhỏ hơn 264 bit, SHA-1 cho ra kết qu là một thông điệp rút gọn có độ dài là 160 bit.
* Mở rộng thông điệp
f(t;B,C,D)được định nghĩa như sau:
f(t;B,C,D) = (B AND C) OR ((NOT B) AND D) (0 ≤ t ≤ 19) f(t;B,C,D) = B XOR C XOR D (20 ≤ t ≤39) f(t;B,C,D) = (B AND C) OR (B AND D) OR (C AND D) (40 ≤ t ≤59) f(t;B,C,D) = B XOR C XOR D (60 ≤ t ≤79)
Thông điệp M được mở rộng trước khi thực hiện băm. Mục đích c a việc mở rộng này là để đ m b o cho thông điệp mở rộng có độ dài là bội số c a 512.
Gi sử độ dài c a thông điệp là l bit. Thêm bit 1 vào cuối thông điệp, theo sau là k bit 0 (klà số dương không âm nhỏ nh t sao cho 1 + 1 + k = 448 (mod512)) . Sau đó thêm khối 64 bit là biểu diễn nhị phân c a l.
- Phân tích thông điệp mở rộng:
Sau khi thông điệp đã được mở rộng, thông điệp mở rộng được phân tích
thành N khối 512 bit M(1), M(2), …, M(n). Trong đó 512 bit c a khối dữ liệu đầu vào có thể được thể hiện bằng 16 từ 32 bit.
* Khởi tạo giá trị băm
Giá trị băm là một chuỗi bit có kích thước bằng kích thước c a thông điệp băm (trừ SHA-384) gồm các từ ghép lại. Trong đó Hj(i)là từ j trong giá trị băm ở lần lặp i
với 0 ≤ i ≤ N (số block có được sau khi chia văn b n được đệm) và 0 ≤ j ≤ (số từ trong giá trị băm -1). Trước khi thực hiện giá trị băm, với mỗi thuật toán băm an toàn, giá trị băm ban đầu H(0) ph i được thiết lập. Kích thước và số lượng từ trong
H(0)tuỳ thuộc vào kích thước thông điệp rút gọn.
SHA-1 sử dụng dãy các hằng số K(0),…, K(79) có giá trị như sau:
K(t) = 5A827999 (0 ≤ t ≤ 19) K(t) = 6ED9EBA1 (20 ≤ t ≤ 39) K(t) = 8F1BBCDC (40 ≤ t ≤ 59) K(t) = CA62C1D6 (60 ≤ t ≤ 79)
* Thuật toán của bước tính giá trị băm SHA-1
SHA-1 được sử dụng để băm thông điệp M có độ dài l bit tho mãn điều kiện 0 ≤ l ≤ 264
.
Thuật toán sử dụng: một b ng phân bố thông điệp gồm 80 từ - 32 bit, 5 biến -
32 bit, một giá trị băm gồm 5 từ - 32 bit. Kết qu c a SHA-1 là một thông điệp rút gọn có độ dài 160 bit. Các từ c a b ng phân bố thông điệp được ký hiệu W(0), W(1),…, W(79). Năm biến được ký hiệu là a, b, c, d, e. Các từ c a giá trị băm ký hiệu H0(i),H1(i), H2(i), H3(i),H4(i). H(0) giữ giá trị băm ban đầu và được thay thế bằng các giá trị băm thành công. H(i) sau mỗi khối thông điệp được xử lý và kết thúc bằng giá trị băm cuối cùng H(N).
* Tính toán thông điệp băm
X <<< n có nghĩa là loại bỏ từ trái sang ph i nbit và thêm vào kết qu n số 0 vào bên ph i (biểu diễn dịch trái n bit). 0 vào bên ph i (biểu diễn dịch trái n bit).
X >>> n có nghĩa là loại bỏ từ ph i qua trái nbit và thêm vào kết qu n số 0 vào bên trái (biểu diễn dịch ph i n bit).
Khởi tạo H: H(0) = 67452301; H(1) = EFCDAB89; H(2) = 98BADCFE ; H(3) = 10325476; H(4) = C3D2E1F0. Các khối bit H(i)được coi như các thanh ghi dịch và thường gọi là các chuỗi biến số (với Hàm băm MD5 chỉ có bốnkhối).
Có thể mô t một vòng lặp c a SHA-1 như sau: chia thông điệp M thành các
khối M(i) 512 bit, mỗi khối M(i) lại được chia thành 16 khối 32 bit W(0), W(1),…, W(15).
For t = 16 to 79
W(t) = (W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)) << 1
Đặt:a = H(0) b = H(1) c = H(2) d = H(3) e = H(4) For t = 0 to 79 do TEMP =A <<< 5 + ft(B,C,D) + E + W(t) + K(t); e = d d = c c = b <<< 30 b = a a =TEMP; Đặt H(0) = H(0) + a H(1) = H(1) + b H(2) = H(2) + c H(3) = H(3) + d
H(4) = H(4) + e
Sau khi tính toán được hết các chuỗi M(n) 512 bit, thông điệp rút gọn là một chuỗi 160 bit là biểu diễn c a 5 từ: H(0) H(1) H(2) H(3) H(4)
* Đánh giá thuật toán
- SHA-1 được xem là an toàn đối với hiện tượng đụng độ vì r t khó tìm được hai thông điệp khác nhau có giá trị băm giống nhau.
- SHA-1 cộng thêm các bit gi để tạo thành các khối chia hết cho 512 bit, sử dụng một hàm phi tuyến f cho c bốn vòng lặp.
- SHA-1 sử dụng mỗi hằng s ố cho mỗi vòng biến đổi , hằng sô di ̣ch nay la mô ̣t sô nguyên tô đôi vơi đô ̣ lơn của word (giông vơi MD4).
- SHA-1 được coi là chuẩn c a việc b o vệ các kênh liên lạc trực tuyến tồn tại trong chín năm qua.
- SHA-1 được thiết kế cho bộ xử lý 32 bit, thế hệ sắp tới c a máy tính dùng các bộ xử lý 64 bit mà SHA-1 không hiệu qu trên bộ xử lý này.
- Tháng 2 năm 2005 SHA-1 bị t n công bởi ba chuyên gia người Trung Quốc. Thuật toán này đã bị gi i mã thông qua phương pháp tính phân bổ. Tuy nhiên, nếu t n công bằng phương pháp vét cạn thì với độ dài hàm băm 160 bit thì
SHA-1 r t khó bị phá vỡ.
Năm 2002, NIST xu t b n, sửa chữa và đề nghị bổ sung thêm ba phiên b n SHA mới là: SHA-2 gồm có SHA-256, SHA-384 và SHA-512. Tháng 2 năm 2004, thuật toán hàm băm SHA-224 cũng được NIST công nhận thành chuẩn hàm băm an toàn. Các phiên b n mới được thiết kế với việc tăng độ dài c a hàm băm và độ ph c tạp tính toán lên để tăng độ an toàn dựa trên chuẩn mã nâng cao AES. C u trúc c a các phiên b n mới giống với SHA-1 nhưng có độ an toàn cao hơn nhiều.
Năm 2012 xu t b n phiên b n SHA mới là SHA-3 (Keccak) để sẵn sàng sử dụng thay thế cho SHA-2 đ m b o tính an toàn c a hàm băm.
B ng 2.1. Các tính ch t c a các thuật toán băm an toàn Thuật toán
Kích thước (Bit)
Thông điệp Khối Từ Thông điệp rút gọn
SHA-1 < 264 512 32 160 SHA-224 < 264 512 32 224 SHA-256 < 264 512 32 256 SHA-384 < 2128 1024 64 384 SHA-512 < 2128 1024 64 512 SHA3-224 1152 64 224 SHA3-256 1088 64 256 SHA3-384 837 64 384 SHA3-512 576 64 512
B ng 2.1 thể hiện các tính ch t cơ b n c a thuật toán băm an toàn trên. Sự khác biệt chính c a các thuật toán là số lượng bit b o mật c a dữ liệu được băm –điều này có nh hưởng trực tiếp đến chiều dài c a thông điệp rút gọn. Khi một thuật toán băm được sử dụng kết hợp với thuật toán khác đòi hỏi ph i cho kết qu số lượng bit tương ng. Ví dụ, nếu một thông điệp được ký với thuật toán chữ ký điện tử cung c p 128 bit thì thuật toán chữ ký đó có thể đòi hỏi sử dụng một thuật toán băm an toàn cung c p 128 bit như SHA-256.