Muối mật khẩu chỉ được sử dụng để ngăn chặn các cuộc tấn công cầu vồng
Điều đó không hoàn toàn đúng; đối với một, bạn có thể dễ dàng phân biệt các mật khẩu giống hệt nhau nếu không có muối (hoặc dữ liệu khác) được sử dụng để phân biệt giữa các trường hợp sử dụng hoặc người dùng thực sự.
Sử dụng số lượng vòng cao chỉ được sử dụng để ngăn mật khẩu ngắn bắt buộc
Vâng, vâng. Băm bình thường đã là một chiều và bạn cần muối cho các mục đích đã nói ở trên. Vì vậy, lý do duy nhất để sử dụng số lần lặp lại hoặc hệ số công việc là để kẻ tấn công cũng thực hiện nhiều vòng nguyên thủy cơ bản.
Tất nhiên, nếu thiếu muối, số lần lặp cũng sẽ khiến việc xây dựng bảng cầu vồng trở nên khó khăn hơn.
Nhưng nếu mật khẩu được tạo bằng máy tính và chỉ được sử dụng theo cách tự động giữa 2 hệ thống từ xa, thì có an toàn để tạo mật khẩu chứ không phải băm mật khẩu bằng nhiều vòng không?
Đó không phải là mật khẩu, đó là một bí mật. Nếu bạn sử dụng nó một cách chính xác, bạn thậm chí có thể không cần đến muối, mặc dù bạn sẽ phải nhớ rằng bí mật vẫn giữ nguyên trong giao thức mà bạn sử dụng nó (ví dụ: để mã hóa, bạn cần có IV hoặc nonce để đảm bảo kết quả không mang tính quyết định).
Việc sử dụng một mật khẩu được tạo ngẫu nhiên dài hơn (như mật khẩu 256 bit) có đủ để tránh cần nhiều vòng không?
Không có thứ gọi là mật khẩu 256 bit. Mật khẩu bao gồm văn bản, không nhị phân. 256 bit ngẫu nhiên là phổ biến cho phím chẳng hạn như phím AES-256 hoặc phím dùng cho HMAC-256.
Một mật khẩu có thể có 256 bit entropy, trải rộng trên nhiều nhân vật. Nhưng một mật khẩu như vậy không thể được ghi nhớ bởi con người cho các hoạt động bình thường.Chẳng hạn, nếu bạn muốn sử dụng ASCII với tất cả các ký tự đặc biệt có thể có (không có dấu cách) thì bạn cần một mật khẩu 39 ký tự hoàn toàn ngẫu nhiên ($\log_{92}(2^{256})$ trong trường hợp bạn muốn xác minh điều này).
Và vâng, đối với một khóa bí mật, bạn sẽ không cần số lần lặp lại hoặc PBKDF ngay từ đầu. Nếu bạn cần muối hay không tùy thuộc vào cách bạn sẽ sử dụng nó. Bạn sẽ không cần nó để sử dụng một lần. Nếu bạn cần KDF thì bạn có thể sử dụng KDF dựa trên khóa chẳng hạn như HKDF.