1. Các khái niệm
Nếu như vấn đề khó khăn đặt ra đối với các phương pháp mã hóa quy ước chính là bài toán trao đổi mã khóa thì ngược lại, các phương pháp mã hóa bất đối xứnggiúp cho việc trao đổi mã khóa trở nên dễ dàng hơn. Nội dung của khóa công khai (public key) không cần phải giữ bí mật như đối với khóa bí mật trong các phương pháp mã hóa quy ước. Sử dụng khóa công khai, chúng ta có thể thiết lập một quy trình an toàn để truy đổi khóa bí mật được sử dụng trong hệ thống mã hóa quy ước.
Khái niệm: Mã hoá bất đối xứng là một dạng hệ thống mật hoá trong đó mã hoá và giải mã được thực hiện với các khoá khác nhau, một công khai và một giành
riêng. Nó còn được gọi là mã hoá khoá công khai.
Mã hoá bất đối xứng biến đổi plaintext thành ciphertext bằng một trong hai khoá qua thuật toán mã hoá.
Sử dụng khoá kia của cặp và thuật toán giải mã, plaintext có thể được phục hồi trở lại từ ciphertext.
Mã hoá bất đối xứng có thể được sử dụng bảo đảm tính tin cậy, chứng thực hoặc cả hai.
Hệ thống mật hoá khoá công khai phổ biến nhất là RSA. Ngoài ra còn có: McEliece, ElGamal, Chor-Rivest, các đường cong Elliptic.
2. Mô hình mã hóa bất đối xứng
Ban đầu, sự an toàn của hệ thống mật mã phụ thuộc vào bí mật của thuật toán mã hóa. Cuối cùng, tuy nhiên, các nhà sản xuất mật mã đã bắt đầu phát triển thiết bị mã hóa trong đó các thuật toán mã hóa có thể được tiết lộ, tuy nhiên, sự bảo mật vẫn còn nguyên vẹn nhờ vào khóa bí mật. Khi an ninh của hệ thống mã hóa phụ thuộc hoàn toàn vào khóa bí mật, khóa bắt buộc phải được truyền đi bằng kênh được bảo vệ. Nói chung, hầu hết các thiết bị mã hóa thực hiện một khóa bí mật mà chỉ được biết đến cho người gửi và người nhận.
Nếu một số cá nhân muốn gửi một thông tin an toàn, mã hóa đối xứng thực hiện sắp xếp yêu cầu ban đầu cho các cá nhân để chia sẻ một khóa bí mật duy nhất. Đầu tiên khóa bí mật phải được chấp nhận của người dung; sau đó khóa phải được phân phối cho các cá nhân thông qua một số phương tiện an toàn để chắc chắn khóa đảm bảo bí mật và toàn vẹn thông tin quan trọng. Kiến thức của khóa mã hóa ngụ ý kiến thức của khóa giải mã và ngược lại. Để thiết lập kênh an toàn, nếu nó cần thiết để cung cấp khóa bí mật tới các cá nhân sử dụng một phương tiện bảo vệ như là chuyển phát nhanh. Tất nhiên, sự vận chuyển của khóa trong cách này là rủi ro, phền hà, chậm và tốn kém. Trong bài viết của họ “Các chỉ dẫn mới trong Mã Hóa,” Diffie và Hellman(1976) đề xuất một hệ thống mật mã mới trong đó các khóa mã hóa và giải mã quan trọng như nhau nhưng khác nhau: một là được làm công khai, trong khi khóa khác được giữ kín. Đây là loại hệ thống mã hóa được gọi là không
đối xưng, vì nó cung cấp mã hóa chỉ trong một hướng- một cặp khóa thứ hai cần được giao tiếp theo một hướng khác. Một khi khóa có thuật toán liên quan đến nhau được tính toán, không có cách nào để tìm ra khóa bí mật từ khóa công khai. Mã hóa công khai không đối xứng cho phép hai người dùng giao tiếp an toàn trên một kênh mà không cần bất kỳ khóa nào sắp xếp trước.
Theo định nghĩa, một mật mã khóa công khai có tài sản kiến thức của các thuật toán mã hóa và khóa giải mã không bao hàm kiến thức của khóa giải mã hay ngược lại vì nó không phải cách tính toán khả thi để lấy một khóa từ khóa khác. Trong thuật ngữ toán học, điều này hàm ý rằng giải thuật giải mã phải là một chức năng một chiều. Tuy nhiên, người nhận hợp pháp với khóa giải mã riêng cần không chỉ là một chức năng giải mã thông điệp, còn ngụ ý rằng giải thuật giải mã không chỉ là một chức năng một chiều nhưng cũng là một cửa đóng một chức năng một chiều. Dang tính toán sự không khả thi phụ thuộc vào trạng thái của giải thuật công nghệ máy tính, một cửa bẫy một chiều giải mã chuyển đổi ngày nay có thể bị mất trạng thái một chiều trong nhiều năm.
3. Khóa công khai
Trong một hệ thống mã hóa khóa công khai, sự riêng tư đạt được mà không cần khóa bí mật mã hóa bởi vì nó không được sử dụng để mã hóa. Thay vì chấp nhận trên một khóa cụ thể trước khi truyền qua một kênh an ninh,người gửi và người nhận đưa ra hai khóa khác biệt: Một khóa Pub(công khai) và một khóa Priv(riêng). Bất cứ thứ gì mã hóa với một trong các khóa có thể được giải mã bằng các khóa khác.
Từ khi, thực tế nói, không ai có thể lấy được khóa giải mã, Priv, từ khóa mã hóa, Pub, khóa mã hóa có thể trong khu vực công khai; để ví dụ, nó có thể được công khai trong một tệp tin công khai như sổ danh bạ. ĐIều đó là lí do cho cái tên hệ thống mã hóa khóa công khai. Bất kỳ ai muốn gửi thông tin tới một cụ thể nên mã hóa cơ bản thông điệp với người mà được lên danh sách khóa mã hóa Pub, và sau đó gửi thông điệp an ninh trên các kênh không bảo mật. CHỉ người dự định nhật mà biết mã giải mã chính Priv, cái mà giữ bí mật, mới có thể giải mã thông điệp.
Mật mã khóa công khai cung cấp các giải pháp cho hai vấn đề (Diffie, 1988): 1. Nếu hai người muốn trao đổi thông qua hệ thống mã hóa, khóa phải phân phối bằng các phương tiện an toàn, chẳng hạn như chuyển phát nhanh tin đáng tin cậy. Đây là một vấn đề chủ chốt
2. Vấn đề khác là thông điệp xác thực và chữ ký số/ Trong một thông điệp trao đổi giữa hai người, nó không phải là để chứng minh rằng người nhận thực sự đã nhận được thông điệp, mà nó đến từ một người cụ thể, hoặc người đó không gửi thông điệp cho mình và cho nó xuất hiện như nó được đến từ một người gửi..
Martin Hellman, người mà, trong năm 1976, đã phát triển các thỏa thuân khóa cấp số nhân; trong cùng năm đó, Martin E.Hellman, và Lenonard Adleman(1977) đã phá triển hệ thống khóa công khai dự trên gói sản xuất các số nguyên tố lơn trong tháng năm 1977, và Taher ElGamal đã trình bày khái niệm chữ ký số của mình tại hội nghị Crypto ‘84
Thuật toán cơ sở khóa công khai RSA sức mạnh của nó trên những khó khăn của sản suất các con số lơn và khi giấy RSA được viết, nó được khuyến cáo rằng các só nguyên tố nên là một số 40 chữ số. Tuy nhiên, do những tiến bộ trong tính toán trong nhiều năm trước, các con số được sử dụng trong hệ thống RSA đã được tăng lên 100 chữ số(332 bit) và tới 200 số(664 bit). Một số nhà sản xuất có các chip khóa công khai mà dùng các số với 308 chữ số(1024 bít). Hệ thông RSA chạy rất chậm so với các hệ thống mã hóa như AES hay phương pháp mã hóa dòng, và nó đòi hỏi các khóa rất lớn, 664 bít, so với 128 bit trong AES và trong khoảng 180 bit trong phương pháp mã hóa dòng. Để sử dụng các hệ thống khóa công khai trong hệ thông mật mã đòi hỏi các chip có thể thực hiện các tính toán tốc độ cao; đó là vì sao các hệ thông khóa công khai bị hạn chế cho khóa điều khiển và các ứng dụng chữ ký. Hầu như tất car các hệ thông mã hóa khóa công khai còn tồn tại và các chữ ký/ thông điệp xác thực sử dụng lũy thừa đối với các sản phẩm của các số nguyên tố, và do đó, có khả năng đưa ra các tính toán số học lớn.
Một thuật toán mã hóa lũy thừa là một kỹ thuật mà quá trình mã hóa và giải mã liên quan đến việc nâng cao thô và quyền hạn cụ thể các tin nhắn mã. Diffie- Hellman, Pohlig-Hellman, RSA, ElGamal, và một số khác đều là các thuật toán mã
hóa lũy thừa, từng thực hiện một cách hơi khác nhau. Bằng định nghĩa, một phương pháp mã hóa khóa công khai là môt hệ thống mã hóa một chiều, vì vậy, từ chính quan điểm này, rang tất cả các thuật toán mã hóa lũy thừa là hệ thống mã hóa công khai. Tuy nhiên, từ các điểm rằng khóa mã hóa có thể được thực hiện công khai, không phải tất cả các thuật toán mã hóa lũy thùa là công khai. Để tốt cho việc trao đổi, phân biệt này sẽ được giữ, luật thuật toán mã hóa lũy thừa có thể được tạo công khai.
4. Quản lý khóa:
Mạng mã hóa thông thường sử dụng mật mã mã hóa đối xứng thường có một Key Distribution Center(KDC)(khóa phân phối trung tâm) để phân phối hoặc tải các khóa vào mỗi đơn vị mật mã. Các khóa bí mật này sau đó được gửi bằng cách sử dụng một kênh an toàn như một sự chuyển phát nhanh, nhưng không có cách nào để biết nếu chuyển phát nhanh đã bị xâm nhập các khóa cho một người xâm nhập muốn đọc các thông điệp trong mạng. Sự bảo vệ có thể tang nếu các khóa được tải vào thiết bị trước khi nó được triển khai, tuy nhiên, nó rất khó và bất tiện để mang thiết bị đến KDC để thay đổi các khóa. Vấn đề bị trùng hợp nếu một khóa mới cho mỗi ngày- hay cho mỗi phiên – được mong muốn.
Có ba cách để gửi thông tin về khóa bí mật phải cần cho giải mã thông điệp: 1. Khó bí mật trước khi chia sẻ: Các khóa bí mật được cài đặt sẵn vào cả hai bên của các hệ thống mật mã, và nó chỉ cần thiết để xác định trong những khóa bí mật được sử dụng giải mã thông tin. Nói chung, mọi khóa bí mật được tải được kết hợp với một tên, do đó, chỉ có tên liên quan đến khóa cần phải gửi cho người nhận.
2. Vận chuyển và các khóa gói: Một khóa bí mật có thể được gửi bằng khóa sử dụng giải thuật khóa công khai hoặc bằng cách gói khóa sử dụng thuật toán đối xứng. Các giải thuật khóa vận chuyện là thuật toán mã hóa khóa công khai cụ thể để mã hóa và giải mã các khóa. Bọc các thuật toán khóa đối xứng là các giải thuật toán đặc biệt cho bao bọc, mã hóa và giải mã các khóa đối xứng. Cả hai bên cần được chia sẻ một khóa khóa mã hóa mà được sử dụng để gói(mã hóa) khóa mà sẽ được sử dụng để mã hóa thông tin.
3. Khóa thỏa thuận: Một giải thuật khóa thỏa thuận cho phép một người gửi và một người nhận để chia sẻ một khóa bí mật được tính từ các thuật toán khóa công khai. Thông thường, khóa bí mật được chia sẻ không được sử dụng như là một khóa, nhưng thay vào đó, là một cách để đến của khóa tài nguyê. Diffie-Hellman được sử dụng cho các khóa thỏa thuận.
5. Các dịch vụ an ninh và mã hóa khóa công khai:
Khi sử dụng khóa công khai, một thông điệp có thể được giải mã hoặc với khóa công khai hoặc với khóa riêng.
6. Kết hợp thuật toán mã hóa đối xứng và bất đối xứng:
Trong nhiều trường hợp, mã hóa công khai đối xứng, hoặc công khai hoặc theo cấp số nhân, là tương đối chậm so với để mã hóa đối xứng cổ điển. Tuy nhiên, mã hóa bất đối xứng có thể được sử dụng cho quá trình bảo mật và chứng thực của vận chuyển hay chấp nhận trên một khóa phiên mà sẽ được sử dụng để mã hóa tin nhắn. Vì vậy nó không phải là cần thiết để gửi các khóa phiên trước, nhưng nó có thể được trao đổi một cách an toàn trên mạng công cộng không an toàn như internet.
Trong hầu hết các ứng dụng, các thuật toán mã hóa bất đối xứng(khóa công khai) được sử dụng để trao đổi, thỏa thuận, hoặc vân chuyển một khóa và các giải thuật đối xứng được dùng để mã hóa dữ liệu. Thông thường, các khóa được chia sẻ hay vận chuyển không được sử dụng như một khóa bí mật hay khóa biến; thay vào đó, nó được sử dụng như một nguồn dữ liệu ngẫu nhiên để sinh ra các giá trị ngẫu nhiên cho MACS, các khóa bí mật, và các giá trị khởi tạo(IV) cần thiết để mã hóa dữ liệu sử dụng các giải thuật đối xứng như AES. Các bước cần thiết để tạo ra một khóa được sử dụng để mã hóa tin nhắn phụ thuộc vào giao thức.