Tôi đang sử dụng lớp .NET 3.0 lớp System.Security.Cryptography.MACTripleDES
để tạo giá trị MAC. Thật không may, tôi đang làm việc với một thiết bị phần cứng sử dụng "1111111111111111
" (dưới dạng hex) làm khóa DES một chiều. Thư viện System.Security.Cryptography
thực hiện kiểm tra tính chính xác trên khóa và trả về Ngoại lệ nếu bạn cố gắng sử dụng khóa yếu mã hóa.TripleDES: Khóa được chỉ định là khóa yếu đã biết cho 'TripleDES' và không thể sử dụng
Ví dụ:
byte[] key = new byte[24];
for (int i = 0; i < key.Length; i++)
key[i] = 0x11;
byte[] data = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
byte[] computedMac = null;
using (MACTripleDES mac = new MACTripleDES(key))
{
computedMac = mac.ComputeHash(data);
}
ném một ngoại lệ
System.Security.Cryptography.CryptographicException : Specified key is a known weak key for 'TripleDES' and cannot be used.
Tôi biết đây không phải là một chìa khóa an toàn. Trong quá trình sản xuất, thiết bị sẽ được chiếu bằng một khóa mới, an toàn. Trong thời gian đó, liệu có cách nào để ngăn chặn ngoại lệ này khỏi bị ném không? Có lẽ một cài đặt đăng ký app.config
hoặc đăng ký?
Chỉnh sửa: Khóa thực sự là 101010 ... do thuật toán buộc chẵn lẻ lẻ. Tôi không chắc liệu đây có phải là phổ quát đối với thuật toán DES hay chỉ là một yêu cầu trong công việc xử lý thanh toán mà tôi làm.
Chỉnh sửa 2: Câu trả lời của Daniel dưới đây có một số thông tin rất tốt về hack. Thật không may, tôi đã không thể giải quyết vấn đề của tôi bằng cách sử dụng kỹ thuật này, nhưng vẫn còn một số đọc thú vị ở đó.
(Re: chỉnh sửa của bạn) DES và 3DES chỉ sử dụng 7 bit đầu mỗi byte trong khóa. Bit ít quan trọng nhất thường được sử dụng như một bit chẵn lẻ. –
Tôi sẽ về nhà như vậy. Có vẻ kỳ lạ rằng một cái gì đó như thế này sẽ được thực thi ở cấp thư viện. Những người sử dụng mã hóa nên biết sử dụng các khóa khó đoán và thư viện không nên thực thi những điều này. – Kibbee
@Kibbee, Điểm yếu trong ngữ cảnh này không có nghĩa là "khó đoán". Nó có nghĩa là một khóa mà thuật toán được chỉ định thể hiện một số hành vi thoái hóa làm suy yếu nó. – caf