Mã hóa, băm, muối – những gì khác biệt?

Mã hóa, băm, muối - sự khác biệt là gì

Mã hóa, băm và muối là tất cả các kỹ thuật liên quan, nhưng mỗi quy trình này có các thuộc tính cho vay chúng cho các mục đích khác nhau.

Nói ngắn gọn, mã hóa liên quan đến mã hóa dữ liệu để những người có khóa chỉ có thể truy cập được. Điều này bảo vệ nó khỏi các bên trái phép.

Băm mật mã liên quan đến các tính toán không thể đảo ngược. Các hàm này có một số thuộc tính đặc biệt giúp chúng hữu ích cho chữ ký số và các hình thức xác thực khác.

Salting liên quan đến việc thêm dữ liệu ngẫu nhiên trước khi nó được đưa vào qua hàm băm mật mã. Nó chủ yếu được sử dụng để giữ mật khẩu an toàn trong quá trình lưu trữ, nhưng nó cũng có thể được sử dụng với các loại dữ liệu khác.

Mã hóa là gì?

Nói một cách đơn giản, mã hóa là quá trình sử dụng mã để ngăn các bên khác truy cập thông tin. Khi dữ liệu đã được mã hóa, chỉ những người có khóa mới có thể truy cập được. Chừng nào một hệ thống đủ phức tạp được sử dụng và nó sử dụng đúng cách, thì kẻ tấn công sẽ không thể nhìn thấy dữ liệu.

Dữ liệu được mã hóa bằng các thuật toán mã hóa, còn được gọi là mật mã. Một trong những điểm khác biệt quan trọng nhất giữa mã hóa và băm (mà chúng ta sẽ nói đến sau) là mã hóa được thiết kế để đi cả hai chiều. Điều này có nghĩa là một khi thứ gì đó đã được mã hóa bằng khóa, nó cũng có thể được giải mã.

Điều này làm cho mã hóa trở nên hữu ích trong một loạt các tình huống, chẳng hạn như để lưu trữ hoặc truyền thông tin một cách an toàn. Khi dữ liệu đã được mã hóa đúng cách, nó được coi là an toàn và chỉ có thể được truy cập bởi những người có khóa. Loại phổ biến nhất được biết đến là mã hóa khóa đối xứng, bao gồm sử dụng cùng một khóa trong cả quá trình mã hóa và giải mã.

Mã hóa khóa công khai phức tạp hơn một chút vì một khóa có sẵn công khai được sử dụng để mã hóa dữ liệu, trong khi khóa riêng phù hợp được sử dụng để giải mã nó. Tính năng này cho phép những người chưa bao giờ gặp nhau giao tiếp an toàn. Mã hóa khóa công khai cũng là một phần quan trọng của chữ ký số, được sử dụng để xác thực tính xác thực và tính toàn vẹn của dữ liệu và tin nhắn.

Xem thêm: Các loại mã hóa phổ biến được giải thích

Các thuật toán mã hóa phổ biến

  • Mật mã Caesar – Đây là một mã đơn giản liên quan đến mỗi chữ cái được dịch chuyển một số vị trí cố định. Nếu một mật mã Caesar có số lần thay đổi là ba, thì mỗi người sẽ trở thành một người chơi, mỗi người bẻ khóa sẽ trở thành một người khác, mọi người sẽ trở thành một người yêu thích, v.v. Nó được đặt theo tên Julius Caesar, người đầu tiên được ghi nhận sử dụng chương trình này.
  • AES – Tiêu chuẩn mã hóa nâng cao là một thuật toán khóa đối xứng phức tạp, đảm bảo một phần quan trọng trong giao tiếp hiện đại của chúng tôi. Nó bao gồm một số bước tinh vi và thường được sử dụng để mã hóa dữ liệu trong TLS, ứng dụng nhắn tin, khi nghỉ ngơi và trong nhiều tình huống khác. Chúng tôi đi sâu hơn vào mã hóa AES ở đây.
  • 3DES – Triple DES dựa trên thuật toán DES. Khi tăng sức mạnh máy tính làm cho DES không an toàn, 3DES được phát triển như một thuật toán củng cố. Trong 3DES, dữ liệu được chạy qua thuật toán DES ba lần thay vì chỉ một lần, điều này khiến cho việc bẻ khóa trở nên khó khăn hơn. 3DES có thể được sử dụng cho nhiều thứ giống như AES, nhưng chỉ những triển khai nhất định mới được coi là an toàn.
  • RSA – Mật mã Rivest-Shamir-Adeld là hình thức đầu tiên của mật mã khóa công khai được sử dụng rộng rãi. Nó cho phép các thực thể giao tiếp một cách an toàn ngay cả khi họ gặp nhau hoặc có cơ hội trao đổi khóa. Nó có thể được sử dụng trong một số giao thức bảo mật khác nhau, chẳng hạn như PGP và TLS. Chúng tôi có một hướng dẫn chuyên sâu về mã hóa RSA tại đây.
  • ECDSA – Thuật toán chữ ký số Elliptic Curve là một biến thể của DSA sử dụng mật mã đường cong elliptic. Là một thuật toán khóa công khai, nó có thể được áp dụng trong các tình huống tương tự như RSA, mặc dù nó ít được thực hiện do một số vấn đề bảo mật.

