SECURE CALLING CONVENTION SYSTEM AND METHODS
20200082060 ยท 2020-03-12
Inventors
Cpc classification
H04L9/0861
ELECTRICITY
G06F21/14
PHYSICS
International classification
G06F21/14
PHYSICS
H04L9/08
ELECTRICITY
Abstract
The present disclosure is directed to systems and methods for protecting software application information that is passed between a caller of an API and the logic contained within the API by using a Secure Calling Convention (SCC). The SCC involves performing a cryptographic operation on the information such that the true nature of the information is obfuscated. The SCC prevents a hacker from using the information to reverse-engineer the software application to behave as desired.
Claims
1. A non-transitory computer-readable medium storing instructions configured and arranged for encrypting information passed between a caller of an application programing interface (API) and logic contained within the API, the instructions comprising: determining at least one cryptographic value for use by the API caller, collecting and aggregating entropy from at least one entropy source, performing a cryptographic operation, a result of said cryptographic operation comprising at least one cryptographic parameter, and performing an API operation using the at least one cryptographic parameter.
2. The non-transitory computer-readable medium of claim 1, wherein the least one cryptographic value comprises one or more of at least one encrypted parameter value, at least one unencrypted parameter value, at least one encrypted return value, at least one unencrypted return value, at least one encrypted binary large object (BLOB) memory allocation value, and at least one unencrypted BLOB memory allocation value; wherein the at least one entropy source comprises at least one of environmental entropy, static entropy, and parameter entropy; wherein the cryptographic operation comprises at least one of an encryption operation and a decryption operation; wherein performing the cryptographic operation comprises: generating a cryptographic key using the aggregated entropy, and performing a cryptographic transformation on the cryptographic value to obtain the cryptographic parameter; wherein performing an API operation comprises at least one of: sending at least one cryptographic parameter to the API caller, and executing the API logic using the at least one cryptographic parameter.
3. The non-transitory computer-readable medium of claim 2, wherein the parameter entropy comprises at least one attribute associated with at least one cryptographic value.
4. The non-transitory computer-readable medium of claim 2, wherein collecting and aggregating entropy from at least one entropy source comprises generating a binary large object (BLOB) with a BLOB memory allocation sufficient to store the cryptographic value.
5. The non-transitory computer-readable medium of claim 4, wherein the parameter entropy comprises BLOB entropy derived from the BLOB.
6. The non-transitory computer-readable medium of claim 4, wherein the BLOB comprises at least one of an encrypted BLOB and an unencrypted BLOB.
7. The non-transitory computer-readable medium of claim 4, wherein performing the cryptographic operation further comprises: populating the BLOB memory allocation with the cryptographic value; performing the cryptographic transformation on the BLOB to obtain a transformed BLOB; wherein the at least one cryptographic parameter comprises the transformed BLOB.
8. The non-transitory computer-readable medium of claim 7, wherein sending at least one cryptographic parameter to the API caller comprises sending the transformed BLOB to the API caller.
9. The non-transitory computer-readable medium of claim 7, wherein executing the API logic using the at least one cryptographic parameter comprises executing the API logic using the cryptographic value stored within the transformed BLOB.
10. A system comprising instructions configured and arranged for encrypting information passed between a caller of an application programing interface (API) and logic contained within the API, the instructions comprising: determining at least one cryptographic value for use by the API caller, collecting and aggregating entropy from at least one entropy source, performing a cryptographic operation, a result of said cryptographic operation comprising at least one cryptographic parameter, and performing an API operation using the at least one cryptographic parameter.
11. The system of claim 10, wherein the least one cryptographic value comprises one or more of at least one encrypted parameter value, at least one unencrypted parameter value, at least one encrypted return value, at least one unencrypted return value, at least one encrypted binary large object (BLOB) memory allocation value, and at least one unencrypted BLOB memory allocation value; wherein the at least one entropy source comprises at least one of environmental entropy, static entropy, and parameter entropy; wherein the cryptographic operation comprises at least one of an encryption operation and a decryption operation; wherein performing the cryptographic operation comprises: generating a cryptographic key using the aggregated entropy, and performing a cryptographic transformation on the cryptographic value to obtain the cryptographic parameter; wherein performing an API operation comprises at least one of: sending at least one cryptographic parameter to the API caller, and executing the API logic using the at least one cryptographic parameter.
12. The system of claim 11, wherein the parameter entropy comprises at least one attribute associated with at least one cryptographic value.
13. The system of claim 11, wherein collecting and aggregating entropy from at least one entropy source comprises generating a binary large object (BLOB) with a BLOB memory allocation sufficient to store the cryptographic value.
14. The system of claim 13, wherein the parameter entropy comprises BLOB entropy derived from the BLOB.
15. The system of claim 4, wherein the BLOB comprises at least one of an encrypted BLOB and an unencrypted BLOB.
16. The system of claim 3, wherein performing the cryptographic operation further comprises: populating the BLOB memory allocation with the cryptographic value; performing the cryptographic transformation on the BLOB to obtain a transformed BLOB; wherein the at least one cryptographic parameter comprises the transformed BLOB.
17. The system of claim 6, wherein sending at least one cryptographic parameter to the API caller comprises sending the transformed BLOB to the API caller.
18. The system of claim 6, wherein executing the API logic using the at least one cryptographic parameter comprises executing the API logic the cryptographic value stored within the transformed BLOB.
19. A method of protecting information passed between a caller of an API and a logic contained within the API within the domain of a single operating system process, the method comprising the steps of: determining at least one cryptographic value for use by the API caller, collecting and aggregating entropy from at least one entropy source, performing a cryptographic operation, a result of said cryptographic operation comprising at least one cryptographic parameter, and performing an API operation using the at least one cryptographic parameter.
20. The method of claim 19, wherein the least one cryptographic value comprises one or more of at least one encrypted parameter value, at least one unencrypted parameter value, at least one encrypted return value, at least one unencrypted return value, at least one encrypted binary large object (BLOB) memory allocation value, and at least one unencrypted BLOB memory allocation value; wherein the at least one entropy source comprises at least one of environmental entropy, static entropy, and parameter entropy; wherein the cryptographic operation comprises at least one of an encryption operation and a decryption operation; wherein performing the cryptographic operation comprises: generating a cryptographic key using the aggregated entropy, and performing a cryptographic transformation on the cryptographic value to obtain the cryptographic parameter; wherein performing an API operation comprises at least one of: sending at least one cryptographic parameter to the API caller, executing the API logic using the at least one cryptographic parameter, and wherein the parameter entropy comprises at least one attribute associated with at least one cryptographic value.
Description
BRIEF DESCRIPTION OF DRAWINGS
[0040] Certain embodiments of the invention will now be described by way of example, with reference to the accompanying drawings, in which:
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
DETAILED DESCRIPTION
[0050] Embodiments of the present disclosure are directed systems and methods to protect information passed between a caller of an API and the logic contained within the API using the SCC.
[0051] To this end, in various embodiments, protecting information comprises the information undergoing a cryptographic operation. According to some embodiments, a cryptographic operation comprises without limitation a set of instructions stored on a transitory and/or non-transitory computer readable medium that when executed results in the encryption or decryption of information or one or more parts thereof.
[0052] As used herein, according to some embodiments, encryption is a process that transforms information from its original form into a form whereby the original form is no longer observable. In some embodiments, Encryption requires the use of an encryption key that is used govern the transformation. As used herein, in various embodiments, an encryption key is a value used by an encryption process when transforming information into an encrypted form.
[0053] As used herein, in some embodiments, a decryption comprises without limitation a process that transforms previously encrypted information into its original form. According to some embodiments, decryption requires the use of a decryption key. As used herein, in some embodiments, a decryption key comprises without limitation a value that is required to transform previously encrypted information into its original form.
[0054] In some embodiments, the encryption key can have a matched decryption key that allows the encrypted information to be decrypted.
[0055] As used herein, in various embodiments, entropy comprises, without limitation, data that cannot easily be predicted and so can be considered random for the purposes that it will be used for. As used herein, in some embodiments, an entropy source comprises without limitation an identifiable resource that produces entropic values.
[0056] Parameter Cryptographic Operations
[0057]
[0058] Embodiments comprising the SCC process shown in
[0059] Thus, some embodiments using the SCC illustrated in
[0060]
[0061] Embodiments comprising the SCC process shown in
[0062] BLOB-Parameter Cryptographic Operations
[0063]
[0064] Embodiments comprising the SCC process shown in
[0065] Thus, some embodiments using the SCC illustrated in
[0066]
[0067] Embodiments comprising the SCC process shown in
[0068] Return Cryptographic Operations
[0069]
[0070] Embodiments comprising the SCC process shown in
[0071] Thus, some embodiments using the SCC illustrated in
[0072]
[0073] Embodiments comprising the SCC process shown in
[0074] BLOB-Return Cryptographic Operations
[0075]
[0076] Embodiments comprising the SCC shown in
[0077] Thus, some embodiments using the SCC illustrated in
[0078]
[0079] Embodiments comprising the SCC process shown in
[0080] In some embodiments, the SCC requires the identification of parameter values prior to their encryption but not prior to generation of entropy used for key generation if parameter entropy is not used for key generation.
[0081] In some embodiments, the system requires identification of parameter values prior to their encryption and prior to the generation of entropy used for key generation if parameter entropy is used for key generation.
[0082] In some embodiments, the system allows entropy used for encrypting returned data to be optionally be derived from encrypted parameter data when a contract of understanding exists to that effect between the API logic and the API caller. In some embodiments, such entropy can be derived from one or more decrypted parameter values that have either been provided explicitly for that purpose or derived from other parameters that have an alternative purpose not related to the system.
[0083] In some embodiments, the system requires entropy sources to reproduce identical values when used by the API caller and the API when it is called by the API caller in a calling sequence. In some embodiments, entropy sources do not produce repeated values on subsequent calling sequences.
[0084] In some embodiments, the system requires that implementation follows the order shown in the process flows of
[0085] In some embodiments, the system will function correctly when non-system related logic is present between any consecutive process steps in the process flows of
[0086] In some embodiments, the system will function correctly when non-system related logic present between any consecutive process steps does not interfere with the data or entropy sources upon which the system is dependent.
[0087] In some embodiments, the system allows parameter value encryption to be applied to multiple parameters when an API accepts more than one parameter.
[0088] Application System Architecture
[0089]
[0090] In some embodiments, the system 910 can comprise at least one computing device including at least one processor 932. In some embodiments, the at least one processor 932 can reside in, or coupled to, one or more server platforms (not shown). In some embodiments, the system 910 can include a network interface 935a and an application interface 935b coupled to the least one processor 932 capable of processing at least one operating system 934. Further, in some embodiments, the interfaces 935a, 935b coupled to at least one processor 932 can be configured to process one or more of the software modules (e.g., such as enterprise applications 938). In some embodiments, the software modules can include server-based software, and can operate to host at least one user account and/or at least one client account, and operating to transfer data between one or more of these accounts using the at least one processor 932.
[0091] With the above embodiments in mind, it should be understood that the system can employ various computer-implemented operations involving data stored in computer systems. Moreover, the above-described databases and models described throughout can store analytical models and other data on computer-readable storage media within the system 910 and on computer-readable storage media coupled to the system 910. In addition, the above-described applications of the system can be stored on computer-readable storage media within the system 910 and on computer-readable storage media coupled to the system 910. These operations are those requiring physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, electromagnetic, or magnetic signals, optical or magneto-optical form capable of being stored, transferred, combined, compared and otherwise manipulated. In some embodiments, the system 910 can comprise at least one computer readable medium 936 coupled to at least one data source 937a, and/or at least one data storage device 937b, and/or at least one input/output device 937c. In some embodiments, the system can be embodied as computer readable code on a computer readable medium 936. In some embodiments, the computer readable medium 936 can be any data storage device that can store data, which can thereafter be read by a computer system (such as the system 910). In some embodiments, the computer readable medium 936 can be any physical or material medium that can be used to tangibly store the desired information or data or instructions and which can be accessed by a computer or processor 932. In some embodiments, the computer readable medium 936 can include hard drives, network attached storage (NAS), read-only memory, random-access memory, FLASH based memory, CD-ROMs, CD-Rs, CD-RWs, DVDs, magnetic tapes, other optical and non-optical data storage devices. In some embodiments, various other forms of computer-readable media 936 can transmit or carry instructions to a computer 940 and/or at least one user 931, including a router, private or public network, or other transmission device or channel, both wired and wireless. In some embodiments, the software modules 938 can be configured to send and receive data from a database (e.g., from a computer readable medium 936 including data sources 937a and data storage 937b that can comprise a database), and data can be received by the software modules 938 from at least one other source. In some embodiments, at least one of the software modules can be configured within the system to output data to at least one user 931a, 931b via at least one graphical user interface rendered on at least one digital display.
[0092] In some embodiments, of the system, the computer readable medium 936 can be distributed over a conventional computer network via the network interface 935a where the system embodied by the computer readable code can be stored and executed in a distributed fashion. For example, in some embodiments, one or more components of the system 910 can be coupled to send and/or receive data through a local area network (LAN) 939a and/or an internet coupled network 939b (e.g., such as a wireless internet). In some further embodiments, the networks 939a, 939b can include wide area networks (WAN), direct connections (e.g., through a universal serial bus port), or other forms of computer-readable media 936, or any combination thereof.
[0093] In some embodiments, components of the networks 939a, 939b can include any number of user devices such as personal computers including for example desktop computers, and/or laptop computers, or any fixed, generally non-mobile internet appliances coupled through the LAN 939a. For example, some embodiments include one or more of personal computers 940, databases 941, and/or servers 942 coupled through the LAN 939a that can be configured for any type of user including an administrator. Other embodiments can include personal computers coupled through network 939b. In some further embodiments, one or more components of the system 210 can be coupled to send or receive data through an internet network (e.g., such as network 939b). For example, some embodiments include at least one user 931a, 931b, is coupled wirelessly and accessing one or more software modules of the system including at least one enterprise application 938 via an input and output (I/O) device 937c. In some other embodiments, the system 210 can enable at least one user 931a, 931b, to be coupled to access enterprise applications 938 via an I/O device 937c through LAN 939a. In some embodiments, the at least one user 931a, 931b can comprise a user 931a coupled to the system 910 using a desktop computer 940, and/or laptop computers, or any fixed, generally non-mobile internet appliances coupled through the internet 239b. In some further embodiments, the user can comprise a mobile user 931b coupled to the system 910. In some embodiments, the user 931b can use any mobile computing device 931c to wireless coupled to the system 910, including, but not limited to, personal digital assistants, and/or cellular phones, mobile phones, or smart phones, and/or pagers, and/or digital tablets, and/or fixed or mobile internet appliances.
[0094] Any of the operations described herein that form part of the system are useful machine operations. The system also relates to a device or an apparatus for performing these operations. The apparatus can be specially constructed for the required purpose, such as a special purpose computer. When defined as a special purpose computer, the computer can also perform other processing, program execution or routines that are not part of the special purpose, while still being capable of operating for the special purpose. Alternatively, the operations can be processed by a general-purpose computer selectively activated or configured by one or more computer programs stored in the computer memory, cache, or obtained over a network. When data is obtained over a network the data can be processed by other computers on the network, e.g. a cloud of computing resources.
[0095] The embodiments of the system can also be defined as a machine that transforms data from one state to another state. The data can represent an article, that can be represented as an electronic signal and electronically manipulate data. The transformed data can, in some cases, be visually depicted on a display, representing the physical object that results from the transformation of data. The transformed data can be saved to storage generally, or in particular formats that enable the construction or depiction of a physical and tangible object. In some embodiments, the manipulation can be performed by a processor. In such an example, the processor thus transforms the data from one thing to another. Still further, some embodiments include methods can be processed by one or more machines or processors that can be connected over a network. Each machine can transform data from one state or thing to another, and can also process data, save data to storage, transmit data over a network, display the result, or communicate the result to another machine. Computer-readable storage media, as used herein, refers to physical or tangible storage (as opposed to signals) and includes without limitation volatile and non-volatile, removable and non-removable storage media implemented in any method or technology for the tangible storage of information such as computer-readable instructions, data structures, program modules or other data.
[0096] Although method operations can be described in a specific order, it should be understood that other housekeeping operations can be performed in between operations, or operations can be adjusted so that they occur at slightly different times, or can be distributed in a system which allows the occurrence of the processing operations at various intervals associated with the processing, as long as the processing of the overlay operations are performed in the desired way.
[0097] The phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of including, comprising, or having and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. Unless specified or limited otherwise, the terms mounted, connected, supported, and coupled and variations thereof are used broadly and encompass both direct and indirect mountings, connections, supports, and couplings. Further, connected and coupled are not restricted to physical or mechanical connections or couplings.
[0098] It is to be understood that the system is not limited in its application to the details of construction and the arrangement of components set forth in the previous description or illustrated in the drawings. The system is capable of other embodiments and of being practiced or of being carried out in various ways. The disclosure is presented to enable a person skilled in the art to make and use embodiments of the system. Various modifications to the illustrated embodiments will be readily apparent to those skilled in the art, and the generic principles herein can be applied to other embodiments and applications without departing from embodiments of the system. In addition, many modifications may be made to adapt to a particular situation, indication, material and composition of matter, process step or steps, without departing from the spirit and scope of the present presently disclosed embodiments. All such modifications are intended to be within the scope of the claims appended hereto.
[0099] Thus, embodiments of the system are not intended to be limited to embodiments shown, but are to be accorded the widest scope consistent with the principles and features disclosed herein. The detailed description is to be read with reference to the figures, in which like elements in different figures have like reference numerals. The figures, which are not necessarily to scale, depict selected embodiments and are not intended to limit the scope of embodiments of the system. Skilled artisans will recognize the examples provided herein have many useful alternatives and fall within the scope of embodiments of the system.