Khóa IPsec chia sẻ trước: những byte đằng sau chuỗi bạn đã gõ
Hai đầu có thể giữ những chuỗi trông giống hệt nhau và dẫn xuất ra các khóa khác nhau. Hãy kiểm tra kiểu trường, mọi kiểu mã hóa và các byte cuối trước khi làm yếu bất cứ thứ gì.
Hai quản trị viên so sánh bí mật trên màn hình, đồng ý rằng chúng khớp nhau, và đường hầm vẫn không qua được xác thực. Chuỗi họ so sánh không phải là giá trị mà bất kỳ đầu nào đưa vào quá trình dẫn xuất khóa. Giữa các ký tự bạn thấy và các byte mà giao thức băm có một kiểu trường, một kiểu mã hóa văn bản, một trình soạn thảo và một clipboard, và bất kỳ cái nào trong bốn thứ đó đều có thể thay đổi đầu vào mà không thay đổi hình dạng. Hãy so sánh các byte và sự khác biệt thường xuất hiện trong vài giây.
Cổng làm gì với chuỗi
Khóa chia sẻ trước không được gửi qua mạng rồi so sánh. Mỗi đầu đưa bản sao cục bộ của mình vào quá trình dẫn xuất khóa cho trao đổi IKE, và các tải trọng xác thực tạo ra hoặc được xác minh hoặc không. Thiết kế đó nghĩa là hai bản sao phải giống hệt nhau đến từng byte chứ không chỉ giống về hình thức, và cũng có nghĩa là lỗi được báo ở giai đoạn xác thực chứ không phải dưới dạng thông báo sai mật khẩu.
Vì vậy câu hỏi hữu ích không bao giờ là «những thứ này có trông giống nhau không» mà là «mỗi cách triển khai băm chính xác chuỗi byte nào».
Các byte thừa đến từ đâu
Dòng mới ở cuối là thủ phạm kinh điển, và nó ẩn ngay trước mắt vì hầu hết trình soạn thảo thêm một dòng một cách vô hình khi lưu tệp. Khoảng trắng ở đầu hoặc cuối được dán từ cửa sổ trò chuyện cũng làm điều tương tự, và dấu ngoặc kép thông minh bị trình xử lý văn bản thay bằng dấu thẳng cũng vậy. Không điều nào trong số đó thay đổi phép so sánh trực quan mà con người thực hiện.
So sánh bằng công cụ hiển thị byte thay vì glyph. printf '%s' "$PSK" | xxd | tail -2 in phần đuôi của giá trị ở dạng hex, nơi một 0a hoặc 20 lạc chỗ là hiển nhiên. Hãy làm điều đó ở cả hai đầu và so sánh hai bản kết xuất cạnh nhau. Hãy làm điều đó trên tài liệu kiểm thử được tạo ra, không phải trên bí mật sản xuất mà sau đó bạn để lại trong lịch sử shell.
Được mã hóa không phải là được mã hóa bảo mật
Các bản xuất cấu hình thường mang bí mật trong một kiểu mã hóa cơ sở, đôi khi có ngắt dòng sau mỗi sáu mươi hoặc bảy mươi sáu ký tự và đôi khi có phần đệm. Nếu một đầu mong đợi các byte đã giải mã và bạn dán văn bản đã mã hóa, bạn không gửi một mật khẩu khác, bạn đã gửi một mật khẩu dài hơn nhiều làm từ các ký tự in được. Base64 không cung cấp bất kỳ tính bảo mật nào, và đó cũng là lý do không bao giờ được dán bí mật đã mã hóa lên diễn đàn để xin ý kiến thứ hai.
Từ điển IPSec của Apple là một ví dụ hữu ích cho thấy kiểu dữ liệu quan trọng: nó ghi nhận SharedSecret là dữ liệu cho phương thức xác thực bằng bí mật chia sẻ trong các tải trọng L2TP và Cisco IPsec. Đó là một thuộc tính cụ thể trong một tải trọng cụ thể, không phải một trường văn bản chung mà bạn có thể dùng lại cho giao thức khác tình cờ yêu cầu bí mật.
Giới hạn được tuyên bố thuộc về một tổ hợp
Các báo cáo cũ về giới hạn ba mươi hai ký tự trên một ứng dụng khách Apple là báo cáo thực về một phiên bản ứng dụng khách, một giao thức và một dạng hồ sơ. Chúng không phải giới hạn phổ quát cho mọi nền tảng Apple, mọi nhà cung cấp và mọi giao thức. Hãy kiểm tra phiên bản, loại tải trọng và yêu cầu của cổng cùng nhau, rồi thử trên một cấu hình đã được phê duyệt thay vì suy ra từ một chuỗi thảo luận. Hãy ghi tổ hợp đã thử vào hồ sơ thay đổi, nếu không người tiếp theo sẽ trích dẫn cùng chuỗi đó với sự tự tin quá mức.
Nếu một giới hạn thực sự áp dụng, câu trả lời là một thiết kế thông tin đăng nhập được hỗ trợ phù hợp với nó, không phải một phiên bản rút gọn của bí mật mạnh. Cắt ngắn khóa sản xuất để đáp ứng một giới hạn phỏng đoán làm giảm sức mạnh của nó vĩnh viễn và tạo ra một hệ thống mà tài liệu không còn khớp với bảo mật của nó.
Sửa cách biểu diễn, không phải sức mạnh
Khi xác thực thất bại sau khi đã xác nhận cách biểu diễn, hãy đọc chính sách hiệu lực ở giai đoạn xác thực: phương thức nào đang được thương lượng, danh tính ngang hàng nào được mong đợi và cổng có khớp với kết nối mà bạn nghĩ không. Những phỏng đoán ngày càng yếu đi không phải là chẩn đoán, chúng là một sự hạ cấp chậm với một phiếu hỗ trợ kèm theo.
Nếu thông tin đăng nhập bắt buộc không thể đáp ứng tiêu chuẩn của tổ chức, hãy thay đổi thiết kế sang một thiết kế có thể. Một bí mật chia sẻ có đủ entropy, được tạo một lần, lưu trong trường được quản lý và không bao giờ công bố, là một câu trả lời hoàn toàn tốt; một phiên bản ngắn hơn thì không.