Splync Không Bao Giờ Lưu Trữ Mật Khẩu Dưới Dạng Văn Bản Thuần Túy
Trong các bài viết trước, chúng ta đã tìm hiểu cách HTTPS bảo vệ đường truyền giữa ứng dụng của bạn và máy chủ của chúng tôi, và cách SSH bảo vệ máy chủ. Giờ là lúc chúng ta xem bên trong máy chủ — cách Splync giữ mật khẩu của bạn an toàn khi nó đến. Nếu ai đó có được mật khẩu của bạn, người đó có thể đăng nhập vào tài khoản và truy cập thông tin nhạy cảm, bao gồm cả hồ sơ chi tiêu của bạn. Đó là lý do Splync không bao giờ lưu trữ mật khẩu dưới dạng văn bản thuần túy. Thay vào đó, mỗi mật khẩu được chuyển đổi thành một phiên bản mã băm trước khi lưu vào cơ sở dữ liệu. Điều này có nghĩa là gì? Mã băm là một chuyển đổi một chiều — sau khi chuyển đổi, nó không thể trở lại thành mật khẩu gốc. Phương pháp này là tiêu chuẩn trên internet, từ ngân hàng đến các dịch vụ đám mây lớn, nhưng nhiều người không biết nó hoạt động như thế nào. Hãy khám phá nó qua một ví dụ đơn giản hàng ngày.
Nguyên Tắc Mã Băm: Máy Xay Sinh Tố Luôn Trộn Theo Cách Như Nhau
Để hiểu cách bảo vệ mật khẩu hoạt động, hãy bắt đầu với phương pháp mã băm đơn giản gọi là SHA-256. Hãy tưởng tượng nó như một máy xay sinh tố luôn trộn nguyên liệu theo cách giống nhau. Nếu bạn đưa cùng một mật khẩu vào máy xay và nhấn nút, bạn sẽ luôn nhận được một loại sinh tố độc đáo — một hỗn hợp các chữ cái và số bị xáo trộn. Ý chính là quy trình này không thể đảo ngược. Giống như bạn không thể tách sinh tố để trở lại thành chuối và sữa ban đầu, bạn không thể lấy mã băm bị xáo trộn và phục hồi mật khẩu gốc.
Ví Dụ Về SHA-256: Cách Xác Minh Mật Khẩu Mà Không Cần Biết Mật Khẩu
SHA-256 là một trong những thuật toán mã băm thông dụng nhất. Ví dụ, nó mã hóa mật khẩu "splync1234" thành "9cdafa20d069ecfb202e5f0bc937c73071cc6cd85634cc2d95d30ddcf2a71d41". Trong vài mili giây, mỗi khi người dùng hiện có nhập mật khẩu đăng nhập, SHA-256 luôn tạo ra cùng một mật khẩu được mã hóa. Ứng dụng đơn giản chỉ cần mã hóa lại mật khẩu đã nhập và kiểm tra xem nó có khớp với mã được lưu trữ hay không. Không lúc nào hệ thống biết mật khẩu gốc của người dùng. Nhưng điều gì sẽ xảy ra nếu kẻ tấn công tạo trước một danh sách mật khẩu thông dụng và các mã băm của chúng (được gọi là tấn công bảng cầu vồng) để đoán nhanh mật khẩu của người dùng? Mối lo ngại này rất thực tế. Đây là lý do tại sao các hệ thống hiện đại, bao gồm cả Splync, không dựa vào SHA-256 đơn giản.
Splync Mã Băm Mật Khẩu Bằng bcrypt — Mạnh Hơn SHA-256
Bcrypt sử dụng một muối ngẫu nhiên trên mỗi người dùng và mã hóa muối đó (và yếu tố chi phí) trực tiếp vào chuỗi mã băm lưu trữ. Hãy nghĩ bcrypt như một máy xay với gia vị bí mật (muối) và động cơ chậm (yếu tố công việc) — nó làm cho mỗi hỗn hợp trở nên độc đáo và khó sao chép hơn. Bởi vì muối dài 128 bit (≈3×10³⁸ khả năng), cùng một mật khẩu có thể ánh xạ đến một số lượng mã băm lưu trữ khác nhau cực lớn. Điều đó làm cho các bảng cầu vồng được tính trước trở nên vô dụng ở quy mô lớn. Trong quá trình đăng nhập, Splync đọc muối và chi phí từ chuỗi bcrypt đã lưu, chạy lại bcrypt trên mật khẩu đã nhập với các tham số đó và so sánh kết quả với mã băm lưu trữ. Nếu chúng khớp, mật khẩu là chính xác — nhưng vì bcrypt được thiết kế chậm và muối là duy nhất, các cuộc tấn công bẻ khóa toàn diện trở nên tốn kém hơn nhiều đối với kẻ tấn công.
Một Ví Dụ Dễ Hiểu Với bcrypt
Hãy xem điều này trông như thế nào trong thực tế. Nếu bạn mã hóa mật khẩu "splync1234" với bcrypt (sử dụng chi phí 12), bạn có thể nhận được một chuỗi như thế này: `$2b$12$gBeouKYdue9uvvuV0HtGgeVPymnrojMqP/wcRw28HFlGEGIQbyw7O`. Trong chuỗi bcrypt này, `$2b` đánh dấu phiên bản thuật toán, `$12` cho biết yếu tố chi phí (số lần mật khẩu được xử lý), `gBeouKYdue9uvvuV0HtGgeV` là muối ngẫu nhiên duy nhất, và `PymnrojMqP/wcRw28HFlGEGIQbyw7O` là mật khẩu đã mã hóa cuối cùng. Vì bản thân mã băm chứa muối và chi phí, Splync có thể tái tạo quá trình mã hóa tương tự để xác minh bằng cách trích xuất các giá trị đó từ chuỗi lưu trữ và so sánh kết quả. Ngược lại, nếu kẻ tấn công không biết muối và chi phí, họ không thể xây dựng một bảng cầu vồng đơn lẻ hoạt động cho mọi người dùng.
Mật Khẩu Mã Băm Mang Lại Sự Bảo Vệ Kép
Phương pháp này có một lợi ích quan trọng khác. Vì Splync không bao giờ lưu trữ mật khẩu dạng văn bản thuần túy, ngay cả khi cơ sở dữ liệu bị rò rỉ hoặc đánh cắp, người dùng không ngay lập tức gặp rủi ro. Kẻ tấn công không thể đăng nhập trực tiếp bằng dữ liệu bị đánh cắp, vì những gì họ có chỉ là những chuỗi bị xáo trộn. Thiết kế này mang đến cho người dùng một lớp bảo vệ bổ sung, bên cạnh các biện pháp bảo vệ đã tồn tại xung quanh máy chủ. Mã hóa mật khẩu không phải là duy nhất của Splync; nó là tiêu chuẩn trong ngành công nghệ, được các ông lớn như Google, Apple và Amazon sử dụng. Splync đã được xây dựng rất an toàn và sẽ ngày càng an toàn hơn khi chúng tôi tiếp tục cải thiện bảo mật với các tính năng như xác minh email, bảo vệ bẻ khóa toàn diện và giám sát liên tục.