Độ lớn khóa

Độ lớn khóa (hay độ dài khóa), trong mật mã học, là khái niệm để đánh giá kích thước khóa có thể sử dụng trong một hệ thống mã hóa (theo bit hoặc byte). Phần lớn các hệ thống mật mã hóa hiện đại đều dùng khóa dưới dạng nhị phân nên độ dài khóa thường được đo bằng bít. Độ dài của khóa là yếu tố chủ yếu để đánh giá độ nhạy cảm của một hệ thống mật mã hóa đối với dạng tấn công kiểu duyệt toàn bộ.

Tầm quan trọng

Trong các thuật toán mật mã hóa, khóa được dùng điều khiển các quá trình mã hóa và giải mã. Phần lớn các thuật toán hiện đại dựa trên các thuật toán được công bố công khai, thậm chí là thực hiện bằng các phần mềm mã nguồn mở. Vì vậy, việc giữ bí mật khóa là yếu tố duy nhất đảm bảo an ninh cho hệ thống (với điều kiện là các thuật toán được thiết kế tốt). Quan điểm thiết kế này xuất phát từ các công trình nghiên cứu của Auguste Kerckhoffs (vào những năm 1880), Claude Shannon (vào những năm 1940); và được biết đến dưới tên gọi nguyên lý Kerckhoffs (hay Shannon's Maxim).
Vì thế, khóa phải đảm bảo đủ lớn để chống lại tấn công kiểu duyệt toàn bộ. Các công trình nghiên cứu của Claude Shannon đã chứng minh rằng: để đảm bảo an toàn tuyệt đối thì khóa phải có độ dài ít nhất bằng độ dài của văn bản được mật mã hóa. Khi ứng dụng vào thực tế của mật mã học hiện đại, rõ ràng việc quản lý khóa quá dài là rất khó khăn và hầu như không thể thực hiện được. Vì thế yêu cầu an toàn tuyệt đối với một hệ thống mật mã là không thực hiện được (ít nhất là với trình độ công nghệ hiện tại) và thay vào đó, người ta tập trung vào tính chất an toàn tính toán. Điều này có nghĩa để phá vỡ một hệ thống thì phải cần đến khối lượng tính toán vượt qua khả năng của bất kỳ kẻ tấn công nào.
Thông thường, độ dài khóa (tính bằng bít) là số lũy thừa của 2, có thể nhân thêm với một số nguyên lẻ.

Tấn công kiểu duyệt toàn bộ

Ngay cả khi thuật toán mật mã không có điểm yếu nào trong thiết kế thì kẻ tấn công cũng có khả năng thử tất cả các khóa có thể cho tới khi tìm được khóa đúng. Đây là dạng tấn công đơn giản nhất lên các hệ thống mật mã. Khóa càng dài thì thời gian thực hiện việc tìm kiếm càng lớn. Nếu khóa đủ dài thì thời gian cho quá trình thử sẽ quá lớn và việc tấn công hầu như không thực hiện được. Do vậy, độ dài khóa là yếu tố quyết định cho việc chống lại tấn công dạng này.
Nếu khóa có độ dài n bít, có tất cả 2ⁿ khóa khác nhau. Số lượng khóa tăng đặc biệt nhanh khi n tăng lên. Theo định luật Moore, thì công suất tính toán của các hệ thống máy tính tăng gấp đôi sau khoảng 18 tháng, nhưng ngay cả với tốc độ tăng này thì độ dài của các khóa đang sử dụng hiện tại vẫn khá an toàn. Chẳng hạn với khóa 128 bít thì khối lượng tính toán cần thực hiện (2¹²⁸) vẫn vượt qua tất cả công suất của con người gộp lại trong một tương lai có thể tiên liệu được.

Độ dài khóa đối với các hệ thống khóa đối xứng

Chính sách xuất khẩu của Hoa Kỳ có điều khoản hạn chế đối với việc xuất khẩu các công nghệ về mật mã. Trong nhiều năm, giới hạn được xuất khẩu là các hệ thống mật mã dưới 40 bít. Với công nghệ hiện đại thì độ dài này không còn ý nghĩa vì bất kỳ người nào, với một máy tính bình thường cũng có thể phá vỡ hệ thống. Ngày nay, hạn chế này vẫn chưa được xóa bỏ mà chỉ có mức hạn chế được nâng lên thành 128 bít (1999/2000).
Khi tiêu chuẩn DES được công bố vào năm 1977 thì khóa 56 bít được xem là đủ an toàn (mặc dù có những thông tin bên lề rằng Cơ quan An ninh Quốc gia Hoa Kỳ (National Security Agency - NSA) đã can thiệp giảm độ dài khóa xuống để có thể phá vỡ hệ thống này). Đến những năm cuối của thế kỷ 20 thì có những chứng cứ rõ ràng là DES có thể bị phá vỡ trong vòng vài ngày với những thiết bị chuyên biệt có giá thành không quá lớn (với các công ty lớn). Vì thế các hệ thống mật mã hóa 56 bít hiện nay được xem là không an toàn.
Thuật toán Skipjack dùng trong chương trình Fortezza của Cơ quan An ninh Quốc gia Hoa Kỳ sử dụng khóa 80 bít.
Thuật toán Triple DES dùng thay thế DES có khóa dài 168 bít nhưng hiệu quả thực sự chỉ là 112 bít.
Thuật toán AES công bố năm 2001 sử dụng khóa có độ dài từ 128 tới 256 bít. Khóa 128 bít được xem là đủ an toàn đối với các thuật toán mã hóa khóa đối xứng trong tương lai gần. Chính phủ Hoa Kỳ yêu cầu dùng khóa 192 hoặc 256 bít cho các tài liệu tối mật.
Năm 2003, Viện Khoa học và Tiêu chuẩn Hoa Kỳ (NIST) dự kiến khóa 80 bít sẽ bị loại bỏ vào năm 2015. Tại thời điểm năm 2005, khóa 80 bít chỉ được phép sử dụng tới 2010.

Độ dài khóa đối với các hệ thống khóa bất đối xứng

Hiệu quả của một hệ thống mật mã khóa bất đối xứng phụ thuộc vào độ khó (lý thuyết hoặc tính toán) của một vấn đề toán học nào đó chẳng hạn như bài toán phân tích ra thừa số nguyên tố. Giải các bài toán này thường mất nhiều thời gian nhưng thông thường vẫn nhanh hơn là thử lần lượt từng khóa theo kiểu duyệt toàn bộ. Vì thế, khóa dùng trong các hệ thống này cần phải dài hơn trong các hệ thống mật mã khóa đối xứng. Tại thời điểm năm 2002, độ dài 1024 bít được xem là giá trị tối thiểu cho hệ thống sử dụng thuật toán RSA.
Năm 2003, công ty RSA Security cho rằng khóa RSA 1024 bít có độ an toàn tương đương với khóa 80 bít, khóa RSA 2048 bít tương đương với khóa 112 bít và khóa RSA 3072 bít tương đương với khóa 128 bít của hệ thống mật mã khóa đối xứng. Họ cũng đánh giá rằng, khóa 1024 bít có thể bị phá vỡ trong khoảng từ 2006 tới 2010 và khóa 2048 bít sẽ an toàn tới 2030. Các khóa 3072 bít cần được sử dụng trong trường hợp thông tin cần giữ bí mật sau 2030. Các hướng dẫn về quản lý khóa của NIST cũng gợi ý rằng khóa RSA 15360 bít có độ an toàn tương đương với khóa đối xứng 256 bít.
Một dạng khác của thuật toán mật mã hóa khóa bất đối xứng, mật mã đường cong elliptic (ECC), tỏ ra an toàn với khóa ngắn hơn khá nhiều so với các thuật toán khác. Hướng dẫn của NIST cho rằng khóa của ECC chỉ cần dài gấp đôi khóa của hệ thống khóa đối xứng. Giả định này đúng trong trường hợp không có những đột phá trong việc giải các bài toán mà ECC đang sử dụng. Một văn bản mã hóa bằng ECC với khóa 109 bít đã bị phá vỡ bằng cách tấn công duyệt toàn bộ.