Sách trắng Đánh giá rủi ro an toàn dữ liệu
400-100-9516
news
Chia sẻ công nghệ

Tìm kiếm trong trang

Chia sẻ công nghệ | Hướng dẫn tìm hiểu nguyên lý hoạt động của Hyperscan
2022-04-13 4268 Chia sẻ công nghệ

undefined

Hyperscan cần chạy trên các CPU hiện đại của Intel hỗ trợ tập lệnh SIMD như SSEkeo 88, AVX, v.v. SIMD chủ yếu được sử dụng để tăng tốc thực thi lệnh, nguyên lý gia tốc nằm ở chỗ có thể thực hiện đồng thời nhiều lệnh không phụ thuộc theo chuỗi thời gian. Như hình minh họa dưới đây:

undefined

Hình | 1 Minh họa thực thi song song SIMD

Vì Intel đã phát triển các lệnh thực thi song song789bey, cùng với sự phổ biến rộng rãi của biểu thức chính quy, bài báo đã cải tiến thuật toán hiện tại để tìm kiếm biểu thức chính quy và sử dụng công nghệ SIMD nhằm nâng cao đáng kể hiệu suất tìm kiếm biểu thức chính quy.

Ý tưởng cốt lõi của Hyperscan là: 1. Phân tách biểu thức chính quy ban đầu thành nhiều thành phần; 2. Cải thiện thuật toán khớp cho từng thành phần để chúng có thể tận dụng các lệnh SIMD.

Tiếp theo789bey, lần lượt giới thiệu thuật toán phân giải và thuật toán cải tiến.

undefined

Ý tưởng chính của việc phân tách biểu thức chính quy trong Hyperscan là chia nhỏ biểu thức thành các chuỗi không giao nhau và các sub-regex (FA)789bey, trong đó FA là máy trạng thái hữu hạn (Finite Automata).

Phân giải chính tắc tuyến tính

1:regex —> left str FA

2:left —> left str FA | FA

Trong đó str,FA đều là các thành phần độc lậpkeo ty so, FA có thể trống.

Sau khi phân táchkeo 88, một biểu thức chính quy có thể được biểu diễn dưới dạng: FAnstrnFAn−1strn−1...str2FA1str1FA0

Có thể chọn phân giải chính tắc

Dạng (A|B)keo 88, chỉ khi A và B có thể phân giải thành str hoặc FA keo ty so, nếu không thì (A|B) được coi là một FA Sau khi phân táchkeo 88, kết quả của biểu thức chính quy vẫn giữ nguyên giá trị tương đương với ban đầu; (chứng minh toán học về điều này hiện tại Hyperscan chưa đưa ra)

Phương pháp thực hiện

Đối với phân giải chính tắc789bey, phương pháp dựa trên đồ thị được chia thành ba loại:

1. Phân tích đường đi

undefined

Hình | 2 Phân tích đường đi

2. Phân tích khu vực

undefined

Hình | 3 Phân tích khu vực

3. Phân tích luồng mạng

undefined

Hình | 4 Phân tích luồng mạng

undefined

Chương này giới thiệu thuật toán khớp đa chuỗi và FAkeo 88, thuật toán này sử dụng SIMD để tăng tốc.

Thuật toán khớp đa chuỗi

Tên thuật toán là FDR; thuật toán được chia thành hai bước789bey, như hình:

undefined

Hình | 5 Hai giai đoạn của khớp FDR

Đầu tiên789bey, sử dụng thuật toán Extended Shift-or Matching để khớp các chuỗi đã được phân tách; sau đó, các tùy chọn khớp được chuyển sang thuật toán FA để kiểm tra thêm.

Shift-or Matching

Thuật toán shift-or là một thuật toán đơn giản; như hình:

undefined

Hình | 6 Thuật toán shift-or kinh điển

Đối với chuỗi cần khớpkeo ty so, cần duy trì hai trạng thái là st-mask và sh-mask('c').

Đối với chuỗi khớp tiềm năng789bey, nếu 'c' xuất hiện trong chuỗi, thì bit tương ứng với vị trí xuất hiện của 'c' trong sh-mask('c') sẽ là 0, các bit còn lại sẽ là 1.

Như hình 6789bey, chuỗi khớp là "aphp", 'p' xuất hiện ở vị trí thứ 2 và 4, do đó sh-mask('p') = 11110101.

Trạng thái ban đầu của st-mask là 11111111

Đối với ký tự đầu vào mới 'x':

st-mask=((st-mask≪1) | sh-mask(‘x’)

Khi bit tương ứng với độ dài chuỗi khớp trong st-mask là 0 thì cho biết đã khớp thành công.

Thuật toán Shift-or Matching có hiệu suất chạy khá cao. Tuy nhiênkeo 88, nó cũng tồn tại hai nhược điểm: 1. Chỉ hỗ trợ khớp một chuỗi đơn; 2. Không thể sử dụng SIMD để tối ưu hiệu suất.

Để khắc phục hai nhược điểm nàykeo ty so, sử dụng thuật toán sau:

Multi-string shift-or matching

Để hỗ trợ khớp đồng thời nhiều chuỗikeo ty so, cấu trúc dữ liệu đã được sửa đổi.

Trước tiênkeo 88, chia chuỗi thành n bucket, mỗi bucket được đánh số từ 0 đến n-1; giả sử rằng mỗi chuỗi chỉ thuộc về một bucket duy nhất.

Bước thứ haikeo 88, mở rộng st-mask và sh-mask n lần;

sh-mask('x') được khởi tạo toàn bộ là 1;

Nếu 'x' xuất hiện ở vị trí thứ k trong bucket thứ n789bey, thì bit thứ n của sh-mask('x') tại vị trí thứ k sẽ được đặt thành 0; đồng thời, đối với các bucket có độ dài ngắn hơn độ dài chuỗi lớn nhất, cần bổ sung thêm các bit.

undefined

Hình | 7 Ví dụ về sh-mask

Vị trí thứ k ở đây khác với thuật toán Shift-or Matching789bey, vì ở đây đếm từ bên phải; st-mask |= (sh-mask('x') << (k bytes)). Ví dụ minh họa như sau:

undefined

Hình | 8 Khớp đa chuỗi FDR bằng shift-or

Nhóm mẫu

Như đã đề cập trước đó789bey, cần phân phối một cặp chuỗi vào các nhóm khác nhau; bài viết sử dụng phương pháp lập trình động để thực hiện việc phân nhóm.

Trước tiênkeo 88, sắp xếp mảng ký tự theo độ dài chuỗi; sau đó sử dụng phương trình quy hoạch động sau để hoàn thành nhóm:

undefined

Cải tiến thuật toán

Có một số khiếm khuyết trong cách mã hóa của các chuỗi cùng một bucket. Như trong hình minh họa 7keo ty so, do a và c tương đương, b và d tương đương, nên có thể nhận diện sai các chuỗi như ad và cb. Để khắc phục lỗi này, thuật toán được cải tiến bằng cách mở rộng độ dài ký tự, làm cho độ dài ký tự được mở rộng lên m bit (9 ≤ m ≤ 15).

Giả sử m=12 thì a được ánh xạ thành a=((loworder4bitsofb<<8)|a)

Tăng tốc bằng SIMD

Sau khi cải tiến trên789bey, các thành phần có thể sử dụng đồng thời lệnh SIMD để tăng tốc.

undefined

Sau khi String Matching thành côngkeo 88, sẽ kích hoạt FA Matching; để có thể tận dụng hiệu quả SIMD, FA Matching hoạt động theo cách NFA dựa trên bit. Mô tả thuật toán như sau:

Đầu tiên789bey, mã hóa n trạng thái của NFA thành 0, n-1;

Định nghĩa trạng thái S789bey,biểu thị tính hợp lệ của các trạng thái hiện tại; ví dụ789bey, nếu bit thứ k là 1, thì trạng thái thứ k hiện tại là hợp lệ;

Định nghĩa shift-k maskkeo 88, biểu thị trạng thái hiện tại có thể bỏ qua k trạng thái để đạt được trạng thái mới đối với nút đầu vào mới;

Exception mask biểu thị cờ ở nút ngoại lệ

succ_mask[i] biểu thị tập hợp các nút mà nút i có thể đạt được (bit được thiết lập là 1keo 88, nghĩa là có thể chuyển đổi đến trạng thái đó sau một lần chuyển tiếp).

reach[x], biểu thị tất cả các trạng thái mà ký tự k có thể đạt được;

Chuyển trạng thái được định nghĩa là nút loại và nút ngoại lệ; nút loại có chuyển tiếp qua số nút nhỏ hơn hoặc bằng kkeo 88, và không có chuyển tiếp ngược lại.

undefined

Hình | 9 Trình bày NFA của chính tắc (AB|CD)AFF*

Như hình 9keo ty so, shift-k được thiết lập là 2; trong đó, các bit 0, 2, 4 là nút ngoại lệ; mô tả thuật toán như sau:

undefined

Hình | 10 Thuật toán NFA dựa trên bit

Đề xuất trước đây

Giải đọc sâu về Luật An toàn Dữ liệu (Trung Quốc): Thực thi giám sát và con đường phát triển an toàn dữ liệu cho doanh nghiệp
Ngày 10 tháng 6 năm 2021keo ty so, Kỳ họp thứ 29 của Ủy ban Thường vụ Quốc hội Trung Quốc lần thứ 13 đã thông qua Luật An toàn Dữ liệu Cộng hòa Nhân dân Trung Hoa (sau đây gọi tắt là Luật An toàn Dữ liệu). Luật An toàn Dữ liệu gồm 55 điều, được chia thành bảy chương, lần lượt là Chương tổng quát, An toàn Dữ liệu và Phát triển, Hệ thống An toàn Dữ liệu, Nghĩa vụ Bảo vệ Dữ liệu, An toàn Dữ liệu Chính quyền...
100 triệu dữ liệu người dùng bị rò rỉkeo ty so, làm thế nào để tăng cường xây dựng an ninh dữ liệu trong ngành giáo dục?
Gần đâykeo ty so, cùng với sự phát triển nhanh chóng của công nghệ Internet, mức độ số hóa, hiện đại hóa, tự động hóa và không giấy tờ của ngành giáo dục ngày càng tăng. Nhiều thông tin nhạy cảm sẽ được thu thập và lưu trữ trong các cơ sở dữ liệu khác nhau; ngoài ra, khối lượng dữ liệu được truy vấn, tải lên, phân tích và chia sẻ cũng tăng mạnh, thường xuyên đối mặt với nhiều rủi ro nguy hiểm chưa biết.
khủng hoảng an ninh
Trong thời đại dữ liệu lớnkeo 88, dữ liệu đã trở thành mặt hàng “có giá trị cao” được định giá rõ ràng. Trong đó, những dữ liệu y tế tưởng chừng bí mật lại thường “hoạt động” trên các mạng dark web: một thẻ bảo hiểm y tế có thể bán với giá ít nhất 1 USD, một hồ sơ y tế đầy đủ có giá khởi điểm 5 USD mỗi bản; nếu mua số lượng lớn, còn có thể được giảm giá...
Trợ lý trực tuyến