Chương 2 : Các phương pháp mã hoá và bảo mật thông tin
2.5 Một số loại mã hoá bất đối xứng
Có rất nhiều thuật toán mã hoá bất đối xứng được sử dụng trong lĩnh vực máy tính. Các thuật toán này có thể có những chi tiết thực hiện bên trong khác nhau nhưng tất cả đều có chung một đặc điểm đó là: khoá mã dùng để mã hoá khác với khoá mã dùng để giải mã.
2.5.1 RSA [6]
RSA viết tắt từ tên của ba người phát triển thuật toán này - Ron Rivest, Adi Shamir, and Leonard Adleman, là thuật toán khoá mã công khai phổ biến nhất, dễ hiểu nhất và dễ triển khai nhất trong các thuật toán mã hoá bất đối xứng. Thuật toán RSA là một chuẩn phát triển từ năm 1978 bởi học viện MIT, được sử dụng trên toàn thế giới và có thể dùng cho mục đích mã hoá dữ liệu cũng như làm chữ ký điện tử. Sức mạch của thuật toán là việc khó phân tích một số lớn ra thành thừa số của các số nguyên tố. Khoá mã công khai và khoá mã cá nhân trong thuật toán RSA là hàm của của những số nguyên tố lớn.
Một trong những ưu điểm của việc sử dụng thuật toán RSA là thuật toán này có thể sử dụng để mã hoá và làm chữ ký điện tử. Bằng cách sử dụng hàm một chiều, RSA cho phép mã hoá và kiểm tra chữ ký điện tử còn chiều ngược lại cho phép giải mã và tạo ra chữ ký điện tử.
Thuật toán RSA được sử dụng rất phổ biến trong các trình duyệt web, trong giao thức SSL, PGP, thậm chí các hệ thống thông tin của nhiều chính phủ cũng sử dụng thuật toán này trong hệ thống mã hoá khoá công khai.
2.5.2 El Gamal
El Gamal là một thuật toán khoá mã công khai có thể dùng để làm chữ ký điện tử và trao đổi khoá mã. Thuật toán này không dựa vào việc phân tích thừa số của các số lớn mà dựa vào tính toán logarit rời rạc trong một trường xác định.
2.5.3 Elliptic Curve Cryptosystems (ECCs) [3]
Các đường cong elip là các cấu trúc toán học phong phú có tính hữu ích trong rất nhiều dạng ứng dụng. Hệ thống mã hoá sử dụng đường cong elip cung cấp các tính năng tương tự hệ thống RSA: mã hoá, phân phối khoá mã an toàn và chữ ký điện tử. Điểm khác biệt duy nhất là tính hiệu quả của ECC.
Có nhiều thiết bị có khả năng xử lý hạn chế, dung lượng bộ nhớ thấp, băng thông nhỏ, yêu cầu tiêu thụ điện năng thấp như các thiết bị điện thoại di động. Đối với các thiết bị này, việc sử dụng hiệu quả tài nguyên là một yêu cầu tối quan trọng. Thuật toán mã hoá đường cong elip cho phép thực hiện các phép tính toán với tài nguyên ít hơn nhiều so với thuật toán RSA và các thuật toán khác, do đó nó thường được sử dụng trong các thiết bị kiểu này.
Thông thường khoá mã càng dài thì khả năng an toàn càng cao hơn, nhưng chỉ với các khoá mã nhỏ hơn, hệ thống mã hoá ECC có thể cho phép mã hoá có độ an toàn tương đương với hệ thống RSA. Do sử dụng các khoá mã có ngắn hơn nên tài nguyên dành cho tính toán trong thuật toán ECC nhỏ hơn. ECC sử dụng thuộc tính của đường cong elip trong hệ thống khoá mã. Đường cong elip cho phép xây dựng nhóm các phần tử và các quy tắc riêng để các phần tử trong nhóm ấy kết hợp với nhau. Thuộc tính giữa các nhóm được sử dụng để xây dựng thuật toán mã hoá.
2.6 Các phƣơng pháp mã hoá lai (hybrid)
Từ những so sánh ở phần trên, ta thấy hệ thống mã hoá đối xứng có rất nhiều nhược điểm và dường như hệ thống mã hoá bất đối xứng sẽ giải quyết được các vấn đề ấy. Điều đó không hoàn toàn đơn giản như vậy.
phương pháp mã hoá đối xứng. Phương pháp mã hoá đối xứng cho phép bảo vệ tính riêng tư của dữ liệu bằng cách mã hoá; phương pháp mã hoá bất đối xứng cho phép chống từ chối nguồn gốc thông tin khi người sử dụng mã hoá bằng khoá mã cá nhân; phương pháp mã hoá bất đối xứng cho bảo vệ tính toàn vẹn của dữ liệu bởi vì nếu dữ liệu bị sửa đổi, dữ liệu sẽ không thể giải mã được; mã hoá bất đối xứng cho phép điều khiển truy nhập bởi vì chỉ những người có khoá mã cá nhân và khoá mã công khai tương ứng mới có thể giải mã được thông tin. Tuy nhiên hệ thống mã hoá bất đối xứng chạy chậm tới mức không thể chấp nhận được. Các thuật toán này quá phức tạp và đòi hỏi rất nhiều tài nguyên hệ thống để tính toán và cũng cần rất nhiều thời gian để mã hoá và giải mã thông tin.
Do đó các hệ thống lai (hybrid) kết hợp phương pháp mã hoá đối xứng và bất đối xứng ra đời và được gọi là các hệ thống mã hoá khoá công khai (public key cryptography) [6].
2.6.1 Hệ thống khoá mã công khai
Các hệ thống mã hoá công khai sử dụng hai khoá mã - khoá mã công khai và khoá mã cá nhân tạo bởi một thuật toán mã hoá bất đối xứng. Các khoá mã này được dùng để bảo vệ quá trình phân phối khoá mã và bảo vệ khoá mã cá nhân - tạo bởi một thuật toán mã hoá đối xứng và được dùng để mã hoá dữ liệu. Đây là phương pháp kết hợp sử dụng hai phương pháp mã hoá: đối xứng và bất đối xứng. Mỗi một thuật toán có một điểm mạnh và điểm yếu riêng, việc kết hợp các thuật toán này và bổ trợ các thiếu sót cho nhau tạo nên một hệ thống hoàn hảo.
Cơ chế hoạt động của hệ thống mã hoá công khai
Trong hệ thống mã hoá hybrid, có hai phương pháp bổ trợ cho nhau. Một thuật toán mã hoá đối xứng tạo các khoá mã bí mật dùng để mã hoá các dữ liệu lớn với tốc độ nhanh, còn một thuật toán mã hoá bất đối xứng tạo các khoá mã công khai để dùng cho quá trình phân phối khoá mã tự động [6].
Khi đối tượng A sử dụng khoá mã đối xứng để mã hoá dữ liệu và truyền cho đối tượng B, A muốn đối tượng B phải giải mã được thông tin do đó A cần phải gửi khoá mã đối xứng cho B. Tuy nhiên A không muốn gửi khoá mã đối xứng cho B
dưới dạng plaintext bởi vì như thế không an toàn: những kẻ nghe lén trên đường truyền có thể lấy cắp được và sử dụng khoá mã đó vào mục địch bất hợp pháp nếu như nó không được bảo vệ an toàn. Do đó A cần mã hoá khoá mã đối xứng đó và gửi đến cho B. Việc này được thực hiện bằng cách sử dụng một thuật toán mã hoá bất đối xứng [2].
Hình 2.13: Trong hệ thống hybrid, khoá mã bất đối xứng được dùng để mã hoá khoá mã bí mật, khoá mã bí mật dùng để mã hoá thông tin
Sở dĩ hệ thống hybrid sử dụng thuật toán mã hoá đối xứng để mã hoá dữ liệu còn thuật toán mã hoá bất đối xứng để mã hoá khoá mã bởi vì như đã đề cập ở trên, các thuật toán mã hoá bất đối xứng tốn rất nhiều thời gian khi mã hoá các khối dữ liệu lớn. Chính vì lý do đó hệ thống hybrid sử dụng thuật toán nhanh hơn (thuật toán mã hoá đối xứng) để mã hoá khối dữ liệu lớn còn thuật toán có tốc độ chậm hơn (thuật toán mã hoá bất đối xứng) để mã hoá khoá mã.
Lấy một ví dụ: Bill gửi một thông điệp đến cho Paul và muốn chỉ có Paul mới được quyền đọc thông điệp đó. Việc đầu tiên Bill cần làm là sử dụng một khoá mã đối xứng để mã hoá thông điệp cần gửi cho Paul. Bây giờ trong tay Bill đã có ciphertext của thông điệp và khoá mã đối xứng. Việc tiếp theo Bill cần làm là sử dụng thuật toán mã hoá bất đối xứng và khoá mã công khai của Paul để mã hoá khoá mã đối xứng. Lý do là nếu Bill mã hoá khoá mã đối xứng bằng khoá mã cá nhân của Bill thì tất cả mọi người trên mạng đều có thể đọc được khoá mã đó bằng khoá mã công khai của Bill. Bây giờ Bill đã có trong tay ciphertext của thông điệp
nhận được và sử dụng khoá mã cá nhân của mình giải mã để thu được khoá mã đối xứng. Sau đó Paul sử dụng khoá mã đối xứng vừa thu được để giải mã thông tin. Nếu Paul bảo vệ tốt khoá mã cá nhân của mình thì có thể chắc chắn được rằng Paul là người duy nhất có thể đọc được thông điệp của Bill.
Hình 2.14: Bill sử dụng hệ thống khoá mã công khai để gửi thông tin cho Paul
Việc quản lý khoá mã bất đối xứng có thể thực hiện dễ dàng bằng các phần mềm. Do đó, Bill và Paul không phải mất thời gian để tìm kiếm khoá mã tương ứng. Bảng sau sẽ so sánh một số điểm khác nhau giữa thuật toán mã hoá đối xứng và bất đối xứng.
Thuộc tính Mã hoá đối xứng Mã hoá bất đối xứng
Khoá mã Một khoá mã được chia sẻ giữa hai hay nhiều đối tượng
Một đối tượng có một khoá mã công khai và một khoá mã cá nhân
Trao đổi khoá Không dùng chung với đường truyền dữ liệu
Dùng chung với đường truyền dữ liệu
Tốc độ Thuật toán đơn giản hơn và nhanh hơn
Thuật toán phức tạp hơn và chậm hơn
Sử dụng Mã hoá dữ liệu lớn trên đường truyền
Mã hoá khoá mã và phân phát khoá mã
Tính năng Bảo vệ tính riêng tư, sự toàn vẹn của thông tin
Bảo vệ tính riêng tư, sự toàn vẹn của thông tin, xác thực và chống phủ nhận
2.6.2 Khoá mã phiên (session key)
Khoá mã phiên là một khoá mã bí mật được dùng để mã hoá thông tin trao đổi giữa hai người. Khoá mã phiên cũng giống như các khoá mã đối xứng khác nhưng chỉ tồn tại trong phiên giao dịch giữa hai người [6].
Nếu Tanya có một khoá mã dùng để mã hoá thông tin khi trao đổi với Lance, khoá mã này có thể không cần thay đổi và có thể dùng lại nhiều lần. Tuy nhiên việc sử dụng một khoá mã và dùng đi dùng lại nhiều lần sẽ làm tăng khả năng khoá mã sẽ bị đánh cắp và thông tin truyền đi sẽ mất tính bảo mật. Do đó, để đảm bảo an toàn, mỗi khi khởi tạo một phiên giao dịch cần phải tạo ra một khoá mã mới, và khoá mã ấy sẽ bị huỷ đi sau khi kết thúc phiên giao dịch ấy. Quá trình tạo khoá mã được minh hoạ trong hình 2.14 [6].
Nếu một giờ sau khi đã hoàn thành việc trao đổi thông tin với Lance, Tanya lại muốn giao dịch với Lance, một khoá mã mới sẽ lại được tạo ra để mã hoá thông tin giao dịch.
Hình 2.15: Khoá mã mới được tạo ra để mã hoá thông tin mỗi khi khởi tạo một kênh truyền
ấy chỉ tồn tại trong một phiên giao dịch. Nếu kẻ tấn công nghe trộm được khoá mã session, hắn chỉ có một khoảng thời gian rất nhỏ để phá mã.
Nếu hai máy tính muốn trao đổi thông tin với nhau một cách an toàn, trước tiên hai máy tính đó phải tiến hành thủ tục bắt tay (handshaking). Hai máy tính phải thoả thuận thuật toán dùng để trao đổi khoá và thuật toán dùng để mã hoá thông tin. Sau đó, hai máy tính tạo một kênh liên lạc ảo với nhau (gọi là một session) và toàn bộ dữ liệu trao đổi sẽ được truyền qua kênh thông tin ấy. Sau khi giao dịch kết thúc, khóa mã session bị huỷ đi, tài nguyên được giải phóng.
Toàn bộ quá trình này được thực hiện thông qua hệ điều hành, chương trình ứng dụng và hoàn toàn trong suốt đối với người sử dụng. Người sử dụng không cần phải bận tâm về vấn đề thuật toán mã hoá, thuật toán trao đổi khoá và huỷ bỏ khoá.
CHƢƠNG 3: ỨNG DỤNG CÁC HỆ THỐNG MÃ HOÁ TRONG MÔI TRƢỜNG THƢƠNG MẠI ĐIỆN TỬ
Trong các phần trên chúng ta đã nắm được các phương pháp mã hoá, cơ chế hoạt động của các thuật toán mã hoá. Nhưng điều quan trọng là làm thế nào để ứng dụng các phương pháp ấy vào trong thực tiễn để bảo mật các thông tin trên mạng máy tính và các giao dịch trong môi trường thương mại điện tử
3.1 Hạ tầng cơ sở hệ thống khoá mã công khai - PKI PKI
Hạ tầng hệ thống khoá mã công khai PKI bao gồm các chương trình, định dạng dữ liệu, thủ tục trao đổi thông tin, giao thức liên lạc, chính sách bảo mật và cơ chế mã hoá công khai để cho mọi người trên toàn hệ thống có thể trao đổi thông tin một cách an toàn. PKI là một cơ cấu xác thực theo tiêu chuẩn ISO sử dụng thuật toán mã hoá công khai và giao thức chuẩn X.509 [6]. Cơ cấu này cho phép xác thực giữa các hệ thống mạng và mạng Internet. Các giao thức và các thuật toán không được chỉ định một cách cụ thể là lý do tại sao hệ thống này chỉ được gọi là một cơ cấu mà không phải là một công nghệ cụ thể.
PKI đảm bảo các thông tin trao đổi được xác thực, an toàn, toàn vẹn và không bị phủ nhận. PKI là một hệ thống mã hoá kết hợp các phương pháp mã hoá đối xứng và bất đối xứng.
Có một sự khác nhau giữa phương pháp mã hoá khoá công khai và PKI. Phương pháp mã hoá khoá công khai đòi hỏi phải xác định cụ thể thuật toán, khoá mã, các kỹ thuật cần thiết để mã hoá và giải mã còn PKI - giống như tên gọi của nó chỉ đơn thuần là hạ tầng cơ sở. Hạ tầng cơ sở này mặc nhiên cho rằng các thực thể đầu nhận có thể xác thực được thông qua các chứng chỉ số và cho rằng giao thức trao đổi khoá Diffie-Hellman (hoặc một giao thức trao đổi khoá khác) sẽ tự động dàn xếp
tạo và phân phát chứng chỉ số, duy trì và huỷ bỏ các chứng chỉ số, phân phát và duy trì khoá mã và đảm bảo các công nghệ liên lạc và làm việc với nhau nhằm mục đích mã hoá bảo mật thông tin liên lạc.
Phương pháp mã hoá khoá công khai chỉ là một phần trong PKI và cần có rất nhiều phần khác để xây dựng nên hệ thống cơ sở hạ tầng này. Một ví dụ tương tự là giao thức gửi thư điện tử SMTP. SMTP là một công nghệ dùng để gửi thư điện tử từ nơi này đến nơi khác, nhưng cần phải có rất nhiều thành phần khác trước khi giao thức này có thể làm việc. Các thành phần đó bao gồm các máy chủ thư điện tử, các máy trạm, cùng với các thông điệp dạng thư điện tử. Tất cả những điều đó xây dựng nên một hạ tầng cơ sở - hạ tầng cơ sở thư điện tử.
PKI được tạo nên bởi rất nhiều thành phần khác nhau: các đơn vị cấp phát chứng chỉ, các đơn vị đăng ký chứng chỉ, chứng chỉ, khoá mã và người sử dụng [5].
Một người tham muốn tham gia vào một hệ thống PKI cần phải có một chứng chỉ số (digital certificate). Chứng chỉ số là một dạng tài liệu có chứa khoá mã công khai của người ấy cùng với các thông tin nhận dạng khác. Chứng chỉ số được ký (digital signature) bởi một đối tác tin cậy thứ ba hay còn gọi là một tổ chức cấp phát chứng chỉ (certificate authority - CA). CA có nhiệm vụ kiểm tra các thông tin của người giữ khoá mã. Khi CA ký vào chứng chỉ, chứng chỉ đó sẽ được gắn liền với một khoá mã công khai và CA có trách nhiệm phải xác thực khoá mã công khai đó. Điều đó có nghĩa là CA đã cho phép những người chưa bao giờ gặp nhau có thể xác thực, tin cậy lẫn nhau và trao đổi thông tin với nhau bằng phương pháp an toàn [5]. Ví dụ nếu A chưa bao giờ gặp B nhưng muốn trao đổi thông tin một cách an toàn với B thì cả A và B đều phải cùng được tin cậy bởi một CA. Sau đó A có thể lấy