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 (được thực hiện dưới dạng các thuật toán băm).
Hashing (băm) là gì?
Hashing là quá trình dịch một khóa nhất định thành một mã. Hàm băm được sử dụng để thay thế thông tin bằng mã băm mới được tạo. SHA-1, SHA-2 và MD5, là các hàm băm mật mã phổ biến.
Cách một Hash hoạt động
Hashing sử dụng các thuật toán để chuyển đổi các khối dữ liệu từ một tệp thành một giá trị hoặc khóa có độ dài cố định ngắn hơn nhiều đại diện cho các chuỗi đó. Cụ thể là các hàm băm điển hình nhận đầu vào có độ dài thay đổi để trả về đầu ra có độ dài cố định. Hàm băm mật mã kết hợp khả năng truyền thông điệp của các hàm băm với các thuộc tính bảo mật.
Các hàm băm mật mã bổ sung các tính năng bảo mật cho các hàm băm điển hình, khiến việc phát hiện nội dung của một tin nhắn hoặc thông tin về người nhận và người gửi trở nên khó khăn hơn.
Đặc biệt, các hàm băm mật mã thể hiện ba thuộc tính sau:
- Chúng “Không va chạm”. Điều này có nghĩa là không có hai hàm băm đầu vào nào nên ánh xạ tới cùng một hàm băm đầu ra.
- Chúng có thể được ẩn. Sẽ rất khó để đoán giá trị đầu vào cho một hàm băm từ đầu ra của nó.
- Chúng phải thân thiện với. Sẽ rất khó để chọn một đầu vào có khả năng cung cấp một đầu ra được xác định trước. Do đó, đầu vào nên được chọn từ một bản phân phối càng rộng càng tốt.
Giá trị băm là một loại tóm tắt tập trung của mọi chuỗi trong một tệp nhất định và có thể thay đổi ngay cả khi một byte dữ liệu trong tệp đó bị thay đổi (hiệu ứng tuyết lở). Điều này mang lại những lợi ích to lớn trong việc băm về mặt nén dữ liệu. Mặc dù băm không phải là nén, nhưng nó có thể hoạt động rất giống như nén tệp ở chỗ nó chiếm một tập dữ liệu lớn hơn và thu nhỏ nó thành một dạng dễ quản lý hơn.
Một hàm băm tốt cho mục đích bảo mật phải là một quá trình đơn hướng sử dụng thuật toán băm một chiều. Nếu không, tin tặc có thể dễ dàng thiết kế ngược mã băm để chuyển đổi nó trở lại dữ liệu ban đầu, đánh bại mục đích của Mã hóa ngay từ đầu.
Quy trình Hashing (Băm)
Hàm băm thường được sử dụng trong cấu trúc dữ liệu trong hệ thống máy tính cho các nhiệm vụ như kiểm tra tính toàn vẹn của thông điệp và xác thực thông tin. Mặc dù chúng được coi là “yếu” về mặt mật mã vì chúng có thể được giải trong thời gian đa thức, nhưng chúng không dễ dàng giải mã được.
Bảng băm sẽ tạo một danh sách nơi tất cả các cặp giá trị được lưu trữ và dễ dàng truy cập. Đây là một kỹ thuật để truy cập các giá trị khóa trong bảng cơ sở dữ liệu một cách rất hiệu quả. Đồng thời kỹ thuật này cũng như một phương pháp cải thiện tính bảo mật của cơ sở dữ liệu thông qua Mã hóa.
Hashing trong Khoa học Máy tính và Mã hóa
Băm có một số công dụng chính trong khoa học máy tính. An ninh mạng là đã tạo ra nhu cầu cho con người sáng tạo ra việc sử dụng hàm băm trong Mã hóa.
Bởi vì các chuỗi và đầu vào được băm không ở dạng ban đầu, chúng không thể bị đánh cắp theo cách có thể nếu chúng không được băm. Nếu một tin tặc truy cập vào cơ sở dữ liệu và tìm thấy một chuỗi ban đầu như “John’s Wallet ID 34567”, họ có thể chỉ cần thu thập, lấy hoặc lấy cắp thông tin này và sử dụng nó để có lợi cho họ, nhưng nếu họ tìm thấy một giá trị băm như “a67b2” thông tin đó hoàn toàn vô dụng đối với họ, trừ khi họ có chìa khóa để giải mã.
Vai trò của Hashing trong việc giả mạo tệp tin
Việc băm cũng có giá trị trong việc ngăn chặn hoặc phân tích việc giả mạo tệp. Tệp gốc sẽ tạo ra một hàm băm được giữ cùng với dữ liệu tệp. Tệp và hàm băm được gửi cùng nhau và bên nhận sẽ kiểm tra hàm băm đó để xem liệu tệp có bị xâm phạm hay không. Nếu có bất kỳ thay đổi nào đối với tệp, hàm băm sẽ hiển thị điều đó.
Tất cả những điều này cho thấy tại sao băm lại là một phần phổ biến trong việc xử lý DB.
Băm (hashing) và mật khẩu
Khi một hệ thống trực tuyến lưu trữ Thông tin đăng nhập của bạn, nó thường lưu trữ cả tên người dùng và mật khẩu của bạn trong cơ sở dữ liệu. Tuy nhiên, có một vấn đề ở đây: bất kỳ nhân viên nào truy cập vào cơ sở dữ liệu hoặc bất kỳ tin tặc nào đột nhập vào hệ thống đều có thể xem tên người dùng và mật khẩu của mọi người. Sau đó, họ có thể đi ra màn hình đăng nhập cho hệ thống đó, nhập tên người dùng và mật khẩu đó và có quyền truy cập vào bất kỳ thứ gì bạn được phép làm trên hệ thống đó.
Tuy nhiên, nếu hệ thống lưu trữ mật khẩu của bạn dưới dạng băm, thì việc nhìn thấy mật khẩu đó sẽ chẳng có tác dụng gì đối với hacker. Anh ấy có thể thấy rằng băm, chẳng hạn như 5f4dcc3b5aa765d61d8327deb882cf99, nhưng anh ấy không thể sử dụng hàm băm đó để truy cập vào hệ thống và trông giống như bạn. Anh ta không có cách nào để biết rằng mật khẩu của bạn (tức là giá trị bạn nhập vào màn hình đăng nhập) thực sự là mật khẩu từ. Về phía hệ thống, bất cứ khi nào bạn đăng nhập, nó sẽ lấy mật khẩu mà bạn cung cấp, chạy mật khẩu thông qua công thức băm của nó và So sánh kết quả với những gì trong cơ sở dữ liệu của nó.
Tôi có thể bẻ một Hash không? Tôi có thể giữ cho người khác không phá vỡ nó không?
Băm có thể bị hack không?
Chắc chắn rồi. Một trong những cách dễ nhất là truy cập vào danh sách các từ và hàm băm mà mỗi từ tạo ra. Ví dụ: có những trang web xuất bản hàng triệu từ và các giá trị băm liên quan của chúng. Bất kỳ ai (thực tế thường là hacker) đều có thể truy cập các trang web này, tìm kiếm giá trị băm và ngay lập tức tìm thấy giá trị trước khi nó được băm.
Để bảo vệ khỏi điều này, các chuyên gia bảo mật sử dụng một kỹ thuật được gọi là salting (ướp muối). Để muối một hàm băm, chỉ cần thêm một giá trị đã biết vào chuỗi trước khi bạn băm nó. Ví dụ: nếu trước khi nó được lưu trữ trong cơ sở dữ liệu, mọi mật khẩu đều được gắn với chuỗi ‘dog’, nó có thể sẽ không được tìm thấy trong Cơ sở dữ liệu trực tuyến. Vì vậy, password được muối với dog sẽ trở thành passworddog. Sau đó nó chạy qua một máy tính và trở thành 854007583be4c246efc2ee58bf3060e6.
Để sử dụng những mật khẩu này khi bạn đăng nhập, hệ thống sẽ lấy mật khẩu mà bạn nhập, thêm từ ‘dog’ vào nó, chạy chuỗi đó thông qua thuật toán băm và cuối cùng tra cứu kết quả trong cơ sở dữ liệu của nó để xem bạn có thực sự được ủy quyền và nếu bạn đã nhập đúng mật khẩu.
Kỹ thuật này có làm tăng thêm tính duy nhất của đầu ra được mã hóa, dữ liệu ngẫu nhiên có thể được thêm vào đầu vào của hàm băm. Nó đảm bảo đầu ra duy nhất ngay cả trong trường hợp đầu vào giống hệt nhau.
Các ứng dụng khác của Hashing
Chống viruss máy tính
Khi vi-rút máy tính ‘lây nhiễm’ vào một chương trình bằng cách thay đổi một số mã trong chương trình đó, khiến nó thực hiện điều gì đó độc hại. Do đó, có một cách để bảo vệ chống lại vi-rút là tạo giá trị băm cho một chương trình khi nó đến tay người dùng. Sau đó, bất cứ khi nào chương trình đó được chạy, hãy tạo một giá trị băm mới để trao quyền cho tệp sắp chạy. So sánh băm mới với băm ban đầu. Nếu hai giá trị khớp nhau thì mọi thứ xem như ổn. Nếu chúng không khớp, bạn sẽ biết ngay là ai đó đã tìm kiếm bản sao chương trình của bạn.
Thay đổi dữ liệu thu thập
Để kiểm tra liệu có bất kỳ bản ghi nào trong hệ thống nguồn đã bị thay đổi hay không, đôi khi bạn phải đọc mọi trường trong mọi bản ghi nguồn và so sánh nó với tất cả các trường trong bản ghi liên quan trong Kho dữ liệu. Đây là một quá trình phức tạp đòi hỏi nhiều chu kỳ máy tính. Tuy nhiên, chúng ta có thể tăng tốc nó bằng cách tiến hành những việc sau:
- Đọc tất cả các trường trong bản ghi nguồn, nối chúng với nhau và tạo một hàm băm cho đầu ra
- So sánh giá trị băm đó với giá trị băm đã được lưu trữ trên bản ghi liên quan trong Kho dữ liệu khi nó được cập nhật lần cuối
- Nếu cả hai không khớp, bạn biết rằng bản ghi nguồn đã thay đổi và những thay đổi này sẽ được chuyển đến Kho
- Tạo khoá thông minh
Dataspace gần đây đã phát hành một sản phẩm phần mềm được biết đến như một dịch vụ (SaaS) có tên là Golden Record. Golden Record giúp các chuyên gia dữ liệu xác định và liên kết các bản ghi với nhau trên Cơ sở dữ liệu. Ví dụ: nó có thể cho bạn biết khi nào cùng một người xuất hiện trong cơ sở dữ liệu và trong Bảng tính riêng biệt. Sản phẩm sử dụng hàm băm rộng rãi.
Nguồn: academy.cointap.network