Chuyển đến nội dung chính

Sử dụng hash tệp để cải thiện bảo mật

Hàm băm tệp là một kỹ thuật được sử dụng trong các ứng dụng vì nhiều lý do, chủ yếu để đảm bảo tính toàn vẹn dữ liệu, bảo mật và hiệu quả.

Có nhiều lý do khiến bạn có thể muốn sử dụng hàm băm tệp, chẳng hạn như:

  • Xác minh tính toàn vẹn dữ liệu

Khi truyền hoặc lưu trữ tệp, luôn có rủi ro dữ liệu bị hỏng hoặc bị can thiệp. Bằng cách tạo một giá trị băm dựa trên nội dung của tệp bằng thuật toán băm (ví dụ: MD5, SHA-1, SHA-256), ứng dụng sau đó có thể tính lại giá trị băm và so sánh với giá trị băm ban đầu để xác minh xem tệp có bị thay đổi hoặc hỏng trong quá trình truyền hoặc lưu trữ hay không.

  • Loại bỏ trùng lặp

Trong một số ứng dụng như lưu trữ đám mây hoặc hệ thống sao lưu, việc loại bỏ trùng lặp tệp được sử dụng để tiết kiệm dung lượng lưu trữ. Hàm băm cho phép bạn xác định các tệp trùng lặp một cách hiệu quả. Thay vì lưu trữ nhiều bản sao của cùng một tệp, ứng dụng có thể sử dụng một giá trị băm duy nhất để biểu diễn nội dung bị trùng lặp.

  • Quản lý bộ nhớ đệm

Trong các hệ thống bộ nhớ đệm, hàm băm tệp có thể được sử dụng để nhanh chóng kiểm tra xem một tệp cụ thể đã từng được truy cập trước đó và có sẵn trong bộ nhớ đệm hay chưa. Giá trị băm đóng vai trò là mã định danh duy nhất cho tệp, cho phép truy xuất nhanh hơn và giảm việc truyền dữ liệu không cần thiết.

  • Lập chỉ mục và tìm kiếm dữ liệu

Trong các ứng dụng quy mô lớn, nơi các tệp cần được lập chỉ mục và tìm kiếm nhanh chóng, hàm băm tệp có thể được sử dụng để xây dựng các cấu trúc dữ liệu hiệu quả như bảng băm, cho phép tra cứu và truy xuất nhanh dựa trên nội dung tệp.

  • Phát hiện phần mềm độc hại

Các ứng dụng diệt vi-rút và bảo mật sử dụng hàm băm tệp để nhận diện phần mềm độc hại và vi-rút đã biết. Bằng cách so sánh giá trị băm của một tệp với cơ sở dữ liệu các giá trị băm độc hại đã biết, các ứng dụng này có thể nhanh chóng xác định liệu một tệp có khả năng gây hại hay không.

Sự kiện Glasswall Halo

  1. API Glasswall Halo cho phép bạn tương tác theo chương trình bằng cách khởi tạo các yêu cầu tới các endpoint cụ thể dựa trên loại tệp:
  • Đối với tệp nhị phân, hãy sử dụng endpoint api/v3/cdr-file.
  • Đối với tệp được mã hóa Base64, hãy sử dụng endpoint api/v3/cdr.
  1. Với mỗi yêu cầu, bạn có tùy chọn yêu cầu tạo hash tệp theo bất kỳ tổ hợp nào của ba định dạng khác nhau: SHA-256, SHA-1 và MD5.

  2. Sau khi yêu cầu được nhận, hash đầu vào sẽ được tạo và sau đó Glasswall Halo xử lý nó bằng Glasswall Embedded Engine để dựng lại và phân tích tệp đầu vào.

  3. Khi tệp được dựng lại thành công, nền tảng sẽ tạo các hash của tệp đầu ra và cả hash đầu vào lẫn đầu ra đều được trả về trong các header phản hồi.

  4. Nếu một yêu cầu thất bại, nền tảng vẫn đã tạo hash đầu vào và hash này được trả về trong các header phản hồi.

  5. Các hash tệp đầu vào và đầu ra được tạo này có thể được sử dụng theo nhiều cách khác nhau trong ứng dụng hoặc hệ thống của bạn, chẳng hạn như thực hiện kiểm tra bảo mật, xử lý thêm hoặc bất kỳ hành động cần thiết nào khác.

Xác thực API

Glasswall Halo hỗ trợ hai loại xác thực: **Basic **và xác thực Bearer. Trước khi thực hiện bất kỳ yêu cầu nào, bạn phải xác thực bằng cơ chế phù hợp dựa trên cấu hình của mình.

Basic

Nếu hệ thống của bạn được cấu hình với xác thực Basic, bạn cần lấy ID tổ chức và token từ quản trị viên hệ thống. Kết hợp các giá trị này theo định dạng <OrganisationId>:<Token> rồi mã hóa Base64 chúng.

Giá trị đã mã hóa thu được phải được đưa vào header yêu cầu:

Authorization: Basic ZGVtbzpwQDU1dzByZA==

Bearer

Đối với xác thực Bearer, bạn sẽ cần một bearer token lấy từ nhà cung cấp danh tính của mình.

Sau khi bạn đã lấy được token, hãy đưa token đó vào header yêu cầu:

Authorization: Bearer ZGVtbzpwQDU1dzByZA==

Lưu ý: hãy đảm bảo rằng bạn sử dụng phương thức xác thực phù hợp theo cấu hình hệ thống của mình. Việc sử dụng đúng phương thức xác thực sẽ đảm bảo truy cập thành công vào Glasswall Halo API và ngăn ngừa mọi vấn đề về ủy quyền.

Tìm hiểu thêm về cách xác thực Glasswall Halo

Cấu trúc yêu cầu

Khi tận dụng Glasswall Halo để xử lý các tệp nhị phân hoặc tệp được mã hóa Base64, bạn có thể linh hoạt yêu cầu tạo nhiều loại hash, bao gồm SHA-256, SHA-1 và MD5. Khi thực hiện một yêu cầu API, bạn có thể chỉ định bất kỳ tổ hợp nào của các loại hash này và trong phản hồi, bạn sẽ nhận được các giá trị hash đã tạo cho cả tệp đầu vào và đầu ra trong các header phản hồi. Điều này giúp bạn đảm bảo tính toàn vẹn và tính xác thực của dữ liệu, đồng thời hỗ trợ xử lý tệp hiệu quả trong ứng dụng hoặc hệ thống của bạn.

Xử lý tệp nhị phân

POST {baseUrl}/api/v3/cdr-file?generate-hash-types=SHA256,SHA1,MD5

Xử lý tệp được mã hóa Base64

Gửi chuỗi được mã hóa Base64 trong phần thân yêu cầu đến endpoint sau:

POST {baseUrl}/api/v3/cdr?generate-hash-types=SHA256,SHA1,MD5

Định dạng phần thân yêu cầu

Phần thân của yêu cầu phải ở định dạng JSON và bao gồm trường base64 chứa chuỗi mã hóa Base64 của tệp, cùng trường filename chỉ định tên tệp gốc (bao gồm phần mở rộng tệp phù hợp).

{
"Base64": "string",
"fileName": "filename.pdf",
}

Lưu ý

  • Thay thế {baseurl} bằng URL cơ sở thực tế của Glasswall Halo API.
  • Cần cung cấp auth header chính xác với mỗi yêu cầu.
  • Việc đặt generate-hash-types thành danh sách các giá trị hash được phân tách bằng dấu phẩy trong URL sẽ đảm bảo các hash chính xác được tạo và trả về trong phản hồi.
  • Đối với xử lý tệp nhị phân, hãy sử dụng bài đăng biểu mẫu multipart, còn đối với xử lý tệp mã hóa Base64, hãy cung cấp nội dung tệp trong phần thân yêu cầu JSON cùng với tên tệp phù hợp.

Xử lý phản hồi

Nếu bạn gửi yêu cầu thành công tới Glasswall Halo API, mã trạng thái 201 sẽ được trả về. Nếu bạn đã yêu cầu tạo và trả về bất kỳ hash nào, cả hash đầu vào và đầu ra sẽ có trong header phản hồi. Nếu phản hồi không thành công, chỉ các giá trị hash đầu vào sẽ được trả về.

Bạn có thể xác định các giá trị hash bằng các khóa header sau:

Đối với SHA-256:

  • Hash tệp đầu vào: x-hash-sha256-input
  • Hash tệp đầu ra: x-hash-sha256-output

Đối với SHA-1:

  • Hash tệp đầu vào: x-hash-sha1-input
  • Hash tệp đầu ra: x-hash-sha1-output

Đối với MD5:

  • Hash tệp đầu vào: x-hash-md5-input
  • Hash tệp đầu ra: x-hash-md5-output

Ví dụ

access-control-allow-origin: * 
access-control-expose-headers: *
content-disposition: attachment; filename=18402777-7826-457f-bc02-6446611495e6.zip; filename*=UTF-8''18402777-7826-457f-bc02-6446611495e6.zip
content-length: 288843
content-type: application/octet-stream
date: Fri,21 Jul 2023 12:42:15 GMT
strict-transport-security: max-age=31536000; includeSubDomains
x-applied-policy: service-dynamic
x-file-size: 301189
x-filetype: pdf
x-hash-md5-input: AF5EB421F8AFC69AC4178ACF747E618C
x-hash-md5-output: 8018FC4F37AB858442F354430203CEB4
x-hash-sha1-input: 9C714CAC1F82A450728F3C046CEFEFAF0BBD2C07
x-hash-sha1-output: 058991F3A252F0A4FD0E7F8B3178D3F15494099B
x-hash-sha256-input: 5F83AB533252C00AD1C60A0EFC016BF273497F3179FD6CE642AD8A4857148B8D
x-hash-sha256-output: 9D5D88F073D74160828F92E9E8DADAC5712706C65D49448D9ABA91D8FDC6FC28
x-processing-id: 18402777-7826-457f-bc02-6446611495e6
x-processing-status: rebuilt

Tóm tắt

Bằng cách sử dụng các hash được tạo trong quy trình xử lý tệp của bạn thông qua Glasswall Halo, bạn có thể tinh gọn vận hành, tăng cường bảo mật và cải thiện độ tin cậy của ứng dụng. Những điều này cùng nhau góp phần tạo nên một hệ thống mạnh mẽ và bền bỉ hơn, bảo đảm tính toàn vẹn và an toàn cho các tệp của bạn.

Bắt đầu nhanh

Để tự mình dùng thử Glasswall Halo, vui lòng tham khảo Hướng dẫn Bắt đầu nhanh của chúng tôi.