Abstract:
Efficient and effective permission confidential information protection systems and methods are described. The secure information protection systems and methods facilitate storage of confidential information in a manner safe from rogue software access. In one embodiment, a confidential information protection method is implemented in hardware and facilitates protection against software and/or Operating System hacks. In one exemplary implementation, a confidential information protection method includes setting a permission sticky bit flag to a default state upon system set up. The permission sticky bit flag access permission indication is adjusted at system reset in accordance with an initial application instruction. Access to the confidential information is restricted in accordance with the permission sticky bit and the permission sticky bit is protected from adjustments attempting to violate the permission indication. For example, another software application can not access or alter confidential information (e.g., an encryption key, initialization vector, etc.) if a permission sticky bit is designated as the highest security rating (e.g., disabling read permission and write permission until system reset).

Description:
FIELD OF THE INVENTION 
     The present invention relates to the field of information protection. More particularly, the present invention relates to a system and method for effective access permission sticky bit protection. 
     BACKGROUND OF THE INVENTION 
     Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems facilitate increased productivity and cost reduction in analyzing and communicating data, ideas and trends in most areas of business, science, education and entertainment. Frequently, these activities involve processing sensitive information. However, adequately protecting the sensitive information can be problematic. 
     Conventional attempts at protecting information often involve encryption. While conventional encryption/decryption attempts can provide a degree of protection, the protection is often limited to the security of the key utilized in encryption and decryption operations. Traditional approaches are often susceptible to unauthorized access to or hacking of the key values. 
     Some traditional approaches attempt to lock internal memory regions and refer to the locked regions as secure for storage of confidential or sensitive information. The traditional approaches typically rely on the Operating System to switch between secure and non-secure regions. However, conventional locked internal memory storage techniques are often susceptible to unauthorized and/or nefarious intrusion. For example, confidential information stored in conventional internal memories is often susceptible to hacking by either rogue software applications and/or Operating System loopholes resulting in the confidential information no longer being secure. 
     SUMMARY 
     Efficient and effective permission confidential information protection systems and methods are described. The secure information protection systems and methods facilitate storage of confidential information in a manner safe from rogue software access. In one embodiment, a confidential information protection method is implemented in hardware and facilitates protection against software and/or Operating System hacks. In one exemplary implementation, a confidential information protection method includes setting a permission sticky bit flag to a default state upon system set up. The permission sticky bit flag access permission indication is adjusted at system reset in accordance with an initial application instruction. Access to the confidential information is restricted in accordance with the permission sticky bit and the permission sticky bit is protected from adjustments attempting to violate the permission indication. For example, another software application can not access or alter confidential information (e.g., an encryption key, initialization vector, etc.) if a permission sticky bit is designated as the highest security rating (e.g., disabling read permission and write permission until system reset). 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and form a part of this specification, are included for exemplary illustration of the principles of the present and invention and not intended to limit the present invention to the particular implementations illustrated therein. The drawings are not to scale unless otherwise specifically indicated. 
         FIG. 1A  is a block diagram of an exemplary confidential information protection scheme in accordance with one embodiment of the present invention. 
         FIG. 1B  is a block diagram of another exemplary confidential information protection scheme in accordance with one embodiment of the present invention. 
         FIG. 2  is a block diagram of an exemplary confidential information protection method in accordance with one embodiment of the present invention. 
         FIG. 3  is a block diagram of an exemplary system in accordance with one embodiment of the present invention. 
         FIG. 4  is a block diagram of an exemplary secure encryption method in accordance with one embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     Reference will now be made in detail to the preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be obvious to one ordinarily skilled in the art that the present invention may be practiced without these specific details. In other instances, well known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the current invention. 
     Some portions of the detailed descriptions which follow are presented in terms of procedures, logic blocks, processing, and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means generally used by those skilled in data processing arts to effectively convey the substance of their work to others skilled in the art. A procedure, logic block, process, etc., is here, and generally, conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps include physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic, optical, or quantum signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. 
     It should be borne in mind, however, that all of these and similar terms are associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present application, discussions utilizing terms such as “processing”, “computing”, “calculating”, “determining”, “displaying” or the like, refer to the action and processes of a computer system, or similar processing device (e.g., an electrical, optical, or quantum, computing device), that manipulates and transforms data represented as physical (e.g., electronic) quantities. The terms refer to actions and processes of the processing devices that manipulate or transform physical quantities within a computer system&#39;s component (e.g., registers, memories, other such information storage, transmission or display devices, etc.) into other data similarly represented as physical quantities within other components. 
     The present invention facilitates effective and secure information protection. In one embodiment, the present invention directs secure setting and protection of confidential information and permission sticky bits. The permission sticky bits are set by an information creator during a system reset and secure settings can not be altered until the next system reset process. In one exemplary implementation, software applications are prevented from accessing and/or altering a permission sticky bit after system reset. In one embodiment, a sticky bit permission indicator is flexibly set initially by a software application at system reset and thereafter the sticky bit setting and corresponding confidential information are secured by hardware based protection mechanisms in accordance with the initial settings. If the initial sticky bit permission disables read and write permission, hardware protects both the sticky bit and confidential information from access by software and/or operating systems intrusion or hacking 
       FIG. 1A  is a block diagram of an exemplary confidential information protection scheme  100  in accordance with one embodiment of the present invention. Confidential information protection scheme  100  includes confidential information  111 ,  112 ,  113  and  114 , read permission sticky bits  121 ,  122 ,  123 , and  124 , and write permission sticky bits  131 ,  132 , 133  and  134 . Read sticky bit  121  and write sticky bit permission bit  131  are associated with confidential information  111 . Read sticky bit  122  and write sticky bit permission bit  132  are associated with confidential information  112 . Read sticky bit  123  and write sticky bit permission bit  133  are associated with confidential information  113 . Read sticky bit  124  and write sticky bit permission bit  134  are associated with confidential information  114 . 
     It is appreciated that a variety of different types of confidential information can be associated with the permission sticky bits. In one embodiment, the confidential information includes encryption/decryption keys. In one exemplary implementation the confidential information includes initialization vectors. 
     It is appreciated that access permission sticky bit assignment can be partitioned into groups or regions.  FIG. 1B  is a block diagram of an exemplary confidential information protection scheme  190  in accordance with one embodiment of the present invention. Confidential information protection scheme  190  includes confidential information  171 ,  172 ,  173  and  174 , read permission sticky bits  181 , and  184 , and write permission sticky bits  191  and  193 . Confidential information protection scheme  190  is similar to confidential information protection scheme  100  except access permission is partitioned and access indications are assigned to a plurality of discrete confidential information as a group. In one exemplary implementation, the access permission is partitioned into a secure partition (e.g.,  171  and  172 ) and non-secure partition (e.g.,  173  and  174 ). The secure partition is granted read permission in accordance with permission sticky bit  181  and write permission sticky bit  191 . The secure partition is granted read permission in accordance with permission sticky bit  183  and write permission sticky bit  193 . 
       FIG. 2  is a block diagram of exemplary confidential information protection method  200  in accordance with one embodiment of the present invention. In one embodiment of exemplary confidential information protection method  200  is applied to permission sticky bits associated with an encryption key and an initialization vector. 
     In block  210 , a permission sticky bit flag is set to a default state upon system set up or reset. In one embodiment the default state is full read permission or the default state is full write permission. The permission sticky bit is set to a logical value indicating corresponding permission. By way of example, the permission sticky bit can be set to a logical 1 to indicate a read permission and/or write permission or a logical zero to indicate a read permission and/or write permission is not available or granted. In one exemplary implementation, permission sticky bits associated with a key table entry and initialization vector are cleared before the default is set. 
     In block  220 , the permission sticky bit flag access permission indication is adjusted to an initial setting in accordance with an application instruction at system reset. In one embodiment, a permission sticky bit that is set to a default permit access (e.g., read or write) in block  210  is altered (e.g., changed to an initial setting) to prohibit access in block  220 . In one exemplary implementation, the access permission indication can correspond to a read permission or a write permission. 
     In one embodiment, the information creator indicates the level of security associated with the information and sets the initial security levels appropriately (e.g., in block  210  at system reset). In one exemplary implementation, the initial security level settings of the permission sticky bits is hardware managed and hence not susceptible to hacking of the Operating System or alteration (e.g., retracting the setting, etc.) by rogue information. Even the software associated with the secure information creator can no longer retract initial security settings that deny read access and/or write access. Hence, while allowing flexible initial permission setting, the present scheme provides a very high level of security for subsequent operations. 
     In block  230 , the permission sticky bit is protected from adjustment in violation of the permission indication. If a permission sticky bit is changed to prohibit access at a system reset the permission sticky bit indication can not be altered by software again until another system reset. In one embodiment, access to the permission indication sticky bits is restricted to hardware engines after initial setting in step  210  and protected from software or Operating System alteration. In addition, since the permission sticky bit is cleared upon a system reset, a rogue application may attempt to reset an individual module but since it is not a system reset (e.g., whole SoC reset, etc.) the information permission sticky bit is not cleared and the information is protected. In one exemplary implementation, the hardware engine is built for a specific functionality and the confidential information is protected from utilization beyond the initial permission setting of the sticky bits. 
     It is appreciated that the confidential information protection method  200  can be applied to systems that include multiple processors. In one embodiment, the protection restrictions are applicable to a plurality of processors. For example, the protection restrictions can be applicable to central processing unit, graphics processing unit, audio-video processor, etc. 
       FIG. 3  is an exemplary block diagram of system  300  in accordance with one embodiment of the present invention. System  300  includes system-on-a-chip  301 , power source  303  (e.g., power cell, battery, connection to a continuous or utility power, etc.), memory  304  and UART  305 . The system-on-a-chip  301  includes always on power domain  310  and main power domain  320 . The main power domain  320  includes CPU  321 , GPU  322 , security engine module  324 , and non-power gated components  323 . It is appreciated system  300  can include a plurality of processors (e.g., CPU  321 , GPU  322 , an audio video processor, etc.). 
     The components or system  300  cooperatively operate to implement efficient and effective protection of confidential information utilizing permission sticky bits. Power source  301  supplies power. Always on domain  310  primarily stores information associated with power states of components and initiates of an expedited recovery from a reduced power state. Main domain is a power domain for other components of system  300 . Central processing unit CPU  321  and graphics processing unit (GPU)  322  process information. Security engine module  324  performs operations associated with confidential and secure information in accordance with permission sticky bit indications. Non-power gated island  324  includes a variety of components for performing a variety of operations. Non-power gated island  324  can include a cache memory, memory controller, interrupt controller, peripheral controller, etc. Universal Asynchronous Receiver and Transmitter (UART)  304  is a communication interface. External memory  305  stores information. 
     In one embodiment, an information security block protects secure information utilizing secure access permission sticky bits. It is appreciated that various components of system  300  can utilize present permission sticky bit schemes to protect confidential information. For example, security engine  324  limits access to confidential information (e.g., encryption/decryption keys, initialization vectors, etc.) in accordance permission sticky bits  325 . In one embodiment, the indication of permission sticky bits  325  is retrieved from IRAM  327  on a system reset. In one embodiment, the hardware of the security engine can access and change the initialization vector regardless of the access permission sticky bit indication while protecting the information from un-permitted access by software applications. It is appreciate that the security engine  324  can by implemented to perform a variety of confidential and security related operations including encryption and decryption (e.g., AES, DES, 3DES, etc.). It is also appreciated that present protection schemes are readily adaptable for utilization in a variety of components. In one exemplary implementation, always on component  310  can also store confidential information that is protected by permission sticky bits  311 . 
     In one embodiment, a hardware engine has access to the confidential information, even at higher security levels and the confidential information can be use d by said hardware engine according to the usage the hardware engine is designed for including maintaining states. In one exemplary implementation a sticky bit can be utilized to lock a secure engine disable bit and no access is granted to the secure engine. If the system detects or receives and indication there is an attempt to hack the secure engine, a secure engine disable sticky bit is asserted and the secure engine can not be access again until a system reset. 
     In one embodiment, an initialization vector (IV) is not unique. There is an original that the application uses at the beginning and then there is an IV that gets updated after every iteration. The security or permission sticky bit indications are defined for both them independently. 
       FIG. 4  is a block diagram of exemplary secure encryption method  400  in accordance with one embodiment of the present invention. In block  410  an indication to perform an encryption is received. In block  420  encryption key information is retrieved in accordance with a permission sticky bit indication. In block  430  encryption operations are performed if said permission sticky bit indication allows said encryption key to be read. 
     In one embodiment there are four security related contexts. In one exemplary implementation, the security related context includes input data pointer, output data pointer (for memory to memory), a security key and initialization vector (IV). In one exemplary implementation, a cooperative context switch is performed and data pointers are handled appropriately while the security engine takes care of the keys and IV. Keys that are fixed between vectors for the same context can be easily handled. For modes other than ECB, an initialization vector is updated on a vector basis. It can be either the previous cipher text vector or clear text vector. At the time of a context switch the initialization vectors can be handled in a variety of ways. A security driver can handle re-initializing the IV. The security engine can automatically save the IV internally and restore it when needed again. The security engine can also keep an internal copy of the first IV and the last IV. 
     It is appreciated that an IV for secure keys can be handled in utilizing a variety of techniques. In one embodiment, the IV is kept updated locally in scratch registers. During context switching, the IV register value is cleared. To reach the same state, the security engine does not decrypt the previous data and reach the current state. In another embodiment, a copy of the first IV and the updated IV is kept. At the time of switching back to a context, the software can choose which IV to use. The security engine maintains both the IV&#39;s. In one exemplary implementation, it is not possible for software to update the IV&#39;s when a secure IV update disable sticky bit is cleared. 
     In one embodiment, sticky bit values are “reset” during the system reset and can be set at any time a system desires. Any software application that wants to protect information puts it in the confidential information location and protects it in accordance with the sticky bits. In one exemplary implementation, other software applications can decide to protect its information, when they are invoked from the user to do so. 
     Thus, the present invention facilitates enhanced information protection. Access to confidential information is protected in accordance with secure permission sticky bit indications. In one embodiment, hardware protects the permission sticky bit indicators from unauthorized alteration by rogue software applications and/or hacked Operating Systems. The permission sticky bit indications are secure and restrictive permissions can not be altered by unauthorized software attempts during normal operations after being set at system reset. The information is protected while allowing the information creator a significant degree of flexibility in setting initial permission indications. If an information creator indicates confidential information is to be protected in accordance with a high restriction (e.g., read and write permission disabled or denied) then the information and permission sticky bit are not accessible by hacking software or even the application that indicated the initial permission sticky bit setting. The present permission sticky bit scheme also facilitates a variety of security partitions and organizational groupings at different levels of granularity. 
     The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the Claims appended hereto and their equivalents. The listing of steps within method claims do not imply any particular order to performing the steps, unless explicitly stated in the claim.