it-swarm-vi.com

Mã hóa đối xứng và đối xứng

Tôi hiện đang học một nguyên tắc của lớp bảo mật thông tin. Trong khi nói về các phương thức mã hóa khác nhau, một số lượng lớn bạn cùng lớp của tôi dường như tin rằng Mã hóa không đối xứng là tốt hơn (an toàn hơn) so với Mã hóa đối xứng. Một tuyên bố điển hình là như thế này:

Nói chung các lược đồ mã hóa bất đối xứng là an toàn hơn vì chúng yêu cầu cả khóa chung và khóa riêng.

Chắc chắn với mã hóa đối xứng, bạn phải lo lắng về việc trao đổi khóa an toàn nhưng theo như tôi có thể nói không có lý do cố hữu tại sao người ta phải an toàn hơn người khác.

Đặc biệt là phần không đối xứng thường chỉ được sử dụng để trao đổi khóa và sau đó dữ liệu thực tế được mã hóa bằng thuật toán đối xứng.

Vì vậy, tôi đang thiếu một cái gì đó hoặc có thể một tuyên bố chung như thế này thực sự được thực hiện về cái nào an toàn hơn.


Vì vậy, nếu tôi có một tin nhắn được mã hóa bằng AES và một bản sao khác được mã hóa bằng RSA và tất cả những thứ khác đều bằng nhau sẽ có nhiều khả năng bị bẻ khóa. Sự so sánh này thậm chí có thể được thực hiện?

56
matthew

Có một ý nghĩa trong đó bạn có thể xác định độ mạnh của một thuật toán mã hóa cụ thể¹: nói một cách đại khái, độ mạnh là số lần thử cần thực hiện để phá vỡ mã hóa. Chính xác hơn, sức mạnh là số lượng tính toán cần phải được thực hiện để tìm ra bí mật. Lý tưởng nhất, điểm mạnh của thuật toán là số lần thử sức mạnh cần phải được thực hiện (được cân nhắc bởi độ phức tạp của mỗi lần thử hoặc giảm nếu một số loại song song cho phép nhiều lần thử chia sẻ một số công việc); khi các cuộc tấn công vào thuật toán được cải thiện, sức mạnh thực tế đi xuống.

Điều quan trọng là phải nhận ra rằng thuật toán mã hóa đặc biệt của Wap, bao gồm việc xem xét một kích thước khóa cụ thể. Nghĩa là, bạn không đặt RSA so với AES, mà là RSA 1024 bit (với chế độ đệm cụ thể) với AES-256 (với chế độ xích cụ thể, IV, v.v.). Theo nghĩa đó, bạn có thể hỏi: nếu tôi có một bản sao dữ liệu của mình được mã hóa bằng thuật toán A với các giá trị đã cho của tham số P và Q (đặc biệt là kích thước khóa) và bản sao được mã hóa bằng thuật toán B với tham số P và R, thì cái nào trong số (A, Pval₁, Qval₁) và (B, Pval₂, Rval₂) có khả năng bị bẻ khóa trước?

Trong thực tế, nhiều giao thức liên quan đến việc sử dụng nhiều nguyên thủy mã hóa. Các nguyên thủy khác nhau có những cách sử dụng khác nhau và ngay cả khi một số nguyên thủy có thể phục vụ một chức năng nhất định, vẫn có thể có một loại phù hợp hơn các loại khác. Khi chọn một nguyên thủy mã hóa cho một mục đích nhất định, quá trình quyết định sẽ diễn ra như sau:

  1. Những thuật toán có thể làm công việc? → Tôi có thể sử dụng A hoặc B hoặc C.
  2. Tôi cần sức mạnh gì? → Tôi muốn 2N hoạt động, vì vậy tôi cần kích thước khóa LMột cho A, L nguyên thủyB cho B, L nguyên thủyC cho C. nguyên thủy.
  3. Đưa ra các ràng buộc của tôi (tốc độ vũ phu, độ trễ, hiệu quả bộ nhớ, tầm), trong số này (LMột-bit A hoặc LB-bit B hoặc LC-bit C) là tốt nhất?

Ví dụ: giả sử yêu cầu của bạn là một giao thức trao đổi dữ liệu với một bên mà bạn không tin tưởng. Sau đó, mật mã đối xứng không thể tự thực hiện công việc: bạn cần một số cách để chia sẻ khóa. Mật mã bất đối xứng như RSA có thể thực hiện công việc, nếu bạn để các bên trao đổi khóa công khai trước. (Đây không phải là khả năng duy nhất nhưng tôi sẽ không đi sâu vào chi tiết ở đây.) Vì vậy, bạn có thể quyết định xem chiều dài khóa RSA nào có độ mạnh phù hợp cho ứng dụng của bạn. Tuy nhiên, RSA chậm và cồng kềnh (ví dụ: không có giao thức chuẩn để áp dụng mã hóa RSA cho luồng - chủ yếu là vì không ai làm phiền vì chúng quá chậm). Nhiều giao thức phổ biến liên quan đến mật mã khóa công khai chỉ sử dụng nó để trao đổi một bí mật trong thời gian giới hạn: khóa phiên cho một số thuật toán mã hóa đối xứng. Điều này được gọi là mã hóa lai . Một lần nữa, bạn chọn độ dài của khóa phiên theo cường độ mong muốn. Trong kịch bản này, hai nguyên thủy liên quan có xu hướng có cùng sức mạnh.

