Điểm:2

Tôi không hiểu lắm về băm

lá cờ id

Tôi không hiểu lắm về băm, để mã hóa hay nói cách khác.

Vì vậy, nếu bạn có một trang web và người dùng đăng ký, bạn sẽ lưu mật khẩu của anh ấy dưới dạng hàm băm. Khi họ đăng nhập, trang web của bạn sẽ lấy mật khẩu đã gửi, băm mật khẩu đó và so sánh việc gửi được băm với hàm băm được lưu trữ, phải không?

Giả sử bạn đang băm một câu bằng SHA-256, bạn có BAO GIỜ giải mã được một hàm băm như vậy hay thậm chí có khả năng không?

Một lần theo dõi cuối cùng: Whatsapp nói rằng tin nhắn của tôi đã được mã hóa. Vì vậy, nếu tôi mã hóa chúng khi tôi gửi chúng, làm thế nào để thiết bị của những người khác giải mã chúng?

Tôi nhận ra đây là một câu hỏi rất chung chung, nhưng tôi đang cố gắng tìm hiểu xem nó hoạt động như thế nào. Xin đừng la hét.

lá cờ et
Không, hàm băm không thể đảo ngược. Băm là một hoạt động một chiều. Băm không phải là mã hóa.
meshcollider avatar
lá cờ gb
Điều này có trả lời câu hỏi của bạn không? [Sự khác biệt giữa thuật toán băm và thuật toán mã hóa?](https://crypto.stackexchange.com/questions/62036/differences-between-hash-and-encryption-algorithms)
Sheldon avatar
lá cờ nl
**hàm băm mật mã (CHF)** là một thuật toán toán học ánh xạ dữ liệu có **kích thước tùy ý** (thường được gọi là "**thông điệp**") thành một mảng bit có **kích thước cố định** ( "giá trị băm", "băm" hoặc "**thông báo tóm tắt**"). Đó là một hàm **một chiều**, tức là một hàm mà thực tế không thể đảo ngược hoặc đảo ngược phép tính đối với nó.
kelalaka avatar
lá cờ in
Vâng, đó là một câu hỏi quá rộng và cần có một câu trả lời rất dài mà vẫn không dễ thỏa mãn. Whatsapp? Xem phần này [Trong mã hóa đầu cuối, máy chủ có cần được tin cậy không?](https://crypto.stackexchange.com/q/54082/18298) và từ WhatsApp: [Báo cáo chính thức về bảo mật của WhatsApp](https ://www.documentcloud.org/documents/2806301-WhatsApp-Security-Whitepaper-1)
Điểm:1
lá cờ ng

Vì vậy, nếu bạn có một trang web và người dùng đăng ký, bạn sẽ lưu mật khẩu của anh ấy dưới dạng hàm băm. Khi họ đăng nhập, trang web của bạn sẽ lấy mật khẩu đã gửi, băm mật khẩu đó và so sánh việc gửi được băm với hàm băm được lưu trữ, phải không?

Có, với ba chi tiết bổ sung theo cách hiện đại tiêu chuẩn để thực hiện việc này:

  • Mật khẩu truy cập trang web được mã hóa TLS; nó được giải mã trước khi băm.
  • Muối (được rút ngẫu nhiên khi đăng ký mật khẩu hoặc/và tên người dùng/email) được băm cùng với mật khẩu và được máy chủ lưu trữ dọc theo hàm băm của mật khẩu.
  • Nó được sử dụng một hàm băm lặp đi lặp lại chậm, hy vọng bộ nhớ cứng được thiết kế cho mật khẩu, như Argon2. Điều này được thiết kế để bảo vệ trong trường hợp máy chủ cho phép danh sách băm và muối bị rò rỉ (những rò rỉ như vậy xảy ra thường xuyên). Biện pháp phòng ngừa này khiến việc tìm mật khẩu trở nên khó khăn hơn (hay chính xác hơn là mật khẩu được chấp nhận, rất có thể là mật khẩu gốc) trong từ điển các mật khẩu thông thường, bằng cách băm mật khẩu ứng cử viên và muối và so sánh với hàm băm mật khẩu, giống như cách máy chủ kiểm tra một mật khẩu khi đăng nhập.

Giả sử bạn đang băm một câu bằng SHA-256, bạn có BAO GIỜ giải mã được một hàm băm như vậy hay thậm chí có khả năng không?

Không. Đầu tiên, "giải mã" không phải là thuật ngữ chính xác để tìm đầu vào của hàm băm với đầu ra của nó; thuật ngữ chính xác là "đảo ngược". Và, một hàm băm được thiết kế để không thể đảo ngược trong hoạt động bình thường. Nếu đầu vào của hàm băm không xác định và được chọn ngẫu nhiên trong một tập hợp lớn và thiết kế hàm băm tốt, thì thực tế không thể đảo ngược hàm băm.


Whatsapp nói rằng tin nhắn của tôi đã được mã hóa. Vì vậy, nếu tôi mã hóa chúng khi tôi gửi chúng, làm thế nào để thiết bị của những người khác giải mã chúng?

Băm không giống như mã hóa. Băm biến đổi một tin nhắn theo cách được thiết kế để không thể đảo ngược và không sử dụng khóa. Mã hóa biến đổi một tin nhắn theo một khóa mã hóa, theo cách có thể đảo ngược bởi một tin nhắn bằng khóa giải mã.

Khóa giải mã phải là bí mật, nếu không thì mục tiêu mã hóa (che giấu những gì đã được mã hóa đối với những kẻ thù không biết khóa giải mã) sẽ không được đáp ứng. Trong mã hóa đối xứng (ví dụ: AES-GCM), khóa mã hóa và khóa giải mã giống nhau. Trong mã hóa bất đối xứng (ví dụ: RSA, ECIES), chúng khác nhau: khóa mã hóa có thể được công khai và được gọi là khóa chung; khóa giải mã là khóa riêng.

Khi bạn gửi tin nhắn bằng ứng dụng hiện đại sử dụng mã hóa bất đối xứng (như Whatsapp), đây là bức tranh toàn cảnh:

  • Ứng dụng của bạn rút ra một khóa duy nhất thông báo đối xứng ngẫu nhiên.
  • Ứng dụng của bạn mã hóa tin nhắn bằng cách sử dụng mã hóa đối xứng với khóa duy nhất của tin nhắn này và kết quả sẽ được gửi.
  • Ứng dụng của bạn liên tục mã hóa khóa duy nhất của tin nhắn đối với từng người nhận dự kiến, sử dụng mã hóa bất đối xứng (ví dụ: ECIES) và từng khóa công khai của người nhận dự định và kết quả sẽ được gửi.
  • Khi người nhận cần giải mã tin nhắn, trước tiên, ứng dụng của họ sẽ nhận được khóa duy nhất của tin nhắn đã mã hóa được mã hóa dưới khóa chung của họ và giải mã nó (theo giải mã bất đối xứng) bằng khóa riêng của họ, thu được khóa duy nhất của tin nhắn.
  • Ứng dụng của người nhận nhận được tin nhắn được mã hóa, giải mã nó theo quá trình giải mã đối xứng bằng khóa duy nhất của tin nhắn, sau đó hiển thị tin nhắn đã giải mã.

Cơ chế chính bảo vệ tính bí mật của thông điệp là mã hóa đối xứng. Mã hóa bất đối xứng bảo vệ tính bảo mật của khóa duy nhất của thông báo, do đó gián tiếp bảo vệ tính bảo mật của thông báo. Băm thường được sử dụng nội bộ như một khối xây dựng trong một số bước, nhưng không phải là cơ chế mã hóa tin nhắn hoặc khóa duy nhất của tin nhắn.

Điểm:0
lá cờ kr

Ngoài câu trả lời của @frieu:

Giả sử bạn đang băm một câu bằng SHA-256, bạn có BAO GIỜ giải mã một hàm băm, hoặc thậm chí có khả năng?

Để xác thực mật khẩu, bạn không phải khôi phục mật khẩu từ hàm băm. Bạn chỉ cần tính một hàm băm cho mật khẩu mà bạn muốn kiểm tra. Nếu mật khẩu giống nhau, bạn sẽ nhận được cùng một hàm băm.

Điều quan trọng cần biết là có thể có nhiều hơn một mật khẩu tạo ra cùng một hàm băm. Nhưng đối với các thuật toán như SHA-256 hoặc Argon2, có hai khía cạnh quan trọng:

  1. Xác suất để hai mật khẩu tạo ra cùng một hàm băm là rất thấp.
  2. Không có cách phân tích nào để tìm một số mật khẩu tạo ra hàm băm nhất định. Cách duy nhất là cưỡng bức vũ phu, tức là thử tất cả các giá trị có thể. Nếu mật khẩu có entropy thấp ("không đủ ngẫu nhiên", nói một cách đơn giản), ví dụ: nếu nó có độ dài 8 ký tự, thì hàm băm SHA-256 của nó có thể dễ dàng bị cưỡng bức. Để ngăn chặn, người ta nên sử dụng các thuật toán làm cho việc cưỡng chế vũ phu rất tốn tài nguyên, như Argon2.

Đă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.