Network Coding-Based Post-Quantum Cryptography
20220069987 · 2022-03-03
Inventors
- Muriel Medard (Belmont, MA)
- Alejandro Cohen (Brookline, MA, US)
- Rafael Gregorio Lucas D'OLIVEIRA (Somerville, MA, US)
- Salman SALAMATIAN (Boston, MA, US)
Cpc classification
H04L9/00
ELECTRICITY
H04L9/0858
ELECTRICITY
H04L9/0825
ELECTRICITY
H04L9/006
ELECTRICITY
H04L2209/34
ELECTRICITY
International classification
H04L9/08
ELECTRICITY
H04L9/30
ELECTRICITY
H04L9/32
ELECTRICITY
Abstract
A system and method provide a hybrid communication scheme that achieves high communication rates with post-quantum computational security guarantees. Messages to be securely communicated are first mixed using an individually secure encoding, such as a linear network code, and some of the encoded messages are further encrypted. The encrypted and unencrypted messages are sent via different communications channels. Each unencrypted message becomes almost as secure as the encrypted messages because of the pre-mixing, since decoding any one of the messages requires all of the messages, including the encrypted messages. Thus, a very few encrypted messages may be used, allowing the rate of communication to approach one as the number of channels increases. This is particularly beneficial when a classical public-key cryptosystem can only be used in part of the data transmitted or stored, in the presence of noisy channels, in distributed data storage, and other applications.
Claims
1. A method of securely communicating a plurality of data blocks, the method comprising: receiving, using a first data channel, a first message that comprises an encryption of a first encoding of the plurality of data blocks; receiving, using a second data channel, a second message that comprises an unencrypted second encoding of the plurality of data blocks; decrypting the encryption of the first message to obtain the unencrypted first encoding of the plurality of data blocks; and recovering each message in the plurality of messages using the unencrypted first encoding and the unencrypted second encoding of the plurality of data blocks.
2. The method according to claim 1, wherein the first data channel and the second data channel comprise different transmission media.
3. The method according to claim 1, wherein the first data channel and the second data channel comprise different utilization times of a single transmission medium.
4. The method according to claim 1, wherein the encryption comprises a public-key encryption.
5. The method according to claim 1, wherein the encryption comprises a post-quantum encryption.
6. The method according to claim 1, wherein recovering comprises decoding the unencrypted first and second encodings according to a linear network code.
7. The method according to claim 6, wherein decoding comprises decoding according to an individually secure code.
8. The method according to claim 1, wherein receiving the first message or receiving the second message comprises correcting one or more errors.
9. An apparatus for securely communicating a plurality of data blocks, the apparatus comprising: a computing processor; and a non-volatile memory storing computer program code that, when executed by the computing processor, performs the processes of: receiving, using a first data channel, a first message that comprises an encryption of a first encoding of the plurality of data blocks; receiving, using a second data channel, a second message that comprises an unencrypted second encoding of the plurality of data blocks; decrypting the encryption of the first message to obtain the unencrypted first encoding of the plurality of data blocks; and recovering each message in the plurality of messages using the unencrypted first encoding and the unencrypted second encoding of the plurality of data blocks.
10. The apparatus according to claim 9, wherein the first data channel and the second data channel comprise different transmission media.
11. The apparatus according to claim 9, wherein the first data channel and the second data channel comprise different utilization times of a single transmission medium.
12. The apparatus according to claim 9, wherein the encryption comprises a public-key encryption.
13. The apparatus according to claim 9, wherein the encryption comprises a post-quantum encryption.
14. The apparatus according to claim 9, wherein recovering comprises decoding the unencrypted first and second encodings according to a linear network code.
15. The method according to claim 14, wherein decoding comprises decoding according to an individually secure code.
16. The apparatus according to claim 9, wherein receiving the first message or receiving the second message comprises correcting one or more errors.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0033] The manner of making and using the disclosed subject matter may be appreciated by reference to the detailed description in connection with the drawings, in which like reference numerals identify like elements.
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049] The drawings are not necessarily to scale, or inclusive of all elements of a system, emphasis instead generally being placed upon illustrating the concepts, structures, and techniques sought to be protected herein.
DETAILED DESCRIPTION
[0050] In accordance with embodiments of the concepts, techniques, and structures disclsed herein, a hybrid universal network-coding cryptosystem (HUNCC) obtains post-quantum cryptography at high information rates. In this secure network-coding scheme, we combine computational security principles with physical layer security primitives, thus introducing a hybrid system which relies on both individual secrecy, and computational secure cryptosystems.
[0051] We illustrate this concept via a multi-path secure transmission scheme, where multiple messages are to be sent between Alice and Bob, using parallel links. By doing so, we are able to address one of the main shortcomings of physical layer security, namely the assumption that an eavesdropper cannot observe all the messages sent between Alice and Bob. In the system disclosed herein, Eve may in fact observe the entirety of the transmission between Alice and Bob; i.e. Eve may be strong.
[0052] We will make an assumption on Eve's computational power, however, similar to computationally secure systems. But instead of encrypting the entirety of the messages from Alice using public-key cryptography, we only encrypt over some of the communication links; in some embodiments, as few as just one of the links. Under the computational limitation assumption, the links that are encrypted are analogous to losses for Eve—and thus, we may now employ traditional techniques from physical layer security codes. In other words, we are able to enforce that the eavesdropper only observes part of the messages, via cryptography, under the computational limitation assumption. This, in turn, allows an increase in the communication rate, similar to what is done in individual secrecy, while still providing security guarantees that are computationally strong. If Alice and Bob have more communication channels, the communication rate will be even larger. Indeed, the rate approaches one as the number of channels increases.
[0053] In many practical heterogeneous networks, one may not assume that the cryptosystem, with the public-key, can be applied on all paths. The HUNCC coding scheme can ensure post-quantum security across the entire network, using the public-key only for the information transmitted over one path. Moreover, we discuss below important applications in which HUNCC may be used. Specifically, in addition to multipath communication, we also discuss single path communication, distributed storage, ultra-reliable low-latency streaming communications, and the case of myopic adversaries.
[0054] For a network with two paths, we illustrate our hybrid scheme in .sub.q.sub.
[0055] Alice and Bob agree on a public key encryption scheme (Enc, Dec, p, s). Alice first encodes the message M using the individually secure code with a generator matrix, for example
We denote this encoding by X=MG=[M.sub.1+M.sub.2, M.sub.1+2M.sub.2]. Alice then encrypts the first message as Enc(X.sub.1, p), sends it to Bob via channel 1, and sends X.sub.2 unencrypted via channel 2. Bob then decrypts X.sub.1=Dec(Enc(X.sub.1, p), s) to retrieve all of X, and multiplies by the inverse of the generator matrix to decode and retrieve the original message M=XG.sup.−1.
[0056] If Eve is a weak eavesdropper, observing only one communication channel, the scheme is information-theoretically individually secure irrespective of her computational power. This occurs because each piece of the message, M.sub.i, is independent from any single encoded X.sub.j. If Eve is a strong eavesdropper, observing both communication channels, each message M.sub.i will be computationally secure with almost the same security level as the encryption scheme (Enc, Dec, p, s). Indeed, we have shown in Theorem 1 of Cohen, Alejandro et al., “Network Coding-Based Post-Quantum Cryptography”, Sep. 3, 2020, https://arxiv.org/abs/2009.01931 (hereinafter “Cohen et al.”), reproduced below, that if the best known attack on (Enc, Dec, p, s) needs 2.sup.b operations to break it, then Eve needs at least
operations to determine any message M.sub.i, where ∈ E is the amount of operations needed to solve a 2×2 linear system.
[0057] We note that for the individually secure code G to work, .sub.q.sub.
[0058] Suppose Alice and Bob agree on using a 128-bit McEliece cryptosystem for the encrypted link. To be secure against modern computational security assumptions, Bob may select a [2960,2288]-Goppa code with a public key of 1537536 bits. In this case, the domain of the encryption function is .sub.2.sup.2288. Alice and Bob must agree on an injective mapping from the image of the code G, given by
.sub.q.sub.
.sub.2.sup.2288. In this case, they could set q.sup.u=3.sup.1443 so that log.sub.2(q.sup.u)≈2287.1 bits. Thus, Alice can map X.sub.1 into a 2288 bit vector and encode it using the Goppa code into E(X.sub.1, p) ∈
.sub.2.sup.2960. Alice will then send log.sub.2|E(X.sub.1, p)|=2960 bits through link 1 and log.sub.2|X.sub.2|≈2287.1 bits through link 2. Thus, the total communication cost will be around 5248 bits giving a communication rate slightly larger than 0.87, as indicated in
[0059] Before turning to the details of a reference implementation, we give some background information on the two main building blocks of our scheme: 1) computational secure cryptosystems and, 2) information-theoretic individual security. We note that, although we focus on the McEliece cryptosystem, any computationally secure cryptosystem can be used.
[0060] Definition 1 A public-key encryption is a tuple (Enc, Dec, p, s, k.sub.b, n.sub.b) where:
[0061] Enc: {0,1}.sup.k.sup..fwdarw.{0,1}.sup.n.sup.
.fwdarw.{0,1}.sup.k.sup.
and s ∈
represent the public and private key respectively, and
[0062] For every message , and the corresponding secret key s ∈
, Dec(Enc(
[0063] A public-key encryption (Enc, Dec, p, s, k.sub.b, n.sub.b) has security level b if the best known algorithm to recover
[0064] The McEliece post-quantum public-key cryptosystem works as follows. Bob generates the public key p=(G.sup.pub=SGP, t), where G.sup.pub ∈ .sub.q.sup.k.sup.
, P), where
is an efficient decoding algorithm for
. To encrypt a message m ∈ F.sub.q.sup.k.sup.
. Since cP.sup.−1 has hamming distance t, it follows that, mSG=D.sub.G(cP.sup.−1). Then, since both G and S are invertible, Bob recovers m=(mSG)G.sup.−1S.sup.−1.
[0065] By contrast to computational security, individual security operates under the assumption that Eve is a weak eavesdropper Y.sub.E, i.e. only has access to w communication paths. The privacy guarantee is that, while Bob is able to decode completely all the k.sub.u ∈ .sub.q.sub.
.sub.2 bits each, Eve is ignorant with respect to each individual message. Thus,
H(M.sub.j|Y.sub.E.sub.
[0066] We next describe how to construct an individual security code from an arbitrary linear code. Thus, let be a linear code over
.sub.q.sub.
.sub.q.sub.
and G.sub.IS* ∈
.sub.q.sub.
. Finally, H.sub.IS ∈
.sub.q.sub.
, respectively, i.e. such that, H.sub.ISG.sub.IS.sup.8T=I and G.sub.ISG.sub.IS.sup.**=I yet G.sub.ISG.sub.IS.sup.*=0. Then, the individual security code is generated by
It is appreciated that other individual security codes may be used in embodiments of the concepts, techniques, and structures disclosed herein.
[0067] It is important to note that unlike in public-key cryptosystems, and in particular the McEliece cryptosystem, in physical-layer security schemes, the generation matrix and the code is public. Thus, we can assume that both Bob and Eve have access to all the matrices described above.
[0068] An individual security code may be used as follows. Alice encodes the message M ∈ .sub.q.sub.
Thus, X.sup.T is a linear network coding of M.sup.T according to the individual security code. To decode the message, Bob uses the parity check matrix H.sub.IS and the basis matrix G.sub.IS to compute (M.sub.1; . . . ; M.sub.k′)=H.sub.ISX and (M.sub.k′+1; . . . ; M.sub.k)=G.sub.ISX. Since Eve only observes w symbols from the encrypted vector X.sup.T, she is not able to decode and is completely ignorant with respect to any set k-w symbols of information transmitted over the network.
[0069] We next define the security notions and the threat models used in the rest of the disclosure. Throughout, we assume a ciphertext-only attack model, i.e., the adversary Eve only has access to Y.sub.E.sub.
[0070] Definition 2 A cryptosystem with message M and ciphertext c(M) has security level b if the best known algorithm needs to perform at least 2.sup.b operations to decode M from the observation of c(M) alone in expectation.
[0071] It should be noted that this definition of security level imposes implicitly a restriction on the size of the encoded message M, and on its distribution. Indeed, assuming a public-key cryptosystem, the adversary may always use a brute force attack, by guessing potential message inputs until the correct one is found. Generally, it is assumed that the message M takes a value uniformly at random in a set {0,1}.sup.k.sup.
[0072] The computation security level of Definition 2 is relevant in the case of a single link, or equivalently a single message. When there are several messages being transmitted on each link, it is desirable to provide a security guarantee that applies to each message individually. For a weak Eve, this can be obtained via information-theoretic individual secrecy.
[0073] Definition 3 A cryptosystem with messages M.sub.1, . . . , M.sub.l is (l, w)-individually secure if for every ω ⊂ [l], with |ω|=w, H(M.sub.s|Y.sub.ω)=H(M.sub.s) where Y.sub.ω=[M.sub.i].sub.i∈ω.
[0074] For a strong Eve, which can observe the entirety of the sent messages, (l, w)-individual security is unobtainable. Instead, we describe a notion of individual computational security, which states that the decoding of any message on any of the paths would require 2.sup.b operations.
[0075] Definition 4 (Individual Computational Secrecy) A cryptosystem with messages M.sub.1, . . . , M.sub.l and ciphertexts c.sub.i , c.sub.i(M.sub.1, . . . , M.sub.l), for i=1, ... ,l has security level b lithe best known algorithm needs to perform at least 2.sup.b operations to decode any M.sub.1, j=1, . . . , l from the observations c.sub.1, . . . , c.sub.l, in expectation.
[0076] Note that individual computational secrecy implies in the computational security of the cryptosystem with M=[M.sub.1, . . . , M.sub.l] and c(M)=M.sub.1. . . , M.sub.l), . . . , [c.sub.l(M.sub.1, . . . M.sub.l)]. It is therefore a strictly stronger notion of security.
[0077] With reference now to .sub.2 bits each, privately to Bob 130 in the presence of an eavesdropper, Eve 120. We assume Eve 120 has access to a quantum computer. In what follows, the communication links 122 each may be different transmission media (several are shown in
[0078] We denote by Y=[Y.sub.1; . . . ; Y.sub.l] the vector of messages which Alice 110 sends to Bob via each communication link 122. These messages must be such that Bob 130 is able to decode M from them. Thus, we say Y is reliable if H(M|Y)=0. The messages Y, however, should satisfy certain properties if Eve 120 is not to decode M herself. This will depend on how powerful Eve 120 is.
[0079] We consider two types of Eve 120. A strong Eve 120, E.sub.s, observes all communication links, having access to the entirety of Y. And a weak Eve 120, E.sub.w, only observes a subset of the communication links 122. We denote the observations of each by Y.sub.E.sub.
[0080] At a high level, the cryptosystem works as follows. Alice 110 and Bob 130 agree on a public-key cryptosystem (Enc, Dec, p, s, k.sub.b,n.sub.b) as in Definition 1, with public key p stored in a public directory 124 that is accessible to Eve 120. Alice 110 then selects c of the/l links 122 to be encrypted links. In
[0081] We now give a more detailed explanation of HUNCC, with reference again to the system shown in .sub.2.sub.
.sub.2.sub.
.sub.2.sub.
[0082] The individual secrecy encoding matrix is then given by
as described above. Thus, the vectors X.sup.(1), . . . , X.sup.(┌k.sup.
[0083] Now, for every path i ∈ [c], consider the collection of symbols X.sub.i.sup.(1), . . . , X.sub.i.sup.(┌k.sup..sub.2.sub.
.sub.2.sup.u, the collection X.sub.i.sup.(1), . . . , X.sub.i.sup.(┌k.sup.
[0084] We now detail the decoding process at Bob 130. We assume that all paths are error-free. Hence, Bob 130 obtains all the messages transmitted over communication links 122. For each of the c encrypted data channels, Bob 130 receives a message that comprises an encryption of an unencrypted first encoding of the data blocks, and uses the private key s to decode the message (c.f. decryption processor 132 in
[0085] Thus, Bob 130 obtains [X.sub.i.sup.(1), . . . , X.sub.i.sup.(┌k.sup..sub.2.sub.
.sub.2.sub.
[0086] Some advantages of using the above-described HUNCC system and method are now described. HUNCC is well suited for dealing with a strong Eve which observes the entirety of the communication links. In addition to being computationally secure, if Eve is a weak eavesdropper, observing no more than w of the paths, HUNCC is information-theoretically secure. And the information rate R approaches 1 with convergence rate
These observations flow from the following three theorems, which we proved in Cohen et al.
[0087] Theorem 1. Let u≥l, c≥1, and (Enc, Dec, p, s, k.sub.b, n.sub.b) be a public-key cryptosystem with security level b. Then, the algorithm of (l.sup.3).
[0088] Theorem 2. The algorithm of
[0089] Theorem 3. Let 1 <c <1 be the number of encrypted paths using the public-key cryptosystem (Enc,Dec,p.sub.i,s.sub.i,k.sub.b,n.sub.b). Then, the algorithm of
[0090] A few important remarks on HUNCC are in order. First, it is essential to note that the public key used in the c encrypted paths of HUNCC is just the traditional public key from the underlying cryptosystem (for instance, the one provided in the McEliece cryptosystem). Hence, this public key is independent of the k.sub.u-messages transmitted over the multipath network and can be supplied to Alice in advance over a public channel.
[0091] Moreover, unlike in information-theoretic security where a unique secret key is utilized per message transmitted, as is the case for a one-time pad, the public key in HUNCC can be used for multiple messages. In the same manner, the generation matrix G.sub.IS of the individually secure code is not confidential. Alice and Bob can agree on it over a public channel, i.e. this matrix may be revealed to Eve. Also, this matrix may be used indefinitely for any future transmissions.
[0092] Another point is related to the security level of HUNCC. As stated in Theorem 1, if the underlying public-key cryptosystem has security level b, HUNCC is individually computationally secure with security level at least
where δ=(l.sup.3). We note mat this value is extremely close to b. Indeed, if b=128 and we used Gaussian elimination to solve the relevant linear systems, HUNCC would need l>10.sup.38 to reduce the security level by even 1 bit.
[0093] Finally, although our main focus is on post-quantum cryptosystems, HUNCC can be used with any public-key cryptosystem, including ones which are combined with a symmetric-key cryptosystem.
[0094] In
[0095] We start by considering the communication rate, see Theorem 3 above. We note that the rate increases as we reduce the number of encrypted links c. On the other hand, the computational security level remains virtually constant as long as at least one path is encrypted, i.e. c≥1. Therefore, practical systems embodying the concepts, techniques, and structures disclosed herein may use only a single encrypted path, link, or data channel, or may apply to only some portion of the data transmitted over these.
[0096] In the case of a weak Eve, the individual security level increases linearly with the number of links, l−w, from which the weak Eve does not get information. In other words, while the computational bit-level security remains constant, the uncertainty of an adversary which observes a subset of the links increases.
[0097] Thus, in
which is the security level divided by the maximum computational security that can be obtained by using the cryptosystem over all links; and 2) the normalized individual security level
which is the traction between the number of the links the weak Eve can see divided by the total links in the network.
[0098] In the example given in
[0099] Embodiments disclosed herein are not restricted to the original McEliece cryptosystem. Any cryptosystem can be utilized. To illustrate this, in
[0100] In this comparison, presented in
[0101] We next discuss features and applications that exemplify the utility and the performance of the disclosed HUNCC scheme. These applications include single path communication (
[0102] While the network shown in .sub.q.sub.
.sub.q.sup.l×l. Then, Alice 210 encrypts c of the symbols before the transmission over the channel 222 using the public key provided by Bob in the public directory 224. The remaining process is as given above. Hence, we obtain the same communication rate and security level as in the multipath network case, but with only a single path or link.
[0103] Another important scenario considered in the literature is one in which Eve is allowed not only to eavesdrop the information transmitted over the network, but also to corrupt the encrypted packets. This scenario is considered in the literature under different models of adversaries, for instance, with passive attacks, myopic adversaries, man in the middle attacks, byzantine attacks, and so on. A general depiction of packet corruption is illustrated in
[0104] In the case of a weak eavesdropper, which can obtain only information from w<l subset of the paths in the network, we can augment our linear individual security code to perform correction of up to t errors which may be injected by Eve. One solution is to generalize the code, although such extension comes at a cost. To correct t injected errors, the rate must be decreased by 2t. Note, however, that in this setting the code can support the case in which Eve can corrupt any subset of messages transmitted over the network, whether they are on the paths which are encrypted, or not. Indeed, the correction property only relies on the decoding of the linear coding scheme, and is independent of the deciphering phase.
[0105] In the case of a strong eavesdropper, which can obtain the information from all the paths in the network, we can utilize the same generalized code to correct the t errors that may be injected by Eve. However, in this case, to ensure security, Alice will need to encrypt at least 2t+1 messages that are transmitted over the different paths in the network. Hence, we must encrypt the additional 2t messages, transmitted to correct the errors, to prevent Eve from obtaining sufficient encoded messages by the linear code, which may provide her with a matrix having the rank needed to decode the total message.
[0106] Authentication can be utilized between the encoded messages to reduce the overhead required to correct the injected errors in the above-disclosed solution. Note that if Bob is able to identify the corrupted messages, Alice needs to include only one additional symbol per injected error, as opposed to the two messages in the model presented above. Furthermore, the generalized linear code mentioned above supports the scenario where the paths in the network are not error-free. In the case where the cryptosystem is based on error-correction codes as in the McEliece cryptosystem, instead of adding an error vector at the source, Alice can use the errors of the channel to confuse Eve. The codes in those cases are designed to be able to decode at the legitimate decoder, given those errors. Hence Bob will be able to decode the information. All of those extensions allow us to increase the effective rate of those solutions.
[0107] HUNCC also may be applied to distributed storage and other “cloud” applications. The goal of a distributed storage system is to provide reliable access to data which is spread over unreliable storage nodes. Applications involving data centers are ubiquitous today, including Google's GFS and BigTable, Amazon's Dynamo, Facebook's Apache Hadoop, Microsoft's WAS, and LinkedIn's Voldemort and SkyFlok.
[0108] One of the main drawbacks of distributed storage is that, the risk in the security and privacy of the data is potentially increased as the data are stored at increasing numbers of locations. One way to address this problem is by reinterpreting the problem as a multipath network. This is done by considering Alice and Bob to be the same individual at different times, and the communication links to be the storage nodes. In this way, the different privacy solutions to the multipath network, including HUNCC, can be readily applied to secure the data in a distributed storage system. Erasures and errors, of both a probabilistic or adversarial nature, can be addressed using techniques to correct errors introduced by myopic adversaries, described above, with similar results.
[0109] HUNCC also may be used to provide ultra-reliable, low-latency communications, Recently the application of network coding in streaming communication which demand low delays has been considered, with applications in audio/video streaming, smart-city communications, Internet-of-Things (IoT) networks and control applications, distributed computation, and so on. In this connection,
[0110] However, when the communication needs to also be secure, HUNCC may be used in conjunction with various network coding schemes known in the art. In those coding schemes, the number of messages from Alice, that are involved in the linear network encoding process, depend on the desired rate/delay trade-off. But in the security application using HUNCC, this number is further constrained by the security guarantees that are desired. This might come at the cost of delay, as more messages may need to be mixed in together to provide secrecy.
[0111] Finally, regarding HUNCC applications, we note that any computationally secure cryptosystem can be used in accordance with an embodiment of the concepts, techniques, and structures disclosed herein. In particular, RSA can be applied in our network-coding solution, in the context of the example given in
of the individual security code is used such that X=MG=[M.sub.1+M.sub.2, M.sub.1+2M.sub.2]. Now, say Alice and Bob agree on using an RSA scheme only over the first path. For 128-bit security, they settle on using a 3072 bit key. Using a 328 bit OAEP padding, the message size can be at most 2744 bits. Thus, Alice can map X.sub.1 into a 2744 bit vector and encode it using RSA into E(X.sub.1, p) ∈ .sub.2.sup.3072. Alice will then send log.sub.2|E(X.sub.1, p)|=3072 bits through channel 1 and log.sub.2|X.sub.2|≤2288 bits through channel 2. Thus, the total communication cost will be around 5360 bits giving a communication rate slightly greater than 0.85.
[0112]
[0113] Thus, the computer 300 is arranged as high-speed components and buses 311 to 316 and low-speed components and buses 321 to 329. The high-speed components and buses 311 to 316 are coupled for data communication using a high-speed bridge 310, also called a “northbridge,” while the low-speed components and buses 321 to 329 are coupled using a low-speed bridge 320, also called a “southbridge.”
[0114] The computer 300 includes a central processing unit (“CPU”) 311 coupled to the high-speed bridge 310 via a bus 312. The CPU 311 is electronic circuitry that carries out the instructions of a computer program. As is known in the art, the CPU 311 may be implemented as a microprocessor; that is, as an integrated circuit (“IC”; also called a “chip” or “microchip”). In some embodiments, the CPU 311 may be implemented as a microcontroller for embedded applications, or according to other embodiments known in the art.
[0115] The bus 312 may be implemented using any technology known in the art for interconnection of CPUs (or more particularly, of microprocessors). For example, the bus 312 may be implemented using the HyperTransport architecture developed initially by AMD, the Intel QuickPath Interconnect (“QPI”), or a similar technology. In some embodiments, the functions of the high-speed bridge 310 may be implemented in whole or in part by the CPU 311, obviating the need for the bus 312.
[0116] The computer 300 includes one or more graphics processing units (GPUs) 313 coupled to the high-speed bridge 310 via a graphics bus 314. Each GPU 313 is designed to process commands from the CPU 311 into image data for display on a display screen (not shown). In some embodiments, the CPU 311 performs graphics processing directly, obviating the need for a separate GPU 313 and graphics bus 314. In other embodiments, a GPU 313 is physically embodied as an integrated circuit separate from the CPU 311 and may be physically detachable from the computer 300 if embodied on an expansion card, such as a video card. The GPU 313 may store image data (or other data, if the GPU 313 is used as an auxiliary computing processor) in a graphics buffer.
[0117] The graphics bus 314 may be implemented using any technology known in the art for data communication between a CPU and a GPU. For example, the graphics bus 314 may be implemented using the Peripheral Component Interconnect Express (“PCI Express” or “PCIe”) standard, or a similar technology.
[0118] The computer 300 includes a primary storage 315 coupled to the high-speed bridge 310 via a memory bus 316. The primary storage 315, which may be called “main memory” or simply “memory” herein, includes computer program instructions, data, or both, for use by the CPU 311. The primary storage 315 may include random-access memory (“RAM”). RAM is “volatile” if its data are lost when power is removed, and “non-volatile” if its data are retained without applied power. Typically, volatile RAM is used when the computer 300 is “awake” and executing a program, and when the computer 300 is temporarily “asleep”, while non-volatile RAM (“NVRAM”) is used when the computer 300 is “hibernating”; however, embodiments may vary. Volatile RAM may be, for example, dynamic (“DRAM”), synchronous (“SDRAM”), and double-data rate (“DDR SDRAM”). Non-volatile RAM may be, for example, solid-state flash memory. RAM may be physically provided as one or more dual in-line memory modules (“DIMMs”), or other, similar technology known in the art.
[0119] The memory bus 316 may be implemented using any technology known in the art for data communication between a CPU and a primary storage. The memory bus 316 may comprise an address bus for electrically indicating a storage address, and a data bus for transmitting program instructions and data to, and receiving them from, the primary storage 315. For example, if data are stored and retrieved 64 bits (eight bytes) at a time, then the data bus has a width of 64 bits. Continuing this example, if the address bus has a width of 32 bits, then 2.sup.32 memory addresses are accessible, so the computer 300 may use up to 8*2.sup.32=32 gigabytes (GB) of primary storage 315. In this example, the memory bus 316 will have a total width of 64+32=96 bits. The computer 300 also may include a memory controller circuit (not shown) that converts electrical signals received from the memory bus 316 to electrical signals expected by physical pins in the primary storage 315, and vice versa.
[0120] Computer memory may be hierarchically organized based on a tradeoff between memory response time and memory size, so depictions and references herein to types of memory as being in certain physical locations are for illustration only. Thus, some embodiments (e.g. embedded systems) provide the CPU 311, the graphics processing units 313, the primary storage 315, and the high-speed bridge 310, or any combination thereof, as a single integrated circuit. In such embodiments, buses 312, 314, 316 may form part of the same integrated circuit and need not be physically separate. Other designs for the computer 300 may embody the functions of the CPU 311, graphics processing units 313, and the primary storage 315 in different configurations, obviating the need for one or more of the buses 312, 314, 316.
[0121] The depiction of the high-speed bridge 310 coupled to the CPU 311, GPU 313, and primary storage 315 is merely exemplary, as other components may be coupled for communication with the high-speed bridge 310. For example, a network interface controller (“NIC” or “network adapter”) may be coupled to the high-speed bridge 310, for transmitting and receiving data using a data channel. The NIC may store data to be transmitted to, and received from, the data channel in a network data buffer.
[0122] The high-speed bridge 310 is coupled for data communication with the low-speed bridge 320 using an internal data bus 330. Control circuitry (not shown) may be required for transmitting and receiving data at different speeds. The internal data bus 330 may be implemented using the Intel Direct Media Interface (“DMI”) or a similar technology.
[0123] The computer 300 includes a secondary storage 321 coupled to the low-speed bridge 320 via a storage bus 322. The secondary storage 321, which may be called “auxiliary memory”, “auxiliary storage”, or “external memory” herein, stores program instructions and data for access at relatively low speeds and over relatively long durations. Since such durations may include removal of power from the computer 300, the secondary storage 321 may include non-volatile memory (which may or may not be randomly accessible).
[0124] Non-volatile memory may comprise solid-state memory having no moving parts, for example a flash drive or solid-state drive. Alternately, non-volatile memory may comprise a moving disc or tape for storing data and an apparatus for reading (and possibly writing) the data. Data may be stored (and possibly rewritten) optically, for example on a compact disc (“CD”), digital video disc (“DVD”), or Blu-ray disc (“BD”), or magnetically, for example on a disc in a hard disk drive (“HDD”) or a floppy disk, or on a digital audio tape (“DAT”). Non-volatile memory may be, for example, read-only (“ROM”), write-once read-many (“WORM”), programmable (“PROM”), erasable (“EPROM”), or electrically erasable (“EEPROM”).
[0125] The storage bus 322 may be implemented using any technology known in the art for data communication between a CPU and a secondary storage and may include a host adaptor (not shown) for adapting electrical signals from the low-speed bridge 320 to a format expected by physical pins on the secondary storage 321, and vice versa. For example, the storage bus 322 may use a Universal Serial Bus (“USB”) standard; a Serial AT Attachment (“SATA”) standard; a Parallel AT Attachment (“PATA”) standard such as Integrated Drive Electronics (“IDE”), Enhanced IDE (“EIDE”), ATA Packet Interface (“ATAPI”), or Ultra ATA; a Small Computer System Interface (“SCSI”) standard; or a similar technology.
[0126] The computer 300 also includes one or more expansion device adapters 323 coupled to the low-speed bridge 320 via a respective one or more expansion buses 324. Each expansion device adapter 323 permits the computer 300 to communicate with expansion devices (not shown) that provide additional functionality. Such additional functionality may be provided on a separate, removable expansion card, for example an additional graphics card, network card, host adaptor, or specialized processing card.
[0127] Each expansion bus 324 may be implemented using any technology known in the art for data communication between a CPU and an expansion device adapter. For example, the expansion bus 324 may transmit and receive electrical signals using a Peripheral Component Interconnect (“PCI”) standard, a data networking standard such as an Ethernet standard, or a similar technology.
[0128] The computer 300 includes a basic input/output system (“BIOS”) 325 and a Super I/O circuit 326 coupled to the low-speed bridge 320 via a bus 327. The BIOS 325 is a non-volatile memory used to initialize the hardware of the computer 300 during the power-on process. The Super I/O circuit 326 is an integrated circuit that combines input and output (“I/O”) interfaces for low-speed input and output devices 328, such as a serial mouse and a keyboard. In some embodiments, BIOS functionality is incorporated in the Super I/O circuit 326 directly, obviating the need for a separate BIOS 325.
[0129] The bus 327 may be implemented using any technology known in the art for data communication between a CPU, a BIOS (if present), and a Super I/O circuit. For example, the bus 327 may be implemented using a Low Pin Count (“LPC”) bus, an Industry Standard Architecture (“ISA”) bus, or similar technology. The Super I/O circuit 326 is coupled to the I/O devices 328 via one or more buses 329. The buses 329 may be serial buses, parallel buses, other buses known in the art, or a combination of these, depending on the type of I/O devices 328 coupled to the computer 300.
[0130] Reference herein to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the claimed subject matter. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments necessarily mutually exclusive of other embodiments. The same applies to the term “implementation.”
[0131] As used in this application, the word “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word exemplary is intended to present concepts in a concrete fashion.
[0132] Additionally, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form.
[0133] Moreover, the terms “system,” “component,” “module,” “interface,”, “model” or the like are generally intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a controller and the controller can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
[0134] Although the subject matter described herein may be described in the context of illustrative implementations to process one or more computing application features/operations for a computing application having user-interactive components the subject matter is not limited to these particular embodiments. Rather, the techniques described herein can be applied to any suitable type of user-interactive component execution management methods, systems, platforms, and/or apparatus.
[0135] Some embodiments might be implemented in the form of methods and apparatuses for practicing those methods. Described embodiments might also be implemented in the form of program code embodied in tangible media, such as magnetic recording media, optical recording media, solid state memory, floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the claimed invention. Described embodiments might also be implemented in the form of program code, for example, whether stored in a storage medium, loaded into and/or executed by a machine, or transmitted over some transmission medium or carrier, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the claimed invention. When implemented on a general-purpose processor, the program code segments combine with the processor to provide a unique device that operates analogously to specific logic circuits. Described embodiments might also be implemented in the form of a bitstream or other sequence of signal values electrically or optically transmitted through a medium, stored magnetic-field variations in a magnetic recording medium, etc., generated using a method and/or an apparatus of the claimed invention.
[0136] It should be understood that the steps of the exemplary methods set forth herein are not necessarily required to be performed in the order described, and the order of the steps of such methods should be understood to be merely exemplary. Likewise, additional steps may be included in such methods, and certain steps may be omitted or combined, in methods consistent with various embodiments.
[0137] It will be further understood that various changes in the details, materials, and arrangements of the parts which have been described and illustrated in order to explain the nature of the claimed invention might be made by those skilled in the art without departing from the scope of the following claims.