IP Library Granted Patent US 7,103,783
Granted Patent B1
US 7,103,783 · App. 09/701,201 · Granted Sep 5, 2006

Method and system for providing data security in a file system monitor with stack positioning

Assignee: Pinion Software, Inc.
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 7,103,783
App. No.
09/701,201
Granted
Sep 5, 2006
Kind
B1
Abstract

A System for providing data security in a first device driver operably installed in a computer operating system having a layered plurality of device drivers ( 81, 82, 83, 84 ) for accessing data in a data storage device. The first device driver detects an I/O request, and determines whether the first device driver is functionally uppermost in the layered plurality of device drivers. If the first device driver is functionally uppermost in the layered plurality of device drivers, the method performs the I/O request ( 80 ) in the first device driver. If the device driver is not functionally uppermost in the layered plurality of device drivers, the method denies the I/O request in the first device driver, and allows the I/O request to be performed by the next lowest-level driver in the layered plurality of device drivers.

Claims (65)

1. A method for providing data security in a first device driver operably installed in a computer operating system having a layered plurality of device drivers for accessing data in a data storage device, the method comprising the steps of:

detecting an I/O request to said first device driver;

determining whether said first device driver has been previously called;

if said first device driver has not been previously called, detecting an initial calling module address, storing said initial calling module address, and concluding that said first device driver is functionally uppermost in the layered plurality of device drivers;

if said first device driver has been previously called, detecting a second calling module address, comparing said second calling module address to the initial calling module address, and concluding that said first device driver is functionally uppermost in the layered plurality of device drivers only if the initial calling module address matches the second calling module address;

if said first device driver is functionally uppermost in the layered plurality of device drivers, performing the I/O request in said first device driver; and

if said first device driver is not functionally uppermost in the layered plurality of device drivers, denying the I/O request in said first device driver, and allowing the I/O request to be performed by a next lower-level device driver in the layered plurality of device drivers.

2. The method of claim 1 wherein said first device driver is a file system monitor.

3. The method of claim 1 wherein the data is stored in a secure virtual file system, and wherein the step of performing the I/O request further comprises the step of implementing data security measures.

4. The method of claim 1 wherein the data is stored in encrypted form, and wherein the step of performing the I/O request further comprises the step of decrypting the data.

5. The method of claim 1 wherein the step of performing the I/O request further comprises the step of checking the data for viruses.

6. A system for providing data security, the system comprising a first device driver operably installed in a computer operating system having a layered plurality of device drivers for accessing data in a data storage device, wherein said first device driver:

detects an I/O request;

determines whether said first device driver has been previously called;

if said first device driver has not been previously called, detects an initial calling module address, stores said initial calling module address, and concludes that said first device driver is functionally uppermost in the layered plurality of device drivers;

if said first device driver has been previously called, detects a second calling module address, compares said second calling module address to the initial calling module address, and concludes that said first device driver is functionally uppermost in the layered plurality of device drivers only if the initial calling module address matches the second calling module address;

if said first device driver is functionally uppermost in the layered plurality of device drivers, performs the I/O request; and

if said first device driver is not functionally uppermost in the layered plurality of device drivers, denies the I/O request, and allows the I/O request to be performed by a next lower-level device driver in the layered plurality of device drivers.

7. The method of claim 6 wherein said first device driver is a file system monitor.

8. The method of claim 6 further comprising a secure virtual file system for storing the data, and wherein said first device driver performs the I/O request by implementing data security measures.

9. The method of claim 6 wherein the data is stored in encrypted form, and wherein said first device driver performs the I/O request by decrypting the data.

10. The method of claim 6 wherein said first device driver performs the I/O request by checking the data for viruses.

11. A method for providing data security in a first device driver operably installed in a computer operating system having a layered plurality of device drivers for accessing data in a data storage device, the method comprising the steps of:

detecting an I/O request to said first device driver;

determining whether said first device driver is functionally uppermost in the layered plurality of device drivers;

if said first device driver is functionally uppermost in the layered plurality of device drivers, performing the I/O request in said first device driver; and

if said first device driver is not functionally uppermost in the layered plurality of device drivers, denying the I/O request in said first device driver by setting a first device driver shutdown flag and initiating a re-hook process; the re-hook process comprising:

counting the number of times the re-hook process has been initiated;

checking whether the number of times has reached a predetermined maximum threshold;

if the number of times has reached a predetermined maximum threshold, initiating programmable security response; and

if the number of times has not reached a predetermined maximum threshold, initiating reattachment of said first device driver functionally uppermost in the layered plurality of device drivers, unsetting said first device driver shutdown flag and allowing the I/O request to be performed by a next lower-level device driver in the layered plurality of device drivers.

12. The method of claim 11 wherein the programmable security response comprises the step of destroying the data.

13. The method of claim 11 wherein the data is stored in a secure virtual file system, and wherein the step of destroying the data further comprises the step of destroying the secure virtual file system.

14. The method of claim 11 wherein the programmable security response comprises the step of terminating open applications.

15. The method of claim 11 wherein the programmable security response comprises the step of destroying said first device driver on the data storage device.

16. The method of claim 11 wherein the programmable security response comprises the step of halting the operation of the computer.

17. The method of claim 11 wherein the programmable security response comprises the step of causing the computer to enter a state requiring reboot.

18. A system for providing data security, the system comprising a first device driver operably installed in a computer operating system having a layered plurality of device drivers for accessing data in a data storage device, wherein said first device driver:

detects an I/O request;

determines whether said first device driver is functionally uppermost in the layered plurality of device drivers;

if said first device driver is functionally uppermost in the layered plurality of device drivers, performs the I/O request; and

if said first device driver is not functionally uppermost in the layered plurality of device drivers, denies the I/O request by setting a first device driver shutdown flag and calling a re-hook system;

wherein the re-hook system comprises a counter that counts the number of times the re-hook system has been initiated to check whether the number of times has reached a predetermined maximum threshold,

if the number of times has reached a predetermined maximum threshold, the re-hook system initiates a programmable security response; and

if the number of times has not reached a predetermined maximum threshold, the re-hook system initiates reattachment of said first device driver functionally uppermost in the layered plurality of device drivers, unsets said first device driver shutdown flag and allows the I/O request to be performed by a next lower-level device driver in the layered plurality of device drivers.

19. The system of claim 18 wherein the programmable security response destroys the data.

20. The system of claim 18 further comprising a secure virtual file system for storing the data, and wherein the programmable security response destroys the data and destroys the secure virtual file system.

21. The system of claim 18 wherein the programmable security response terminates open applications.

22. The system of claim 18 wherein the programmable security response destroys said first device driver on the data storage device.

23. The system of claim 18 wherein the programmable security response halts the operation of the computer.

24. The system of claim 18 wherein the programmable security response causes the computer to enter a state requiring reboot.

25. A machine-readable medium comprising secured data and a first device driver program for providing data security when operably installed in a computer operating system having a layered plurality of device drivers for accessing data in a data storage device, said first device driver program comprising computer-implemented instructions for:

computer-implemented instructions for detecting an I/O request to said first device driver;

computer-implemented instructions for determining whether said first device driver has been previously called;

if said first device driver has not been previously called, computer-implemented instructions for detecting an initial calling module address, storing said initial calling module address, and concluding that said first device driver is functionally uppermost in the layered plurality of device drivers;

if said first device driver has been previously called, computer-implemented instructions for detecting a second calling module address, comparing said second calling module address to the initial calling module address, and concluding that said first device driver is functionally uppermost in the layered plurality of device drivers only if the initial calling module address matches the second calling module address;

if said first device driver is functionally uppermost in the layered plurality of device drivers, computer-implemented instructions for performing the I/O request in said first device driver; and

if said first device driver is not functionally uppermost in the layered plurality of device drivers, computer-implemented instructions for denying the I/O request in said first device driver, and allowing the I/O request to be performed by a next lower-level device driver in the layered plurality of device drivers.

26. A computer-implemented first device driver for providing data security when operably installed in a computer operating system having a layered plurality of device drivers for accessing data in a data storage device, said first device driver comprising:

means for detecting an I/O request to said first device driver;

means for determining whether said first device driver has been previously called;

if said first device driver has not been previously called, means for detecting an initial calling module address, storing said initial calling module address, and concluding that said first device driver is functionally uppermost in the layered plurality of device drivers;

if said first device driver has been previously called, means for detecting a second calling module address, comparing said second calling module address to the initial calling module address, and concluding that said first device driver is functionally uppermost in the layered plurality of device drivers only if the initial calling module address matches the second calling module address;

if said first device driver is functionally uppermost in the layered plurality of device drivers, means for performing the I/O request in said first device driver; and

if said first device driver is not functionally uppermost in the layered plurality of device drivers, means for denying the I/O request in said first device driver, and allowing the I/O request to be performed by a next lower-level device driver in the layered plurality of device drivers.

Assignments (11)
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF CORPORATION PREVIOUSLY RECORDED ON REEL 021147 FRAME 0584. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Aug 21, 2019
From: PINION SOFTWARE, INC.
To: GIGAMEDIA ACCESS CORPORATION
Reel/Frame 050127/0347 →
SECURITY INTEREST Recorded Aug 1, 2019
From: GIGAMEDIA ACCESS CORPORATION
To: CRYSTAL FINANCIAL LLC
Reel/Frame 049931/0858 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2019
From: JPMORGAN CHASE BANK, N.A.
To: GIGAMEDIA ACCESS CORPORATION
Reel/Frame 049920/0903 →
SECURITY INTEREST Recorded Jan 17, 2019
From: GIGAMEDIA ACCESS CORPORATION
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 048052/0663 →
RELEASE OF SECURITY INTEREST Recorded Jan 17, 2019
From: BALANCE POINT CAPITAL PARTNERS II, L.P.
To: GIGAMEDIA ACCESS CORPORATION
Reel/Frame 048052/0817 →
RELEASE OF SECURITY INTEREST Recorded Oct 5, 2016
From: BRIDGEVIEW BANK GROUP
To: GIGAMEDIA ACCESS CORPORATION
Reel/Frame 039944/0640 →
SECURITY INTEREST Recorded Sep 26, 2016
From: GIGAMEDIA ACCESS CORPORATION (DBA GIGATRUST)
To: BALANCE POINT CAPITAL PARTNERS II, LLC, AS COLLATERAL AGENT
Reel/Frame 039851/0705 →
SECURITY INTEREST Recorded Jun 21, 2016
From: GIGAMEDIA ACCESS CORPORATION
To: BRIDGEVIEW BANK GROUP
Reel/Frame 039109/0686 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2008
From: PINION SOFTWARE, INC.
To: GIGATRUST
Reel/Frame 021147/0584 →
CHANGE OF NAME Recorded May 5, 2005
From: INFRAWORKS CORPORATION
To: PINION SOFTWARE, INC.
Reel/Frame 016182/0821 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2000
From: FRIEDMAN, GEORGE; STAREK, ROBERT PHILLIP; MURDOCK, CARLOS A.
To: INFRAWORKS CORPORATION
Reel/Frame 011999/0897 →