Mã hóa trong hành động

Để cung cấp cho bạn ý tưởng về cách mã hóa hoạt động trong thực tế, chúng tôi sẽ sử dụng mật mã Caesar làm ví dụ. Nếu chúng tôi muốn mã hóa một tin nhắn của “Ăn thôiCó một sự thay đổi của ba ngườiLMùi sẽ trở thành một người VikingÔi“, các “eMùi sẽ trở thành một người Vikingh” và như thế. Điều này cung cấp cho chúng tôi một thông điệp được mã hóa về:

Ohw tíchv hdw

Để giải mã tin nhắn, người nhận sẽ phải biết rằng thuật toán mã hóa liên quan đến sự thay đổi ba, sau đó cuộn lại từng chữ cái theo ba vị trí. Nếu chúng ta muốn, chúng ta có thể thay đổi mã bằng cách dịch chuyển từng chữ cái theo một số khác nhau. Chúng ta thậm chí có thể sử dụng một thuật toán phức tạp hơn nhiều.

Một ví dụ là AES. Nếu chúng tôi sử dụng máy tính trực tuyến AES 128 bit để mã hóaĂn thôiCó một chìa khóa của1234Anh, nó cho chúng ta:

FeiUVFnIpb9d0cbXP / Ybrw ==

Bản mã này chỉ có thể được giải mã bằng khóa của1234Mùi. Nếu chúng ta sử dụng một khóa phức tạp hơn và giữ nó ở chế độ riêng tư, thì chúng ta có thể xem xét dữ liệu an toàn từ những kẻ tấn công.

Băm là gì?

Hàm băm mật mã là một loại tính toán một chiều đặc biệt. Họ lấy một chuỗi dữ liệu có kích thước bất kỳ và luôn đưa ra một đầu ra có độ dài được xác định trước. Đầu ra này được gọi là băm, Giá trị băm hoặc là tóm lược thông điệp. Do các hàm này không sử dụng khóa, nên kết quả cho một đầu vào đã cho luôn giống nhau.

Nó không quan trọng nếu đầu vào của bạn là toàn bộ Chiến tranh và hòa bình hoặc đơn giản là hai chữ cái, kết quả của hàm băm sẽ luôn có cùng độ dài. Các hàm băm có một số thuộc tính khác nhau làm cho chúng hữu ích:

  • Chúng là các hàm một chiều – Điều này có nghĩa là không có cách thực tế để tìm ra đầu vào ban đầu là gì từ một giá trị băm nhất định.
  • Nó không có khả năng hai đầu vào có cùng giá trị băm – Mặc dù hai đầu vào khác nhau có thể mang lại cùng một giá trị băm, nhưng khả năng điều này xảy ra rất nhỏ đến mức chúng tôi không thực sự lo lắng về điều đó. Đối với mục đích thực tế, giá trị băm có thể được coi là duy nhất.
  • Đầu vào giống nhau luôn mang lại kết quả giống nhau – Mỗi khi bạn đưa cùng một thông tin vào một hàm băm nhất định, nó sẽ luôn cung cấp cùng một đầu ra.
  • Ngay cả thay đổi nhỏ nhất cũng cho kết quả hoàn toàn khác – Nếu thậm chí một ký tự bị thay đổi, giá trị băm sẽ khác nhau rất nhiều.

