throbber
US007596695B2
`
`(12) United States Patent
`Liao et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,596,695 B2
`Sep. 29, 2009
`
`(54) APPLICATION-BASED DATA ENCRYPTION
`SYSTEMAND METHOD THEREOF
`
`2004/0091114 A1* 5/2004 Carter et al. ................ 380,259
`2004/0172538 A1* 9, 2004 Satoh et al. ...
`... 713/175
`
`(75) Inventors: Wen-Chiuan Liao, Hsinchu (TW);
`Jun-Bin Shi, Dounan Township (TW)
`s
`(73) Assignee: Industrial Technology Research
`Institute, Hsinchu (TW)
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 682 days.
`(21) Appl. No.: 10/981,127
`
`(*) Notice:
`
`(22) Filed:
`(65)
`
`2005, 0125684 A1* 6/2005 Schmidt ..................... T13/200
`2005/0235145 A1 * 10/2005 Slicket al. .................. T13,165
`2005/0278527 A1* 12/2005 Liao et al. ................... T13,165
`
`OTHER PUBLICATIONS
`
`“Linux Encryption HOWTO” by Marc Mutz, v0.2.2; Oct. 4, 2000.*
`Title:A parallel algorithm for determining the inverse of a matrix for
`use in blockcipher encryption/decryption. Source :Journal of
`Supercomputing, {J-Supercomput-Netherlands, Feb. 2007, vol.39,
`No. 2, p. 113-30, 20 refs, CODEN: JOSUED, ISSN: 0920-8542.
`Nov. 4, 2004
`Publisher Kluwer Academic Publishers, Netherlands."
`Prior Publication Data
`Title:ID-based threshold decryption secure against adaptive chosen
`ciphertext attack. Source :Computers and Electrical Engineering,
`US 2005/0278.527 A1
`Dec. 15, 2005
`{Comput-Electr-Eng-UK, May 2007, vol. 33, No. 3, p. 166-76, 20
`O
`O
`refs, CODEN: CPEEBO, ISSN: 0045-7906. Publisher: Elsevier,
`Foreign Application Priority Data
`(30)
`Jun. 10, 2004
`(TW) .............................. 93.116656. A UK."
`(51) Int. Cl.
`(Continued)
`(2006.01)
`H04L 29/06
`Primary Examiner Kambiz Zand
`E. c - - - - - ificati- - - - - -s - - - - -
`13/165; 380,
`Assistant Examiner—Monjour Rahim
`OSSO Sea
`.................
`74) Attorney, Agent,
`Firm—Thomas, Kayden,
`s
`380/28, 37,277, 44, 259, 713/175, 200, Rtagg, or firm
`nomas, sayden
`y
`y
`713/165, 194; 726/7
`See application file for complete search history.
`(57)
`ABSTRACT
`References Cited
`
`..
`
`(56)
`
`An application-based data encryption method implemented
`U.S. PATENT DOCUMENTS
`in an operating system. When receiving system calls for writ
`4,780,905 A * 10/1988 Cruts et al. ................... 380/44
`ing data opened by an application, the operating system
`5,584,023 A 12, 1996 Hsu ........................... 707,204
`-
`5,757,908 A * 5/1998 Cooper et al. ............... T13,165
`6,185,681 B1
`2/2001 Zizzi .......................... ... encrypts the data utilizing an encryption key. When receiving
`6,249,866 B1
`6/2001 Brundrett et al. ............ T13,165
`system calls for reading data requested by the application, the
`6,259,789 B1* 7/2001 Paone.............
`... 380/28
`operating system decrypts the data utilizing a decryption key.
`6,363.486 B1* 3/2002 Knapton, III .................. 726/7
`The encryption key and the decryption key may be the same
`7,200,760 B2 * 4/2007 Riebe et al. .....
`713,194
`key Or tWO different keys.
`7,221,757 B2* 5/2007 Alao ...........
`... 380,37
`2003/O123667 A1* 7, 2003 Weber et al. .
`... 380.277
`2004/0057579 A1* 3/2004 Fahrny ........................ 380/44
`
`24 Claims, 9 Drawing Sheets
`
`File header
`value of
`encryption
`bit = 0
`
`420
`
`421
`
`430
`
`
`
`
`
`
`
`480
`
`
`
`Designation model
`
`201
`
`File header
`
`Key encryption model
`
`Application key
`
`Key generation model
`
`value of encryption
`
`470
`Eaced Encrypted application
`key
`
`410a
`
`Executable file
`
`Program security
`utility
`
`200
`
`Executable file
`
`APPLE 1022
`
`1
`
`

`

`US 7,596,695 B2
`Page 2
`
`OTHER PUBLICATIONS
`Gerald J. Popek: Encryption and Secure Computer Networks; Com
`puting Surveys, vol. 11, No. 4. Dec. 1979: pp. 1-16.*
`
`“Linux Encryption How To' Mutz; 2000; http://encryptionhowto.
`sourceorge.net/Encryption-HOWTO-1.html.
`* cited by examiner
`
`2
`
`

`

`U.S. Patent
`U.S. Patent
`
`Sep. 29, 2009
`Sep. 29, 2009
`
`Sheet 1 of 9
`Sheet 1 of 9
`
`US 7,596,695 B2
`US 7,596,695 B2
`
`:
`:
`
`
`
`DOTE-—
`
`noneonddy
`
`AIOUIITA,
`
`raatesoudAry
`
`(uy10d)b‘SIs
`
`
`
`wiasAsJACTA
`
`3
`
`
`
`

`

`U.S. Patent
`
`Sep. 29, 2009
`
`Sheet 2 of 9
`
`US 7,596,695 B2
`
`Application-based data
`encryption system
`
`designation
`model
`
`key generation
`model
`
`kev encryption
`program
`Security utility Nias ryp
`
`2O2
`
`2O3
`
`crypto operating System
`
`process management
`System
`
`file management System
`
`
`
`300
`
`201
`
`200
`
`100
`
`40
`
`20
`
`30
`
`50
`
`FIG. 2
`
`4
`
`

`

`U.S. Patent
`
`Sep. 29, 2009
`
`Sheet 3 of 9
`
`US 7,596,695 B2
`
`An administrative authority is required for assigning
`an application a Secure State
`
`Utilizing the administrative authority
`
`Assigning an application the Secure State
`
`Acquiring an executable file of the application
`
`Recording designation in the executable file
`
`Providing a system key
`
`Providing an application key
`
`Encrypting the application key utilizing the system
`key to generate an encrypted application key
`
`S3
`
`S4
`
`S5
`
`S6
`
`S8
`
`SO
`
`S12
`
`S14
`
`FIG 3
`
`5
`
`

`

`U.S. Patent
`
`Sep. 29, 2009
`
`Sheet 4 of 9
`
`US 7,596,695 B2
`
`
`
`ºpoo uupuñou?
`
`[07
`
`ZOZ
`
`00Z
`
`
`
`
`
`
`
`Topolu u?o?eJou.33 KOSI
`
`6
`
`

`

`U.S. Patent
`
`Sep. 29, 2009
`
`Sheet 5 of 9
`
`US 7,596,695 B2
`
`
`
`
`
`0ZHovejustUeseueyed
`Lowneeeee
`
`
`
`
`
`ayoJayinwaysAs
`
`401'woI—~{uoneoyddy|-++|uonesyddy||voneoyddy|—eo1opoulJasq)
`
`Co
`
`i|
`
`apourw9skS
`
`ssa001g
`
`Lobo
`
`7
`
`
`
`

`

`U.S. Patent
`
`Sep. 29, 2009
`
`Sheet 6 of 9
`
`US 7,596,695 B2
`
`Start
`
`Preprocessing
`
`S510
`
`Reading file header 420b
`
`S520
`
`S530
`
`
`
`
`
`Yes
`
`Determining the value
`of encryption bit 421b
`
`S540
`
`Setting the value of corresponding
`encryption bit 421c to "1"
`
`S550
`
`Reading encrypted application key
`440 from Excutable file 410b
`
`S560
`
`
`
`Decrypting encrypted application
`key 440 to acquire and store
`application key 470 in process
`data structure 610
`
`FIG. 6
`
`8
`
`

`

`U.S. Patent
`
`Sep. 29, 2009
`
`
`
`0¢9O19
`
`AveOIL
`
`
`
`ByepSSdd01g
`
`
`
`WOTJEULLOFULOIE
`
`
`
`aimjonnseyep
`
`Sheet 7 of 9
`
`0c9
`
`US 7,596,695 B2
`
`LOld
`
`
`
`sInjonyyjsbyep
`
`
`
`0¢9Joyutod9[L.J
`
`
`
`UONCUWIOJULSITY
`
`
`
`ginjonyjseyep
`
`Joyutod31
`
`TONVULIOFULOIE
`
`AayuoneorddyOLY
`
`yoyutodAveoly119
`
`osoJoyutodICVyquondAroUg ainjonys9]1J
`
`9
`
`
`
`
`
`
`
`

`

`U.S. Patent
`
`Sep. 29, 2009
`
`Sheet 8 of 9
`
`US 7,596,695 B2
`
`Start
`
`Issuing a write system call
`
`S300
`
`Passing the write system
`call to the file system
`
`Passing the write system
`call to crypto driver 30
`
`S310
`
`S320
`
`S330
`
`
`
`
`
`Determining
`whether application
`10a is assigned the
`SeCure State
`
`
`
`No
`
`
`
`
`
`
`
`
`
`
`
`
`
`Acquiring application key
`470 from process data
`Structure 610
`
`Encrypting data utilizing
`application key 470 to
`generate encrypted data
`
`S340
`
`S350
`
`Passing the write System
`call to hardware driver 50
`
`S360
`
`Storing the encrypted data
`into storage device 140
`
`S370
`
`End
`
`FIG. 8
`
`10
`
`

`

`U.S. Patent
`
`Sep. 29, 2009
`
`Sheet 9 of 9
`
`US 7,596,695 B2
`
`Start
`
`S200
`
`Issuing read System call
`
`S210
`
`Passing the read system
`call to a file system
`
`S240
`
`S220
`
`Passing the read system
`call to crypto driver 30
`
`Reading data from
`storage device 140
`
`Passing the read system
`call to hardware driver 50
`
`S250
`
`
`
`
`
`Determining
`whether application
`10a is assigned the
`Secure State
`
`
`
`No
`
`
`
`
`
`
`
`S230
`
`Acquiring application
`key 470 from process
`data structure 610
`
`Decrypting the data using
`application key 470 to
`generate plain text data
`
`Passing the plain text
`data to application 10a
`
`S280
`
`End
`
`FIG. 9
`
`11
`
`

`

`1.
`APPLICATION-BASED DATA ENCRYPTION
`SYSTEMAND METHOD THEREOF
`
`US 7,596,695 B2
`
`BACKGROUND
`
`5
`
`10
`
`15
`
`25
`
`30
`
`The invention relates to data encryption, and in particular
`to a method of encrypting data utilizing an operating system
`according to the state of the application and Supervisory defi
`nition.
`With popularity of Internet and intranet, and usage of por
`table memory devices, document security has become a sig
`nificant issue.
`U.S. Pat. No. 6.249,866 discloses a data encryption method
`employing designation of a directory or a file to be encrypted.
`Any user, however, can demand the designation. In addition,
`encryption and decryption keys can be provided by any user.
`Thus, general users can easily obtain or copy plain text data
`without requiring authorization.
`A document “Linux Encryption HOWTO” by Marc Mutz
`discloses a data encryption method wherein a security disk
`Volume is presented.
`In the method, encryption and decryption keys are obtained
`by general users. When sharing encrypted files, it is necessary
`to disclose and share decryption keys to other users for access
`to the encrypted files. With the decryption keys, other users
`can easily decrypt the encrypted files stored in the security
`disk volume. Thus, the method cannot prevent risks to critical
`data.
`In addition, if encrypted data in the security disk Volume is
`copied to another Volume, the data is first decrypted to plain
`text data.
`U.S. Pat. No. 6,185,681 discloses another data encryption
`method providing encryption to electronic document man
`agement (EDM) systems without updating original EDM
`systems. A crypto server disclosed in the patent is responsible
`35
`for the encryption functions.
`FIG. 1 is a schematic diagram of the method. Memory a100
`comprises application all, EDM system a12, and crypto
`server a13. When application all issues commands compris
`ing “close”, “save' or “save as for a file, crypto server a13
`saves corresponding events and determines whether to
`encrypt the file. If the file is to be encrypted, crypto servera13
`encrypts the file and provides encrypted file to EDM a12.
`EDM a12 then performs corresponding “close”, “save' or
`“save as operations for the encrypted file. When application
`all issues an “open command for a file, crypto server a13
`saves corresponding events and determines whether to
`decrypt the file. If the file is to be decrypted, crypto servera13
`decrypts the file and provides the decrypted file to EDMa12.
`EDMa12 then performs the corresponding “open’ command
`50
`for the decrypted file.
`Application all and EDMa12 must conform to open docu
`ment management API (ODMA) standard. If application all
`or EDMa12 does not conform to the ODMA standard, crypto
`server a13 cannot save above-described events. In addition,
`crypto server a13 may be removed without affecting the entire
`EDM system a12 and operation thereof. If crypto server a13
`is removed, files managed by EDM system a12 cannot be
`automatically encrypted.
`Hence, there is a need for a new data encryption method to
`ameliorate the problems described above.
`
`40
`
`45
`
`55
`
`60
`
`SUMMARY
`
`Accordingly, an embodiment of the invention provides an
`application-based data encryption method, implemented in
`an operating system. Data opened by an application is
`
`65
`
`2
`encrypted utilizing an encryption key in response to each
`system call received by the operating system for storing data.
`Data requested by the application is decrypted utilizing a
`decryption key in response to each system call received by the
`operating system for reading data. The encryption key and the
`decryption key may comprise the same or two different keys.
`Additionally, applications may be designated to a secure
`state. When receiving a data write or read system call, encryp
`tion and decryption are automatically performed in respective
`response to the write and read system call only if an applica
`tion issuing the system call is in the secure state.
`An embodiment of the invention also provides an applica
`tion-based data encryption system comprising an operating
`system. The operating system comprises a crypto driver. The
`crypto driver encrypts data opened by an application utilizing
`an encryption key when the operating system receives any
`system call for storing data. The crypto driver decrypts data
`requested by the application utilizing a decryption key when
`the operating system receives any system call to read the data.
`The encryption key and the decryption key may comprise the
`same or two different keys.
`An embodiment of the invention may further comprise a
`program security utility. The program security utility desig
`nates applications assuming a secure state. When receiving a
`data write or read system call, an operating system automati
`cally performs encryption and decryption in respective
`response to the write and read system call only if the appli
`cation issuing the system call is in the secure state.
`
`DESCRIPTION OF THE DRAWINGS
`
`The invention can be more fully understood by reading the
`Subsequent detailed description and examples with refer
`ences made to the accompanying drawings, wherein:
`FIG. 1 is a schematic diagram of a conventional data
`encryption method;
`FIG. 2 is a schematic diagram of an application-based data
`encryption system of an embodiment of the invention;
`FIG.3 is a flowchart of secure state designation performed
`by a program security utility according to an embodiment of
`the invention;
`FIG. 4 is a schematic diagram of secure state designation in
`an embodiment of the invention;
`FIG. 5 is a schematic diagram of a computer system in an
`embodiment of the invention;
`FIG. 6 is a flowchart of executable file loading according to
`an embodiment of the invention;
`FIG. 7 is a schematic diagram of runtime data structure of
`an application in an embodiment of the invention;
`FIG. 8 is a flowchart of data writing of the application
`based data encryption method according to an embodiment of
`the invention; and
`FIG. 9 is a flowchart of data reading of the application
`based data encryption method according to an embodiment of
`the invention.
`
`DETAILED DESCRIPTION
`
`The invention provides an application-based data encryp
`tion method and system capable of encrypting data using an
`operating system according to the state of the application and
`Supervisory definition.
`In FIG. 2, application-based data encryption system 300
`comprises a program security utility 200 and a crypto oper
`ating system 100.
`Program security utility 200 comprises a designation
`model 201, key generation model 202 and key encryption
`
`12
`
`

`

`US 7,596,695 B2
`
`10
`
`15
`
`3
`model 203. Designation model 201 assigns an application a
`secure State. Key generation model 202 generates application
`keys for applications. Key encryption model 203 encrypts
`application keys.
`Crypto operating system 100 comprises a file management
`system 20, a crypto driver 30, a process management system
`40 and hardware driver 50. File management system 20 man
`ages file systems. Crypto driver 30 encrypts data output to an
`input/output device and decrypts data input from the input/
`output device. Process management system 40 manages pro
`cesses in crypto operating system 100. Hardware driver 50
`drives the input/output device. The input/output device may
`comprise a hard disk drive, a disc drive, a floppy disk drive, a
`network attached disk drive, or other storage device. Crypto
`driver 30 may be included in file management system 20 or
`integrated into crypto hardware.
`Program security utility 200 assigns an application a secure
`state. Crypto operating system 100 is capable of managing
`cipher text or plain text files. Specifically, crypto operating
`system 100 is capable of encrypting data opened by an appli
`cation before storage to a device or decrypting encrypted data
`requested by the application after the encrypted data is read
`from the storage device according to the state of the applica
`tion. File management system 20 instructs crypto driver 30 to
`perform encryption or decryption.
`FIG. 3 is a flowchart of operation of program security
`utility 200, which may comprise a portion of crypto operating
`system 100, an application or a portion thereof. Program
`security utility 200 requires that all procedures related to
`assigning an application the secure state must be performed
`utilizing a Supervisory authority (step S3) from an adminis
`trator. Users other than the administrator are referred to as
`general users. Program security utility 200 allows the admin
`istrator to instruct all procedures related to designating an
`application to the secure state (step S4). User authentication
`and limitation may be implemented automatically by crypto
`operating system 100 or manually by administrative person
`nel.
`An administrator uses program security utility 200 to
`assign an application the secure state (step S5). Program
`security utility 200 acquires an executable file of the applica
`tion (step S6) and records designation in the executable file
`(step S8), assigning a secure status. The designation informa
`45
`tion can comprise an encryption bit in the header of the
`executable file in which value, for example, “0” assigns non
`secure state and value “1” secure state.
`Additionally, a cipher text record (not shown) may store
`identification of applications in the secure State and encryp
`tion and decryption keys corresponding thereto. In this case,
`crypto operating system 100 loads the cipher text record.
`When I/O operations for write or read occur, crypto driver 30
`retrieves information stored in the cipher text record to deter
`mine whether the applications are in the secure state and
`acquire corresponding encryption and decryption keys.
`Crypto driver 30 may determine whether to perform encryp
`tion or decryption in response to the I/O operations issued by
`the application utilizing the cipher text record. Encryption
`and decryption are performed utilizing encryption and
`decryption key stored in the cipher text record if necessary.
`The encryption key and the decryption key may comprise the
`same or two different keys according to employed cryptog
`raphy architecture.
`In FIG. 4, executable file 410a is a disk image file of an
`application not designated, and comprises file header 420 and
`program code 430. File header 420 comprises an encryption
`
`55
`
`4
`bit 421, the value of which is “0”. Program security utility 200
`processes executable file 410a to generate executable file
`410b.
`Executable file 410b comprises file header 420b, program
`code 430b and encrypted application key 440. Content of
`program code 430b is the same as that of program code 430.
`Value of encryption bit 421b included in file header 420b has
`been designated as “1” by designation model 201.
`System key 480 is provided to crypto operating system 100
`for decrypting encrypted application key 440 (step S10) can
`be saved as a file or in a memory device. System key 480 may
`be provided by program security utility 200 or others. For
`example, system key 480 and application key 470 may be
`embedded keys of crypto operating system 100.
`Key generation model 202 provides application key 470
`(step S12). Key encryption model 203 encrypts application
`key 470 utilizing system key 480 to generate encrypted appli
`cation key 440 (step S14). Data access by the application of
`executable file 410a is encrypted or decrypted utilizing appli
`cation key 470 decrypted from encrypted application key
`440. System key 480 and application key 470 conform to
`symmetric cryptography and can be used as encryption and
`decryption keys, but are not limit thereto. For example, when
`conforming to asymmetric cryptography, at least system key
`480 or application key 470 may comprise an encryption key
`and a decryption key.
`Thus, only an administrator can assign an application the
`secure State and maintain application key 470 and system key
`480. General users cannot easily obtain or change application
`key 470 and system key 480 and cannot cancel the security
`designation.
`Program security utility 200 can designate crypto operat
`ing system 100 to the secure state. If in the secure state, crypto
`operating system 100 performs corresponding encryption or
`decryption operations for all output or input data of all appli
`cations.
`In FIG. 5, memory 120 comprises a plurality of applica
`tions 10a-10n in a user mode and crypto operating system
`100 in a system mode. Applications 10a-10n comprise appli
`cations loaded in main memory 120 and executed by the
`computer system while crypto operating system 100 is shown
`in a Linux-based or UNIX-based framework, the application
`based data encryption method of the invention may be imple
`mented in other operating systems.
`Application 10a comprises application of executable file
`410a. Description of loading application 10a is shown in
`given by referring to FIG. 4 to 7.
`In FIG. 6, first, process management system 40 performs
`loading preprocessing (step S510) allocating run time data
`structure of application 10a, as shown in FIG. 7.
`FIG. 7 is a schematic diagram of runtime data structure of
`application 10a, in which process data structure 610 com
`prises encryption bit 421c, application key 470, and file array
`pointer 611. Application key 470 is used by crypto driver 30
`for decrypting data after reading from storage device 140 or
`for encrypting data before storage in storage device 140. File
`array pointer 611 records address of file array 620. File array
`620 records address of file information data structure 630
`comprising all files opened, read, or written by the run time
`process of process data structure 610. File information data
`structure 630 enables file management system 20 to calculate
`addresses offiles in storage device 140 required for reading or
`writing the files.
`After load preprocessing, process management system 40
`reads file header 420b (step S520) and determines the value of
`encryption bit 421b to record corresponding designation
`information in process data structure 610 (step S530). If
`
`25
`
`30
`
`35
`
`40
`
`50
`
`60
`
`65
`
`13
`
`

`

`US 7,596,695 B2
`
`5
`
`10
`
`15
`
`25
`
`30
`
`40
`
`5
`encryption bit 421b is “1”, executable file 410b is in the
`secure state. Thus, process management system 40 sets the
`value of corresponding encryption bit 421C in process data
`structure 610 to “1” (step S540), reads encrypted application
`key 440 from executable file 410b (step S550) and decrypts
`encrypted application key 440 using system key 480 to
`acquire and store application key 470 in process data structure
`610 (step S560). Application key 470, however, may be stored
`in other data structure. Encrypted application key 440 may
`not be decrypted until encryption or decryption.
`If encryption bit is “0”, process management system 40
`directly performs loading postprocessing to allocate memory
`capacity for application 10a (step S570).
`When applications 10b-10n are not assigned the secure
`state, input and output operations thereofare performed as if
`crypto driver 30 is not present. If application 10a has been
`assigned the secure state, input and output operations of
`applications 10a activate decryption or encryption accord
`ingly.
`Virtual file system 22 in FIG. 5 provides a standardized file
`operation interface through which file operations, such as
`open, read, write, or lseek operations, are conveyed to dedi
`cated file systems. File systems 24a-24n is responsible for
`managing allocation, storage or access of files in specific
`volumes of storage device 140. Different file systems may
`provide different file management mechanisms. File systems
`24a-24n must calculate the address of a data set in Storage
`device 140 before writing or reading thereof. Hardware driver
`50 controls hardware for actual data input or output. Crypto
`driver 30 decrypts data for read requests before providing the
`data to an application requesting the data and encrypts data
`for write requests before passing the data to hardware driver
`50. Buffer cache 26 is responsible for temporarily storing data
`to increase efficiency of file systems 24a-24n. Process man
`agement system 40 provides encryption and decryption keys
`35
`to crypto driver 30.
`FIG. 8 is a flowchart of data writing steps, including auto
`encryption. First, application 10a passes a write request to file
`management system 20 via a write system call (step S300).
`The write system call is issued to write a data set to storage
`device 140. Virtual file system 22 of file management system
`20 determines the file system to which the data set belongs
`and then passes the write request to the file system (step
`S310). The file system 24 calculates the address of the data set
`in storage device 140 based on file information data structure
`630 and passes the write request to crypto driver 30 (step
`S320). Crypto driver 30 identifies encryption bit 421c to
`determine whether application 10a is assigned the secure
`state (step S330). If application 10a is assigned the secure
`state, the data set is determined to be encrypted before written
`into storage device 140, and step S340 is performed. If not,
`step S360 is performed directly. Crypto driver 30 acquires
`application key 470 from process data structure 610 (step
`S340) and encrypts the data set utilizing application key 470
`to generate a encrypted data set (step S350). Crypto driver 30
`passes the write request to hardware driver 50 (step S360).
`Hardware driver 50 stores the encrypted data set into storage
`device 140 (step S370), completing auto encryption process
`in response to the write system call.
`FIG. 9 is a flowchart of data reading steps including auto
`decryption. First, application 10a passes a read request to file
`management system 20 via a read system call (step S200).
`The read system call is issued to read a data set from Storage
`device 140. Virtual file system 22 of file management system
`20 determines the file system to which the data set belongs
`and passes the read request to the file system (step S210). The
`file system calculates the address of the data set in Storage
`
`55
`
`45
`
`50
`
`60
`
`65
`
`6
`device 140 based on file information data structure 630 and
`passes the read request to crypto driver 30 (step S220). Crypto
`driver 30 passes the read request to hardware driver 50 (step
`S230). Hardware driver 50 reads the data set from storage
`device 140 into buffer cache 26 (step S240). Crypto driver 30
`identifies encryption bit 421C to determine whether applica
`tion 10a is assigned the secure state (step S250). If application
`10a is assigned the secure state, the set of data is determined
`to be cipher text and determined to be decrypted, and step
`S260 is performed. If not, step S280 is performed directly.
`Crypto driver 30 acquires application key 470 from process
`data structure 610 (step S260) and decrypts the data set using
`application key 470 to generate a plain text data set (step
`S270). Crypto driver 30 passes the plain text data set to file
`management system 20. File management system 20 pro
`vides the plain text data set to application 10a (step S280),
`completing auto decryption in response to the read system
`call.
`The invention can be implemented in devices, such as
`computers, Network Attached Storage (NAS), Storage Area
`Network (SAN), or others, such as digital cameras or video
`game devices.
`While the invention has been described by way of example
`and in terms of the preferred embodiment, it is to be under
`stood that the invention is not limited thereto. To the contrary,
`it is intended to cover various modifications and similar
`arrangements (as would be apparent to those skilled in the
`art). Therefore, the scope of the appended claims should be
`accorded the broadest interpretation so as to encompass all
`Such modifications and similar arrangements.
`What is claimed is:
`1. An application-based data encryption system, compris
`1ng:
`a first executable file, further comprising a first file header
`and a first program code, wherein the first file header
`comprises a first encryption bit;
`a second executable file, further comprising a second file
`header, a second program code, and an encrypted appli
`cation key, wherein the second file header comprises a
`second encryption bit;
`a system key:
`a program security utility, further comprising:
`a key generation model, providing an application key:
`and
`a key encryption model, encrypting the application key
`utilizing the system key to generate the encrypted
`application key:
`wherein the program security utility processes the first
`executable file to generate the second executable file;
`and
`a crypto operating system, decrypting the encrypted appli
`cation key using the system key, further comprising:
`a file management system, further comprising:
`a virtual file system, when the file management sys
`tem receives a write system call corresponding to
`an application, determining a file system to which a
`file to be written for the application belongs and
`then passing a write request to the determined file
`system; and
`a file system, when the write request is received, cal
`culating a specified address of the file to be written
`in a storage device based on a file information data
`structure corresponding to the application and
`passing the write request;
`a crypto driver, receiving the write request from the
`file system, identifying an encryption bit of a pro
`cess data structure corresponding to the application
`
`14
`
`

`

