Tại sao bạn nên lo lắng bất cứ khi nào cơ sở dữ liệu mật khẩu của dịch vụ bị rò rỉ
Cơ sở dữ liệu mật khẩu của chúng tôi đã bị đánh cắp ngày hôm qua. Nhưng đừng lo lắng: mật khẩu của bạn đã được mã hóa. Chúng tôi thường thấy các tuyên bố như thế này trực tuyến, bao gồm cả ngày hôm qua, từ Yahoo. Nhưng chúng ta có nên thực sự có những đảm bảo này theo mệnh giá?
Thực tế là cơ sở dữ liệu mật khẩu thỏa hiệp là một mối quan tâm, bất kể làm thế nào một công ty có thể cố gắng để quay nó. Nhưng có một vài điều bạn có thể làm để tự bảo vệ mình, cho dù thực tiễn bảo mật của công ty có tệ đến đâu.
Mật khẩu nên được lưu trữ như thế nào
Đây là cách các công ty nên lưu trữ mật khẩu trong một thế giới lý tưởng: Bạn tạo một tài khoản và cung cấp mật khẩu. Thay vì tự lưu trữ mật khẩu, dịch vụ sẽ tạo ra một hàm băm xác thực từ mật khẩu. Đây là một dấu vân tay độc đáo không thể đảo ngược. Ví dụ: mật khẩu mật khẩu, mật khẩu, có thể biến thành một cái gì đó trông giống như mật khẩu 4jfh75to4sud7gh93247g Khi bạn nhập mật khẩu để đăng nhập, dịch vụ sẽ tạo ra một hàm băm từ nó và kiểm tra xem giá trị băm có khớp với giá trị được lưu trữ trong cơ sở dữ liệu hay không. Dịch vụ không bao giờ lưu mật khẩu của bạn vào đĩa.
Để xác định mật khẩu thực tế của bạn, kẻ tấn công có quyền truy cập vào cơ sở dữ liệu sẽ phải tính toán trước các giá trị băm cho các mật khẩu phổ biến và sau đó kiểm tra xem chúng có tồn tại trong cơ sở dữ liệu hay không. Những kẻ tấn công làm điều này với các bảng tra cứu - danh sách băm lớn khớp với mật khẩu. Băm sau đó có thể được so sánh với cơ sở dữ liệu. Ví dụ, một kẻ tấn công sẽ biết hàm băm cho mật khẩu của mật khẩu1 và sau đó xem có tài khoản nào trong cơ sở dữ liệu đang sử dụng hàm băm đó không. Nếu có, kẻ tấn công biết mật khẩu của họ là mật khẩu1.
Để ngăn chặn điều này, các dịch vụ nên băm muối muối băm của họ. Thay vì tạo một hàm băm từ chính mật khẩu, họ thêm một chuỗi ngẫu nhiên vào mặt trước hoặc cuối mật khẩu trước khi băm nó. Nói cách khác, một người dùng sẽ nhập mật khẩu Mật khẩu mật khẩu và dịch vụ sẽ thêm muối và băm mật khẩu trông giống mật khẩu của Mật khẩu35s2dg. Mỗi tài khoản người dùng nên có một loại muối riêng sẽ có một giá trị băm khác nhau cho mật khẩu của họ trong cơ sở dữ liệu. Ngay cả khi nhiều tài khoản sử dụng mật khẩu, mật khẩu1 mật khẩu1, họ sẽ có các giá trị băm khác nhau do các giá trị muối khác nhau. Điều này sẽ đánh bại một kẻ tấn công đã cố gắng tính toán trước băm cho mật khẩu. Thay vì có thể tạo các giá trị băm áp dụng cho mọi tài khoản người dùng trong toàn bộ cơ sở dữ liệu cùng một lúc, họ sẽ phải tạo các giá trị băm duy nhất cho mỗi tài khoản người dùng và muối duy nhất của nó. Điều này sẽ mất nhiều thời gian tính toán và bộ nhớ.
Đây là lý do tại sao các dịch vụ thường nói không phải lo lắng. Một dịch vụ sử dụng các quy trình bảo mật thích hợp sẽ nói rằng họ đang sử dụng băm mật khẩu muối. Nếu họ chỉ đơn giản nói rằng mật khẩu được băm, thì đó là điều đáng lo ngại hơn. LinkedIn đã băm mật khẩu của họ, ví dụ, nhưng họ đã không muối chúng - vì vậy đó là một vấn đề lớn khi LinkedIn mất 6,5 triệu mật khẩu băm vào năm 2012.
Thực hành mật khẩu xấu
Đây không phải là điều khó thực hiện nhất, nhưng nhiều trang web vẫn quản lý để làm hỏng nó theo nhiều cách khác nhau:
- Lưu trữ mật khẩu trong văn bản thuần túy: Thay vì bận tâm đến việc băm, một số người phạm tội tồi tệ nhất có thể chỉ cần chuyển mật khẩu ở dạng văn bản đơn giản vào cơ sở dữ liệu. Nếu một cơ sở dữ liệu như vậy bị xâm phạm, mật khẩu của bạn rõ ràng bị xâm phạm. Không quan trọng họ mạnh đến mức nào.
- Băm mật khẩu mà không cần muối: Một số dịch vụ có thể băm mật khẩu và từ bỏ ở đó, chọn không sử dụng muối. Cơ sở dữ liệu mật khẩu như vậy sẽ rất dễ bị tổn thương đối với các bảng tra cứu. Kẻ tấn công có thể tạo băm cho nhiều mật khẩu và sau đó kiểm tra xem chúng có tồn tại trong cơ sở dữ liệu hay không - chúng có thể làm điều này cho mọi tài khoản cùng một lúc nếu không sử dụng muối.
- Tái sử dụng muối: Một số dịch vụ có thể sử dụng một loại muối, nhưng chúng có thể sử dụng lại cùng loại muối cho mỗi mật khẩu tài khoản người dùng. Điều này là vô nghĩa - nếu cùng một loại muối được sử dụng cho mọi người dùng, hai người dùng có cùng mật khẩu sẽ có cùng một hàm băm.
- Sử dụng muối ngắn: Nếu muối chỉ có một vài chữ số được sử dụng, có thể tạo các bảng tra cứu kết hợp mọi muối có thể. Ví dụ: nếu một chữ số duy nhất được sử dụng làm muối, kẻ tấn công có thể dễ dàng tạo danh sách băm kết hợp mọi muối có thể.
Các công ty sẽ không luôn kể cho bạn toàn bộ câu chuyện, vì vậy ngay cả khi họ nói mật khẩu đã được băm (hoặc băm và ướp muối), họ có thể không sử dụng các thực tiễn tốt nhất. Luôn luôn cảnh giác.
Mối quan tâm khác
Có khả năng giá trị muối cũng có trong cơ sở dữ liệu mật khẩu. Điều này không tệ - nếu một giá trị muối duy nhất được sử dụng cho mỗi người dùng, những kẻ tấn công sẽ phải tiêu tốn một lượng lớn năng lượng CPU để phá vỡ tất cả các mật khẩu đó.
Trong thực tế, rất nhiều người sử dụng mật khẩu rõ ràng nên có thể dễ dàng xác định mật khẩu của nhiều tài khoản người dùng. Ví dụ: nếu kẻ tấn công biết hàm băm của bạn và họ biết muối của bạn, họ có thể dễ dàng kiểm tra xem bạn có đang sử dụng một số mật khẩu phổ biến nhất không.
Nếu kẻ tấn công lấy nó ra cho bạn và muốn bẻ khóa mật khẩu của bạn, họ có thể làm điều đó với lực lượng vũ trang miễn là họ biết giá trị muối - điều mà họ có thể làm. Với quyền truy cập ngoại tuyến vào cơ sở dữ liệu mật khẩu, kẻ tấn công có thể sử dụng tất cả các cuộc tấn công vũ phu mà chúng muốn.
Dữ liệu cá nhân khác cũng có khả năng bị rò rỉ khi cơ sở dữ liệu mật khẩu bị đánh cắp: Tên người dùng, địa chỉ email, v.v. Trong trường hợp rò rỉ Yahoo, các câu hỏi và câu trả lời bảo mật cũng bị rò rỉ - điều mà như chúng ta đều biết, giúp đánh cắp quyền truy cập vào tài khoản của ai đó dễ dàng hơn.
Giúp tôi với?
Dù dịch vụ nói gì khi cơ sở dữ liệu mật khẩu của nó bị đánh cắp, tốt nhất bạn nên cho rằng mọi dịch vụ đều hoàn toàn không đủ năng lực và hành động tương ứng.
Đầu tiên, không sử dụng lại mật khẩu trên nhiều trang web. Sử dụng trình quản lý mật khẩu tạo mật khẩu duy nhất cho mỗi trang web. Nếu kẻ tấn công quản lý phát hiện ra rằng mật khẩu của bạn cho một dịch vụ là Số 43 ^ tSd% 7uho2 # 3 và bạn chỉ sử dụng mật khẩu đó trên một trang web cụ thể, họ đã không học được gì hữu ích. Nếu bạn sử dụng cùng một mật khẩu ở mọi nơi, họ có thể truy cập các tài khoản khác của bạn. Đây là cách nhiều tài khoản của mọi người trở thành bị hack.
Nếu một dịch vụ bị xâm phạm, hãy nhớ thay đổi mật khẩu bạn sử dụng ở đó. Bạn cũng nên thay đổi mật khẩu trên các trang web khác nếu bạn sử dụng lại nó ở đó - nhưng bạn không nên làm điều đó ngay từ đầu.
Bạn cũng nên cân nhắc sử dụng xác thực hai yếu tố, điều này sẽ bảo vệ bạn ngay cả khi kẻ tấn công biết được mật khẩu của bạn.
Điều quan trọng nhất là không sử dụng lại mật khẩu. Cơ sở dữ liệu mật khẩu bị xâm phạm không thể làm tổn thương bạn nếu bạn sử dụng một mật khẩu duy nhất ở mọi nơi - trừ khi họ lưu trữ một thứ khác quan trọng trong cơ sở dữ liệu, như số thẻ tín dụng của bạn.
Tín dụng hình ảnh: Marc Falardeau trên Flickr, Wikimedia Commons