Băm được sử dụng để làm gì?

Các hàm băm có thể có một số thuộc tính thú vị, nhưng chúng ta thực sự có thể làm gì với chúng? Có thể tạo ra một đầu ra có kích thước cố định duy nhất cho đầu vào có độ dài bất kỳ có vẻ như không có gì hơn một mánh khóe của bên khó hiểu, nhưng các hàm băm thực sự có một số cách sử dụng.

Chúng là thành phần cốt lõi của chữ ký số, đó là một khía cạnh quan trọng của việc xác minh tính xác thực và tính toàn vẹn trên internet. Mã xác thực tin nhắn băm (HMAC) cũng sử dụng các hàm băm để đạt được kết quả tương tự.

Hàm băm mật mã cũng có thể được sử dụng như hàm băm bình thường. Trong các kịch bản này, chúng có thể đóng vai trò là tổng kiểm tra để xác minh tính toàn vẹn dữ liệu, như các thuật toán vân tay loại bỏ dữ liệu trùng lặp hoặc để tạo các bảng băm để lập chỉ mục dữ liệu.

Hàm băm mật mã phổ biến

  • MD5 Đây là một hàm băm được xuất bản lần đầu tiên vào năm 1991 bởi Ron Rivest. Bây giờ nó được coi là không an toàn và không nên được sử dụng cho mục đích mật mã. Mặc dù vậy, nó vẫn có thể được sử dụng để kiểm tra tính toàn vẹn của dữ liệu.
  • SHA-1 – Thuật toán Hash an toàn 1 đã được sử dụng từ năm 1995, nhưng đã được coi là an toàn kể từ năm 2005, khi một số cuộc tấn công va chạm thành công đã diễn ra. Hiện tại nên thực hiện SHA-2 hoặc SHA-3.
  • SHA-2 – Đây là một nhóm các hàm băm đóng vai trò là người kế thừa cho SHA-1. Các chức năng này chứa nhiều cải tiến, giúp chúng an toàn trong nhiều ứng dụng. Mặc dù vậy, SHA-256 và SHA-512 dễ bị tấn công kéo dài, do đó, có một số tình huống tốt nhất là thực hiện SHA-3.
  • SHA-3 – SHA-3 là thành viên mới nhất của gia đình Thuật toán băm an toàn, nhưng nó được xây dựng hoàn toàn khác với các phiên bản trước. Ở giai đoạn này, nó chưa thay thế SHA-2, mà chỉ cung cấp cho các nhà mật mã một tùy chọn khác có thể cung cấp bảo mật được cải thiện trong một số tình huống nhất định.
  • RIPEMD – RIPEMD là một họ chức năng khác được phát triển bởi cộng đồng học thuật. Nó dựa trên nhiều ý tưởng từ MD4 (tiền thân MD5) và không bị hạn chế bởi bất kỳ bằng sáng chế nào. RIPEMD-160 vẫn được coi là tương đối an toàn, nhưng nó đã không được áp dụng rộng rãi.
  • Xoáy nước – Whirlpool là một hàm băm từ họ mật mã khối vuông. Nó dựa trên sự sửa đổi của AES và không phải chịu bất kỳ bằng sáng chế nào. Nó được coi là an toàn, nhưng hơi chậm hơn so với một số lựa chọn thay thế, dẫn đến việc áp dụng hạn chế.

Chức năng băm trong hành động

Bây giờ bạn đã hiểu hàm băm là gì, đã đến lúc đưa chúng vào thực tế. Nếu chúng ta đặt cùng một văn bản của thìĂn thôiCho vào một máy tính trực tuyến SHA-256, nó cho chúng ta:

5c79ab8b36c4c0f8566cee2c8e47135f2536d4f715a22c99fa099a04edbbb6f2

Nếu chúng ta thay đổi thậm chí một ký tự theo một vị trí, nó sẽ thay đổi toàn bộ hàm băm. Một lỗi đánh máyMet ănMang lại kết quả hoàn toàn khác:

4be9316a71efc7c152f4856261efb3836d09f611726783bd1fef085bc81b1342