`US 7,596,695 B2
`
`5
`
`10
`
`15
`
`30
`
`35
`
`45
`
`25
`
`7
`to determine whether the application is assigned a
`secure state, acquiring the application key from the
`process data structure if the application is assigned
`the secure state, and encrypting the file to be written
`utilizing the application key to generate an
`encrypted file; and
`hardware driver, retrieving the write request from the
`crypto driver and writing the encrypted file into the
`specified address of the storage device.
`2. The system as claimed in claim 1, wherein the first
`encryption bit is “0”.
`3. The system as claimed in claim 1, wherein the first
`executable file is a disk image file of an application not
`designated.
`4. The system as claimed in claim 1, wherein the second
`encryption bit is “1”.
`5. The system as claimed in claim 1, wherein the system
`key is saved as a file or in a memory device.
`6. The system as claimed in claim 1, wherein the system
`key is provided by the program security utility.
`7. The system as claimed in claim 6, wherein the system
`key and the application key are embedded keys of the crypto
`operating system.
`8. The system as claimed inclaim 1, wherein data access by
`an application of the second executable file is encrypted or
`decrypted utilizing the application key decrypted from the
`encrypted application key.
`9. The system as claimed in claim 1, wherein the system
`key or the application key comprises an encryption key and a
`decryption key.
`10. The system as claimed in claim 1, further comprising a
`process management system, wherein the program security
`utility and the process management system further designates
`the crypto operating system to the secure state.
`11. The system as claimed in claim 10, wherein the crypto
`operating system in the secure state performs corresponding
`encryption or decryption operations for all output or input
`data of all applications.
`12. An application-based data encryption method, com
`40
`prising:
`providing a system key, a first executable file, and a second
`executable file, wherein the first executable file com
`prises a first file header and a first program code and the
`first file header comprises a first encryption bit, and the
`Second executable file comprises a second file header, a
`Second program code, and an encrypted application key
`and the second file header comprises a second encryp
`tion bit;
`providing a program security utility, further comprising:
`a key generation model, providing an application key; and
`a key encryption model, encrypting the application key
`utilizing the system key to generate the encrypted appli
`cation key:
`processing the first executable file to generate the second
`executable file using the program security utility; and
`decrypting the encrypted application key according to the
`System key using a crypto operating system, wherein the
`crypto operating system comprises a file management
`System, a crypto driver, and hardware driver and, when
`the file management system receives a write system call
`corresponding to an application, the method further
`comprises:
`determining a file system to which a file to be written for
`the application belongs and then passing a write
`request to the determined file system using a virtual
`file system;
`
`50
`
`55
`
`60
`
`65
`
`8
`when the write request is received, calculating a speci
`fied address of the file to be written in a storage device
`based on a file information data structure correspond
`ing to the application and passing the write request to
`the crypto driver using

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket