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 chi tiết về nguyên lý hoạt động của Hyperscan
2022-04-13 4268 Chia sẻ công nghệ

undefined

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

undefined

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

Vì Intel đã phát triển các lệnh thực thi song songti le cuoc, 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 tìm kiếm biểu thức chính quy hiện tại 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 lệnh SIMD.

Tiếp theonhan dinh keo nha cai, 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 giải 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)nhan dinh keo nha cai, trong đó FA là máy trạng thái hữu hạn.

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ậpkeonhacai tv, FA có thể trống.

Sau khi phân giảinhan dinh keo nha cai, 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)nhan dinh keo nha cai, chỉ khi A và B có thể được phân giải thành str hoặc FA keonhacai tv, nếu không thì (A|B) sẽ được coi là một FA Sau khi phân giảinhan dinh keo nha cai, kết quả của biểu thức chính quy sẽ giữ nguyên giá trị tương đương như ban đầu; (chứng minh toán học của Hyperscan hiện chưa được công bố)

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

Đối với phân giải chính tắcti le cuoc, 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à FAti le cuoc, 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ướcti le cuoc, như hình:

undefined

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

Đầu tiênkeonhacai tv, sử dụng thuật toán Extended Shift-or Matching để so khớp các chuỗi đã được phân giải; sau đó, các ứng cử viên đã khớp sẽ được chuyển đến 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 so khớpkeonhacai tv, cần duy trì hai trạng thái st-mask và sh-mask('c').

Đối với chuỗi ứng cử viênnhan dinh keo nha cai, nếu 'c' xuất hiện trong chuỗi thì bit tương ứng trong sh-mask('c') sẽ bằng 0 tại vị trí mà 'c' xuất hiện, còn lại tất cả các bit đều là 1.

Như hình 6keonhacai tv, chuỗi được so khớp là "aphp", ký tự 'p' xuất hiện ở vị trí thứ 2 và thứ 4, do đó sh-mask('p') = 11110101.

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

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

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

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

Thuật toán Shift-or Matching có hiệu suất caokeonhacai tv, nhưng đồng thời cũng tồn tại hai nhược điểm: 1. Chỉ hỗ trợ khớp một chuỗi duy nhất; 2. Không thể sử dụng lệnh SIMD để tối ưu hiệu suất.

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

Multi-string shift-or matching

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

Đầu tiênti le cuoc, chia chuỗi thành n bucket, mỗi bucket có mã 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 haikeonhacai tv, mở rộng st-mask và sh-mask n lần;

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

Nếu ký tự 'x' xuất hiện ở vị trí thứ k của bucket thứ nti le cuoc, thì bit thứ n trong 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 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 Matchingnhan dinh keo nha cai, vì ở đây đếm từ bên phải. st-mask |= (sh-mask('x') << (k bytes)). Ví dụ minh họa dưới đây:

undefined

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

Nhóm mẫu

Trong phần trước đã đề cập đến việc phân bổ một cặp chuỗi vào các nhóm khác nhau; bài viết này 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ênkeonhacai tv, sắp xếp mảng ký tự dựa trên độ 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ố hạn chế trong cách mã hóa của các chuỗi cùng một bucket. Ví dụ trong hình 7ti le cuoc, vì 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 hoặc 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 chiều 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 những cải tiến trênnhan dinh keo nha cai, các thành phần có thể sử dụng lệnh SIMD đồng bộ để tăng tốc.

undefined

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

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

Định nghĩa trạng thái Snhan dinh keo nha cai,biểu thị tính hợp lệ của từng trạng thái hiện tại; ví dụkeonhacai tv, nếu bit thứ k là 1 thì cho thấy trạng thái thứ k hiện tại là hợp lệ;

Định nghĩa shift-k maskkeonhacai tv, 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 trạng thái có thể đạt được từ trạng thái i (bit được thiết lập thành 1keonhacai tv, cho thấy có thể chuyển đổi sang trạng thái đó trong 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à loại trạng thái và trạng thái ngoại lệ; trạng thái loại có chuyển tiếp qua không quá k trạng thái và không có trạng thái quay lại.

undefined

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

Như hình 9ti le cuoc, 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 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 2021keonhacai tv, Hội đồng Nhân dân toàn 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 nà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, 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...
Dữ liệu của 170 triệu người dùng bị rò rỉti le cuoc, làm thế nào để củng cố xây dựng an toàn dữ liệu trong ngành giáo dục?
Gần đâykeonhacai tv, cùng với sự phát triển nhanh chóng của công nghệ Internet, mức độ hiện đại hóa, số hóa, thông minh hóa và không giấy tờ trong ngành giáo dục ngày càng được nâng cao; lượng lớn thông tin nhạy cảm đượ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 và môi trường sử dụng của việc truy vấn, tải lên, phân tích và chia sẻ dữ liệu cũng tăng mạnh, thường xuyên đối mặt với nhiều rủi ro chưa biết trước.
Rò rỉ dữ liệu thường xuyên xuất hiệnkeonhacai tv, ngành y tế nên thoát khỏi "bế tắc an ninh" như thế nào?
Trong thời đại dữ liệu lớnkeonhacai tv, dữ liệu đã trở thành mặt hàng “giá trị cao” được định giá rõ ràng. Trong đó, thông tin y tế dường như bí mật lại thường “hoạt động” trên các mạng ngầm: một thẻ bảo hiểm y tế có thể bán được ít nhất 1 USD, 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á...
Chăm sóc khách hàng trực tuyến