Điểm:2

Vấn đề chính với phần đệm bằng 0 cho khóa AES là gì?

lá cờ cn

Tôi đang cố gắng hiểu logic đằng sau một số nguyên tắc cơ bản của phần đệm phím AES. Tại sao chúng tôi sử dụng các loại sơ đồ đệm phím AES khác nhau thay vì sơ đồ đệm bằng 0 đơn giản nhất? Lấy AES-128 làm ví dụ, nếu khóa của tôi là "mã hóa", phần đệm hoạt động như thế nào và vấn đề đằng sau nó là gì?

Xin lỗi nếu câu hỏi quá cơ bản, nhưng tôi không tìm được lời giải thích hay về nó.

lá cờ cn
Thực ra là có, và tôi đã đọc câu trả lời của bạn, cảm ơn. Nhưng tôi muốn có một lời giải thích cơ bản hơn về nó... bạn có thể chỉ ra một ví dụ ngắn về cách dữ liệu bị mất hoặc hiểu sai trong quá trình mã hóa/giải mã không?
kelalaka avatar
lá cờ in
Mật khẩu ngắn không bao giờ an toàn [Có dễ bẻ khóa một số điện thoại được băm không?](https://crypto.stackexchange.com/a/81652/18298) và [Bộ chứa VeraCrypt được mã hóa bằng mật khẩu ngắn không an toàn đến mức nào?](https ://crypto.stackexchange.com/a/81020/18298) luôn chọn cách tạo mật khẩu tốt như dicewire.
Điểm:4
lá cờ ng

Câu hỏi xem xét việc đệm văn bản dễ nhớ như "khóa mật mã" vào khóa AES bằng cách thêm byte 0 vào biểu thức (UTF-8) của văn bản này dưới dạng byte, cho đến khi đạt 16, 24 hoặc 32 byte cho AES-128, AES-192, hoặc AES-256.

Các chủ yếu vấn đề với điều này là nó nhanh và không tốn kém, đây là một thảm họa trong ngữ cảnh: nó cho phép kẻ thù áp dụng quy trình đó một cách nhanh chóng và không tốn kém cho các mật khẩu hợp lý, đồng thời kiểm tra các khóa thu được dựa trên bản mã (với bản rõ đã biết hoặc dự phòng đã biết), và do đó tìm ra khóa. Đây là bẻ khóa mật khẩuvà có một ngành công nghiệp nhỏ đang phát triển hỗn hợp phần mềm và phần cứng cho việc này.

Tôi nghĩ rằng một từ điển gồm một triệu từ tiếng Anh phổ biến nhất (đối với một số định nghĩa mở rộng của từ này) có chứa "mã hóa". Ít nhất, một tìm kiếm của Google đã tìm thấy 78.400 lần xuất hiện và nó nằm trong danh sách các miền đã đăng ký trong ba TLD phổ biến. Với một cặp bản rõ/bản mã đã biết hoặc bản mã cho một bản rõ có cấu trúc nào đó, việc này sẽ mất vài giây để phá vỡ đối với người có công cụ phù hợp.

Mặc dù điều đó có thể được cải thiện rất nhiều (xem đoạn tiếp theo), "cipherkey" không phải là một mật khẩu tốt. Bạn nên chọn một mật khẩu khó đoán hơn. Chỉ đơn thuần đặt tên cho điều đó cụm mật khẩu sẽ giúp! Nhưng đó là một thứ hai vấn đề.

Khi biến bất cứ thứ gì đáng nhớ (mật khẩu, cụm mật khẩu..) thành chìa khóa, một phải sử dụng hàm dẫn xuất khóa dành cho mật khẩu, đó là hàm có tham số workfactor cho phép điều chỉnh chi phí của dẫn xuất khóa. Nếu chi phí đó là 0,5 giây thời gian của một máy tính mạnh, thay vì 20 nano giây cho phương pháp được đề xuất, thì điều đó sẽ trở thành nút cổ chai cho việc bẻ khóa mật khẩu và có thể khiến họ ít nhất phải đổ mồ hôi. Với cụm mật khẩu à la XKCD hoặc xúc xắc, nó có thể khá an toàn.

Người ta nên sử dụng Muối, điều này sẽ ngăn việc tính toán trước các khóa dẫn xuất và ngăn việc khấu hao chi phí của các dẫn xuất đó đối với một số cặp mật khẩu/khóa. đó là một cái khác thứ hai vấn đề.

Điều quan trọng là chức năng dẫn xuất chính là bộ nhớ cứng, nghĩa là sử dụng một lượng lớn bộ nhớ trong suốt quá trình tính toán của nó, vì điều đó làm tăng đáng kể chi phí tấn công bằng tiền, với chi phí thấp cho người dùng hợp pháp. Các chức năng được khuyến nghị bao gồm Argon2mật mã. Các chức năng phổ biến nhưng không được đề xuất bao gồm PBKDF2, không khó về bộ nhớ và nằm trong số những cách sử dụng thời gian CPU tồi tệ nhất có thể cho mục đích lấy mật khẩu thành khóa: nó tối đa hóa lợi thế của những kẻ tấn công sử dụng ASIC, FPGA và thậm chí cả GPU w.r.t. người dùng hợp pháp sử dụng CPU. tôi tìm thấy Khuyến nghị của NIST cho PBKDF2 phù hợp với sự thúc đẩy trước đây của họ cho Kép_EC_DRBG:

Mặc dù PBKDF2 khó về thời gian nhưng không khó về bộ nhớ, nhưng nó được triển khai rộng rãi đến mức không thực tế (tại thời điểm này) để đưa ra yêu cầu cho chức năng dẫn xuất khóa cứng trong bộ nhớ.

Maarten Bodewes avatar
lá cờ in
Lưu ý rằng bản thân AES không bị ảnh hưởng, đó là vấn đề về khóa/mật khẩu entropy thấp. Nếu mật khẩu có quá ít entropy thì hàm dẫn xuất khóa dựa trên mật khẩu cũng sẽ không cứu được bạn; nó chỉ thêm một lượng bảo mật không đổi, ví dụ: ~20 bit cho một triệu lần lặp lại PBKDF2.
kelalaka avatar
lá cờ in
Bạn nên tư vấn; Dù cơ chế băm mật khẩu là gì, trước đó người ta cần có một mật khẩu tốt. đây phải là lời khuyên đầu tiên. dicewire hoặc Bip39, v.v.
fgrieu avatar
lá cờ ng
@kelalaka: Tôi đồng ý rằng cần có mật khẩu tốt hơn và đã thêm lời khuyên đó. Tuy nhiên, tôi không thấy lựa chọn mật khẩu kém là vấn đề _main_. Tôi nghĩ rằng việc bẻ khóa một mật khẩu có độ khó trung bình như "mã hóa" (hoặc trước câu hỏi đó) khó hơn với 0,1 giây KDF cứng bộ nhớ, đặc biệt là muối, hơn là bẻ khóa hầu hết các mật khẩu dễ nhớ mà về cơ bản không có KDF và trực tiếp sử dụng làm khóa AES.
kelalaka avatar
lá cờ in
Chà, nó vẫn có thể tương thích song song trong CPU và tôi sẽ truy cập [~600K danh sách mật khẩu pwned](https://haveibeenpwned.com/Passwords) trước tiên, mặc dù danh sách này được đưa ra với SHA-1 để kiểm tra. Người ta có thể tìm thấy chưa được băm trong một số trang web sâu.
kelalaka avatar
lá cờ in
Ngoài ra, tôi luôn khuyên bạn nên sử dụng trình quản lý mật khẩu, chẳng hạn như password1, keepass, v.v. Với những công cụ này, người dùng chỉ cần sử dụng một mật khẩu tốt để bảo mật kho tiền, họ có thể tạo một khóa ngẫu nhiên tốt cho các mật khẩu khác. Firefox, Opera có những thứ này và điều này đang trở nên tiêu chuẩn hơn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.