Không giống như mã hóa, chúng ta có thể đặt giá trị băm này thông qua hàm ngược lại để lấy đầu vào của chúng ta một lần nữa. Mặc dù các hàm băm này có thể được sử dụng giống như mã hóa, nhưng các thuộc tính của chúng làm cho chúng trở thành một phần có giá trị của chữ ký số và nhiều ứng dụng khác.

Hàm băm và mật khẩu

Các hàm băm có một cách sử dụng phổ biến khác mà chúng ta đã đề cập đến. Chúng cũng là một thành phần chính của giữ mật khẩu của chúng tôi an toàn trong quá trình lưu trữ.

Bạn có thể có hàng tá tài khoản trực tuyến với mật khẩu. Đối với mỗi tài khoản này, mật khẩu của bạn cần được lưu trữ ở đâu đó. Làm thế nào để đăng nhập của bạn được xác minh nếu trang web didn có bản sao mật khẩu của riêng bạn?

Các công ty như Facebook hoặc Google lưu trữ hàng tỷ mật khẩu người dùng. Nếu các công ty này giữ mật khẩu dưới dạng văn bản gốc, thì bất kỳ kẻ tấn công nào có thể truy cập vào cơ sở dữ liệu mật khẩu đều có thể truy cập vào mọi tài khoản họ tìm thấy.

Đây sẽ là một thảm họa bảo mật nghiêm trọng, cho cả công ty và người dùng. Nếu mọi mật khẩu đều bị kẻ tấn công tiếp xúc, thì tất cả tài khoản và dữ liệu người dùng của họ sẽ gặp nguy hiểm.

Cách tốt nhất để ngăn chặn điều này xảy ra là để không tự lưu trữ mật khẩu mà thay vào đó là các giá trị băm cho mật khẩu. Như chúng ta đã thảo luận trong phần trước, các hàm băm mật mã hoạt động theo một hướng, tạo ra một đầu ra có kích thước cố định không khả thi để đảo ngược.

Nếu một tổ chức lưu trữ hàm băm của mật khẩu thay vì mật khẩu, nó có thể xác minh rằng hai giá trị băm khớp với nhau khi người dùng đăng nhập. Người dùng nhập mật khẩu của họ, sau đó được băm. Băm này sau đó được so sánh với hàm băm mật khẩu được lưu trữ trong cơ sở dữ liệu. Nếu hai giá trị băm khớp nhau, thì mật khẩu chính xác đã được nhập và người dùng được cấp quyền truy cập.

Thiết lập này có nghĩa là mật khẩu không bao giờ phải lưu trữ. Nếu kẻ tấn công xâm nhập vào cơ sở dữ liệu, thì tất cả những gì họ sẽ tìm thấy là băm mật khẩu, thay vì mật khẩu.

Mặc dù băm mật khẩu để lưu trữ nhưng không ngăn chặn kẻ tấn công sử dụng băm để tìm ra mật khẩu, nhưng điều đó làm cho công việc của chúng trở nên khó khăn và tốn thời gian hơn đáng kể. Điều này mang đến chủ đề cuối cùng của chúng tôi, muối.

Muối là gì?

Salting thực chất là việc thêm dữ liệu ngẫu nhiên trước khi đưa vào hàm băm, và chúng được sử dụng phổ biến nhất với mật khẩu.

Cách tốt nhất để giải thích bằng cách sử dụng muối là thảo luận về lý do tại sao chúng ta cần chúng ngay từ đầu. Bạn có thể nghĩ rằng việc lưu trữ băm mật khẩu sẽ giải quyết được tất cả các vấn đề của chúng tôi, nhưng thật không may, mọi thứ phức tạp hơn thế.

Mật khẩu yếu

Rất nhiều người có mật khẩu thực sự xấu, có thể bạn cũng vậy. Vấn đề là con người có xu hướng suy nghĩ theo các mẫu có thể dự đoán và chọn mật khẩu dễ nhớ. Các mật khẩu này dễ bị tấn công từ điển, vượt qua hàng ngàn hoặc hàng triệu kết hợp mật khẩu phổ biến nhất mỗi giây, trong nỗ lực tìm mật khẩu chính xác cho tài khoản.

Nếu băm mật khẩu được lưu trữ thay thế, mọi thứ sẽ khác một chút. Khi kẻ tấn công đi qua cơ sở dữ liệu băm mật khẩu, chúng có thể sử dụng một trong hai bảng băm hoặc là bàn cầu vồng để tìm kiếm các giá trị băm phù hợp mà họ có thể sử dụng để tìm ra mật khẩu.

Bảng băm là một danh sách băm được tính toán trước cho các mật khẩu phổ biến được lưu trữ trên cơ sở dữ liệu. Họ yêu cầu nhiều công việc hơn trước thời hạn, nhưng một khi bảng đã được hoàn thành, việc tra cứu các bảng băm trong bảng sẽ nhanh hơn nhiều so với việc tính toán hàm băm cho mỗi mật khẩu có thể. Một ưu điểm khác là các bảng này có thể được sử dụng nhiều lần.

Các bảng cầu vồng tương tự như các bảng băm, ngoại trừ chúng chiếm ít không gian hơn với chi phí cho sức mạnh tính toán nhiều hơn.

Cả hai phương thức tấn công này đều trở nên thiết thực hơn nhiều nếu sử dụng mật khẩu yếu. Nếu người dùng có mật khẩu chung, thì có khả năng hàm băm cho mật khẩu sẽ nằm trong bảng băm hoặc bảng cầu vồng. Nếu đây là trường hợp, thì nó chỉ là vấn đề thời gian trước khi kẻ tấn công có quyền truy cập vào mật khẩu của người dùng..

Người dùng có thể giúp loại bỏ các cuộc tấn công này bằng cách chọn các mật khẩu dài hơn và phức tạp hơn mà ít có khả năng được lưu trữ trong các bảng. Trong thực tế, điều này không xảy ra ở bất cứ đâu gần như vậy, bởi vì người dùng có xu hướng chọn mật khẩu dễ nhớ. Như một quy tắc lỏng lẻo, những thứ dễ nhớ thường dễ bị kẻ tấn công tìm thấy.

Muối cung cấp một cách khác để giải quyết vấn đề này. Bằng cách thêm một chuỗi dữ liệu ngẫu nhiên vào mật khẩu trước khi được băm, về cơ bản nó làm cho nó phức tạp hơn, điều này cản trở cơ hội của những cuộc tấn công này thành công.

Làm thế nào muối hoạt động trong thực tế

Ví dụ: giả sử, bạn nói rằng bạn có tài khoản email và mật khẩu của bạn là1234Mùi. Khi chúng tôi sử dụng máy tính trực tuyến SHA-256, chúng tôi nhận được giá trị băm sau đây:

03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

Băm này là những gì sẽ được lưu trữ trong cơ sở dữ liệu cho tài khoản của bạn. Khi bạn nhập mật khẩu của bạn1234Già, nó được băm và sau đó giá trị được so sánh với giá trị được lưu trữ. Vì hai giá trị là như nhau, bạn sẽ được cấp quyền truy cập.

Nếu kẻ tấn công xâm nhập vào cơ sở dữ liệu, chúng sẽ có quyền truy cập vào giá trị này, cũng như tất cả các băm mật khẩu khác ở đó. Kẻ tấn công sau đó sẽ lấy giá trị băm này và tìm kiếm nó trong bảng băm được tính toán trước hoặc bảng cầu vồng. Từ Cúc 1234Một trong những mật khẩu phổ biến nhất, họ sẽ tìm thấy hàm băm phù hợp rất nhanh.

Bảng băm sẽ cho họ biết rằng:

03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

Tương ứng với:

1234

Kẻ tấn công sau đó sẽ biết rằng mật khẩu của bạn là tôn giáo1234Mùi. Sau đó, họ có thể sử dụng mật khẩu này để đăng nhập vào tài khoản của bạn.

Như bạn có thể thấy, đây là toàn bộ công việc cho kẻ tấn công. Để làm cho mọi thứ khó khăn hơn, chúng tôi thêm một muối dữ liệu ngẫu nhiên vào mật khẩu trước khi nó được băm. Salting giúp giảm đáng kể cơ hội của bảng băm và bảng cầu vồng để trả về kết quả tích cực.

Hãy để dữ liệu lấy một ký tự ngẫu nhiên gồm 16 ký tự:

H82BV63KG9SBD93B

Chúng tôi thêm nó vào mật khẩu đơn giản của chúng tôi1234Giống như vậy:

1234H82BV63KG9SBD93B

Chỉ bây giờ chúng tôi đã muối nó, chúng tôi đưa nó thông qua cùng hàm băm mà chúng tôi đã làm trước đó, trả về:

91147f7666dc80ab5902bde8b426aecdb1cbebf8603a58d79182b750c10f1303

Chắc chắn, giá trị băm này không dài hơn hoặc phức tạp hơn giá trị trước đó, nhưng đó không phải là điểm chính. Mặc dù cả hai đều có cùng chiều dài, nhưng1234H82BV63KG9SBD93BNghiêng là một mật khẩu ít phổ biến hơn, do đó, nó ít có khả năng băm của nó sẽ được lưu trữ trong bảng băm.

Mật khẩu càng ít được lưu trữ trong bảng băm thì khả năng tấn công càng ít thành công. Đây là cách thêm muối giúp băm mật khẩu an toàn hơn.

Hack toàn bộ cơ sở dữ liệu

Khi kẻ tấn công có quyền truy cập vào toàn bộ cơ sở dữ liệu băm mật khẩu, chúng không thể kiểm tra từng hàm băm đối với mỗi mục nhập. Thay vào đó, họ có thể tìm kiếm toàn bộ cơ sở dữ liệu cho các kết quả trùng khớp với bảng băm của họ. Nếu cơ sở dữ liệu đủ lớn, kẻ tấn công có thể xâm phạm một số lượng lớn tài khoản, ngay cả khi họ chỉ có tỷ lệ thành công năm phần trăm.

Nếu mật khẩu được cung cấp các muối duy nhất trước khi chúng được băm, thì điều này làm cho quá trình phức tạp hơn nhiều. Nếu các muối đủ dài, cơ hội thành công sẽ thấp hơn nhiều, điều này đòi hỏi bảng băm và bảng cầu vồng phải cực lớn để có thể tìm thấy giá trị băm phù hợp.

Một lợi thế khác của muối xuất hiện khi nhiều người dùng trong cùng một cơ sở dữ liệu có cùng một mật khẩu hoặc nếu một người dùng có cùng một mật khẩu cho nhiều tài khoản. Nếu mật khẩu băm đã được kích hoạt trước đó, thì kẻ tấn công có thể so sánh các giá trị băm và xác định rằng bất kỳ tài khoản nào có cùng giá trị băm cũng chia sẻ cùng một mật khẩu.

Điều này giúp tin tặc dễ dàng nhắm mục tiêu các giá trị băm phổ biến nhất sẽ mang lại cho họ phần thưởng lớn nhất. Nếu mật khẩu được xử lý trước, thì các giá trị băm sẽ khác ngay cả khi sử dụng cùng một mật khẩu.

Điểm yếu muối tiềm năng

Salting mất hiệu quả nếu nó được thực hiện không chính xác. Hai vấn đề phổ biến nhất xảy ra khi muối quá ngắn hoặc nếu chúng là aren duy nhất cho mỗi mật khẩu. Các muối ngắn hơn vẫn dễ bị tấn công bởi bảng cầu vồng, bởi vì chúng không tạo ra băm kết quả đủ hiếm.

Nếu muối được sử dụng lại cho mỗi mật khẩu băm và muối được phát hiện, việc tìm ra từng mật khẩu trong cơ sở dữ liệu sẽ đơn giản hơn nhiều. Sử dụng cùng một loại muối cũng có nghĩa là bất kỳ ai có cùng mật khẩu sẽ có cùng hàm băm.

Các thuật toán tạo muối phổ biến

Nên sử dụng các hàm băm bình thường để lưu trữ mật khẩu. Thay vào đó, một số chức năng đã được thiết kế với các tính năng cụ thể giúp tăng cường bảo mật. Chúng bao gồm Argon2, tiền điện tử, bcrypt và PBKDF2.

Argon2

Argon2 là người chiến thắng trong cuộc thi băm mật khẩu 2015 2015. Nó vẫn còn khá mới đối với các thuật toán, nhưng nó đã nhanh chóng trở thành một trong những chức năng đáng tin cậy nhất để băm mật khẩu.

Mặc dù tuổi trẻ của nó, cho đến nay nó đã giữ riêng trong một số tài liệu nghiên cứu đã phát hiện ra nó cho những điểm yếu. Argon2 linh hoạt hơn các thuật toán băm mật khẩu khác và có thể được thực hiện theo một số cách khác nhau.

