Nothing Special   »   [go: up one dir, main page]

US7228432B2 - Method and apparatus for providing security for a computer system - Google Patents

Method and apparatus for providing security for a computer system Download PDF

Info

Publication number
US7228432B2
US7228432B2 US10/660,335 US66033503A US7228432B2 US 7228432 B2 US7228432 B2 US 7228432B2 US 66033503 A US66033503 A US 66033503A US 7228432 B2 US7228432 B2 US 7228432B2
Authority
US
United States
Prior art keywords
file
processor
security
request
set forth
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US10/660,335
Other versions
US20050060541A1 (en
Inventor
Michael F. Angelo
E David Neufeld
David Heisey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
PTAB case IPR2019-01596 filed (Not Instituted - Merits) litigation Critical https://portal.unifiedpatents.com/ptab/case/IPR2019-01596 Petitioner: "Unified Patents PTAB Data" by Unified Patents is licensed under a Creative Commons Attribution 4.0 International License.
US case filed in California Northern District Court litigation https://portal.unifiedpatents.com/litigation/California%20Northern%20District%20Court/case/4%3A18-cv-05434 Source: District Court Jurisdiction: California Northern District Court "Unified Patents Litigation Data" by Unified Patents is licensed under a Creative Commons Attribution 4.0 International License.
First worldwide family litigation filed litigation https://patents.darts-ip.com/?family=34273644&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=US7228432(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Assigned to HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. reassignment HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ANGELO, MICHAEL F., HEISEY, DAVID, NEUFELD, E. DAVID
Priority to US10/660,335 priority Critical patent/US7228432B2/en
Application filed by Individual filed Critical Individual
Publication of US20050060541A1 publication Critical patent/US20050060541A1/en
Publication of US7228432B2 publication Critical patent/US7228432B2/en
Application granted granted Critical
Assigned to HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP reassignment HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Assigned to FACEBOOK, INC. reassignment FACEBOOK, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HEWLETT PACKARD ENTERPRISE COMPANY, HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Assigned to META PLATFORMS, INC. reassignment META PLATFORMS, INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: FACEBOOK, INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Definitions

  • Computer networks may be arranged to allow information, such as files or programs, to be shared across an office or any geographic boundary.
  • computer systems in a network may include various security systems, such as programs or devices, to prevent unauthorized intrusions or attacks from outside sources. These security systems, for example, may prevent malicious or unknown code that corrupt data and programs stored on the computer system.
  • computer systems In providing security for a computer system, computer systems typically preclassify viruses to assist in identifying malicious code. However, when new viruses are introduced, computer systems are vulnerable because a virus may be unknown or unclassified. As a result, the computer system is not able to remove an unknown virus before it attacks the computer system. In addition, the performance of the central processing unit (“CPU”) may be impacted by the operation of security functions of the computer system. The computer system's overall performance may be diminished because the security functions are consuming the resources of the CPU.
  • CPU central processing unit
  • the present invention relates generally to a technique of providing security for a computer system.
  • a request may be generated for a file.
  • the dedicated security processor receives the request for the file and accesses the requested file. Then, the dedicated security processor validates the requested file and provides the file to another processor, if the requested file is validated.
  • FIG. 1 is a block diagram illustrating a computer network in accordance with embodiments of the present invention
  • FIG. 2 is a block diagram illustrating a computer system in a network in accordance with embodiments of the present invention
  • FIG. 3 is a process flow diagram illustrating a security process in accordance with embodiments of the present invention.
  • FIG. 4 is a process flow diagram illustrating a security process that verifies the identity of a requestor in accordance with embodiments of the present invention.
  • FIG. 5 is a process flow diagram illustrating a security process that verifies an identifying number associated with a request in accordance with embodiments of the present invention.
  • the disclosed embodiments provide an improved approach that may address one or more of the issues discussed above, while enhancing the performance of a computer system.
  • security functions may be provided to protect the system.
  • the security functions may be managed by a device or component, such as a processor, that is within the computer system or external to the computer system.
  • the security of the computer system is maintained in a manner that: (1) protects against defeat by thread models or technologies; (2) minimizes interaction with the CPU; and (3) allows trapping of code that is unknown or unclassified.
  • the disclosed embodiments may enable a computer system to operate in a more efficient manner by having a security co-processor that protects against defeat by thread models or technologies.
  • Threaded programs allow background and foreground action to take place without the overhead of launching multiple processes or inter-process communication.
  • the security co-processor may minimize the performance impact on the central processing unit (“CPU”) of a computer system by performing the security functions, which allows the CPU to devote more resources to non-security related functions.
  • the security co-processor may examine new code without the code being pre-classified. Thus, as new viruses are introduced, the security co-processor may trap the unknown or unclassified code before the CPU is damaged by an attack from the code.
  • a server 20 may be connected to a plurality of client computers 22 , 24 and 26 .
  • the server 20 may be connected to as many as “n” different client computers.
  • Each client computer in the network 10 may be a functional client computer and may be a desktop personal computer (“PC”), a notebook PC, a tablet PC, a personal digital assistant (“PDA”), for example.
  • the magnitude of “n” may be a function of the computing power of the server 20 .
  • the server 20 may be connected via a network infrastructure 30 , which may include any combination of hubs, switches, routers, etc. While the network infrastructure 30 is illustrated as being either a local area network (“LAN”), storage area network (“SAN”), a wide area network (“WAN”), or a metropolitan area network (“MAN”), those skilled in the art will appreciate that the network infrastructure 30 may assume other forms or may even provide network connectivity through the Internet. As described below, the network 10 may include other servers as well, which may be dispersed geographically with respect to each other to support client computers in other locations.
  • LAN local area network
  • SAN storage area network
  • WAN wide area network
  • MAN metropolitan area network
  • the network infrastructure 30 may connect the server 20 to the server 40 , which may be representative of any other server in the network environment.
  • the server 40 may be connected to one or more client computers 42 , 44 , and 46 .
  • a network infrastructure 50 which may include a LAN, a WAN, a MAN, or other network configuration, may be used to connect the client computers 42 , 44 and 46 to the server 40 .
  • the server 40 may additionally be connected to the Internet 60 , which may be connected to a server 70 .
  • the server 70 also may be connected to one or more of client computers 72 , 74 and 76 .
  • a virus or malicious code may attack the server 40 , which may result in other systems, such as the plurality of client computers 42 , 44 , and 46 , being impacted. Also, the server 40 may have to respond to various requests and code that may diminish performance. If the server 40 supports a large number of clients, such as a plurality of client computers 42 , 44 , and 46 , a large customer or client base may experiences problems, which may result in delays in operation. In addition, if the server 40 is attacked by an unknown or unclassified virus, then the virus may damage information within the server 40 or result in downtime for the computer network 10 .
  • FIG. 2 is a block diagram illustrating an exemplary computer system in accordance with embodiments of the present invention.
  • the computer system which may include client computers 22 , 24 , 26 , 42 , 44 , 46 , 72 , 74 , 76 or servers 20 , 40 , 70 , as discussed above, is generally referred to by the reference numeral 100 .
  • the architecture of the computer system 100 is given for purposes of illustration only, as computer systems in which the present teachings are applicable may include additional components or a subset of the components illustrated in FIG. 2 .
  • the computer system 100 may comprise a processor complex 102 , which may include a plurality of central processing units (“CPUs”).
  • a core logic chipset 104 which may manage a variety of functions on behalf of the processor complex 102 , may be connected to the processor complex via a processor bus 103 .
  • the core logic chipset 104 may be connected via memory bus 105 to a system random access memory, which may comprise static random access memory (“SRAM”), dynamic random access memory (“DRAM”) or other suitable memories.
  • the memory may be a shared system memory to hold memory resident files.
  • a video graphics controller 110 may be connected to the core logic chipset 104 via a video bus 107 to provide a signal that produces a display image on a video display 112 .
  • a bus 109 such as a peripheral component interface (“PCI”) bus or the like may connect the core logic chipset to a variety of system devices, such as a network interface card 122 and a PCI/PCI bridge 124 .
  • the network interface card 122 may provide communication capability to the computer system 100 via a communication bus 119 .
  • the communication bus 119 may be connected to other computer systems, as discussed above.
  • the PCI/PCI bridge 124 may provide capacity for additional PCI devices on a PCI bus 117 .
  • a PCI/SCSI bus adapter 114 may provide access to SCSI devices such as a disk drive 130 and a tape drive 132 via a SCSI bus 131 .
  • a PCI/ATA controller 118 may provide access to additional devices such as a disk drive 128 and a CD ROM drive 134 .
  • a PCI/EISA/LPC bus may provide access to system devices such as a read only memory basic input/output system (“ROM BIOS”) 140 , a non-volatile memory 142 (such as flash memory or the like), a modem 120 or the like via a bus 113 .
  • the modem may provide communication access via a phone line 121 .
  • An input/output controller 126 which may be connected to the bus 113 may provide access to system devices such as a floppy disk drive 150 , a serial port 152 a real time clock (“RTC”) 154 , a CD ROM drive 144 , a keyboard 146 , a mouse 148 and the like.
  • system devices such as a floppy disk drive 150 , a serial port 152 a real time clock (“RTC”) 154 , a CD ROM drive 144 , a keyboard 146 , a mouse 148 and the like.
  • RTC real time clock
  • a security co-processor 111 may be connected to the bus 109 to perform security functions as more fully described below.
  • the security co-processor 111 may be configured to validate certain functions and activities before they are actually executed. Also, the security co-processor 111 may be dedicated to providing security functions to the computer system 100 . Because the security co-processor 111 performs the security functions and activities, it frees the use of the CPU cycles on the processor complex 102 for other computing activities.
  • the security co-processor 111 may examine code independent of the operating system (“OS”) executing in the computer system 100 or other computers in the computer network 10 .
  • OS operating system
  • the security co-processor 111 may enable the computer system 100 to prevent thread technologies and unknown code from attacking the computer system 100 .
  • the security co-processor 111 may examine code independently of the processor complex 102 , which may be executing an operating system.
  • the security co-processor 111 may trap code that is unknown or unclassified to prevent it from impacting the performance or integrity of the computer system 100 .
  • the security co-processor 111 does not have to access stored information of known viruses or attack signatures to be able to prevent malicious code.
  • the security co-processor 111 may include indications regarding the file or code being accessed.
  • the security co-processor 111 may include a return status field, such as a semaphore, which may be a flag to indicate whether the file or resource is being used by another thread or process.
  • the return status field may be within a memory or a register, to name a few examples.
  • the return status field may be used by the security co-processor 111 to communicate status information about the files that it validates.
  • providing desired security may include protecting a system from viruses or attacks by hackers by implementing a security co-processor 111 .
  • One way to enhance security in the computer system 100 along with the security co-processor 111 may be to prevent or restrict access to system passwords without authentication that the access is by an authorized user.
  • FIG. 3 shows an example of how the security co-processor 111 may operate to prevent unauthorized access to files stored on the computer system 100 .
  • FIG. 3 is a process flow diagram illustrating a security process in accordance with embodiments of the present invention.
  • a system such as the computer system 100 of FIG. 2
  • the processor may correspond to the processor complex 102 of FIG. 2 or another computer
  • the security co-processor may correspond to the security co-processor 111 of FIG. 2 .
  • the process begins at block 202 .
  • the process involves the validation of a file in response to a command or request from a processor that may be an internal processor 102 to the computer system 100 or an external processor at a remote system.
  • the security co-processor 111 may validate the request prior to the execution of certain commands on the system, while operating independently of the OS on the system.
  • the processor 102 may generate a request, which may be a request for a file.
  • the request may include the filename, path, error correction information, identifying data, user identification, system identification, a password or other suitable information.
  • the information or portions of the information within the request may be hashed or signed with a key.
  • the processor 102 may transmit the request to a component, such as an I/O driver, which may be a part of the core logic chipset 104 or be a software program, which forwards the request to the security co-processor 111 in block 206 .
  • the security co-processor 111 may locate the file that corresponds to the request.
  • the file may be located within the system memory 106 or 146 .
  • the security co-processor 111 may access or look up the file.
  • the security co-processor may access a record that corresponds to the requested file.
  • the record may be a signed or hashed version of information that corresponds to users or systems authorized to access the file.
  • the record may include similar information to the request, such as a filename, path, error correction information, identifying data, user identification, system identification, a password or other suitable information.
  • the record may be stored within a memory 106 or 146 , a device, a local database, or a remote database that is accessible by the security co-processor 111 .
  • the security co-processor 111 may communicate with the database through a protocol, such as Lightweight Directory Access Protocol (“LDAP”).
  • LDAP is a directory service protocol that may operate over TCP/IP.
  • the record may include a signature or hash for verifying the authenticity or integrity of the requested file, such as a digital signature. This may allow the system 100 to determine if the file has been altered by signing a portion of the file, a compressed version of the file, or the complete file. Similarly, the system 100 may preload the file, as a memory resident file, into a cache or other similar memory location, such as system memory 106 or 146 .
  • Digital “signatures” may be used to provide authentication of the file.
  • a digital signature is a data component, such as a hash, that may have been encrypted using a private key authentication process or the like.
  • the encryption process creates a unique signature, which may allow verification of a data file.
  • the use of digital signatures may allow the security co-processor 111 to validate that the file requested is from a trusted source and/or that the file has not been subsequently altered by anyone else.
  • the record associated with the request may include validation data such as an error checking and correction (“ECC”) code.
  • ECC error checking and correction
  • the ECC code may be implemented to repair potential problems with the file. For instance, if a file is corrupted or other problems exist with the file, the ECC code may be used to correct the file back to its original form. This may allow the system 100 to operate more efficiently because files may be corrected without involving the processor 102 or other failure routines.
  • the security co-processor 111 may determine if the requested file is valid.
  • the requested file may be verified to determine if the requested file is valid to perform certain commands or operations or if the requested file has been altered.
  • the verification of the requested file may involve accessing information within the request, from a database, and/or memory location and comparing it with the file, a portion of the file, or the record, which may include information as discussed above.
  • the validation of the requested file may involve verifying a digital signature in the request against data within the record to authenticate or verify the integrity of the file.
  • the validation may involve verifying the ECC code of the file against data within the record.
  • the request may be transmitted over LDAP, which may include information that verifies the authorization to access the files.
  • a return status field may be set in block 214 to indicate that the file return is invalid.
  • the setting may create a status message that indicates that the request is invalid, set a return status field to invalid, or simply abort the access.
  • this allows the security co-processor to trap a file that fails authenticity or integrity verification checks against the record, validated version, or signed file. This may prevent new system or code attacks without pre-classification.
  • the request may be executed at block 216 . The execution of the request may involve delivering the file to the security co-processor 111 , executing the command in the request, or other similar function.
  • a status return field may be set in block 218 to indicate that the file return is valid.
  • the status return field setting may create a status message that indicates that the request is valid, set a return status to “return file good,” or simply indicate that the file is access is complete.
  • the security co-processor 111 may set the return status to “good” for the security validation for the request at block 220 .
  • the setting of the return status to “good” may result in a message being sent to the processor or may allow the security co-processor 111 to free up resources for other requests or may involve sending the file to the processor 102 for processing.
  • the process may continue to process the file without the involvement of the security co-processor 111 at block 222 . Thus, the process ends at block 224 .
  • the requests to the security co-processor 111 may include the identity of a requestor. By including the identity of the requestor in the request, the security co-processor 111 may be able to provide added protection for certain files or prevent unauthorized access to certain information.
  • a process flow illustrating a security process that verifies the identity of a requestor in accordance with embodiments of the present invention is shown in FIG. 4 .
  • FIG. 4 is a process flow diagram, which may be best understood by concurrently viewing FIG. 2 , illustrating the use of a security co-processor 111 to process requests and to verify the identity of a requester in accordance with embodiments of the present invention.
  • a system such as the computer system 100 of FIG. 2
  • the process begins at block 302 .
  • the process may involve the validation of the user accessing the file.
  • the security co-processor 111 may validate the requestor prior to the operation or execution of certain commands by the system.
  • the processor 102 may generate a request, which may be a request for a file or command.
  • the processor 102 may transmit the request to a component, such as an I/O driver, that forwards the request to the security co-processor 111 in block 306 , similar to step 206 of FIG. 3 discussed above.
  • the security co-processor 111 may locate the file that corresponds with the request. Then, at block 310 , the security co-processor 111 may access the file.
  • the access of the file may be similar to the file lookup in block 210 of FIG. 3 , which may include a record having a digital signature to verify authenticity or the integrity of the file.
  • the record may be stored within a variety of locations, such as a memory 106 or 146 that is coupled to the security co-processor 111 , and may communicate with the database through a protocol, such as LDAP.
  • the security co-processor 111 may determine if the requested file is valid. The requested file may be verified as discussed above with regard to block 212 of FIG. 3 . If the requested file is not valid, then a return status field may be set in block 314 to indicate that the file return is invalid. The setting of the return status field may create a status message that indicates that the request is invalid, set a return status field to invalid, or simply abort the access. Again, this allows the security co-processor 111 to trap a file that fails to be verified, as discussed above. However, if the requested file is valid, then the request may be executed at block 316 .
  • the execution of the request may involve delivering the file to the security co-processor 111 , executing the command in the request, or other similar function.
  • a status return field may be set in block 318 to indicate that the file return is valid.
  • the status return field setting may create a status message that indicates that the request is valid, set a return status to “return file good,” or simply indicate that the file is access is complete.
  • the security co-processor 111 may validate whether the user who requested access to the file or command is an authorized user. In validating the user access, the security co-processor 111 may access a record that corresponds to the user access being requested.
  • the record may include a signature for verifying the authenticity of the user requesting the file or the execution of a command. Similar to the file discussed above, the authenticity of the user access may be provided by a digital signature.
  • the digital signature may be created through any manner, such as a private and public key or hash algorithm, for example.
  • the user access may include commands, authorized files or other information relating to the user.
  • the security co-processor 111 may determine if the user access is valid. The verification of the user access may be through accessing information within the security co-processor 111 , from a database, or memory location. The information may then be matched against the user access information to determine if the user access is valid.
  • the return status field may be set to “valid” at block 322 . However, if the user access is not valid, then a return status field may be set in block 314 to indicate that the return status is invalid. As discussed before, the return status field being set to “invalid” may result in a message being generated or the processor 102 being notified of the failed request.
  • the security co-processor 111 may set the return status field to “good” for the security validation at block 324 . The setting of the return status field to “good” may result in a message being sent to the processor 102 , may allow the security co-processor 111 to free up resources for other requests, or may involve sending the file to the processor 102 for processing. Once the return status field is set for the request, the process may continue to process the file without the involvement of the security co-processor 111 at block 326 . The process ends at block 328 .
  • the lookup of the user access of block 320 may be implemented after the security co-processor 111 looks up the file in block 310 . Then, the user access verification of block 322 may be performed. After the user access has been verified, the validation of requested file may take place at block 312 . Accordingly, the verification process may be further variety for other designs.
  • the requests to the security co-processor 111 may include a number or value to identify a requestor.
  • the identifying value may be a nonce, which is a randomly generated number, or may be a time stamp that is associated with the time of the request.
  • the security co-processor 111 may be able to provide added protection for certain files or prevent unauthorized access to certain information.
  • the identifying value may be exchanged before the request is received by the security co-processor 111 , delivered after the request has been sent, or as part of the requesting process.
  • the security co-processor may prevent playback attacks or other similar attacks from being able to access the computer system.
  • Using the identifying value may provide the computer system 100 with increased security without burdening the processor 102 .
  • a process flow illustrating a security process that verifies the number or value identifying a requestor in accordance with embodiments of the present invention is shown in FIG. 5 .
  • FIG. 5 is a process flow diagram, which may be best understood by concurrently viewing FIG. 2 , illustrating the use of a security co-processor 111 to process requests and verify a nonce, which may be a random number to identify a requester, in accordance with embodiments of the present invention.
  • a system such as the computer system 100 of FIG. 2 , may include a processor 102 and a security co-processor 111 .
  • the process begins at block 402 .
  • the process involves the use of an identifying number to validate the requestor of the command or file.
  • the security co-processor 111 may validate the requester prior to the operation of certain commands on the system.
  • the processor 102 may generate a request along with an identifying value, which may be a request for a file or command.
  • the request may include a variety of information, such as a filename, path, user identification, or system identification, as discussed above.
  • the request may also include hashed or signed information that may be associated with a time stamp, a random number, or nonce as well.
  • the identifying value or number may be a nonce or time stamp, as discussed above, which may be exchanged before the request is received by the security co-processor 111 .
  • the processor 102 may transmit the request along with the identifying number to a component, such as an I/O driver, that forwards the request to the security co-processor 111 in block 406 , which is similar to step 206 of FIG. 3 discussed above.
  • the security co-processor 111 may locate the file that corresponds with the request. Then, at block 410 , the security co-processor 111 may access the file.
  • the access of the file may be similar to the file lookup in block 210 of FIG. 3 , which may include a record having a digital signature for authenticity, integrity, or error correction code (“ECC”).
  • ECC error correction code
  • the record may also include hashed or signed information that may be associated with a time stamp, a random number, or nonce.
  • the record may be stored within a memory that is coupled to the security co-processor 111 and may communicate with the database through a protocol, such as LDAP.
  • the security co-processor 111 may determine if the requested file is valid. The requested file may be verified as discussed above with regard to block 212 of FIG. 3 . If the requested file is not valid, then a return status field may be set in block 414 to indicate that the file return is invalid, as discussed above with regard to block 214 of FIG. 3 . As noted above, the security co-processor 111 may trap a file that fails to be verified without pre-classification. However, if the requested file is valid, then the request may be executed at block 416 , as discussed above with regard to block 216 of FIG. 3 . After the file is transmitted to the security co-processor 111 , a status return field may be set in block 418 to indicate that the file return is valid.
  • the security co-processor 111 may look up the identifying number. In looking up the identifying number, the security co-processor 111 may access a record that corresponds to the identifying number within the request.
  • the record may include an identifying number, such as a randomly generated number for the communication that may be used to provide additional security. This protection may prevent playback attacks from circumventing security of the computer system 100 .
  • the authenticity of the identifying number may be hashed or signed to provide additional protection as discussed above with regard to the file or request.
  • the security co-processor 111 may determine if the identifying number is valid. The verification of the identifying number may be through accessing information within the security co-processor 111 , from a database, or memory location. The information may then be matched against the identifying number to determine if the user is authorized or the command is valid.
  • the return status field may be set to “valid” at block 422 . However, if the identifying number is not valid, then a return status field may be set in block 414 to indicate that the return status is invalid. As discussed before, the return status field being set to “invalid” may result in a message being generated or the processor 102 being notified of the failed request. After the return status field is set for the user access, the security co-processor 111 may set the return status field to “good” for the security validation at block 424 .
  • the setting of the return status field to “good” may result in a message being sent to the processor 102 , may allow the security co-processor 111 to free up resources for other requests, or may involve sending the file to the processor 102 for processing.
  • the process may continue to process the file without the involvement of the security co-processor 111 at block 426 .
  • the lookup of the identifying number, such as the nonce or time stamp, in block 420 may be implemented after the security co-processor 111 looks up the file in block 410 . Then, the identifying number verification of block 422 may be performed. After the identifying number has been verified, the validity of the requested file may be determined at block 412 .
  • the verification of user access 320 and 322 of FIG. 4 may be implemented in the process flow diagram 400 of FIG. 5 after block 410 and before block 426 . Accordingly, the verification process may be further variety for other designs.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

A method and apparatus for providing security for a computer system, which includes generating a request for a file. The request is received at a dedicated security processor, where the dedicated security processor may access the file to validate the requested file. Upon determining that the requested file is valid, the dedicated security processor may provide the requested file to another processor.

Description

BACKGROUND OF THE INVENTION
This section is intended to introduce the reader to various aspects of art, which may be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present techniques. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
In the field of processor-based computer systems, it may be desirable for information to be transferred from a computer system to another computer system via a network. Computer networks may be arranged to allow information, such as files or programs, to be shared across an office or any geographic boundary. As an aspect of efficiently maintaining the exchange of information, computer systems in a network may include various security systems, such as programs or devices, to prevent unauthorized intrusions or attacks from outside sources. These security systems, for example, may prevent malicious or unknown code that corrupt data and programs stored on the computer system.
In providing security for a computer system, computer systems typically preclassify viruses to assist in identifying malicious code. However, when new viruses are introduced, computer systems are vulnerable because a virus may be unknown or unclassified. As a result, the computer system is not able to remove an unknown virus before it attacks the computer system. In addition, the performance of the central processing unit (“CPU”) may be impacted by the operation of security functions of the computer system. The computer system's overall performance may be diminished because the security functions are consuming the resources of the CPU.
SUMMARY OF THE INVENTION
The present invention relates generally to a technique of providing security for a computer system. In the technique, a request may be generated for a file. The dedicated security processor receives the request for the file and accesses the requested file. Then, the dedicated security processor validates the requested file and provides the file to another processor, if the requested file is validated.
BRIEF DESCRIPTION OF THE DRAWINGS
Exemplary embodiments of the invention are apparent upon reading the following detailed description with reference to the drawings in which:
FIG. 1 is a block diagram illustrating a computer network in accordance with embodiments of the present invention;
FIG. 2 is a block diagram illustrating a computer system in a network in accordance with embodiments of the present invention;
FIG. 3 is a process flow diagram illustrating a security process in accordance with embodiments of the present invention;
FIG. 4 is a process flow diagram illustrating a security process that verifies the identity of a requestor in accordance with embodiments of the present invention; and
FIG. 5 is a process flow diagram illustrating a security process that verifies an identifying number associated with a request in accordance with embodiments of the present invention.
DESCRIPTION OF SPECIFIC EMBODIMENTS
One or more specific embodiments of the present invention will be described below. In an effort to provide a concise description of these embodiments, not all features of an actual implementation are described in the specification. It should be appreciated that in the development of any such actual implementation, as in any engineering or design project, numerous implementation-specific decisions may be made to achieve the developers' specific goals, such as compliance with system-related and business-related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort might be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having the benefit of this disclosure.
The disclosed embodiments provide an improved approach that may address one or more of the issues discussed above, while enhancing the performance of a computer system. With computer systems, security functions may be provided to protect the system. The security functions may be managed by a device or component, such as a processor, that is within the computer system or external to the computer system. In the disclosed embodiments, the security of the computer system is maintained in a manner that: (1) protects against defeat by thread models or technologies; (2) minimizes interaction with the CPU; and (3) allows trapping of code that is unknown or unclassified.
For instance, while not limited in any way to such applications, the disclosed embodiments may enable a computer system to operate in a more efficient manner by having a security co-processor that protects against defeat by thread models or technologies. Threaded programs allow background and foreground action to take place without the overhead of launching multiple processes or inter-process communication. By having a security co-processor examine code and activities that are independent of the operating system, the threaded programs are unable to defeat the security of the computer system. In addition, the security co-processor may minimize the performance impact on the central processing unit (“CPU”) of a computer system by performing the security functions, which allows the CPU to devote more resources to non-security related functions. Furthermore, the security co-processor may examine new code without the code being pre-classified. Thus, as new viruses are introduced, the security co-processor may trap the unknown or unclassified code before the CPU is damaged by an attack from the code.
Referring initially to FIG. 1, a block diagram of a computer network architecture is illustrated and designated using a reference numeral 10. A server 20 may be connected to a plurality of client computers 22, 24 and 26. The server 20 may be connected to as many as “n” different client computers. Each client computer in the network 10 may be a functional client computer and may be a desktop personal computer (“PC”), a notebook PC, a tablet PC, a personal digital assistant (“PDA”), for example. The magnitude of “n” may be a function of the computing power of the server 20.
The server 20 may be connected via a network infrastructure 30, which may include any combination of hubs, switches, routers, etc. While the network infrastructure 30 is illustrated as being either a local area network (“LAN”), storage area network (“SAN”), a wide area network (“WAN”), or a metropolitan area network (“MAN”), those skilled in the art will appreciate that the network infrastructure 30 may assume other forms or may even provide network connectivity through the Internet. As described below, the network 10 may include other servers as well, which may be dispersed geographically with respect to each other to support client computers in other locations.
The network infrastructure 30 may connect the server 20 to the server 40, which may be representative of any other server in the network environment. The server 40 may be connected to one or more client computers 42, 44, and 46. As illustrated in FIG. 1, a network infrastructure 50, which may include a LAN, a WAN, a MAN, or other network configuration, may be used to connect the client computers 42, 44 and 46 to the server 40. The server 40 may additionally be connected to the Internet 60, which may be connected to a server 70. The server 70 also may be connected to one or more of client computers 72, 74 and 76.
In the computer network 10, a wide array of problems may occur. For example, a virus or malicious code may attack the server 40, which may result in other systems, such as the plurality of client computers 42, 44, and 46, being impacted. Also, the server 40 may have to respond to various requests and code that may diminish performance. If the server 40 supports a large number of clients, such as a plurality of client computers 42, 44, and 46, a large customer or client base may experiences problems, which may result in delays in operation. In addition, if the server 40 is attacked by an unknown or unclassified virus, then the virus may damage information within the server 40 or result in downtime for the computer network 10.
FIG. 2 is a block diagram illustrating an exemplary computer system in accordance with embodiments of the present invention. The computer system, which may include client computers 22, 24, 26, 42, 44, 46, 72, 74, 76 or servers 20, 40, 70, as discussed above, is generally referred to by the reference numeral 100. The architecture of the computer system 100 is given for purposes of illustration only, as computer systems in which the present teachings are applicable may include additional components or a subset of the components illustrated in FIG. 2.
The computer system 100 may comprise a processor complex 102, which may include a plurality of central processing units (“CPUs”). A core logic chipset 104, which may manage a variety of functions on behalf of the processor complex 102, may be connected to the processor complex via a processor bus 103.
The core logic chipset 104 may be connected via memory bus 105 to a system random access memory, which may comprise static random access memory (“SRAM”), dynamic random access memory (“DRAM”) or other suitable memories. The memory may be a shared system memory to hold memory resident files. A video graphics controller 110 may be connected to the core logic chipset 104 via a video bus 107 to provide a signal that produces a display image on a video display 112.
A bus 109 such as a peripheral component interface (“PCI”) bus or the like may connect the core logic chipset to a variety of system devices, such as a network interface card 122 and a PCI/PCI bridge 124. The network interface card 122 may provide communication capability to the computer system 100 via a communication bus 119. The communication bus 119 may be connected to other computer systems, as discussed above. The PCI/PCI bridge 124 may provide capacity for additional PCI devices on a PCI bus 117.
A PCI/SCSI bus adapter 114 may provide access to SCSI devices such as a disk drive 130 and a tape drive 132 via a SCSI bus 131. A PCI/ATA controller 118 may provide access to additional devices such as a disk drive 128 and a CD ROM drive 134. A PCI/EISA/LPC bus may provide access to system devices such as a read only memory basic input/output system (“ROM BIOS”) 140, a non-volatile memory 142 (such as flash memory or the like), a modem 120 or the like via a bus 113. The modem may provide communication access via a phone line 121. An input/output controller 126, which may be connected to the bus 113 may provide access to system devices such as a floppy disk drive 150, a serial port 152 a real time clock (“RTC”) 154, a CD ROM drive 144, a keyboard 146, a mouse 148 and the like.
A security co-processor 111 may be connected to the bus 109 to perform security functions as more fully described below. The security co-processor 111 may be configured to validate certain functions and activities before they are actually executed. Also, the security co-processor 111 may be dedicated to providing security functions to the computer system 100. Because the security co-processor 111 performs the security functions and activities, it frees the use of the CPU cycles on the processor complex 102 for other computing activities.
The security co-processor 111 may examine code independent of the operating system (“OS”) executing in the computer system 100 or other computers in the computer network 10. For example, the security co-processor 111 may enable the computer system 100 to prevent thread technologies and unknown code from attacking the computer system 100. As a benefit to the computer system 100, the security co-processor 111 may examine code independently of the processor complex 102, which may be executing an operating system. As such, the security co-processor 111 may trap code that is unknown or unclassified to prevent it from impacting the performance or integrity of the computer system 100. Beneficially, the security co-processor 111 does not have to access stored information of known viruses or attack signatures to be able to prevent malicious code.
To communicate with the processor complex 102 or other components within the computer system 100, the security co-processor 111 may include indications regarding the file or code being accessed. For instance, the security co-processor 111 may include a return status field, such as a semaphore, which may be a flag to indicate whether the file or resource is being used by another thread or process. The return status field may be within a memory or a register, to name a few examples. The return status field may be used by the security co-processor 111 to communicate status information about the files that it validates.
As noted above, it may be beneficial to protect the computer system 100 from unauthorized access by external systems, users, or programs. For instance, providing desired security may include protecting a system from viruses or attacks by hackers by implementing a security co-processor 111. One way to enhance security in the computer system 100 along with the security co-processor 111 may be to prevent or restrict access to system passwords without authentication that the access is by an authorized user. FIG. 3 shows an example of how the security co-processor 111 may operate to prevent unauthorized access to files stored on the computer system 100.
FIG. 3 is a process flow diagram illustrating a security process in accordance with embodiments of the present invention. In the process flow diagram 200, which may be best understood by concurrently viewing FIG. 2, a system, such as the computer system 100 of FIG. 2, may include a processor and a security co-processor. The processor may correspond to the processor complex 102 of FIG. 2 or another computer, and the security co-processor may correspond to the security co-processor 111 of FIG. 2. The process begins at block 202. The process involves the validation of a file in response to a command or request from a processor that may be an internal processor 102 to the computer system 100 or an external processor at a remote system. The security co-processor 111 may validate the request prior to the execution of certain commands on the system, while operating independently of the OS on the system. At block 204, the processor 102 may generate a request, which may be a request for a file. The request may include the filename, path, error correction information, identifying data, user identification, system identification, a password or other suitable information. In addition, the information or portions of the information within the request may be hashed or signed with a key. The processor 102 may transmit the request to a component, such as an I/O driver, which may be a part of the core logic chipset 104 or be a software program, which forwards the request to the security co-processor 111 in block 206.
At block 208, the security co-processor 111 may locate the file that corresponds to the request. The file may be located within the system memory 106 or 146. Then, at block 210, the security co-processor 111 may access or look up the file. In accessing the file, the security co-processor may access a record that corresponds to the requested file. The record may be a signed or hashed version of information that corresponds to users or systems authorized to access the file. The record may include similar information to the request, such as a filename, path, error correction information, identifying data, user identification, system identification, a password or other suitable information. Also, the record may be stored within a memory 106 or 146, a device, a local database, or a remote database that is accessible by the security co-processor 111. If the record is stored in a database, the security co-processor 111 may communicate with the database through a protocol, such as Lightweight Directory Access Protocol (“LDAP”). LDAP is a directory service protocol that may operate over TCP/IP. The record may include a signature or hash for verifying the authenticity or integrity of the requested file, such as a digital signature. This may allow the system 100 to determine if the file has been altered by signing a portion of the file, a compressed version of the file, or the complete file. Similarly, the system 100 may preload the file, as a memory resident file, into a cache or other similar memory location, such as system memory 106 or 146.
Digital “signatures” may be used to provide authentication of the file. A digital signature is a data component, such as a hash, that may have been encrypted using a private key authentication process or the like. The encryption process creates a unique signature, which may allow verification of a data file. The use of digital signatures may allow the security co-processor 111 to validate that the file requested is from a trusted source and/or that the file has not been subsequently altered by anyone else.
Additionally, the record associated with the request may include validation data such as an error checking and correction (“ECC”) code. The ECC code may be implemented to repair potential problems with the file. For instance, if a file is corrupted or other problems exist with the file, the ECC code may be used to correct the file back to its original form. This may allow the system 100 to operate more efficiently because files may be corrected without involving the processor 102 or other failure routines.
At block 212, the security co-processor 111 may determine if the requested file is valid. The requested file may be verified to determine if the requested file is valid to perform certain commands or operations or if the requested file has been altered. The verification of the requested file may involve accessing information within the request, from a database, and/or memory location and comparing it with the file, a portion of the file, or the record, which may include information as discussed above. For example, the validation of the requested file may involve verifying a digital signature in the request against data within the record to authenticate or verify the integrity of the file. Further, the validation may involve verifying the ECC code of the file against data within the record. As another example, the request may be transmitted over LDAP, which may include information that verifies the authorization to access the files.
If the requested file is not valid, then a return status field may be set in block 214 to indicate that the file return is invalid. The setting may create a status message that indicates that the request is invalid, set a return status field to invalid, or simply abort the access. Advantageously, this allows the security co-processor to trap a file that fails authenticity or integrity verification checks against the record, validated version, or signed file. This may prevent new system or code attacks without pre-classification. However, if the requested file is valid, then the request may be executed at block 216. The execution of the request may involve delivering the file to the security co-processor 111, executing the command in the request, or other similar function. After the file is delivered to the security co-processor 111, a status return field may be set in block 218 to indicate that the file return is valid. The status return field setting may create a status message that indicates that the request is valid, set a return status to “return file good,” or simply indicate that the file is access is complete.
After the return status field is set for the request, the security co-processor 111 may set the return status to “good” for the security validation for the request at block 220. The setting of the return status to “good” may result in a message being sent to the processor or may allow the security co-processor 111 to free up resources for other requests or may involve sending the file to the processor 102 for processing. Once the return status field is set for the request, the process may continue to process the file without the involvement of the security co-processor 111 at block 222. Thus, the process ends at block 224.
To provide additional security to the computer system 100, the requests to the security co-processor 111 may include the identity of a requestor. By including the identity of the requestor in the request, the security co-processor 111 may be able to provide added protection for certain files or prevent unauthorized access to certain information. A process flow illustrating a security process that verifies the identity of a requestor in accordance with embodiments of the present invention is shown in FIG. 4.
FIG. 4 is a process flow diagram, which may be best understood by concurrently viewing FIG. 2, illustrating the use of a security co-processor 111 to process requests and to verify the identity of a requester in accordance with embodiments of the present invention. In this process flow diagram 300, a system, such as the computer system 100 of FIG. 2, may include a processor 102 and a security co-processor 111. The process begins at block 302. In addition to the validation of requested file, the process may involve the validation of the user accessing the file. The security co-processor 111 may validate the requestor prior to the operation or execution of certain commands by the system. At block 304, the processor 102 may generate a request, which may be a request for a file or command. The processor 102 may transmit the request to a component, such as an I/O driver, that forwards the request to the security co-processor 111 in block 306, similar to step 206 of FIG. 3 discussed above.
At block 308, the security co-processor 111 may locate the file that corresponds with the request. Then, at block 310, the security co-processor 111 may access the file. The access of the file may be similar to the file lookup in block 210 of FIG. 3, which may include a record having a digital signature to verify authenticity or the integrity of the file. As previously discussed, the record may be stored within a variety of locations, such as a memory 106 or 146 that is coupled to the security co-processor 111, and may communicate with the database through a protocol, such as LDAP.
At block 312, the security co-processor 111 may determine if the requested file is valid. The requested file may be verified as discussed above with regard to block 212 of FIG. 3. If the requested file is not valid, then a return status field may be set in block 314 to indicate that the file return is invalid. The setting of the return status field may create a status message that indicates that the request is invalid, set a return status field to invalid, or simply abort the access. Again, this allows the security co-processor 111 to trap a file that fails to be verified, as discussed above. However, if the requested file is valid, then the request may be executed at block 316. The execution of the request may involve delivering the file to the security co-processor 111, executing the command in the request, or other similar function. After the file is transmitted to the security co-processor 111, a status return field may be set in block 318 to indicate that the file return is valid. The status return field setting may create a status message that indicates that the request is valid, set a return status to “return file good,” or simply indicate that the file is access is complete.
At block 320, the security co-processor 111 may validate whether the user who requested access to the file or command is an authorized user. In validating the user access, the security co-processor 111 may access a record that corresponds to the user access being requested. The record may include a signature for verifying the authenticity of the user requesting the file or the execution of a command. Similar to the file discussed above, the authenticity of the user access may be provided by a digital signature. The digital signature may be created through any manner, such as a private and public key or hash algorithm, for example. The user access may include commands, authorized files or other information relating to the user. At block 322, the security co-processor 111 may determine if the user access is valid. The verification of the user access may be through accessing information within the security co-processor 111, from a database, or memory location. The information may then be matched against the user access information to determine if the user access is valid.
If the user access is valid, then the return status field may be set to “valid” at block 322. However, if the user access is not valid, then a return status field may be set in block 314 to indicate that the return status is invalid. As discussed before, the return status field being set to “invalid” may result in a message being generated or the processor 102 being notified of the failed request. After the return status field is set for the user access, the security co-processor 111 may set the return status field to “good” for the security validation at block 324. The setting of the return status field to “good” may result in a message being sent to the processor 102, may allow the security co-processor 111 to free up resources for other requests, or may involve sending the file to the processor 102 for processing. Once the return status field is set for the request, the process may continue to process the file without the involvement of the security co-processor 111 at block 326. The process ends at block 328.
In an alternative embodiment, the lookup of the user access of block 320 may be implemented after the security co-processor 111 looks up the file in block 310. Then, the user access verification of block 322 may be performed. After the user access has been verified, the validation of requested file may take place at block 312. Accordingly, the verification process may be further variety for other designs.
To further enhance the security, the requests to the security co-processor 111 may include a number or value to identify a requestor. The identifying value may be a nonce, which is a randomly generated number, or may be a time stamp that is associated with the time of the request. By including the identifying value, the security co-processor 111 may be able to provide added protection for certain files or prevent unauthorized access to certain information. In addition, the identifying value may be exchanged before the request is received by the security co-processor 111, delivered after the request has been sent, or as part of the requesting process. As a result, the security co-processor may prevent playback attacks or other similar attacks from being able to access the computer system. Using the identifying value may provide the computer system 100 with increased security without burdening the processor 102. A process flow illustrating a security process that verifies the number or value identifying a requestor in accordance with embodiments of the present invention is shown in FIG. 5.
FIG. 5 is a process flow diagram, which may be best understood by concurrently viewing FIG. 2, illustrating the use of a security co-processor 111 to process requests and verify a nonce, which may be a random number to identify a requester, in accordance with embodiments of the present invention. In this process flow diagram 400, a system, such as the computer system 100 of FIG. 2, may include a processor 102 and a security co-processor 111. The process begins at block 402. In addition to the validation of a command or request in FIG. 3, the process involves the use of an identifying number to validate the requestor of the command or file. The security co-processor 111 may validate the requester prior to the operation of certain commands on the system. At block 404, the processor 102 may generate a request along with an identifying value, which may be a request for a file or command. The request may include a variety of information, such as a filename, path, user identification, or system identification, as discussed above. In addition, the request may also include hashed or signed information that may be associated with a time stamp, a random number, or nonce as well. The identifying value or number may be a nonce or time stamp, as discussed above, which may be exchanged before the request is received by the security co-processor 111. The processor 102 may transmit the request along with the identifying number to a component, such as an I/O driver, that forwards the request to the security co-processor 111 in block 406, which is similar to step 206 of FIG. 3 discussed above.
At block 408, the security co-processor 111 may locate the file that corresponds with the request. Then, at block 410, the security co-processor 111 may access the file. The access of the file may be similar to the file lookup in block 210 of FIG. 3, which may include a record having a digital signature for authenticity, integrity, or error correction code (“ECC”). The record may also include hashed or signed information that may be associated with a time stamp, a random number, or nonce. As previously discussed in FIG. 3, the record may be stored within a memory that is coupled to the security co-processor 111 and may communicate with the database through a protocol, such as LDAP.
At block 412, the security co-processor 111 may determine if the requested file is valid. The requested file may be verified as discussed above with regard to block 212 of FIG. 3. If the requested file is not valid, then a return status field may be set in block 414 to indicate that the file return is invalid, as discussed above with regard to block 214 of FIG. 3. As noted above, the security co-processor 111 may trap a file that fails to be verified without pre-classification. However, if the requested file is valid, then the request may be executed at block 416, as discussed above with regard to block 216 of FIG. 3. After the file is transmitted to the security co-processor 111, a status return field may be set in block 418 to indicate that the file return is valid.
At block 420, the security co-processor 111 may look up the identifying number. In looking up the identifying number, the security co-processor 111 may access a record that corresponds to the identifying number within the request. The record may include an identifying number, such as a randomly generated number for the communication that may be used to provide additional security. This protection may prevent playback attacks from circumventing security of the computer system 100. The authenticity of the identifying number may be hashed or signed to provide additional protection as discussed above with regard to the file or request. At block 422, the security co-processor 111 may determine if the identifying number is valid. The verification of the identifying number may be through accessing information within the security co-processor 111, from a database, or memory location. The information may then be matched against the identifying number to determine if the user is authorized or the command is valid.
If the identifying number is valid, then the return status field may be set to “valid” at block 422. However, if the identifying number is not valid, then a return status field may be set in block 414 to indicate that the return status is invalid. As discussed before, the return status field being set to “invalid” may result in a message being generated or the processor 102 being notified of the failed request. After the return status field is set for the user access, the security co-processor 111 may set the return status field to “good” for the security validation at block 424. The setting of the return status field to “good” may result in a message being sent to the processor 102, may allow the security co-processor 111 to free up resources for other requests, or may involve sending the file to the processor 102 for processing. Once the return status field is set for the request, the process may continue to process the file without the involvement of the security co-processor 111 at block 426. The process ends at block 428.
Alternatively, the lookup of the identifying number, such as the nonce or time stamp, in block 420 may be implemented after the security co-processor 111 looks up the file in block 410. Then, the identifying number verification of block 422 may be performed. After the identifying number has been verified, the validity of the requested file may be determined at block 412. As another alternative embodiment, the verification of user access 320 and 322 of FIG. 4 may be implemented in the process flow diagram 400 of FIG. 5 after block 410 and before block 426. Accordingly, the verification process may be further variety for other designs.
While the invention may be applicable to various modifications and alternative forms specific embodiments have been shown by way of example in the drawings and have been described in detail herein. However, it should be understood that the invention is not intended to be limited to the particular forms disclosed. Rather, the invention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention as defined by the following appended claims.

Claims (30)

1. A method of providing security for a computer system, the method comprising the acts of:
generating a request for a file;
receiving the request at a dedicated security processor;
using the dedicated security processor to access the file;
using the dedicated security processor to validate the requested file;
providing the file to an other processor, if the requested file is validated;
validating a user access to execute the request; and
enabling the other processor to continue processing the file, if the user access is validated.
2. The method, as set forth in claim 1, comprising the act of responding to the other processor with an abort message if the user access is invalid.
3. The method, as set forth in claim 1, wherein accessing the file comprises loading the file from a system memory.
4. The method, as set forth in claim 1, wherein accessing the file comprises loading a memory resident file.
5. The method, as set forth in claim 1, wherein the dedicated security processor is in a remote computer system.
6. The method, as set forth in claim 1, wherein the other processor and the dedicated security processor are disposed in a computer system.
7. The method, as set forth in claim 1, comprising the act of setting a return status field to valid, if the requested file is valid.
8. The method, as set forth in claim 1, wherein the act of generating the request comprises the acts of:
setting a semaphore;
forwarding the semaphore to the dedicated security processor; and
blocking further processing of the file, if the semaphore is not set to a specific setting.
9. A method of providing security for a computer system, the method comprising the acts of:
generating an identifying number from a security processor;
providing the identifying number to an other processor in the computer system;
incorporating the identifying number into a request for a file;
delivering the request to the security processor;
using the security processor to access the file;
using the security processor to validate the requested file;
verifying the identifying number at the security processor; and
providing the file, if the requested file is validated and the identifying number is verified.
10. The method, as set forth in claim 9, comprising the act of enabling the other processor to continue the processing, if the identifying number is validated.
11. The method, as set forth in claim 9, comprising the act of terminating the access if the identifying number is invalid.
12. The method, as set forth in claim 9, wherein the security processor is in a remote computer system.
13. The method, as set forth in claim 9, wherein the other processor and the security processor are disposed in the computer system.
14. The method, as set forth in claim 9, wherein the identifying number is a nonce.
15. The method, as set forth in claim 9, wherein the identifying number is a time stamp.
16. The method, as set forth in claim 9, wherein the act of validating the requested file comprises the act of accessing a database for an error checking and correction (“ECC”) code corresponding to the requested file.
17. A computer system comprising:
means for validating a file at a security processor, wherein the means for validating the file comprises:
means for storing a record in a memory used to validate the file;
means for verifying the record against the file at the security processor; and
means for indicating that the file is verified to an other processor.
18. The system, as set forth in claim 17, comprises means for validating a user access.
19. The system, as set forth in claim 17, wherein the means for verifying comprises:
means for storing a public key and a hash algorithm used to validate the file;
means for storing an encrypted hash correlative to the requested file in the record; and
means for comparing the record with the requested file.
20. The system, as set forth in claim 17, comprises means for verifying an identifying number in a request at the security processor.
21. A networked computer system comprising:
a plurality of computer systems;
a network coupled to each of the plurality of computer systems;
at least one of the plurality of computer systems comprising:
a first processor;
a security processor operatively coupled to the first processor;
a first section of memory configured to store a file, the first section of memory being operatively coupled to the first processor and the security processor; and
a second section of memory being configured to store a validation program that is initiated by the security processor, the validation program having a validation routine configured to validate the file stored in the first section of memory when the security processor receives a request for the file, and the validation program using an encrypted code to validate the file.
22. The system, as set forth in claim 21, wherein a second processor in a second of the plurality of computer systems is adapted to utilize the security processor for validating the file.
23. The system, as set forth in claim 22, wherein the memory is a memory resident file.
24. The system, as set forth in claim 21, wherein the request comprises a semaphore and an address for the semaphore, wherein the semaphore blocks the processor from executing the file, if the semaphore is set in a specified manner.
25. The system, as set forth in claim 21, wherein a second processor in a second of the plurality of computer systems is adapted to generate a request for the file from the security processor and is adapted to receive the validated file from the security processor.
26. A method of providing security for a computer system, the method comprising the acts of:
generating a request for a file;
receiving the request at a dedicated security processor;
using the dedicated security processor to access the file;
using the dedicated security processor to validate the requested file;
providing the file to an other processor, if the requested file is validated; and
disabling the other processor once the file is requested and enabling the other processor to continue processing after the requested file is validated.
27. A method of providing security for a computer system, the method comprising the acts of:
generating a request for a file;
receiving the request at a dedicated security processor;
using the dedicated security processor to access the file;
using the dedicated security processor to validate the requested file, wherein the act of validating the requested file comprises the act of accessing a database for a digital signature of the file being requested; and
providing the file to an other processor, if the requested file is validated.
28. The method, as set forth in claim 27, wherein the act of validating the requested file comprises the act of calculating a secure hash and comparing the calculated secure hash to a stored secure hash.
29. A method of providing security for a computer system, the method comprising the acts of:
generating a request for a file;
receiving the request at a dedicated security processor;
using the dedicated security processor to access the file;
using the dedicated security processor to validate the requested file, wherein the act of validating the requested file comprises the act of accessing a database for an error checking and correction (“ECC”) code corresponding to the requested file; and
providing the file to an other processor, if the requested file is validated.
30. The method, as set forth in claim 29, wherein the act of accessing the database comprises the act of correcting the file by utilizing the ECC code corresponding to the requested file.
US10/660,335 2003-09-11 2003-09-11 Method and apparatus for providing security for a computer system Active 2025-07-27 US7228432B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/660,335 US7228432B2 (en) 2003-09-11 2003-09-11 Method and apparatus for providing security for a computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/660,335 US7228432B2 (en) 2003-09-11 2003-09-11 Method and apparatus for providing security for a computer system

Publications (2)

Publication Number Publication Date
US20050060541A1 US20050060541A1 (en) 2005-03-17
US7228432B2 true US7228432B2 (en) 2007-06-05

Family

ID=34273644

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/660,335 Active 2025-07-27 US7228432B2 (en) 2003-09-11 2003-09-11 Method and apparatus for providing security for a computer system

Country Status (1)

Country Link
US (1) US7228432B2 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070260871A1 (en) * 2005-10-27 2007-11-08 Microsoft Corporation Inspecting encrypted communications with end-to-end integrity
US20080155306A1 (en) * 2005-12-21 2008-06-26 Combs William E Method and system for controlling command execution
US20090006583A1 (en) * 2005-03-09 2009-01-01 Vvond, Llc Method and system for distributing restricted media to consumers
US20090031143A1 (en) * 2006-02-17 2009-01-29 Vvond, Inc. Method and system for securing a disk key
US20090044273A1 (en) * 2007-08-10 2009-02-12 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system
US8239686B1 (en) * 2006-04-27 2012-08-07 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
US8375449B1 (en) 2007-08-10 2013-02-12 Fortinet, Inc. Circuits and methods for operating a virus co-processor
US8646083B2 (en) 2007-08-10 2014-02-04 Fortinet, Inc. Virus co-processor instructions and methods for using such

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006024031A2 (en) * 2004-08-23 2006-03-02 Hewlett-Packard Development Company, L.P. Method and apparatus for redirection of video data
US20060106838A1 (en) * 2004-10-26 2006-05-18 Ayediran Abiola O Apparatus, system, and method for validating files
JP4956292B2 (en) * 2007-06-25 2012-06-20 パナソニック株式会社 Information security apparatus and counter control method
US9100319B2 (en) 2007-08-10 2015-08-04 Fortinet, Inc. Context-aware pattern matching accelerator
US7970964B2 (en) * 2008-11-05 2011-06-28 Micron Technology, Inc. Methods and systems to accomplish variable width data input

Citations (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5101492A (en) 1989-11-03 1992-03-31 Compaq Computer Corporation Data redundancy and recovery protection
US5159533A (en) 1991-05-07 1992-10-27 Kuang Ma H Portable note-book computer expansion device with disk drives
US5175670A (en) 1991-10-09 1992-12-29 Wang Huo Tong Housing structure for a computer
US5224019A (en) 1991-03-15 1993-06-29 Amkly Systems, Inc. Modular computer assembly
US5249279A (en) 1989-11-03 1993-09-28 Compaq Computer Corporation Method for controlling disk array operations by receiving logical disk requests and translating the requests to multiple physical disk specific commands
US5271152A (en) 1990-12-07 1993-12-21 Compuadd Corporation Process for making a computer tower chassis using modules
US5289540A (en) * 1989-04-19 1994-02-22 Richard P. Jones Computer file protection system
US5331646A (en) 1992-05-08 1994-07-19 Compaq Computer Corporation Error correcting code technique for improving reliablility of a disk array
US5333305A (en) 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
US5363273A (en) 1992-07-27 1994-11-08 Ma Hsi K Computer system with removable floppy disk drive and expansion slot assembly mounted flush in one corner
US5408644A (en) 1992-06-05 1995-04-18 Compaq Computer Corporation Method and apparatus for improving the performance of partial stripe operations in a disk array subsystem
US5440716A (en) 1989-11-03 1995-08-08 Compaq Computer Corp. Method for developing physical disk drive specific commands from logical disk access commands for use in a disk array
US5490342A (en) 1994-07-13 1996-02-13 Rutterman; Michael J. Non-rotating wheel cover
US5522065A (en) 1991-08-30 1996-05-28 Compaq Computer Corporation Method for performing write operations in a parity fault tolerant disk array
US5555416A (en) * 1992-09-20 1996-09-10 Sun Microsystems, Inc. Automated software installation and operating environment configuration for a computer system based on classification rules
US5668971A (en) 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
US5737744A (en) 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5742829A (en) * 1995-03-10 1998-04-21 Microsoft Corporation Automatic software installation on heterogeneous networked client computer systems
US5748888A (en) 1996-05-29 1998-05-05 Compaq Computer Corporation Method and apparatus for providing secure and private keyboard communications in computer systems
US5748940A (en) 1995-08-17 1998-05-05 Compaq Computer Corporation Secure updating of non-volatile memory
US5778070A (en) 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
US5822184A (en) 1994-07-28 1998-10-13 Rabinovitz; Josef Modular disk drive assembly operatively mountable in industry standard expansion bays of personal desktop computers
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5848418A (en) 1997-02-19 1998-12-08 Watchsoft, Inc. Electronic file analyzer and selector
US5850559A (en) 1996-08-07 1998-12-15 Compaq Computer Corporation Method and apparatus for secure execution of software prior to a computer system being powered down or entering a low energy consumption mode
US5859911A (en) 1997-04-16 1999-01-12 Compaq Computer Corp. Method for the secure remote flashing of the BIOS of a computer
US5887131A (en) 1996-12-31 1999-03-23 Compaq Computer Corporation Method for controlling access to a computer system by utilizing an external device containing a hash value representation of a user password
US5892906A (en) 1996-07-19 1999-04-06 Chou; Wayne W. Apparatus and method for preventing theft of computer devices
US5923754A (en) 1997-05-02 1999-07-13 Compaq Computer Corporation Copy protection for recorded media
US5944821A (en) 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US5949882A (en) 1996-12-13 1999-09-07 Compaq Computer Corporation Method and apparatus for allowing access to secured computer resources by utilzing a password and an external encryption algorithm
US5953422A (en) 1996-12-31 1999-09-14 Compaq Computer Corporation Secure two-piece user authentication in a computer network
US5955722A (en) 1997-08-14 1999-09-21 A K Stamping Co. Inc. Smart card reader
US5960084A (en) 1996-12-13 1999-09-28 Compaq Computer Corporation Secure method for enabling/disabling power to a computer system following two-piece user verification
US5974250A (en) 1996-12-13 1999-10-26 Compaq Computer Corp. System and method for secure information transmission over a network
US5974438A (en) 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
US6003144A (en) 1997-06-30 1999-12-14 Compaq Computer Corporation Error detection and correction
US6009524A (en) 1997-08-29 1999-12-28 Compact Computer Corp Method for the secure remote flashing of a BIOS memory
US6026016A (en) 1998-05-11 2000-02-15 Intel Corporation Methods and apparatus for hardware block locking in a nonvolatile memory
US6032257A (en) 1997-08-29 2000-02-29 Compaq Computer Corporation Hardware theft-protection architecture
US6057965A (en) 1999-01-06 2000-05-02 Compaq Computer Corporation Low cost high-speed portable imaging system
US6061794A (en) 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6116509A (en) 1998-07-14 2000-09-12 Compaq Computer Corporation Compact mounting of chip card reader at front of computer device bay area
US6118589A (en) 1999-01-06 2000-09-12 Compaq Computer Corporation Apparatus, method and system for 3-D and panoramic imaging
US6119228A (en) 1997-08-22 2000-09-12 Compaq Computer Corporation Method for securely communicating remote control commands in a computer network
US6125446A (en) 1997-08-29 2000-09-26 Compaq Computer Corporation Computer architecture with automatic disabling of hardware/software features using satellite positioning data
US6131174A (en) 1998-08-27 2000-10-10 Lucent Technologies Inc. System and method for testing of embedded processor
US6134591A (en) 1997-06-18 2000-10-17 Client/Server Technologies, Inc. Network security and integration method and system
US6167538A (en) 1998-03-06 2000-12-26 Compaq Computer Corporation Method and apparatus for monitoring components of a computer system
US6182892B1 (en) 1998-03-25 2001-02-06 Compaq Computer Corporation Smart card with fingerprint image pass-through
US6199167B1 (en) 1998-03-25 2001-03-06 Compaq Computer Corporation Computer architecture with password-checking bus bridge
US6263431B1 (en) 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US6298411B1 (en) 1999-01-05 2001-10-02 Compaq Computer Corporation Method and apparatus to share instruction images in a virtual cache
US6308265B1 (en) 1998-09-30 2001-10-23 Phoenix Technologies Ltd. Protection of boot block code while allowing write accesses to the boot block
US6311273B1 (en) 1997-02-13 2001-10-30 Walter A. Helbig, Sr. Method and apparatus for enhancing computer system security
US6330674B1 (en) 1998-09-30 2001-12-11 Compaq Computer Corporation Use of biometrics as a methodology for defining components for ECC encryption
US6363449B1 (en) 1999-03-29 2002-03-26 Compaq Information Technologies Group, L.P. Method and apparatus for providing interchassis communication and management
US6370649B1 (en) 1998-03-02 2002-04-09 Compaq Computer Corporation Computer access via a single-use password
US6400823B1 (en) 1996-12-13 2002-06-04 Compaq Computer Corporation Securely generating a computer system password by utilizing an external encryption algorithm
US6401208B2 (en) 1998-07-17 2002-06-04 Intel Corporation Method for BIOS authentication prior to BIOS execution
US6418533B2 (en) 1997-08-29 2002-07-09 Compaq Information Technologies Group, L.P. “J” system for securing a portable computer which optionally requires an entry of an invalid power on password (POP), by forcing an entry of a valid POP
US6442631B1 (en) 1999-05-07 2002-08-27 Compaq Information Technologies Group, L.P. Allocating system resources based upon priority
US6460121B1 (en) 1998-09-14 2002-10-01 Compaq Information Technologies Group, L.P. Method for providing an atomic memory read using a compare-exchange instruction primitive
US6463495B1 (en) 1999-03-29 2002-10-08 Compaq Information Technologies Group, L.P. Command and control infrastructure for a computer system using the computer's power rail
US6467048B1 (en) 1999-10-07 2002-10-15 Compaq Information Technologies Group, L.P. Apparatus, method and system for using cache memory as fail-over memory
US6470443B1 (en) 1996-12-31 2002-10-22 Compaq Computer Corporation Pipelined multi-thread processor selecting thread instruction in inter-stage buffer based on count information
US6477648B1 (en) 1997-03-23 2002-11-05 Novell, Inc. Trusted workstation in a networked client/server computing system
US6502203B2 (en) 1999-04-16 2002-12-31 Compaq Information Technologies Group, L.P. Method and apparatus for cluster system operation
US6505268B1 (en) 1996-12-20 2003-01-07 Compaq Computer Corporation Data distribution in a disk array
US6567901B1 (en) 2000-02-29 2003-05-20 Hewlett Packard Development Company, L.P. Read around speculative load
US6581162B1 (en) 1996-12-31 2003-06-17 Compaq Information Technologies Group, L.P. Method for securely creating, storing and using encryption keys in a computer system
US6609204B1 (en) 1999-03-29 2003-08-19 Hewlett-Packard Development Company, L.P. Method and apparatus for locking/unlocking via platform management bus

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5709412A (en) * 1995-10-03 1998-01-20 Vadas; John P. Apparatus for connecting tubes

Patent Citations (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5289540A (en) * 1989-04-19 1994-02-22 Richard P. Jones Computer file protection system
US5440716A (en) 1989-11-03 1995-08-08 Compaq Computer Corp. Method for developing physical disk drive specific commands from logical disk access commands for use in a disk array
US5249279A (en) 1989-11-03 1993-09-28 Compaq Computer Corporation Method for controlling disk array operations by receiving logical disk requests and translating the requests to multiple physical disk specific commands
US5101492A (en) 1989-11-03 1992-03-31 Compaq Computer Corporation Data redundancy and recovery protection
US5909691A (en) 1989-11-03 1999-06-01 Compaq Computer Corporation Method for developing physical disk drive specific commands from logical disk access commands for use in a disk array
US5592648A (en) 1989-11-03 1997-01-07 Compaq Computer Corporation Method for developing physical disk drive specific commands from logical disk access commands for use in a disk array
US5271152A (en) 1990-12-07 1993-12-21 Compuadd Corporation Process for making a computer tower chassis using modules
US5224019A (en) 1991-03-15 1993-06-29 Amkly Systems, Inc. Modular computer assembly
US5159533A (en) 1991-05-07 1992-10-27 Kuang Ma H Portable note-book computer expansion device with disk drives
US5522065A (en) 1991-08-30 1996-05-28 Compaq Computer Corporation Method for performing write operations in a parity fault tolerant disk array
US5175670A (en) 1991-10-09 1992-12-29 Wang Huo Tong Housing structure for a computer
US5333305A (en) 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
US5331646A (en) 1992-05-08 1994-07-19 Compaq Computer Corporation Error correcting code technique for improving reliablility of a disk array
US5408644A (en) 1992-06-05 1995-04-18 Compaq Computer Corporation Method and apparatus for improving the performance of partial stripe operations in a disk array subsystem
US5363273A (en) 1992-07-27 1994-11-08 Ma Hsi K Computer system with removable floppy disk drive and expansion slot assembly mounted flush in one corner
US5555416A (en) * 1992-09-20 1996-09-10 Sun Microsystems, Inc. Automated software installation and operating environment configuration for a computer system based on classification rules
US5668971A (en) 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
US5490342A (en) 1994-07-13 1996-02-13 Rutterman; Michael J. Non-rotating wheel cover
US5822184A (en) 1994-07-28 1998-10-13 Rabinovitz; Josef Modular disk drive assembly operatively mountable in industry standard expansion bays of personal desktop computers
US5742829A (en) * 1995-03-10 1998-04-21 Microsoft Corporation Automatic software installation on heterogeneous networked client computer systems
US5748940A (en) 1995-08-17 1998-05-05 Compaq Computer Corporation Secure updating of non-volatile memory
US6085299A (en) 1995-08-17 2000-07-04 Compaq Computer Corporation Secure updating of non-volatile memory
US5737744A (en) 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5748888A (en) 1996-05-29 1998-05-05 Compaq Computer Corporation Method and apparatus for providing secure and private keyboard communications in computer systems
US5778070A (en) 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
US5944821A (en) 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US5892906A (en) 1996-07-19 1999-04-06 Chou; Wayne W. Apparatus and method for preventing theft of computer devices
US5850559A (en) 1996-08-07 1998-12-15 Compaq Computer Corporation Method and apparatus for secure execution of software prior to a computer system being powered down or entering a low energy consumption mode
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5974250A (en) 1996-12-13 1999-10-26 Compaq Computer Corp. System and method for secure information transmission over a network
US5960084A (en) 1996-12-13 1999-09-28 Compaq Computer Corporation Secure method for enabling/disabling power to a computer system following two-piece user verification
US6400823B1 (en) 1996-12-13 2002-06-04 Compaq Computer Corporation Securely generating a computer system password by utilizing an external encryption algorithm
US5949882A (en) 1996-12-13 1999-09-07 Compaq Computer Corporation Method and apparatus for allowing access to secured computer resources by utilzing a password and an external encryption algorithm
US6505268B1 (en) 1996-12-20 2003-01-07 Compaq Computer Corporation Data distribution in a disk array
US6581162B1 (en) 1996-12-31 2003-06-17 Compaq Information Technologies Group, L.P. Method for securely creating, storing and using encryption keys in a computer system
US5974438A (en) 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
US5953422A (en) 1996-12-31 1999-09-14 Compaq Computer Corporation Secure two-piece user authentication in a computer network
US5887131A (en) 1996-12-31 1999-03-23 Compaq Computer Corporation Method for controlling access to a computer system by utilizing an external device containing a hash value representation of a user password
US6470443B1 (en) 1996-12-31 2002-10-22 Compaq Computer Corporation Pipelined multi-thread processor selecting thread instruction in inter-stage buffer based on count information
US6311273B1 (en) 1997-02-13 2001-10-30 Walter A. Helbig, Sr. Method and apparatus for enhancing computer system security
US5848418A (en) 1997-02-19 1998-12-08 Watchsoft, Inc. Electronic file analyzer and selector
US6477648B1 (en) 1997-03-23 2002-11-05 Novell, Inc. Trusted workstation in a networked client/server computing system
US5859911A (en) 1997-04-16 1999-01-12 Compaq Computer Corp. Method for the secure remote flashing of the BIOS of a computer
US5923754A (en) 1997-05-02 1999-07-13 Compaq Computer Corporation Copy protection for recorded media
US6134591A (en) 1997-06-18 2000-10-17 Client/Server Technologies, Inc. Network security and integration method and system
US6003144A (en) 1997-06-30 1999-12-14 Compaq Computer Corporation Error detection and correction
US5955722A (en) 1997-08-14 1999-09-21 A K Stamping Co. Inc. Smart card reader
US6119228A (en) 1997-08-22 2000-09-12 Compaq Computer Corporation Method for securely communicating remote control commands in a computer network
US6125446A (en) 1997-08-29 2000-09-26 Compaq Computer Corporation Computer architecture with automatic disabling of hardware/software features using satellite positioning data
US6009524A (en) 1997-08-29 1999-12-28 Compact Computer Corp Method for the secure remote flashing of a BIOS memory
US6032257A (en) 1997-08-29 2000-02-29 Compaq Computer Corporation Hardware theft-protection architecture
US6418533B2 (en) 1997-08-29 2002-07-09 Compaq Information Technologies Group, L.P. “J” system for securing a portable computer which optionally requires an entry of an invalid power on password (POP), by forcing an entry of a valid POP
US6061794A (en) 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6370649B1 (en) 1998-03-02 2002-04-09 Compaq Computer Corporation Computer access via a single-use password
US6167538A (en) 1998-03-06 2000-12-26 Compaq Computer Corporation Method and apparatus for monitoring components of a computer system
US6182892B1 (en) 1998-03-25 2001-02-06 Compaq Computer Corporation Smart card with fingerprint image pass-through
US6199167B1 (en) 1998-03-25 2001-03-06 Compaq Computer Corporation Computer architecture with password-checking bus bridge
US6026016A (en) 1998-05-11 2000-02-15 Intel Corporation Methods and apparatus for hardware block locking in a nonvolatile memory
US6116509A (en) 1998-07-14 2000-09-12 Compaq Computer Corporation Compact mounting of chip card reader at front of computer device bay area
US6401208B2 (en) 1998-07-17 2002-06-04 Intel Corporation Method for BIOS authentication prior to BIOS execution
US6131174A (en) 1998-08-27 2000-10-10 Lucent Technologies Inc. System and method for testing of embedded processor
US6460121B1 (en) 1998-09-14 2002-10-01 Compaq Information Technologies Group, L.P. Method for providing an atomic memory read using a compare-exchange instruction primitive
US6330674B1 (en) 1998-09-30 2001-12-11 Compaq Computer Corporation Use of biometrics as a methodology for defining components for ECC encryption
US6308265B1 (en) 1998-09-30 2001-10-23 Phoenix Technologies Ltd. Protection of boot block code while allowing write accesses to the boot block
US6263431B1 (en) 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US6298411B1 (en) 1999-01-05 2001-10-02 Compaq Computer Corporation Method and apparatus to share instruction images in a virtual cache
US6118589A (en) 1999-01-06 2000-09-12 Compaq Computer Corporation Apparatus, method and system for 3-D and panoramic imaging
US6288843B1 (en) 1999-01-06 2001-09-11 Compaq Computer Corporation Apparatus, method and system for 3-D and panoramic imaging
US6057965A (en) 1999-01-06 2000-05-02 Compaq Computer Corporation Low cost high-speed portable imaging system
US6363449B1 (en) 1999-03-29 2002-03-26 Compaq Information Technologies Group, L.P. Method and apparatus for providing interchassis communication and management
US6463495B1 (en) 1999-03-29 2002-10-08 Compaq Information Technologies Group, L.P. Command and control infrastructure for a computer system using the computer's power rail
US6609204B1 (en) 1999-03-29 2003-08-19 Hewlett-Packard Development Company, L.P. Method and apparatus for locking/unlocking via platform management bus
US6502203B2 (en) 1999-04-16 2002-12-31 Compaq Information Technologies Group, L.P. Method and apparatus for cluster system operation
US6442631B1 (en) 1999-05-07 2002-08-27 Compaq Information Technologies Group, L.P. Allocating system resources based upon priority
US6467048B1 (en) 1999-10-07 2002-10-15 Compaq Information Technologies Group, L.P. Apparatus, method and system for using cache memory as fail-over memory
US6567901B1 (en) 2000-02-29 2003-05-20 Hewlett Packard Development Company, L.P. Read around speculative load

Non-Patent Citations (13)

* Cited by examiner, † Cited by third party
Title
Angelo et al., "Compact Mounting of Chip Card Reader at Front of Computer Device Bay Area," U.S. Appl. No. 09/115,068.
Angelo et al., "Comupter System Having Security Features," U.S. Appl. No. 09/540,811, filed Mar. 31, 2000.
Angelo et al., "Method and Apparatus for Providing Enhanced Computer Security," U.S. Appl. No. 09/540,812, filed Mar. 31, 2000.
Angelo et al., "Method and Apparatus for Using a MAC Address as Unique Machine Parameters to Identify Equipment," U.S. Appl. No. 10/184,146, filed Jun. 28, 2002.
Angelo et al., "Method and Apparatus to Provide Enchanced Computer Protection," U.S. Appl. No. 09/540,697, filed Mar. 31, 2000.
Brown et al., "Method and Apparatus for Preserving a Strong Random Number Across Battery Replacement in a Security Subsystem," U.S. Appl. No. 10/037,511, filed Jan. 4, 2002.
Franz et al., "Method and Apparatus for Identifying the Write Protect Status of a Diskette," U.S. Appl. No. 10/043,478, filed Jan. 10, 2002.
Franz et al., "Method and Apparatus for Initiating Strong Encryption Using Existing SSL Connection for Secure Key Exchange," U.S. Appl. No. 10/037,491, filed Jan. 4, 2002.
Neufeld et al., "Method and Apparatus to Provide Secure Communications Between Systems," U.S. Appl. No. 10/632,500, filed Aug. 1, 2003.
Neufeld, E. David, "Method and Apparatus for Preserving the Integrity of Management Subsystem Envrionment," U.S. Appl. No. 09/967,268, filed Sep. 28, 2001.
Neufeld, et al., "Method and Apparatus for Generating a Strong Random Number for Use in a Security Subsystem for a Processor-Based Device," U.S. Appl. No. 09/966,890, filed Sep. 28, 2001.
Reeves et al., "Method and Apparatus for Increasing the Functionality and Ease of Use of Lights Out Management in a Directory Enabled Environment," U.S. Appl. No. 10/037,684, filed Jan. 4, 2002.
Reeves et al., "Virtual Media from a Directory Service," U.S. Appl. No. 10/038,239, filed Jan. 4, 2002.

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006583A1 (en) * 2005-03-09 2009-01-01 Vvond, Llc Method and system for distributing restricted media to consumers
US8364792B2 (en) 2005-03-09 2013-01-29 Vudu, Inc. Method and system for distributing restricted media to consumers
US20070260871A1 (en) * 2005-10-27 2007-11-08 Microsoft Corporation Inspecting encrypted communications with end-to-end integrity
US7562211B2 (en) * 2005-10-27 2009-07-14 Microsoft Corporation Inspecting encrypted communications with end-to-end integrity
US20080155306A1 (en) * 2005-12-21 2008-06-26 Combs William E Method and system for controlling command execution
US7577870B2 (en) * 2005-12-21 2009-08-18 The Boeing Company Method and system for controlling command execution
US20090031143A1 (en) * 2006-02-17 2009-01-29 Vvond, Inc. Method and system for securing a disk key
US7900060B2 (en) * 2006-02-17 2011-03-01 Vudu, Inc. Method and system for securing a disk key
US20120272296A1 (en) * 2006-04-27 2012-10-25 Edin Hodzic Method and system for protecting against the execution of unauthorized software
US8677142B2 (en) * 2006-04-27 2014-03-18 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
US8239686B1 (en) * 2006-04-27 2012-08-07 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
USRE47364E1 (en) * 2006-04-27 2019-04-23 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
US8839439B2 (en) 2007-08-10 2014-09-16 Fortinet, Inc. Operation of a dual instruction pipe virus co-processor
US8646083B2 (en) 2007-08-10 2014-02-04 Fortinet, Inc. Virus co-processor instructions and methods for using such
US8375449B1 (en) 2007-08-10 2013-02-12 Fortinet, Inc. Circuits and methods for operating a virus co-processor
US8286246B2 (en) * 2007-08-10 2012-10-09 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system
US9460287B2 (en) 2007-08-10 2016-10-04 Fortinet, Inc. Efficient data transfer in a virus co-processing system
US9679138B2 (en) 2007-08-10 2017-06-13 Fortinet, Inc. Virus co-processor instructions and methods for using such
US9773113B2 (en) 2007-08-10 2017-09-26 Fortinet, Inc. Operation of a dual instruction pipe virus co-processor
US9892257B2 (en) 2007-08-10 2018-02-13 Fortinet, Inc. Efficient data transfer in a virus co-processing system
US10176322B2 (en) 2007-08-10 2019-01-08 Fortinet, Inc. Operation of a dual instruction pipe virus co-processor
US20090044273A1 (en) * 2007-08-10 2009-02-12 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system

Also Published As

Publication number Publication date
US20050060541A1 (en) 2005-03-17

Similar Documents

Publication Publication Date Title
US11848914B2 (en) High-throughput data integrity via trusted computing
JP6991431B2 (en) Methods and systems to secure communication between the host system and the data processing accelerator
US10771264B2 (en) Securing firmware
US10409978B2 (en) Hypervisor and virtual machine protection
JP4498735B2 (en) Secure machine platform that interfaces with operating system and customized control programs
US7565553B2 (en) Systems and methods for controlling access to data on a computer with a secure boot process
JP5869052B2 (en) Inclusive verification of platform to data center
US8234638B2 (en) Creating a relatively unique environment for computing platforms
JP3363379B2 (en) Method and apparatus for protecting application data in a secure storage area
EP1805571B1 (en) Verifying binding of an initial trusted device to a secured processing system
JP5500458B2 (en) Protecting the memory contents of the processor main memory
US7725703B2 (en) Systems and methods for securely booting a computer with a trusted processing module
CN111868689A (en) Run-time self-correction of blockchain ledger
US9514294B1 (en) Accessing a computing resource
US20060179324A1 (en) Methods and apparatus for facilitating a secure session between a processor and an external device
JP5346608B2 (en) Information processing apparatus and file verification system
US20080040613A1 (en) Apparatus, system, and method for secure password reset
US6986041B2 (en) System and method for remote code integrity in distributed systems
JP2008537224A (en) Safe starting method and system
WO2017000648A1 (en) Authentication method and apparatus for reinforced software
US7228432B2 (en) Method and apparatus for providing security for a computer system
US11909882B2 (en) Systems and methods to cryptographically verify an identity of an information handling system
CN111431707A (en) Service data information processing method, device, equipment and readable storage medium
US20200117439A1 (en) Systems and Methods for Reinforced Update Package Authenticity
US20080086613A1 (en) Methods and systems for command-flow continuity application-authentication

Legal Events

Date Code Title Description
AS Assignment

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ANGELO, MICHAEL F.;NEUFELD, E. DAVID;HEISEY, DAVID;REEL/FRAME:014501/0859

Effective date: 20030911

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 8

SULP Surcharge for late payment

Year of fee payment: 7

AS Assignment

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001

Effective date: 20151027

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553)

Year of fee payment: 12

AS Assignment

Owner name: FACEBOOK, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP;HEWLETT PACKARD ENTERPRISE COMPANY;REEL/FRAME:046772/0199

Effective date: 20180806

IPR Aia trial proceeding filed before the patent and appeal board: inter partes review

Free format text: TRIAL NO: IPR2019-01596

Opponent name: BLACKBERRY CORP.AND BLACKBERRY LTD.

Effective date: 20190913

RR Request for reexamination filed

Effective date: 20200429

AS Assignment

Owner name: META PLATFORMS, INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:FACEBOOK, INC.;REEL/FRAME:058214/0351

Effective date: 20211028

LIMR Reexamination decision: claims changed and/or cancelled

Kind code of ref document: C1

Free format text: REEXAMINATION CERTIFICATE; CLAIMS 1 AND 3-6 ARE CANCELLED. CLAIMS 2 AND 7-30 WERE NOT REEXAMINED.

Filing date: 20200429

Effective date: 20230411