¹ Khái niệm tương tự áp dụng cho các cách sử dụng mật mã khác, chẳng hạn như ký hoặc băm.

Mã hóa đối xứng và bất đối xứng là các hoạt động riêng biệt hoạt động trong các bối cảnh riêng biệt, cho các mục đích sử dụng riêng biệt và các mô hình tấn công riêng biệt. Có rất ít ý nghĩa khi tuyên bố rằng "an toàn" hơn so với cái kia (trước tiên nó sẽ yêu cầu một số biện pháp bảo mật được định lượng, không dễ xác định).

Mã hóa bất đối xứng là nhiều hơn đòi hỏi : đó là về việc thực hiện mã hóa có thể xuất bản các cách để mã hóa (công khai khóa) mà không tiết lộ các cách để giải mã (khóa riêng). Một triển khai thực tế cần toán học, trong khi mã hóa đối xứng chủ yếu là làm xáo trộn mọi thứ xung quanh (nhớ bạn, rất khó để làm tốt công việc tranh giành; nhưng vẫn có ít toán học hơn).

Các hệ thống được triển khai phổ biến (ví dụ SSL/TLS ) kết hợp mã hóa bất đối xứng và mã hóa đối xứng (và một vài thứ khác nữa) thành giao thức thực hiện một số công việc dự định (ví dụ: " đường hầm hai chiều với tính bảo mật, tính toàn vẹn và xác thực ").

29
Thomas Pornin

Việc lựa chọn giữa mã hóa đối xứng và bất đối xứng phụ thuộc vào trường hợp sử dụng.

Mã hóa đối xứng được sử dụng để chia sẻ thông tin giữa một nhóm người mà tất cả mọi người sẽ có quyền truy cập vào nó. Hơn nữa, mã hóa đối xứng là Nice vì nó dễ hiểu hơn (ít có khả năng làm rối nó hơn) và các thuật toán có xu hướng nhanh hơn.

Mã hóa bất đối xứng được sử dụng khi một số lượng lớn các tập hợp con người có thể chia sẻ thông tin. Hơn nữa, mật mã bất đối xứng có thể được sử dụng ngược lại để ký các tài liệu. Điều này đặc biệt thú vị vì nó cho phép mọi người xác nhận rằng khóa công khai thuộc về một người nhất định.

Trong một nhóm gồm 10 người, cho phép mọi cặp người giao tiếp an toàn, cần có 45 phím duy nhất (9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1). Và bây giờ hãy nghĩ về internet thay vì một bộ nhỏ gồm 10 người. Rõ ràng là điều này không thể được xử lý với các phím đối xứng.

Trong thế giới thực cả hai loại thường được kết hợp. Một cách tiếp cận không đối xứng được sử dụng để xác nhận danh tính của một đối tác truyền thông và để truyền tải một cái gì đó sẽ dẫn đến một khóa đối xứng. Khóa đối xứng này sau đó được sử dụng để mã hóa dữ liệu thực tế.

21
Hendrik Brummermann

Nói chung các lược đồ mã hóa bất đối xứng là an toàn hơn vì chúng yêu cầu cả khóa chung và khóa riêng.

Không. Bạn không thể nói như vậy. Đó là baloney. Điều đó không đúng.

Sức mạnh không phụ thuộc vào đối xứng và không đối xứng. Mật mã đối xứng và mật mã bất đối xứng là hai loại công cụ mã hóa khác nhau. Mỗi người có thể yếu hoặc mạnh, tùy. Không có lý do gì tại sao mật mã bất đối xứng nhất thiết phải mạnh hơn mật mã đối xứng.

Ví dụ:

  • AES an toàn hơn trước các cuộc tấn công bằng mật mã so với RSA 512 bit, mặc dù RSA không đối xứng và AES là đối xứng.

  • RSA 4096 bit an toàn hơn trước các cuộc tấn công bằng mật mã so với RC4 40 bit, mặc dù RC4 là đối xứng và RSA không đối xứng.

14
D.W.

Tôi đồng ý với những gì Thomas đã nêu ở trên. Cả mã hóa đối xứng và bất đối xứng là các hoạt động riêng biệt.

Mã hóa đối xứng ít tốn kém hơn mã hóa bất đối xứng. Đắt như trong nó đòi hỏi ít xử lý. Nói chính xác, tôi đang đề cập đến quá trình giải mã.

Và đây là lý do tại sao SSL/TLS sử dụng kết hợp cả mã hóa đối xứng và bất đối xứng. Việc mã hóa/giải mã bất đối xứng giữa hai đồng nghiệp trong giao dịch SSL/TLS chỉ xảy ra trong quá trình bắt tay ban đầu. Khi cả hai đồng nghiệp đã đồng ý về một khóa riêng được chia sẻ thì phần còn lại của giao tiếp sẽ sử dụng mã hóa đối xứng. Bằng cách đó, thao tác đắt tiền duy nhất sẽ diễn ra trong quá trình bắt tay ban đầu và phần còn lại của giao tiếp sẽ sử dụng mã hóa đối xứng, vốn cần ít tài nguyên hơn.

4
Chun Tat David Chu