Cơ bản về mã hóa mật khẩu

Cơ bản về mã hóa mật khẩu
  1. Tại sao chúng ta cần mật khẩu được mã hóa?
  2. Kiến thức cơ bản về băm mật khẩu
  3. Giới thiệu về bcrypt
  4. Tất nhiên, mọi lập trình viên không còn xa lạ với mã hóa mật khẩu. Đây là một bước quan trọng trong việc giữ an toàn cho thông tin người dùng của chúng tôi ngay cả khi cơ sở dữ liệu của chúng tôi bị xâm phạm. Đã có rất nhiều trường hợp ứng dụng web bị rò rỉ thông tin người dùng. Điều này càng đáng lo ngại hơn nếu thông tin mật khẩu của chúng ta không được mã hóa cẩn thận. Nhiều người sử dụng cùng một mật khẩu cho hầu hết các tài khoản. Rò rỉ một mật khẩu và tất cả các tài khoản khác có nguy cơ bị đánh cắp. Vì vậy, chúng ta không bao giờ nên lưu trữ mật khẩu dưới dạng văn bản thuần túy.

    Một trong những cách phổ biến nhất để giải quyết vấn đề này là thực hiện băm mật khẩu.

    Bạn Đang Xem: Cơ bản về mã hóa mật khẩu

    Băm

    Băm mật khẩu là một phương pháp khá phổ biến để giải quyết các vấn đề về bảo mật mật khẩu. Hàm băm là một hàm một chiều cho phép chúng ta chuyển đổi mật khẩu ban đầu thành một chuỗi đại diện cho nó, không thể được giải mã ngược lại. Mỗi băm chỉ tương ứng với một mật khẩu. Chúng tôi lưu giá trị băm đã tạo trong cơ sở dữ liệu. Trong quá trình xác thực người dùng, hệ thống sẽ mã hóa nội dung do người dùng nhập vào, so sánh với cơ sở dữ liệu và đưa ra kết quả.

    Ví dụ: “helloworld” băm bằng thuật toán băm md5 cho kết quả sau “68e109f0f40ca72a15e05cc22786f8e6” .

    Với công nghệ máy tính ngày nay, việc giải mã hàm băm là không thể. Tuy nhiên, nếu chúng ta không cẩn thận, nếu kẻ giả mạo có hàm băm, anh ta vẫn có thể lấy được mật khẩu theo một số cách. Hai phương pháp tấn công phổ biến là:

    • Tấn công bảng cầu vồng (tấn công sử dụng từ điển mật khẩu được tính toán trước).
    • Tấn công vũ lực .
    • Xem Thêm : BẢNG MÀU RAL CƠ BẢN THƯỜNG DÙNG

      Để giải quyết vấn đề này, chúng ta sẽ tìm hiểu cách ngâm muối kéo dài .

      Thêm muối

      Như đã đề cập ở trên, băm mật khẩu thôi là chưa đủ, chúng tôi sử dụng các muối để xử lý các cuộc tấn công trước máy tính. Salting là hành động thêm một phần dữ liệu vào mật khẩu ban đầu trước khi băm.

      Muối rất đơn giản nhưng rất mạnh mẽ. Khi mật khẩu ban đầu dài hơn, độ phức tạp của mật khẩu tăng lên rất nhiều, do đó, độ phức tạp của mật khẩu đạt đến một cấp độ hoàn toàn mới. Bằng cách thêm muối, chúng tôi làm cho tất cả các cuộc tấn công trước máy tính trở nên vô dụng. Mỗi tài khoản người dùng khi tạo sẽ được khởi tạo khi đăng ký với một chuỗi muối ngẫu nhiên duy nhất. Hai tài khoản có cùng mật khẩu sẽ không có cùng giá trị băm. Vì chỉ dùng để giải bài toán tính toán trước nên không cần tạo một hệ thống riêng để lưu trữ muối, thường thì chúng ta sẽ giữ trực tiếp trong cùng một bảng.

      Kéo dài

      Ngoài các đòn tấn công bằng bàn cầu vồng, bạo lực là một hình thức tấn công khá phổ biến. Nếu các phép tính không quá phức tạp, kẻ tấn công có thể nhanh chóng tập hợp và thử tất cả các trường hợp để tìm ra mật khẩu người dùng. Ở đây, chúng ta sẽ đi sâu vào khái niệm kéo dài.

      Kéo dài là một phương pháp tăng độ phức tạp của thuật toán băm, khiến cho lực lượng vũ phu không thể xảy ra trong mọi trường hợp. Để đạt được điều này, chúng tôi thường lặp lại quá trình băm hàng nghìn lần. Điều này khiến người dùng mất nhiều thời gian hơn để biết mật khẩu nhưng lại có nhiều thời gian hơn để kẻ tấn công tìm ra kết quả. Với một mật khẩu an toàn, gần như không thể buộc họ tìm thấy chúng.

      Xem Thêm : Siêu thị tài chính (Financial Supermarket) là gì? Lợi ích đối với ngân hàng

      bcrypt là một hàm mật mã được thiết kế bởi niels provos và david mazières dựa trên thuật toán mã hóa blowfish, được giới thiệu lần đầu tiên tại usenix vào năm 1999. Nó là sự kết hợp của cả ba khái niệm. Chúng ta vừa tìm hiểu về “băm”, “kéo dài” và “ướp muối”.

      Hàm băm của bcrypt thường có dạng như sau:

      Ví dụ: “helloworld” sử dụng bcrypt sẽ mang lại lợi nhuận

      Trong đó: 2y: Thuật toán băm 10: Chi phí (2 ^ 10 hoặc 1024 chu kỳ) rt2pnlx7aag2edhy8sgdiu: 16 byte (128 bit) được mã hóa muối base64 đến 22 ký tự. nndkeilb.kutzsdvokgl2x / ter1tkzg: băm mã hóa base64 24 byte (192 bit) thành 31 ký tự.

      Vì vậy, bằng cách sử dụng hàm băm ở trên, mật khẩu của chúng tôi sẽ chạy tổng cộng từ 2 đến 10 lần (1024 vòng) với muối rt2pnlx7aag2edhy8sgdiu, mật khẩu “helloworld” kết hợp với thuật toán mã hóa blowfish $ 2y $ để nhận được kết quả như hình trên .

      Vì vậy, ở đây chúng ta sẽ tìm hiểu lý do tại sao chúng ta mã hóa mật khẩu, các phương pháp tấn công phổ biến và cách ngăn chặn nó bằng cách sử dụng muối và kéo dài, và cuối cùng, chúng ta đi đến phần giới thiệu hàm băm bcrypt để xem việc sử dụng các khái niệm trên trong thực tế. Đây là bài viết đầu tiên của mình trên viblo, các bạn góp ý nếu có sai sót gì nhé.

Nguồn: https://anhvufood.vn
Danh mục: Kinh Nghiệm

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *