Python có sử dụng hàm băm không?

Băm là một kỹ thuật rất quan trọng và có tính ứng dụng cực kỳ cao, đặc biệt trong lĩnh vực bảo mật. Bài viết hôm nay sẽ cho các bạn cái nhìn cơ bản về Hash và một số ứng dụng thực tế của nó

Hash [Hàm băm] là gì ?

Băm là quá trình biến đầu vào là một nội dung có kích thước, độ dài bất kỳ rồi sử dụng các thuật toán, công thức toán học để biến đầu ra tiêu chuẩn có độ dài chuẩn nhất. Quá trình đó sử dụng những Hàm băm [Hash function]

Ví dụ, bạn tải một video trên Youtube về, sau đó cho nó chạy qua hàm băm có tên MD5 sẽ trả về một chuỗi dài 32 ký tự, hoặc bạn tải một bức ảnh trên mạng về, cho chạy qua hàm MD5, thứ bạn . Ngoài ra, nếu bạn chọn chạy từ “apple” qua hàm băm MD5 kia, kết quả sẽ là “1f3870be274f6c49b3e31a0c6728957f”, lại là một chuỗi có 32 ký tự. Các thuật toán băm khác nhau cũng hoạt động tương tự như vậy, bạn cho bất kỳ thứ gì vào hàm, đầu ra sẽ luôn là một chuỗi có độ dài nhất định

Hash code

Như tên gọi của nó vậy, những hàm băm như vậy được sử dụng vào mục đích mã hóa dữ liệu. Những hàm mũ mật mã cũng giống như những hàm mũ thông thường, nhưng mang trong mình một số đặc điểm khác, quan trọng nhất là không thể đảo ngược. Điều này có nghĩa là khi bạn có trong tay giá trị sau khi trùm đầu, bạn không thể biết giá trị ban đầu là gì. Điều này đơn giản vì bạn uống một loại hạt sinh tố hỗn hợp rất ngon nhưng không thể liệt kê tất cả nguyên liệu của nó như vậy

Ngoài ra, hàm băm mật mã còn mang một số đặc điểm khác như tính tránh va chạm [xảy ra khi hai giá trị khác nhau nhưng khi chạy qua hàm băm lại trả về hai kết quả giống nhau], tính hiệu quả [thời gian

Một số biến phổ biến

MD5

MD5 được Ronald Rivest thiết kế vào năm 1991 để thay thế hàm băm MD4 trước đó và được đưa ra tiêu chuẩn vào năm 1992 trong RFC 1321. MD5 tạo ra một bản tóm tắt có kích thước 128 bit [16 byte]. Tuy nhiên, đến đầu những năm 2000 thì hàm băm MD5 trở nên không an toàn trước sức mạnh tính toán của các hệ thống tính toán thế hệ mới. Với sức mạnh tính toàn và sự phát triển của công nghệ trinh thám mã thời gian gần đây, chúng ta có thể tính toán các va chạm trong MD5 với độ phức tạp 2^21, phép toán chỉ trong vòng vài giây khiến thuật toán không phù hợp

SHA-1

SHA-1, viết tắt của Thuật toán băm an toàn, được phát triển như một phần của dự án Capstone của Chính phủ Hoa Kỳ. Phiên bản đầu tiên, thường được gọi là SHA-0 được xuất bản vào năm 1993 với tiêu đề Tiêu chuẩn băm an toàn, FIPS PUB 180, bởi NIST [Viện tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ]. Nó đã bị NSA rút lại ngay sau khi xuất bản và được thay thế bởi phiên bản sửa đổi, được xuất bản vào năm 1995 trong FIPS PUB 180-1 và thường được đặt tên là SHA-1. SHA-1 tạo bản tóm tắt có kích thước 160 bit [20 byte]. Các va chạm chống lại thuật toán SHA-1 đầy đủ có thể được tạo ra bằng cách sử dụng các cuộc tấn công phá vỡ. Do đó, hàm băm này cho đến bây giờ được coi là không đủ an toàn

SHA-2

SHA-2 là một tập hợp các mã băm hàm được thiết kế bởi Cơ quan an ninh quốc gia Hoa Kỳ [NSA], được xuất bản lần đầu tiên vào năm 2001. Chúng được xây dựng bằng cấu trúc Merkle–Damgård, chức năng nén một chiều của nó được xây dựng bằng cấu trúc Davies–Meyer từ một hệ thống mật mã khối chuyên dụng

Hash used to do what?

Kiểm tra sự toàn vẹn của tệp tin

Như đặc điểm của hàm băm, cùng một giá trị sẽ cho ra cùng một giá trị băm. Do đó, chúng ta có thể đối chiếu tệp ta tải trên mạng về với bản gốc bằng cách so sánh giá trị của chúng với nhau. Nếu chúng có chung giá trị băm tức thì là tệp tin của bạn trùng với bản gốc, nếu không tệp tin của bạn đã bị sửa đổi hoặc bị hỏng. Một số trường hợp, tệp tin bạn tải về có thể được cung cấp bởi bên thứ ba trước khi đến thiết bị của bạn và chúng tôi có thể cài đặt mã độc vào tệp tin đó. Use check giá trị băm giúp đảm bảo an toàn cho toàn bộ tệp tin của bạn

Xác minh mật khẩu

Có một điều rất hay bạn nên biết, trong những thiết kế cơ sở dữ liệu hiện đại, thứ được lưu trong đó không phải mật khẩu của bạn dưới dạng văn bản đơn thuần mà là giá trị băm của chúng. Khi bạn nhập mật khẩu, mật khẩu của bạn sẽ được chạy thông qua hàm băm, sau đó sẽ được so sánh với giá trị băm trong cơ sở dữ liệu để xác định bạn có được chứng thực để sử dụng dịch vụ không. Điều này làm giảm đáng kể thiệt hại khi cơ sở dữ liệu bị tấn công, khi những gì bị lộ ra bên ngoài là những giá trị trùm chứ không phải mật khẩu của bạn. Để an toàn hơn, hệ thống còn thêm giá trị muối [salt] vào mật khẩu gốc của bạn, rồi cho chạy qua hàm băm, sau đó mới lưu vào cơ sở dữ liệu. Do đó, nên kể cả khi giá trị băm của mật khẩu bạn bị lộ và được giải mã, những kẻ tấn công vẫn chưa thể lấy được mật khẩu thực của bạn do nó đã được thêm vào giá trị "muối"

pause

Như các bạn có thể thấy, Hashing là một kỹ thuật rất quan trọng và có tính ứng dụng cực kỳ cao, đặc biệt trong lĩnh vực bảo mật. Những nhà phát triển liên tục phải thiết kế ra những thuật toán Hash mới, làm những thuật toán cũ nhanh chóng được giải mã bằng sự phát triến nhanh như vũ bão của công nghệ. Một khi bất kỳ thuật toán nào bị bẻ khóa [bẻ khóa], nó không còn đối số tuyệt đối nữa. Hiểu được các thuộc tính cơ bản và cách thức hoạt động chính của hàm trùm là một nhiệm vụ không thể thiếu đối với mọi lập trình viên

Chủ Đề