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 bạn hiểu rõ 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 bộ vi xử lý Intel hiện đại hỗ trợ tập lệnh SIMD như SSEwinvn com9, AVX, v.v. SIMD chủ yếu được sử dụng để tăng tốc thực thi các lệnh, nguyên lý gia tốc của nó nằm ở việc có thể thực thi đồng thời nhiều lệnh không phụ thuộc theo thời gian. Như hình minh họa dưới đây:

undefined

Hình | 1 Minh họa thực hiện song song SIMD

Vì Intel đã phát triển các lệnh thực thi song song và do việc sử dụng biểu thức chính quy ngày càng phổ biếnlink vao w88, 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 cũng như 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 tiến thuật toán khớp cho từng thành phần để chúng có thể tận dụng được tập lệnh SIMD.

Tiếp theo sẽ 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)winvn com9, trong đó FA chính 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 Là các thành phần độc lậplink vao w88, FA Có thể trống.

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

Chọn phân giải chính tắc

Dạng (A|B)88vin, chỉ khi A và B có thể được phân giải thành str Hoặc FA 88vin, nếu không thì (A|B) sẽ được coi là một FA Sau khi phân táchlink vao w88, kết quả của biểu thức chính quy sẽ giữ nguyên tính tương đương với kết quả ban đầu; (chứng minh toán học về điều này hiện tại Hyperscan chưa cung cấp)

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

Đối với việc phân giải chính tắcwinvn com9, sử dụng phương pháp phân giải 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à FAlink vao w88, 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ướcwinvn com9, như hình:

undefined

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

Đầu tiênlink vao w88, sử dụng thuật toán Extended Shift-or Matching để tìm kiếm các chuỗi đã được phân tách; sau đó, các ứng cử viên đã khớp sẽ đượ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 cổ điển

Đối với chuỗi cần tìm kiếmwinvn com9, cần duy trì hai trạng thái st-mask và sh-mask ('c').

Đối với chuỗi ứng cử viênlink vao w88, nếu 'c' xuất hiện trong chuỗi, thì bit trong sh-mask('c') tại vị trí mà 'c' xuất hiện sẽ là 0, còn các bit khác sẽ là 1.

Như hình 6winvn com9, chuỗi được tìm kiếm là "aphp", 'p' xuất hiện ở vị trí thứ 2 và 4, vậy 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ì có nghĩa là đã khớp thành công.

Thuật toán Shift-or Matching có hiệu suất hoạt động khá cao. Tuy nhiênlink vao w88, 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 tập lệnh SIMD để tối ưu hóa.

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

Multi-string shift-or matching

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

Trước tiênwinvn com9, 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 hailink vao w88, mở rộng st-mask và sh-mask n lần;

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

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

undefined

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

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

undefined

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

Nhóm mẫu

Như đã nói trước đó88vin, cần phân bổ 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 quy hoạch động để thực hiện việc phân nhóm.

Đầu tiên 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

Một số nhược điểm tồn tại trong mã hóa của cùng một bucket. Ví dụ như trong hình 7winvn com9, do a và c tương đương, b và d tương đương, nên sẽ xảy ra tình huống nhận diện sai 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 độ 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 ánh xạ thành a=((loworder4bitsofb<<8)|a)

Tăng tốc bằng SIMD

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

undefined

Khi quá trình tìm kiếm chuỗi thành cônglink vao w88, sẽ kích hoạt quá trình tìm kiếm FA. Để có thể tận dụng tối đa lợi thế của SIMD, thuật toán FA sử dụng cách tiếp cận dựa trên bit-NFA. Mô tả thuật toán như sau:

Trước tiên mã hóa n trạng thái của NFA thành 088vin, n-1;

Định nghĩa trạng thái S88vin,Biểu thị tính hiệu lực của các trạng thái hiện tại; ví dụwinvn com9, nếu bit thứ k là 1 thì có nghĩa là trạng thái thứ k hiện tại là hiệu lực;

Định nghĩa shift-k mask88vin, 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 mà nút i có thể đạt được (bit được thiết lập là 1 nếu có thể chuyển đổi đến trạng thái đó sau một lần chuyển).

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 nút và nút ngoại lệ; nút loại có chuyển trạng thái qua không quá k nútlink vao w88, và không có chuyển trạng thái ngược lại.

undefined

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

Như hình 9winvn com9, 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 2021winvn com9, 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, Dữ liệu Chính phủ...
170 triệu dữ liệu người dùng bị rò rỉ88vin, làm thế nào để tăng cường xây dựng an toàn dữ liệu trong ngành giáo dục?
Gần đâylink vao w88, 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 tăng cao. Hàng loạt 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 và bối cảnh 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 không lường trước.
Dữ liệu bị rò rỉ thường xuyên xuất hiện trên bảng xếp hạngwinvn com9, 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ớn88vin, dữ liệu đã trở thành một mặt hàng “có giá trị cao” được định giá rõ ràng. Trong đó, những dữ liệu y tế dường như bí mật lại thường “sôi động” trên các mạng ngầm: một thẻ ID bảo hiểm y tế có thể bán với giá ít nhất 1 đô la, một hồ sơ y tế đầy đủ có thể bắt đầu từ 5 đô la mỗi bản; nếu mua số lượng lớn, bạn còn có thể được hưởng chiết khấu.
Trợ lý trực tuyến