3.1.2.3. Thuật tốn trao đổi khóa ECDH
Hệ mật mã ECC có khả năng cung cấp dịch vụ trao đổi khóa an tồn mà khơng địi hỏi các bên phải thiết lập trước một khóa bí mật chia sẻ. Phương pháp trao đổi khóa này này tương tự với phương pháp trao đổi khóa Diffie-Hellman nên ta gọi đây là thuật tốn ECDH (Elliptic Curve Diffie-Hellman). Thuật toán ECDH được thực thi theo các bước sau:
Thuật toán 3.3 : Thuật tốn trao đổi khóa ECDH
Input : Alice và Bob thống nhất đường cong Elliptic với tham số T(p,a,b,G,n,h)
hoặc T(m,f(x),a,b,G,n,h)
Ouput : Khóa cơng khái của Alice, Bob và khóa chia sẻ được thiết lập 1 : Alice sinh ngẫu nhiên 1 số nguyên dương dA < n
2 : Alice tính điểm PA = dA x G và gửi PA cho Bob 3: Bob sinh ngẫu nhiên 1 số nguyên dương dB < n
4: Bob tính điểm PB = dB x G và gửi PB cho Alice
5: Khóa cơng khai của Alice là PA, Alice tính khóa bí mật chia sẻ K = dA x PB.
Khóa cơng khai của Bob là PB, Bob tính khóa bí mật chia sẻ K = dB x PA
Alice và Bob có khả năng tính tốn độc lập được khóa chia sẻ K bởi :
B B B B
A A A A
Kd P d d G d d G d P
3.1.2.4. Thuật toán chữ ký điện tử ECDSA
Hệ mật mã công khai ECC cung cấp dịch vụ chữ ký điện tử tương tự như hệ mật mã RSA, thuật toán ký số ECDSA (Elliptic Curve Digital Signature Algorithm) đã được chuẩn hóa và được đưa vào các bộ chuẩn như ANSI X9.62, FIPS 186-2, IEEE 1363-2000 và ISO/IEC 15946-2. Thuật tốn ECDSA được mơ tả chi tiết trong
“SEC1: Elliptic Curve Cryptography” [2], gồm các bước sau: Comment [u25]: Certicom Research (2009), "SEC1: Elliptic Curve Cryptography",
Thuật toán 3.4 : Thuật toán tạo chữ ký điện tử ECDSA
Input : Đường cong Elliptic với tham số T(p,a,b,G,n,h) hoặc T(m,f(x),a,b,G,n,h),
khóa bí mật k và thơng điệp M
Output : Chữ ký điện tử của M
1: Tính giá trị băm của thơng điệp M, sử dụng thuật toán băm SHA1, được giá trị
băm H = SHA1(M). Chuyển xâu băm về kiểu số nguyên được số nguyên e.
2: Sinh ngẫu nhiên d (0 < d < n). Tính điểm R = d x G. Điểm R có tọa độ (xR, yR). 3: Chuyển tọa độ xR từ kiểu trường sang kiểu số nguyên xR. Tính r = xRmod n. Nếu r = 0, quay về bước 2.
4: Tính giá trị 1
mod
s e k r d n . Nếu s = 0, quay về bước 2.
5: Chữ ký điện tử thông điệp M là (r,s)
3.1.2.5. Thuật toán xác thực chữ ký điện tử ECC
Khi Bob nhận được thông điệp M với chữ ký điện tử (r,s) được tạo bởi thuật toán ECDSA. Bob sẽ tiến hành xác thực theo thuật toán sau [3]:
Thuật toán 3.5 : Thuật toán xác thực chữ ký điện tử ECC
Input : Đường cong Elliptic với tham số T(p,a,b,G,n,h) hoặc T(m,f(x),a,b,G,n,h), khóa cơng khai bên gửi Q, thơng điệp gửi m, và chữ ký (r,s)
Output: Chữ ký điện tử có hợp lệ khơng
1 : Nếu 0 < r < n thì tiếp tục bước tiếp theo, nếu không trả về kết quả không hợp lệ
và kết thúc.
2 : Tính giá trị băm của thơng điệp m, sử dụng thuật toán băm SHA1, ta được giá trị
H = SHA1(m). Chuyển xâu băm nhận được về kiểu số nguyên ta được số e.
3 : Tính nghịch đảo của s theo modulo n: w = s-1 mod n
4 : Tính hai giá trị : u1ew mod n và u2rw mod n
5 : Tính điểm Ru1G u 2Q. Chuyển hồnh độ của R là xR từ kiểu trường sang kiểu số nguyên xR.
Comment [u26]: Certicom Research
(2009), "SEC1: Elliptic Curve Cryptography", pp 46
6 : Nếu xR ≡ r (mod n) thì thơng báo chữ ký hợp lệ và ngược lại.
Theo thuật tốn ECDSA ta có :
1(mod ) s e k r d n s 1(mod ) d e k r n 1 1 1 2(mod ) w w u n k r s e k r k u d e s Theo bước 5 : 1 2 Ru G u Q 1 2 1 2 u u k G R u G u k G G R d
Do vậy R = (xR, yR), và xR = r (mod n)
3.1.2.6.Mơ hình mã hóa tích hợp đường cong Elliptic - ECIES
Thuật tốn mã hóa và giải mã của mơ hình ECIES được đề xuất bởi 2 nhà khoa học Bellare và Rogaway [10], và là một biến thể của hệ mật mã hóa cơng khai ElGamal. ECIES đã được chuẩn hóa bởi chuẩn ANSI X9.63 và ISO/IEC 15946-3 và được nêu trong chuẩn “SEC1: Ellitptic Curve Cryptography”.
Trong ECIES, mơ hình chia sẻ khóa Diffie-Hellman được sử dụng để 2 bên truyền thơng thiết lập và chia sẻ 2 khóa k1 và k2. Trong đó k1 sẽ được sử dụng để mã
hóa thơng điệp truyền bằng hệ mật mã khóa đối xứng, k2 được sử dụng để xác thực
kết quả của bản mã.
Mơ hình ECIES sử dụng các hàm chức năng sau:
KDF (Key Derivation Function) : Là hàm sinh khóa (k1, k2) từ điểm R và
hoành độ xz của điểm Z.
ENC : Là 1 hàm mã hóa khóa đối xứng. Ví dụ như AES.
MAC : Hàm sinh mã xác thực thơng báo. Ví dụ HMAC.
Comment [u27]: Darrel Hankerson ,
Alfred Menezes, Scott Vanstone (2004), "Guide to Elliptics Curve Cryptography", Springer publisher, pp 189
a. Thuật tốn mã hóa ECIES
Thuật tốn mã hóa của ECIES được thực thi như sau [4] :
Thuật tốn 3.6 : Thuật tốn mã hóa ECIES
Input : Đường cong Elliptic với tham số T(p,a,b,G,n,h) hoặc T(m,f(x),a,b,G,n,h), khóa cơng khai bên nhận Q, thơng điệp gửi M
Output: Bản mã của thông điệp M
1 : Sinh ngẫu nhiên số nguyên dương d thỏa mãn 0 < d < n
2 : Tính điểm R d G và điểm Z h d Q. Nếu Z = 0 thì quay lại bước 1.
3 : Tính cặp khóa (k1, k2) = KDF(xZ, R)
4 : Tính bản mã sử dụng khóa k1 : C = ENC(k1, M)
5 : Tính mã xác thực thơng báo cho bản mã sử dụng khóa k2 : t= MAC(k2, C)
6 : Trả về bản mã (R, C, t)
b. Thuật toán giải mã ECIES
Ngược lại với thuật tốn mã hóa, thuật tốn giải mã được thực thi như sau [5]:
Thuật toán 3.6 : Thuật tốn mã hóa ECIES
Input : Đường cong Elliptic với tham số T(p,a,b,G,n,h) hoặc T(m,f(x),a,b,G,n,h), khóa bí mật k, và bản mã (R, C, t)
Output: Bản rõ M hoặc thông báo thông điệp không hợp lệ
1 : Kiểm tra điểm R có thuộc đường cong Elliptic khơng. Nếu khơng thuộc, trả về
thơng báo khơng hợp lệ.
2 : Tính điểm Z h k R. Nếu Z = 0 thì trả về thơng báo khơng hợp lệ.
3 : Tính cặp khóa (k1, k2) = KDF(xZ, R)
Comment [u28]: Certicom Research
(2009), "SEC1: Elliptic Curve Cryptography", pp 52-53
Comment [u29]: Certicom Research
(2009), "SEC1: Elliptic Curve Cryptography", pp 53-54
4 : Tính t’ = MAC(k2, C). Nếu t’ ≠ t, trả về thông báo không hợp lệ.
5 : Giải mã M = ENC(k1, C)
6 : Trả về bản rõ M
Như đã nêu ở trên, bản chất của việc mã hóa và giải mã của ECIES là thiết lập một khóa phiên rồi sử dụng khóa phiên đó để mã hóa và giải mã theo mơ hình mật mã khóa chia sẻ. Khóa phiên trong mã hóa và giải mã chỉnh là điểm Z. Thật vậy, ta có :
( ) ( )
Z h d Q h d k G h k d G h k R
3.2. Ưu điểm của hệ mật mã đường cong Elliptic
Theo nội dung đã trình bày ở phần trên, ta nhận thấy hệ mật mã ECC cung cấp tất cả các dịch vụ an ninh của 2 hệ mật mã công khai RSA và Diffie-Hellman. Cụ thể hệ mật mã ECC cung cấp các dịch vụ an ninh sau:
Trao đổi khóa an tồn
Chống nghe lén
Ký số
Chống chối bỏ.
Tuy nhiên, hệ mật mã ECC có một ưu điểm mà các hệ mật mã cơng khai trước đó khơng có được, đó là sự tương thích đối với các thiết bị có năng lực tính tốn hạn chế. Do đặc điểm tốn học của bài toán lograrit rời rạc trên đường cong Elliptic, độ phức tạp để tìm ra được khóa đúng tăng theo cấp số mũ khi chiều dài khóa được tăng lên. Do vậy, hệ mật mã ECC ở cùng độ an toàn với hệ mật mã RSA chỉ cần khóa có độ lớn bé hơn rất nhiều so với khóa của RSA (Hình 3.2). Chính nhờ tính chất này, việc thực thi hệ mật mã ECC có những ưu điểm sau:
Địi hỏi năng lực tính tốn thấp
Tiết kiệm bộ nhớ
Tiết kiệm băng thông
3.3. Đề xuất xây dựng hạ tầng khóa cơng khai cho thiết bị di động dựa trên hệ mật mã ECC động dựa trên hệ mật mã ECC
3.3.1. Vấn đề an ninh của hệ mật mã công khai
Bên cạnh những ưu điểm của hệ mật mã cơng khai như an tồn, bảo mật, thuận tiện, các hệ mật mã cơng khai có cùng 1 yếu điểm, đó là dễ bị tấn công người ở giữa (Man in the middle).
Giả sử Alice và Bob thực hiện trao đổi truyền thông với nhau sử dụng hệ mật mã công khai. Để thực hiện được, Alice phải biết được khóa cơng khai của Bob và ngược lại Bob phải có được khóa cơng khai của Alice. Tuy nhiên, giả sử kẻ tấn cơng Darth có thể dùng phương pháp tấn công người ở giữa theo các bước sau:
Trước tiên, bằng một kỹ thuật nào đó, Darth có thể xen vào kênh truyền
giữa Alice và Bob. Mọi thông tin truyền giữa Alice và Bob đều đi qua Darth và Darth có thể kiếm sốt được việc truyền thơng tin đó.
Darth sẽ tự nhận mình là Bob, Darth sẽ sinh ra một cặp khóa cho mình
và gửi khóa cơng khai giả mạo tới cho Alice.
Alice sẽ tin đó là khóa cơng khai của Bob và gửi trở lại khóa cơng khai
của mình cho Darth – Người Alice tin đó là Bob.
Darth thực hiện việc giả mạo tương tự đối với Bob.
Đến lúc này, giả sử Alice gửi 1 thông điệp mã hóa cho Bob, Alice sẽ dùng khóa cơng khai của Bob – mà thực chất là khóa cơng khai của Darth – để mã hóa. Do Darth đứng giữa, lại có khóa bí mật hợp lệ nên có thể đọc lén, hoặc thậm chí sửa đổi thơng điệp trong đó. Sau đó sẽ sử dụng khóa cơng khai thật của Bob để mã hóa và gửi lại cho Bob.
Tương tự, khi Alice muốn ký vào 1 thơng điệp, Alice sẽ sử dụng khóa bí
mật của mình để ký và gửi đi. Darth sẽ lấy thơng điệp đó, sẽ sửa đổi theo ý muốn và sử dụng khóa bí mật giả mạo để ký và gửi cho Bob. Lúc này dó Bob sử dụng giữ khóa cơng khai giả mạo của Alice – Thực chất là khóa cơng khai của Darth – để kiểm tra tính hợp lệ của thơng điệp, điều tất nhiên là Bob thấy thơng điệp đó là hợp lệ và tin đó là thơng điệp được gửi từ Alice.
Để tránh được tấn công người ở giữa, các bên tham gia truyền thông cần một bên thứ ba tin cậy để xác nhận khóa cơng khai của nhau. Bên thứ ba tin cậy là một tổ chức phát hành chứng thư, hay còn gọi là CA (Certificate Authority).
3.3.2. Hạ tầng khóa cơng khai
Hạ tầng khóa cơng khai được phát triển dựa trên các hệ mật mã công khai để cung cấp các dịch vụ định danh cho các thực thể trong các phiên xác thực.
Hạ tầng khóa cơng khai gồm 1 tập các chuẩn, quy định vai trò của các bên tham gia xác thực, các chuẩn mã hóa, chuẩn lưu trữ khóa, chuẩn phân phối khóa. Trong hạ tầng khóa cơng khai có định nghĩa tổ chức chứng thực (Certificate Authority - CA), có vai trị như bên thứ ba tin cậy giúp các thực thể tham gia xác thực có thể xác thực được nhau để khắc phục nhược điểm bị tấn công người ở giữa của hệ mật mã cơng khai.
Hình 3.6 mơ tả các thành phần và hoạt động của hạ tầng khóa cơng khai [33]. Hạ tầng khóa cơng khai gồm các thành phần sau: