Hiện nay, hệ mật RSA là gi ải thuật khoá công khai đượ c sử dụng nhi ều nhất, nhưng hệ mật dựa trên đườ ng ng cong Elliptic (ECC) có th ể thay thế cho RSA b ở i mức an toàn và t ốc độ xử lý cao hơn. Ưu điể m của ECC là hệ mật mã này sử dụng khoá có độ dài nhỏ hơn so vớ i RSA. Từ đó làm tăng tốc độ xử lý một cách đáng kể , do s ố phép toán dùng để mã hoá và giải mã ít hơn và yêu cầ u các thiết bị có khả năng tính toán thấp hơn, nên giúp tăng tốc độ và làm giảm năng lượ ng ng cần sử dụng trong quá trình mã hoá và gi ải mã. 1. Giớ i thiệu Hiện nay, hệ mật RSA là gi ải thuật khoá công khai đượ c sử dụng nhi ều nhất, nhưng hệ mật dựa trên đườ ng ng cong Elliptic (ECC) có th ể thay thế cho RSA b ở i mức an toàn và t ốc độ xử lý cao hơn. Ưu điể m của ECC là hệ mật mã này sử dụng khoá có độ dài nhỏ hơn so vớ i RSA. Từ đó làm tăng tốc độ xử lý một cách đáng kể , do s ố phép toán dùng để mã hoá và giải mã ít hơn và yêu cầ u các thiết bị có khả năng tính toán thấp hơn, nên giúp tăng tốc độ và làm giảm năng lượ ng ng cần sử dụng trong quá trình mã hoá và gi ải mã. V ớ i cùng một độ dài khoá thì ECC có nhi ều ưu điểm hơn so vớ i các giải thuật khác, nên trong m ột vài năm tớ i có thể ECC sẽ là giải thuật trao đổi khoá công khai đượ c sử dụng phổ biến nhất. 2. Hệ mật mã dựa trên đườ ng ng cong elliptic ECC thực hiện việc mã hoá và gi ải mã dựa trên toạ độ của các điểm dựa trên đườ ng ng cong Elliptic. Xét đẳng thức Q=kP, với Q,P là các điể m nằm trên đườ ng ng cong Elliptic. Có th ể khá dễ dàng tính Q n ếu biết k và P, nhưng rất khó xác đị nh k n ếu biết Q và P. (Phép nhân được xác định bằng cách cộng liên tiếp cùng điểm P. Ví d ụ: 4P = P+P+P+P ; 9P = 2(2(2P)) + P). Hệ mật dựa trên đườ ng ng cong Elliptic dựa trên độ khó khi bi ết được điểm P và Q và phải tìm ra giá tr ị k. Bên cạnh công th ức của đườ ng ng cong Elliptic, thì m ột thông s ố quan tr ọng khác c ủa đường cong Elliptic là điể m G (còn g ọi là điểm cơ sở), điểm G đố i vớ i mỗi ng cong elliptic là c ố định, trong h ệ mật mã ECC thì một số nguyên lớn k đóng vai trò đườ ng như một khoá riêng, trong khi đó kế t quả của phép nhân gi ữa k với điểm G được coi như l à khoá công khai tương ứ ng. Việc trao đổi khoá theo Diffie Hellman d ựa trên đườ ng ng cong Elliptic (ECDH – Elliptic Elliptic Curve Diffie Hellman) và thu ật toán chữ ký số dựa trên đườ ng ng cong Elliptic (ECDSA Elliptic Curve Digital Signature Algorithm) là nh ững ứng dụng cụ thể của đườ ng ng cong Elliptic trong lĩnh vự c mật mã. Trong trao đổi khoá ECDH, hai bên A và B s ử dụng các tham số đườ ng ng cong Elliptic gi ống nhau. M ỗi bên tạo ra khoá riêng kA và kB và t ạo ra các khoá công khai QA=kAG và QB=kBG. hai bên trao t rao đổ i khoá công khai và nhân khoá riêng của nó vớ i khoá công khai c ủa bên kia, điề u này dẫn đến thông tin m ật đượ c chia sẻ kAQB
= kBQA = kAkBG. Còn ECDSA hoàn toàn tương tư ơng tự như DSA. 3. Giao thứ c SSL (Secure Sockets Layer) Giao thức SSL (Secure Sockets Layer) là giao th ức an toàn đượ c sử dụng r ộng rãi nhất trên Internet hiện nay. SSL là giao th ức dùng để thiết lậ p bảo mật giữa server và client. SSL mã hoá tất cả dữ liệu truyền qua l ại giữa chủ và khách ở m mức IP sockets. SSL thực hiện mã hoá, xác đị nh quyền và b ảo vệ thông tin toàn v ẹn khi trao đổ i dữ liệu trong một môi trườ ng ng mạng vốn có nhi ều ngườ i dùng và không an toàn. Hai thành phần chính c ủa ECC là giao th ức bắt tay SSLHP (SSL Handshake protocol) và giao thức lớ p ghi SSLRP (SSL Record Layer protocol). SSLHP cho phép server và client
thực hiện thoả thuận về bộ mã sử dụng, xác nh ận lẫn nhau và thi ết lậ p một khoá chính chia sẻ (thườ ng sử dụng các thuật toán mã hoá công khai). SSLRP đượ c xuất phát từ khoá chính chia sẻ và sử dụng chúng cùng v ớ i các thuật toán công khai để mã hoá các dữ liệu. 3.1.Quá trình bắt tay đầy đủ dự a vào thuật toán RSA Thuật toán RSA là m ột thuật toán mã hoá công khai đượ c sử dụng khá r ộng rãi.(Thuật toán mã hoá công khai là thu ật toán mã hoá s ử dụng cặ p khoá riêng (private key) và khoá công khai (public key) nh ằm hai mục đích: khoá riêng dùng để chứng thực còn khoá công khai được dùng để mã hoá dữ liệu). Quá trình bắt tay dựa vào RSA c ủa nó đượ c mô tả qua Hình 1.
Đầu tiên, client gửi một bản tin ngẫu nhiên t ới server để thoả thuận bộ mật mã hoá thông qua việc trao đổi các bản tin ClientHello và ServerHello.Sau đó, server sẽ gửi lại khoá công khai RSA cho client trong b ản tin ServerCertificate. Do client cũng có khoá công khai của server; nó s ẽ kiểm tra khoá công khai này. N ếu phù h ợ p, client sẽ dùng chính khoá công khai này để mã hoá một số ngẫu nhiên 48 byte (còn đượ c gọi là premaster). Số sau khi đượ c mã hoá sẽ đượ c gửi kèm bản tin ClientKeyExchange t ớ i server. Server sẽ dùng khoá m ật RSA để giải mã bản tin premaster này. Cả hai phía s ẽ sử dụng bản tin premaster để tạo ra bản tin master đồng thờ i vớ i việc trao đổi bản tin lúc đầu trước đó sẽ được dùng để trao đổi khoá mã hoá; vector kh ởi đầu và khoá MAC (Message Authentication Code) nh ằm phục vụ cho mã hoá và ch ứng thực bở i SSLRP. 3.2. Quá trình bắt tay đầy đủ dự a vào mã hoá ECC Quá trình bắt tay dựa vào ECC đượ c thể hiện thông qua Hình 2. Thông qua hai b ản tin đầu (đượ c xử lí giống như RSA); client và server thoả thuận bộ khoá mật ECC. Bản tin ServerCertificate chứa khoá ECDH công khai c ủa server đượ c xác nhận bở i một nhà cấ p quyền ECDSA. Sau khi đã chứ ng thực chữ kí ECDSA, client s ẽ chuyển khoá chung ECDH c ủa nó t ớ i server thông qua bản tin ClientKeyExchange. Ti ế p theo, mỗi bên lại sử dụng khoá riêng ECDH c ủa chính nó và khoá chung c ủa bên kia để thực hiện mã hoá và gi ải mã ECDH và đạt đế n việc chia sẻ một khoá m ật premaster secret. Việc k ế thừa khoá mật chính và khoá đố i xứng không thay đổ i so vớ i RSA. 3.3. Mã hóa công khai trong SSL trong hai ch ế độ Hoạt động mã hoá công khai trong SSL đượ c thực hiện bở i một client và server trong các chế độ khác nhau c ủa quá trình b ắt tay SSL như sau: Bắt tay dựa vào RSA: client th ực hiện hai hoạt động mã hoá công khai: m ột để kiểm chứng việc chứng thực của server và một để mã hoá các khoá m ật premaster vớ i khoá công khai của server. Server thực hiện một hoạt động vớ i khoá m ật RSA để giải mã bản tin ClientKeyExchange và khôi ph ục lại premaster. Bắt tay dựa vào ECDH-ECDSA: client th ực hiện chứng thực ECDSA để kiểm chứng lại chứng thực của server và sau đó thự c hiện ECDH b ằng việc sử dụng khoá riêng ECDH và khoá chung ECDH c ủa server để tính ra premaster chia sẻ. Tất cả các server cần thực hiện cùng một hoạt động ECDH để thu đượ c mã mật tương ứng. 3.4 So sánh
Để thực hiện việc so sánh vi ệc sử dụng RSA và ECC trong quá trình b ắt tay của SSL, ngườ i ta sử dụng hai bộ mã khác nhau TLS_RSA_WITH_RC4_128_SHA và TLS_ECDH_ECDSA_WITH_RC4_128_SHA. V ớ i mỗi bộ mã ngườ i ta sử dụng ba cấp độ an ninh khác nhau. Đố i với RSA ngườ i ta sử dụng khoá có độ dài 1024 bit, 1536 bit và 1048 bit, Vớ i ECC s ử dụng khoá có độ dài 160 bit, 192 bit và 224 bit. Ngườ i ta sử dụng một công cụ để thực hiện nhiều phiên giao d ịch đồng thờ i một lúc nhằm đo hai thông số trên một server. Và k ết quả đượ c thể hiện ở bảng 1. Bảng 1: So sánh s ử dụng RSA và ECC trong quá trình b ắt tay của SSL ECC-160 RSA-1024 ECC-192 RSA-1536 ECC-224 RSA-2048 Thờ i gian(ms) 3.69 8.75 3.87 27.47 5.12 56.18 Số lệnh thực hiện / s 271.3 114.3 258.1 36.4 195.5 17.8 So sánh thờ i gian thực hiện 2.4:1 7.1:1
11:1
So sánh độ dài khoá 1:6.4 1:8 1:9.1 4. K ết luận Việc sử dụng ECC mang l ại những hiệu quả sau: tăng tốc độ , yêu cầu khả năng tính toán thấp hơn, tiết kiệm dải thông đườ ng truyền, tăng hiệu quả lưu trữ, giảm độ dài các chứng nhận...Các ưu điểm trên của hệ mật ECC có th ể phát huy hi ệu quả trong các ứng dụng mà đườ ng truyền, khả năng tính toán, tốc độ và lưu trữ bị hạn chế. Và các ứng dụng đó đượ c thể hiện r ất hiệu quả trong thương mại điện tử, web servers…