CFB1, CFB8 và CFB128: đó là kích thước phản hồi, không phải kích thước khóa
Con số sau CFB là bước phản hồi, không phải độ dài khóa: CFB1, CFB8 và CFB128 đều dùng khối 128 bit. Hãy đọc các tên cũ mà không tự tạo ra khóa yếu.
Một cái tên như AES-256-CFB1 mang hai con số, và chúng trả lời những câu hỏi khác nhau. 256 là độ dài khóa AES. 1 là phản hồi CFB, tức kích thước phân đoạn, một thuộc tính của cách chế độ đẩy trạng thái của nó tiến lên. Nếu đọc 1 như độ dài khóa, cái tên trông như một cấu hình sai thảm khốc, và đó là lý do câu hỏi này cứ quay lại.
Hãy xác định bạn đang nhìn đại lượng nào trong ba: kích thước khóa, kích thước khối hay kích thước phân đoạn, trước khi phán xét cái tên. Chỉ đại lượng đầu là tham số bảo mật theo nghĩa thông thường.
Ba con số, ba đại lượng
AES nhận khóa 128, 192 hoặc 256 bit và có khối 128 bit dù bạn chọn gì. Kích thước khối thuộc về AES, không thuộc chế độ. Hậu tố CFB là đại lượng thứ ba: chế độ tiêu thụ và trả lại bao nhiêu dữ liệu mỗi bước. Tài liệu AES của OpenSSL liệt kê rõ các kích thước dịch đó cho các biến thể CFB.
CFB1 trả lại từng bit một, CFB8 một byte, CFB128 một khối đầy đủ. Cả ba dùng bên trong cùng một mật mã khối 128 bit; điều thay đổi là mỗi phép dùng bao nhiêu bit của khối đã tính. Vì thế hậu tố thay đổi chi phí và hành vi đệm, không phải độ mạnh của khóa.
| Name | Key | AES block | Feedback |
|---|---|---|---|
| AES-256-CFB1 | 256 bits | 128 bits | 1 bit |
| AES-256-CFB8 | 256 bits | 128 bits | 8 bits |
| AES-256-CFB128 | 256 bits | 128 bits | 128 bits |
Vì sao kích thước khối không bao giờ đổi
AES là mật mã khối với khối cố định 128 bit, và các chế độ là cấu trúc dựng quanh nó. Không chế độ nào thu nhỏ khối cho khớp kích thước phân đoạn. Một cài đặt CFB1 vẫn tính cả khối AES và lấy một bit của kết quả. Các bit còn lại bị bỏ cho bước đó, và chi phí hiệu năng nằm đúng ở đó.
Vậy phản hồi một bit không có nghĩa là khóa một bit, và không thể xếp hạng cái tên theo hậu tố. CFB128 không mạnh gấp bốn lần CFB32; nó xử lý các phân đoạn lớn hơn.
Kích thước phân đoạn thật sự thay đổi điều gì
Kích thước phân đoạn thay đổi lượng bản mã được trả lại mỗi bước và lượng bản rõ mỗi bước có thể mang. Nó cũng thay đổi lan truyền lỗi và hành vi đệm, điều quan trọng với cách dùng kiểu luồng. Các phân đoạn hướng byte khớp với bộ đệm, loại hướng bit thì không.
Trên thực tế giao thức chọn chế độ, không phải người vận hành. Một kênh dữ liệu VPN dùng cấu trúc mà giao thức của nó quy định, với bảo vệ toàn vẹn riêng, và danh sách thư viện chỉ cho biết những tên nào tồn tại.
Đọc nhãn CFB không kèm tiêu chuẩn
Nhãn CFB không kèm tiêu chuẩn cần ngữ cảnh cài đặt của nó. Trong các tệp tiêu đề OpenSSL 1.0.2, EVP_aes_128_cfb là macro cho EVP_aes_128_cfb128, với các bí danh tương ứng cho khóa 192 và 256 bit. Đó là quy ước đặt tên API của một nhánh, không phải khẳng định rằng mọi thư viện, định dạng tệp hay GUI mở rộng chữ viết tắt theo cùng một cách. Hãy kiểm tra tệp tiêu đề hoặc tài liệu của phiên bản trước mặt bạn.
Nếu một hồ sơ cũ ghi CFB và bên kia chấp nhận, các tham số đã thương lượng được ghi ở đâu đó: trong nhật ký, bản kết xuất cấu hình, phản hồi API. Hãy đọc những thứ đó thay vì suy ra kích thước phân đoạn từ chuỗi hiển thị.
Điều tên chế độ không nói với bạn
Cái tên mô tả hành vi mã hóa và không gì khác. VPN vẫn cần bảo vệ toàn vẹn, dẫn xuất khóa và xác thực bên kia, và CFB không cung cấp điều nào trong số đó. Đổi CFB8 sang CFB1 cũng không phải thay đổi bề ngoài: hành vi trên đường truyền khác đi và cả hai bên phải hỗ trợ cùng một cấu trúc. Một cái tên trong thư viện cũng không chứng minh cổng đã triển khai chấp nhận nó cho kênh dữ liệu của mình.
Với bất cứ thứ gì được duy trì, hãy dùng cách bố trí bảo vệ đầy đủ của giao thức và chính sách của người vận hành, đồng thời ghi lại phiên bản thư viện và cổng, tùy chọn chính xác và kết quả đã thương lượng. Cái tên cũ giải thích điều bạn đang đọc; nó không biện minh cho việc làm sống lại cấu hình đó.