tiền điện tử

Phát âmmật mãĐây là thuật toán băm mật khẩu trẻ thứ hai được sử dụng phổ biến. Được thiết kế vào năm 2009, scrypt sử dụng một lượng lớn bộ nhớ nhưng có thể điều chỉnh trong các tính toán của nó. Bản chất có thể điều chỉnh của nó có nghĩa là nó vẫn có thể chống lại các cuộc tấn công ngay cả khi sức mạnh tính toán tăng lên theo thời gian.

tiền điện tử

bcrypt được phát triển vào năm 1999 và dựa trên mật mã Blowfish. Nó là một trong những thuật toán được sử dụng phổ biến nhất trong băm mật khẩu trong nhiều năm, nhưng giờ đây nó dễ bị tổn thương hơn với các mảng cổng lập trình trường (FPGA). Đây là lý do tại sao Argon2 thường được ưa thích trong các triển khai mới hơn.

PKFD2

Hàm phái sinh khóa này được phát triển để thay thế PBKDF1, có độ dài khóa ngắn hơn và kém an toàn hơn. Các hướng dẫn của NIST từ năm 2023 vẫn khuyến nghị PKFD2 để băm mật khẩu, nhưng Argon2 giải quyết một số vấn đề bảo mật của nó và có thể là một lựa chọn tốt hơn trong nhiều tình huống.

Mã hóa, băm và muối: một bản tóm tắt

Bây giờ chúng tôi đã trải qua các chi tiết về mã hóa, băm và muối, đã đến lúc phải nhanh chóng quay trở lại với những khác biệt chính để chúng chìm vào. Trong khi mỗi quy trình này có liên quan, chúng đều phục vụ một mục đích khác nhau.

Mã hóa là quá trình mã hóa thông tin để bảo vệ nó. Khi dữ liệu được mã hóa, nó chỉ có thể được giải mã và truy cập bởi những người có khóa đúng. Các thuật toán mã hóa có thể đảo ngược, điều này cho chúng ta một cách để giữ dữ liệu của chúng ta khỏi những kẻ tấn công, nhưng vẫn có thể truy cập nó khi chúng ta cần. Nó được sử dụng rộng rãi để giữ cho chúng tôi an toàn khi trực tuyến, thực hiện một vai trò quan trọng trong nhiều giao thức bảo mật giúp giữ an toàn cho dữ liệu của chúng tôi khi được lưu trữ và chuyển tiếp.

Ngược lại, băm là một quá trình một chiều. Khi chúng tôi băm thứ gì đó, chúng tôi không muốn có thể đưa nó trở lại dạng ban đầu. Hàm băm mật mã có một số thuộc tính duy nhất cho phép chúng tôi chứng minh tính xác thực và tính toàn vẹn của dữ liệu, chẳng hạn như thông qua chữ ký số và mã xác thực tin nhắn.

Các loại hàm băm mật mã cụ thể cũng được sử dụng để lưu trữ mật khẩu của chúng tôi. Lưu trữ một mật khẩu băm thay vì mật khẩu cung cấp thêm một lớp bảo mật. Điều đó có nghĩa là nếu kẻ tấn công giành được quyền truy cập vào cơ sở dữ liệu, họ có thể truy cập ngay vào mật khẩu.

Mặc dù băm mật khẩu làm cho cuộc sống của tin tặc khó khăn hơn, nhưng nó vẫn có thể bị phá vỡ. Đây là nơi muối đến. Salting thêm dữ liệu bổ sung vào mật khẩu trước khi chúng được băm, mà làm cho các cuộc tấn công tốn nhiều thời gian hơn và tốn nhiều tài nguyên. Nếu muối và mật khẩu được sử dụng đúng cách, chúng tạo ra bảng băm và bảng cầu vồng là phương tiện tấn công không thực tế.

Cùng nhau, mã hóa, băm và muối là tất cả các khía cạnh quan trọng của việc giữ cho chúng ta an toàn trực tuyến. Nếu các quy trình này được cài đặt sẵn, những kẻ tấn công sẽ có miễn phí tất cả các tài khoản và dữ liệu của bạn, khiến bạn không có bảo mật trên internet.

Công nghệ-1 bởi tec_estromberg dưới Muff