Salting trong bảo mật mật khẩu là gì? Salting hoạt động như thế nào?
Bạn có thể đã nghe nói đến thuật ngữ “Salting” khi nói đến việc bảo mật mật khẩu. Bảo mật mật khẩu là một phần quan trọng của an ninh mạng, khi mà mật khẩu được sử dụng ở mọi nơi. Khi bạn đăng nhập vào một tài khoản, bạn nhập mật khẩu để xác minh danh tính.
Vậy làm sao để mật khẩu thực sự an toàn trước tin tặc? “Salting” có giữ cho mật khẩu của bạn an toàn không?
Salting là gì?
Salting là quá trình thêm các chuỗi ký tự ngẫu nhiên duy nhất vào mật khẩu trong cơ sở dữ liệu, hoặc từng mật khẩu trước khi chúng được Hashing (thường được gọi là băm – chúng ta sẽ nói đến thuật ngữ “băm” ở phần sau).
Đó là một giá trị duy nhất có thể thêm vào cuối mật khẩu, hòng tạo ra một giá trị băm khác nhau. Điều này được thực hiện để thay đổi hàm băm và làm cho mật khẩu an toàn hơn. Chuỗi ký tự được thêm vào gọi là “salt” và “salt” có thể được thêm vào trước hoặc sau mật khẩu.
Salting hoạt động như thế nào?
Khi bạn tạo tài khoản trên một trang web hoặc ứng dụng, mật khẩu sử dụng phải được lưu trữ để bạn có thể xác minh vào lần bạn truy cập tiếp theo. Nhưng mật khẩu này không thể được lưu trữ dưới dạng văn bản thuần túy, tức là không đi kèm bất kỳ hình thức định dạng hoặc mã hóa nào. Mật khẩu phải được băm để ngăn tin tặc dễ dàng truy cập vào tài khoản của bạn.
Chẳng hạn bạn đang đăng nhập vào trang web bằng mật khẩu: myPassword. Trước khi mật khẩu được băm, một giá trị “salt” sẽ được thêm vào nó. Nếu giá trị này cho trang web hoặc người dùng cụ thể đó là “MUOrocks%”, thì mật khẩu sau khi “rắc muối” của bạn sẽ trở thành “myPasswordMUOrocks%”.
Mật khẩu đã được tạo với salt sau đó được băm và lưu trữ trong cơ sở dữ liệu cùng với các phép băm mật khẩu khác.
Sự khác biệt giữa mã hóa, băm và Salting là gì?
Salting, băm và mã hóa là các kỹ thuật bảo mật được sử dụng hàng ngày trên các trang web và hệ thống. Chúng là những thuật ngữ mật mã cần thiết để bảo mật mật khẩu, nhưng có sự khác nhau nhất định.
1. Mã hóa
Mã hóa là dạng mật mã trong đó thông tin được mã hóa bằng toán học, chỉ có người có khóa được ủy quyền mới có thể truy cập và giải mã. Thông tin cần bảo mật được chuyển từ bản thuần túy sang dạng mã hóa, bằng cách sử dụng một thuật toán làm cho thông tin không thể giải mã đối với người dùng trái phép. Mã hóa là một quá trình 2 chiều, có nghĩa dữ liệu được mã hóa có thể đảo ngược và đọc nhưng chỉ bởi khóa giải mã phù hợp.
2. Băm
Hashing – Băm, là quá trình chuyển đổi đầu vào gồm các chữ cái và ký tự có kích thước không cố định để tạo đầu ra có kích thước cố định. Quá trình này được thực hiện bằng cách sử dụng các công thức toán học như các hàm băm. Về cơ bản, nó đang xáo trộn thông tin bằng cách sử dụng một thuật toán.
Băm là chức năng mật mã một chiều và không giống như thuật toán mã hóa, nó không thể đảo ngược được. Cách duy nhất bạn có thể giải mã một hàm băm là so sánh nó với một hàm băm khác có giá trị về bản ký tự đã biết.
Băm thường được sử dụng để xác thực danh tính. Khi bạn đăng nhập vào một trang web và nhập mật khẩu, mã băm của mật khẩu sẽ được so sánh với mã băm gắn với tài khoản của bạn. Nếu 2 hàm băm giống nhau, bạn sẽ được cấp quyền truy cập vào trang web.
3. Salting
Salting là một lớp bảo mật khác được thêm vào băm để làm cho băm an toàn hơn, các chuỗi ký tự duy nhất được thêm vào mật khẩu trước khi băm để thay đổi hàm băm hoàn toàn.
Tại sao cần thêm “Salt” vào mật khẩu?
Salting đóng vai trò quan trọng trong bảo mật, nó giúp giảm nguy cơ bị tin tặc ăn cắp mật khẩu. Nếu chỉ lưu trữ mật khẩu trong cơ sở dữ liệu là một phương pháp rất không an toàn. Bất kỳ tin tặc lành nghề nào cũng có thể xâm nhập vào cơ sở dữ liệu và giành quyền truy cập vào tất cả các tài khoản trên trang web.
Sau đó, các hàm băm sẽ tiếp tục cải thiện tính bảo mật của mật khẩu. Tin tặc thường sử dụng các cuộc tấn công brute-force, tấn công từ điển, phun mật khẩu hay dùng bảng cầu vồng (một hàm băm được sử dụng trong mật mã để lưu trữ dữ liệu quan trọng như mật khẩu trong cơ sở dữ liệu), cùng một số phương pháp khác để lấy thông tin đăng nhập. Vì thế tác dụng của Salting gồm:
1. Làm mạnh các mật khẩu yếu
Salting bổ sung một mức độ bảo mật khác cho trang web, thay đổi hoàn toàn hàm băm, làm cho mật khẩu rất khó để đảo ngược và việc dùng bảng cầu vồng của tin tặc trở nên vô dụng.
Chẳng hạn như bạn thấy ở bảng trên, các hàm băm hoàn toàn khác nhau. Mật khẩu vẫn được giữ nguyên khi bạn truy cập trang web, nhưng hàm băm an toàn hơn để chống lại việc khai thác từ tin tặc.
Salting đặc biệt quan trọng khi người dùng sử dụng các mật khẩu yếu và phổ biến như “password” hoặc “12345”, làm giảm rủi ro do mật khẩu yếu.
2. Làm cho mã băm mật khẩu trở nên đặc biệt
Salting cũng rất quan trọng khi hai hoặc nhiều người dùng có cùng mật khẩu. Thêm các gia vị “Salt” ngẫu nhiên khác nhau vào mỗi mật khẩu sẽ giúp tạo ra mỗi mật khẩu duy nhất. Chẳng hạn nếu mật khẩu của bạn iL0veCh3ese! và một người dùng khác cũng có mật khẩu đó, thì Salting có thể khiến các mã băm mật khẩu trở thành duy nhất.
Như bạn thấy ở bảng trên, mặc dù cùng là mật khẩu nhưng sử dụng các hàm băm hoàn toàn khác nhau thì sẽ là 2 trạng thái đăng nhập hoàn toàn khác nhau.
Chọn một giá trị “Salt” tốt để tăng sức mạnh bảo mật
Chọn Salting tốt cũng quan trọng như chọn mật khẩu, bởi nó là duy nhất. Salting bạn chọn cho trang web của mình không thể quá dễ đoán được, như tên của trang web hoặc người dùng. Một điểm cộng khác là sử dụng các chuỗi dài.
Cách tốt nhất là sử dụng máy tạo Salting, điều này giúp bạn tạo ra các giá trị Salting mạnh và ngẫu nhiên để tăng tính bảo mật. Bên cạnh đó, không nên lưu trữ các giá trị Salting cùng với cơ sở dữ liệu mật khẩu. Không sử dụng các “Salt” giống nhau cho tất cả các mật khẩu. Nếu thay đổi mật khẩu thì nên thay đổi giá trị “Salt” đi kèm.
Salting thực sự có hiệu quả trong việc tăng cường an ninh và bảo mật của mật khẩu. Khi bạn nhập mật khẩu, hacker sẽ không thể bẻ khóa mật khẩu bằng bảng từ điển hoặc bảng cầu vồng, Brute cũng vô ích trước các thuật toán băm hoàn hảo.