Khác biệt giữa bản sửa đổi của “Khóa (mật mã)”

Nội dung được xóa Nội dung được thêm vào
Có gì
Thẻ: Sửa đổi di động Sửa đổi từ trang di động
Dòng 3:
Với một thuật toán được thiết kế tốt, mã hóa cùng một văn bản với các khóa khác nhau sẽ cho ra các [[bảng mã]] hoàn toàn khác nhau. Tương tự, khi giải mã với khóa sai thì kết quả sẽ cho ra một bản rõ hoàn toàn ngẫu nhiên. Trong trường hợp khóa bị thất lạc thì không thể phục hồi lại bản rõ ban đầu với điều kiện là thuật toán đảm bảo chất lượng và độ dài khóa đủ lớn.
 
A đang
==Nhu cầu giữ bí mật==
Khi thiết kế hệ thống an ninh, cần phải giả định rằng kẻ tấn công nắm được các thông tin chi tiết về [[thuật toán]]. Điều này được biết đến với tên là [[nguyên lý Kerckhoff]] - ''chỉ bí mật về khóa đảm bảo an toàn'' hay ''kẻ thù nắm được các thông tin hệ thống''. [[Lịch sử mật mã học]] đã khẳng định nguyên lý này: hầu như không thể giữ bí mật về thiết kế các thuật toán được sử dụng rộng rãi. Trái lại, việc giữ bí mật về khóa dễ hơn rất nhiều vì khóa thường chỉ là một đoạn thông tin ngắn và ta dễ dàng thay đổi chúng khi có dấu hiệu bị lộ. Vì thế, an ninh của một hệ thống mật mã hóa thường dựa trên việc giữ bí mật các khóa.
 
Việc giữ bí mật các khóa là vấn đề khó khăn nhất trong các hệ thống thực tế (Xem thêm: [[quản lý khóa]]). Bất kỳ kẻ tấn công nào có được khóa (bằng bất kỳ cách gì, trong nhiều trường hợp do sơ suất của người giữ khóa) cũng có khả năng giải mã các thông tin mật.
 
Các thuật toán sử dụng chung một khóa cho cả quá trình mã hóa và giải mã được gọi là các [[thuật toán mã hóa khóa đối xứng]]. Từ những năm [[1970]], người ta tìm ra một phương pháp mới dùng hai khóa khác nhau cho 2 quá trình nói trên. Các thuật toán này ([[thuật toán mã hóa khóa bất đối xứng]]) cho phép một khóa có thể công bố rộng rãi và giữ bí mật khóa còn lại. Hai khóa được thiết kế sao cho việc tìm ra khóa bí mật là không thể thực hiện được kể cả khi biết khóa công cộng tương ứng. Một người dùng trong hệ thống này có thể công bố [[mật mã hóa khóa công khai|khóa công cộng]] một cách rộng rãi để người khác có thể gửi thông điệp mã hóa cho mình.
 
=== Độ lớn khóa ===
:''Bài chính:'' [[Độ lớn khóa]]
Đối với hệ thống mật mã hóa sử dụng một lần ([[one-time pad]]) thì khóa có độ dài ít nhất bằng độ dài của bản rõ cần mã hóa. Đối với các hệ thống mã hóa khác thì khóa có thể nhỏ hơn văn bản khá nhiều. Tuy nhiên khóa cũng cần đủ dài để kẻ tấn công không thể thử từng khóa một.
 
Hiện nay (năm [[2006]]), đối với các thuật toán [[thuật toán khóa đối xứng|mật mã hóa khóa đối xứng]], khóa với độ dài 80 bít được xem là đủ an toàn. Trong thực tế, các hệ thống thường dùng mặc định khóa 128 bít.
 
Các khóa sử dụng trong các hệ thống [[mật mã hóa khóa bất đối xứng]] thường có một cấu trúc [[toán học]] nào đó. Chẳng hạn, trong thuật toán [[RSA (mã hóa)|RSA]], khóa công khai là tích của hai số nguyên tố lớn. Vì vậy khóa đòi hỏi có độ dài lớn hơn đáng kể so với khóa trong các hệ thống khóa đối xứng. Để đạt độ an toàn tương đương với hệ thống đối xứng dùng khóa 128 bít, các hệ thống mã hóa công khai dựa trên bài toán phân tích thừa số và lôgarit rời rạc cần khóa có độ dài khoảng 3072 bít. [[Mật mã hóa đường cong ellip]] (ECC) có thể chỉ cần đến khóa có chiều dài nhỏ hơn nhưng các thuật toán này mới được phát triển nên các ước đoán có thể không chính xác. Gần đây hệ thống dạng này với khóa 109 bít đã bị phá vỡ bằng phương pháp [[tấn công duyệt toàn bộ]]<ref>The Internet Encyclopedia, by Hossein Bidgoli, John Wiley, 2004, ISBN 0-471-22201-1, p. 567 [http://books.google.com/books?id=t0J2QcUtMKcC&pg=PA567&dq=109-bit&sig=32mdeHFmXwL7bxxZo0gXF10Ji5Y#PPA566,M1]</ref>. Theo những ước lượng chưa được kiểm chứng thì khóa của hệ thống ECC cần có độ dài gấp đôi hệ thống mật mã hóa khóa đối xứng để đạt được độ an toàn tương đương.
 
Ngoại trừ hệ thống mật mã một lần, an ninh của các hệ thống mật mã đều chưa được chứng minh về toán học (thời điểm năm [[2004]]). Vì vậy, không loại trừ khả năng một phát hiện đột phá nào đó có thể khiến cho các hệ thống trở nên mất hiệu quả.
 
== Lựa chọn khóa ==