Ứng dụng hệ mật mã dựa trên đường cong Elliptic

Wednesday, December 16, 2009 Unknown 0 Comments

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 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 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 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 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 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 cong Elliptic. Xét đẳng thức Q=kP, với Q,P là các điểm nằm trên đườ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 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 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ò 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 cong Elliptic (ECDH – Elliptic Curve Diffie Hellman) và thuật toán chữ ký số dựa trên đường cong Elliptic (ECDSA - Elliptic Curve Digital Signature Algorithm) là những ứng dụng cụ thể của đườ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 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 đổ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ự 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ứ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 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…

    TÀI LIỆU THAM KHẢO
    • [1] STEVEN LINTON, Elliptic Curve Cryptography, 2003
    • [2] SUN microsystems, Speeding up secure web transaction using Elliptic Curve Cryptography, 2003 
    • [3] ROBERT ZUCCHERATO, Elliptic Curve Cryptography, Support in Entrust, 2002
    • [4] DeviceForge.com, An intro to Elliptical Curve Cryptography, 2004

    Đỗ Quang Hưng
    (Tạp chí Công nghệ thông tin & Truyền thông)


    0 comments: