IP Library Granted Patent US 10,229,104
Granted Patent B2
US 10,229,104 · App. 13/957,319 · Granted Mar 12, 2019

Efficient DFA generation for non-matching characters and character classes in regular expressions

Inventors: Senthilkumar Gopinathan Cheetancheri (Sunnyvale, CA); Aleksandr Dubrovsky (San Mateo, CA)
Assignee: SONICWALL INC.
G06F17/27G06N5/003G06N5/02G06N5/022G06N5/025
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,229,104
App. No.
13/957,319
Granted
Mar 12, 2019
Kind
B2
Abstract

A character class is detected in a regular expression and substituted with a pseudo character. A table is created with a bit vector for each pseudo character inserted into the regular expression. Each bit in the bit-vector represents one character of the alphabet from which the expression is generated. The status of the bits in a bit-vector indicates which characters of the alphabet are included in the character class. The pseudo character in the modified regular expression is used to construct a non-deterministic finite automaton (NFA). The NFA with the pseudo character is then used to construct a deterministic finite automaton (DFA). When constructing the DFA, the bit-vectors are used to determine if a certain transition should be constructed in the DFA.

Claims (69)

1. A method for generating a deterministic finite automaton (DFA) via a processor, the method comprising:

receiving an expression associated with malware, wherein the received expression is to be constructed into a DFA;

executing instructions stored in memory, the instructions executed by a processor to:

detect a character class in the received expression;

substitute a pseudo character for the detected character class in the received expression;

generate for the substituted pseudo character, a corresponding bit-vector, wherein the generated bit-vector includes a bit for each of a plurality of alphabet characters, wherein a status of a respective bit within the generated bit-vector reflects whether a respective alphabet character is included in the detected character class of the received expression;

update a table in memory regarding the received expression, wherein the updated table stores the received expression in association with the substituted pseudo character and the generated bit-vector for the detected character class of the received expression;

construct a non-deterministic finite automaton (NFA) from the received expression based on the updated table, wherein constructing the NFA includes inserting the substituted pseudo character in place of the detected character class within the received expression;

construct a DFA from the constructed NFA, wherein constructing the DFA from the constructed NFA includes:

retrieving the generated bit-vector associated with the substituted pseudo character included in the NFA, the generated bit-vector retrieved from the updated table; and

constructing transitions for each node of the NFA based on the retrieved bit-vector;

compares the DFA constructed from the NFA with the stored information in the updated table for the received expression to identify whether the DFA matches the stored information for the received expression; and

identifies that the received expression includes malware when the DFA matches the stored information for the received expression; and

sending a communication to a user device, the communication including an alert that the received expression includes the malware.

2. The method of claim 1 , further comprising:

parsing the received expression; and

detecting a second character class in the parsed expression.

3. The method of claim 1 , further comprising creating the table and storing the table in memory.

4. The method of claim 3 , further comprising:

detecting that the received expression includes a different character class associated with a different pseudo character; and

generating a different bit-vector for the different character class detected in the expression.

5. The method of claim 4 , further comprising updating the table regarding the different bit-vector for the different character class detected in the received expression.

6. The method of claim 1 , wherein the expression is received from an appliance administrator.

7. The method of claim 1 , wherein the expression includes a beginning character and a closing character common to a plurality of expressions.

8. A non-transitory computer-readable storage medium having embodied thereon a program, the program being executable by a processor to perform a method for generating a definite finite automaton (DFA), the method comprising:

receiving an expression associated with malware, wherein the received expression is to be constructed into a DFA;

detecting a character class in the received expression;

substituting a pseudo character for the detected character class in the received expression;

generating for the substituted pseudo character, a corresponding bit-vector, wherein the generated bit-vector include a bit for each of a plurality of alphabet characters and a status of a respective bit within the generated bit-vector reflects whether a respective alphabet character is included in the detected character class of the received expression;

updating a table in memory regarding the received expression, wherein the updated table stores the received expression in association with the substituted pseudo character and the generated bit-vector for the detected character class of the received expression;

constructing a non-deterministic finite automaton (NFA) from the received expression having at least one substituted pseudo character;

constructing a DFA from the constructed NFA, wherein constructing the DFA from the constructed NFA includes:

retrieving the generated bit-vector associated with the substituted pseudo character included in the NFA, the generated bit-vector retrieved from the updated table, and

constructing transitions for each node of the NFA based on the retrieved bit-vector;

comparing the DFA constructed from the NFA with the stored information in the updated table for the received expression to identify whether the DFA matches the stored information for the received expression; and

identifying that the received expression includes malware when the DFA matches the stored information for the received expression; and

sending a communication to a user device, the communication including an alert that the received expression includes the malware.

9. The non-transitory computer readable storage medium of claim 8 , wherein the program further comprises instructions executable to:

parse the received expression; and

detect a character class in the parsed expression.

10. The non-transitory computer readable storage medium of claim 8 , wherein the program further comprises instructions executable to create the table and store the table in memory.

11. The non-transitory computer readable storage medium of claim 10 , the program further executable to:

detect that the received expression includes a different character class associated with a different pseudo character; and

generate a different bit-vector for the different character class detected in the expression.

12. The non-transitory computer readable storage medium of claim 11 , the program further executable to update the table regarding the different bit-vector for the different character class detected in the received expression.

13. The non-transitory computer-readable storage medium of claim 8 , wherein the expression is received from an appliance administrator.

14. The non-transitory computer-readable storage medium of claim 8 , wherein the expression includes a beginning character and a closing character common to a plurality of expressions.

15. A system for generating a definite finite automaton (DFA), the system comprising:

a memory;

a processor that executes an application is stored in the memory, wherein the processor executes the application to:

receive an expression associated with malware, wherein the received expression is to be constructed into a DFA,

detect a character class in the received expression,

substitute a pseudo character for the detected character class in the received expression;

generate for the substituted pseudo character, a corresponding bit-vector; wherein the generated bit-vector includes a bit for each of a plurality of alphabet characters, wherein a status of a respective bit identifying within the generated bit-vector reflects whether a respective alphabet character is included in the detected character class of the received expression;

update a table in memory regarding the received expression, wherein the updated table stores the received expression in association with the substituted pseudo character and the generated bit-vector for the detected character class of the received expression;

construct a non-deterministic finite automaton (NFA) from the received expression substituted based on the updated table, wherein constructing the NFA includes inserting the pseudo character in place of the detected character class within the received expression;

construct a DFA from the NFA, wherein constructing the DFA includes:

retrieving the generated bit-vector associated with the substituted pseudo character included in the NFA, the generated bit-vector retrieved from the updated table; and

constructing transitions for each node of the NFA based on the retrieved bit-vector;

compares the DFA constructed from the NFA with the stored information in the updated table for the received expression to identify whether the DFA matches the stored information for the received expression; and

identifies that the received expression includes malware when the DFA matches the stored information for the received expression; and

sending a communication to a user device, the communication including an alert that the received expression includes the malware.

16. The system of claim 15 , wherein the processor further executes the application to parse the received expression and detect a second character class in the parsed expression.

17. The system of claim 15 , wherein the processor further executes the application to create the table and to store the table in the memory.

18. The system of claim 17 , wherein the processor further executes instructions to:

detect that the received expression includes a different character class associated with a different pseudo character; and

generate a different bit-vector for the different character class detected in the expression.

19. The system of claim 18 , wherein the process further executes instructions to update the table regarding the different bit-vector for the different character class detected in the received expression.

20. The system of claim 15 , further comprising a user interface that receives the expression from an appliance administrator.

Assignments (25)
FIRST LIEN IP SUPPLEMENT Recorded Jun 30, 2025
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 071777/0641 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT RF 046321/0393 Recorded Jun 16, 2025
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SONICWALL US HOLDINGS INC.
Reel/Frame 071625/0887 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0414 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0393 →
CHANGE OF NAME Recorded May 25, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 046246/0059 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded May 16, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 046169/0718 →
CHANGE OF NAME Recorded May 15, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 046163/0137 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 041073 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE INTELLECTUAL PROPERTY ASSIGNMENT.. Recorded Apr 5, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 042168/0114 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
MERGER Recorded Dec 16, 2015
From: SONICWALL L.L.C.
To: DELL SOFTWARE INC.
Reel/Frame 037303/0444 →
CONVERSION AND NAME CHANGE Recorded Dec 16, 2015
From: SONICWALL, INC.
To: SONICWALL L.L.C.
Reel/Frame 037330/0504 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2013
From: CHEETANCHERI, SENTHILKUMAR GOPINATHAN; DUBROVSKY, ALEKSANDER
To: SONICWALL, INC.
Reel/Frame 031294/0247 →
Continuity (1)
Related Publication 20150040142A1 · Feb 5, 2015
Cited By (1)
US 12,651,057