Patent Description:
The ever-increasing usage of cloud-based services has increased the challenge of secured client computers (e.g. remote desktop, laptop, cellular phone and so forth) operating vis-à-vis the remote server (which may reside in the cloud) for achieving both transport security (such as a secured tunnel) and payload security (namely the content transmitted to and from the client computer and the remote server). In order to reduce or eliminate compromising of the client computer (which may adversely affect the transport security and/or the payload security), various approaches have been presented.

For instance, client computers that incorporate Intel® Skylake™ as well as later-introduced platforms, utilize the "Intel Software Guard Extension" (SGX)™ solution which is a new mode of execution of the CPU that creates an enclaved secured environment that can co-exist and co-execute with other codes such as untrusted OS (Open Source) code. The enclaved secured environment will maintain a high level of security, even if peripheral components of the client computer (such as keyboard, screen, camera and so forth) are compromised.

One of the limitations of the specified SGX™ solution is that it operates only with a given specific vendor and platform version. Other prior art documents include: <CIT> which teaches secure device pairing, and <CIT> relating to learning a new peripheral using a security provisioning manifest.

In order to understand the invention and to see how it can be carried out in practice, embodiments will be described, by way of non-limiting examples, with reference to the accompanying drawings, in which:.

However, it will be understood by those skilled in the art that the presently disclosed subject matter may be practiced without these specific details. In other instances, well-known methods, procedures, modules and circuits have not been described in detail so as not to obscure the presently disclosed subject matter.

Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions utilizing terms such as "authenticating", communicating", "transmitting", "coding", translating", "facilitating", "providing", "establishing", "processing", "computing", "representing", "comparing", "generating", "assessing", "matching", "updating" or the like, refer to the action(s) and/or process(es) of a computer that manipulate and/or transform data into other data, said data represented as physical, such as electronic, quantities and/or said data representing the physical objects. The term computer or processor should be expansively construed to cover any kind of hardware-based electronic device or devices with data processing capabilities including, by way of non-limiting example client computer, remote computer, processor, the processor module discussed herein.

The term "non-transitory storage medium" used herein should be expansively construed to cover any volatile or non-volatile computer memory suitable to the presently disclosed subject matter.

The operations in accordance with the teachings herein may be performed by a computer specially constructed for the desired purposes, or by a general-purpose computer specially configured for the desired purpose, by a computer program stored in a non-transitory computer-readable storage medium.

Embodiments of the presently disclosed subject matter are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the presently disclosed subject matter as described herein.

Bearing this in mind, attention is drawn to <FIG> illustrating a functional block diagram of a system in accordance with certain embodiments of the presently disclosed subject matter. The illustrated system <NUM> includes a client computer <NUM> that by this example may include two peripheral components <NUM> and <NUM>. The client computer may be coupled to a remote computer <NUM> (e.g. a server residing in the cloud) through a known per se network (designated collectively as <NUM>) and is configured to provide a secured communication between the peripheral components and the remote computer <NUM>. Non-limiting examples of peripheral components are input components such as keyboard microphone, tracking device or combination thereof ( e.g. keyboard and mouse). , output components such as display components and/or others (not necessarily input or output. Each peripheral component is configured to process a corresponding peripheral component data of a given data type. For instance, in the case of a keyboard component, the data type may be keystroke related data such as scan code or key code. Note that the data type associated with a given peripheral component (e.g. keyboard) may be different than that of one (or more than one) of other peripheral component(s) (e.g. display). In accordance with certain embodiments, there may be other two or more peripheral components (either of identical type, say two keyboards of of different types) whose data type are compatible, one with the other. In accordance with certain embodiments, the physical portion of the peripheral component <NUM> (e.g. screen in case of display, the physical keyboard keystrokes and the pertinent electronics/hardware ) may be associated with a processor <NUM> for generating and processing data including the specified data type.

The processor <NUM> may be configured to execute a coding module <NUM> for coding the corresponding data of the specified data type, all as will be explained in greater detail below. The network module is configured to facilitate communication, e.g. with remote computer <NUM>. As will be further discussed below, the processor may be configured to execute data compatible module <NUM> (e.g. a driver) for translating data of a given data type, to another type which may be compatible with the other data type. <FIG> further illustrates storage module <NUM> (non-transitory computer-readable storage medium) for storing data such as private keys, all as will be explained in greater detail below.

The coding module <NUM> as well as the network module <NUM> (the latter may facilitate communication with the remote server <NUM> through network <NUM> ) may reside on one or more System On Chips (SOCs), as will be explained with reference to <FIG> below.

Note that in accordance with certain embodiments, the peripheral components (in the example of <FIG> only <NUM> out of possibly N (N><NUM>) are shown) may form part of a client computer <NUM> such as laptop, desktop, cellular device and others known per se, or in accordance with certain other two or more of the peripheral components may reside remotely and communicate by means of a network, thereby not necessarily residing in one physical client computer, all as known per se.

Peripheral component <NUM> may include similar blocks and modules mutatis mutandis. For instance, in cases where the peripheral component <NUM> is a display, the physical component <NUM> may be different and suitable for a display component.

Turning now to remote computer <NUM>, it includes a processor <NUM>, network modules <NUM> and <NUM> for communication with the respective peripherals <NUM> and <NUM>. The processor <NUM> may be configured to execute driver modules <NUM> and <NUM> that may form part of data compatibility module(s) for translating between non-compatible data types, e.g. the driver <NUM> may translate keystrokes data type received from the keyboard component <NUM> through network module <NUM> (via secured channel <NUM>(<NUM>)-all as will be discussed in greater detail below) for further processing by appropriate application module (not shown) running on processor <NUM>. Likewise, the driver <NUM> may translate output data processed by appropriate application module (not shown) running on processor <NUM> into display type data that will be transmitted through network module <NUM> (via secured channel <NUM>(<NUM>), all as will be discussed in greater detail below) to display component <NUM>. In cases where the communicated data to the remote server is coded e.g. encrypted (as will be explained in greater detail below), the remote computer may utilize the coding module <NUM> for, e.g. decrypting the data and/or vice versa for encrypting data that will be decoded by the coding module of the peripheral component. The processor is operatively coupled to a storage module (non-transitory computer- readable storage medium) - not shown in <FIG>.

The invention is not bound by the specified architecture of the remote computer, which is provided by way of example only and any known per se architecture may be applicable.

Note also that whereas in the embodiments of <FIG>, the peripheral components are accommodated in a one local client computer <NUM>, this is not necessarily always the case, and accordingly two or more of the components may communicate through a network and therefore may not necessarily reside in the same physical location. Thus, in accordance with certain embodiments the client computer may be a local computer residing in one location, or in accordance with other embodiments not necessarily residing in one location.

Turning now to <FIG>, this illustrates a functional block diagram of a more detailed System On Chip (SOC) <NUM> in accordance with certain embodiments of the presently disclosed subject matter. Thus, SOC <NUM> may include the processor <NUM> that is configured to execute data compatibility module <NUM> including for example driver(s). The processor may be further configured to the coding module that by this embodiment includes cryptographic semantics module <NUM> capable of performing cryptographic operations. The processor is operatively coupled to the storage <NUM> that includes by this example a Trusted Platform Module (TPM') <NUM> and External Source module <NUM> capable of reading external validation and configuration data (e.g. from smart card, Subkey and Nitrokey, etc.). The operations of the specified modules will be explained in greater detail below. The network module <NUM> may be for example a communication stack, utilizing one or more of <NUM>. 11X, Bluetooth (LE) Thunderbolt and so forth. While the description with reference to <FIG> utilizes one SOC, it may likewise use two or more SOCs which may collectively have similar or modified functionality as the one described with reference to <FIG>.

Thus, with reference to <FIG>, <FIG> above and <NUM> and <NUM> below, the processor (<NUM>) (or <NUM>, whichever the case may be ) can be configured to execute several functional modules in accordance with computer-readable instructions implemented on a non-transitory computer-readable storage medium.

It is noted that the teachings of the presently disclosed subject matter are not bound by the system and/or computer and /or processor system described with reference to <FIG>. Equivalent and/or modified functionality can be consolidated or divided in another manner and can be implemented in any appropriate combination of software with firmware and/or hardware and executed on a suitable device. Those skilled in the art will also readily appreciate that the data storage can be consolidated or divided in another manner; databases can be shared with other systems or be provided by other systems, including third party equipment.

For purpose of illustration only, the following description is provided for establishing secured communication between peripheral components. Those skilled in the art will readily appreciate that the teachings of the presently disclosed subject matter are, likewise, applicable to secured communication between peripheral component(s) and remote computer(s).

Bearing this in mind, attention is drawn to <FIG> illustrating a generalized flow-chart of a sequence of operations for establishing secured communication between the remote commuter (say <NUM> of Fig.) and one or more peripheral components say <NUM> and/or <NUM> (which resides, or not, in the same client's computer), in accordance with certain embodiments of the presently disclosed subject matter. Thus, at the onset, the peripheral component may establish a secured peer-to-peer communication channel between the peripheral component and the remote server computer that is authorized to communicate with the peripheral component (<NUM>). This may generate a secured channel (e.g. tunnel) and facilitate communication of a secured payload (e.g. the coded data) through the secured tunnel. In the example of <FIG>, and assuming that the peripheral component <NUM> is for example a keyboard, the secured communication channel is depicted schematically as <NUM><NUM> As a result the communication channel between the peripheral component is secured as well as the content (even if theoretically the communication channel is compromised).

Next, the peripheral component may utilize <NUM> said coding module to code data that is communicated between the authorized remote server (e.g. <NUM>) and the peripheral component through said secured communication tunnel, said coded data (e.g. the specified coded payload) being undecryptable by the coding modules of other (in accordance with certain embodiments all other) of said peripheral components. The term un (or not or cannot etc.) decipherable (or decryptable) used herein should be construed to include: cannot be deciphered (decryptable) by using reasonably available processing power, for instance using at least <NUM> bits for non-symmetric key or at least <NUM> hits for symmetric key. These values may vary depending upon the available reasonable processing power which is likely to improve over time.

Turning now to <FIG>, this illustrates a flow chart of a sequence of operations of establishing a secured communication channel between a peripheral component and a remote computer that was discussed in <FIG>, in accordance with certain embodiments of the invention. Thus, in <NUM> the peripheral component, say <NUM>, may authenticate the remote server using a non-symmetric key that includes a private key known to only the remote server. More specifically, the remote server may send a message signed by its private key, and the peripheral component may extract the corresponding public key of the remote server (extracted e.g. from external trusted source) and decipher, (using the remote server's public key), the so-encrypted message, thereby authenticating the remote server.

Then, <NUM> the peripheral component, using a non-symmetric key that includes a private key known to the peripheral component (and extracted e.g. from the TPM)-[and possibly known to only the peripheral component], may encrypt the message and the remote computer may then decipher the message using a corresponding public key of this particular peripheral component, thereby authenticating the peripheral component. Once dual authentication has been achieved, a secured peer-to-peer communication channel between the client computer and the remote server is established.

Note that throughout the description and Claims, encrypting using a non-symmetric key (e.g. a private key) may be construed as an example of "signing" and decryption (deciphering) using a corresponding non-symmetric key (e.g. public key) may be construed as an example of "verification".

Then, in <NUM> a communication key (e.g. a symmetric key) known to the authenticated remote server and the authenticated peripheral component (and possibly not to other peripheral components), is generated. The symmetric key is usable for the data coding between the client computer and the remote server. By one example, in order to establish the communication key, the peripheral component may extract proprietary data from either or both of the TPM <NUM> and from the external source data <NUM>, and combine them, thereby generating the communication key. The invention is not bound by this specific manner of generating the communication key.

In accordance with certain embodiments, in order to send the communication key to the authenticated remote server, the so generated communication key may be encrypted by the private key of the peripheral component and by the public key of the remote computer and transmitted from the authenticated peripheral component to the remote computer, through the already established secured channel (e.g. <NUM>) between them. Since the communication key was encrypted by the public key of the remote computer, this guarantees that only the already authenticated remote server (see stage <NUM>) can decipher it (using its corresponding private key, known only to it). The remote computer, in turn, will use the public key of the already authenticated peripheral component (see <NUM> above) in order to decipher and extract the communication key that was encrypted by the corresponding private key of the peripheral component. Thus, a communication key is established between the authenticated peripheral component and the authenticated remote computer and is known only to them for transmitting coded data (secured payload).

The invention is not bound by the specified manner of establishing the communication key. For instance, the procedure may commence from the remote computer which defines the communication key, encrypt it with its private key, and then with the public key of the authenticated peripheral component. The authenticated peripheral component, in turn, will use the authenticated remote computer public key and its own private key to decipher and extract the communication key, for transmitting code data and achieving secured payload.

The computational stages described above (at the peripheral component side) may be performed e.g. at the cryptographic semantic module <NUM> (<FIG>) running on processor <NUM>, and computational stages discussed above (with reference to the remote computer ) may be performed at coding module <NUM> running on processor <NUM> (<FIG>).

Having established a secured communication key, it may be used <NUM> e.g. by the coding module <NUM> (e.g. cryptographic semantics module <NUM>) to code data communicated through the secured communication channel for achieving a secured payload. This may include encrypting data for transmission through said secured communication channel (e.g. tunnel) or decrypting data received through said secured communication tunnel.

The same holds true for the other peripheral component <NUM> (say a display) establishing a secured communication channel (depicted schematically as <NUM><NUM>) with remote computer <NUM>.

There follows a non-limiting example of a sequence of operations for establishing a secured communication between a keyboard peripheral component (where, as shown in <FIG>, the physical component <NUM> represents a physical keypad and processor <NUM> processes the pertinent data and a remote server). The invention is of course not bound by this example.

Bearing all this in mind, coded data may be exchanged between the authenticated remote server and a given authenticated peripheral component (say <NUM>-e.g. keyboard) through a secured channel (e.g. <NUM><NUM> ) where this coded data is not decipherable by any other peripheral components. By the same token, utilizing the specified sequence of <FIG> (and say the specific embodiment of <FIG>) between the remote computer and a different peripheral component (say display <NUM>), coded data (typically of a different type) may be exchanged between the authenticated remote server and the different peripheral component through a different secured channel (e.g. <NUM><NUM>) where the coded data designated to or having originated from a given authenticated peripheral component, is not decipherable by any other peripheral component.

Considering the non-limiting scenario that two or more secured peripheral components (in the manner specified) reside in the same local computer (or even peripherals not residing in the same physical location), then a secured local computer is achieved, which is significantly more secured than, say, a local computer that utilizes a processor that is susceptible of being compromised such as general purpose processor, that may be inherently compromised by third party hacking. This definition of a processor that is susceptible of being compromised may encompass a processor (e.g. CPU) that does not include a system/feature to restrict access to memory sections for specific processes in a way that allows only these processes to access to that memory using specific commands that are implemented by the CPU. In such CPUs, the OS kernel is able to read the contents of the computation done on the CPU at that time, hence a compromised kernel will compromise any computation done on that CPU. The invention is not bound by this definition.

Moreover, in a local computer (or even peripherals not residing in the same physical location) in accordance with certain embodiments substantially no data is retained at the client side but rather only at the secured remote server (e.g. in the cloud).

This solution in accordance with certain embodiments is also less costly and more compatible than, say, a local computer that incorporates say, the Intel® Skylake™ and later-introduced platforms which utilize the "Intel Software Guard Extension" (SGX)™ for achieving a secured environment. The invention is not bound by the specified SGX ™.

This solution is also advantageous in accordance with certain embodiments by virtue of the fact that in order to have "full picture" of the activities at the client computer there may be a need to hack not only one peripheral components but rather all (or nearly all of them) which is harder due to the fact that each peripheral component is secured independently of the other.

In the architecture utilized for example in <FIG>, that utilizes the teachings in accordance with various embodiments of the invention, the absence of "general purpose" processing capabilities in the client computer (employing just peripheral components) may be fulfilled by the processing capacity of the remote computer which may be for example a server residing on a remote protected cloud environment.

It is noted that the teachings of the presently disclosed subject matter are not bound, neither by the flow chart illustrated in <FIG> , nor by the specific modules illustrated in <FIG> and <FIG>. For instance, the illustrated operations can occur out of the illustrated order. Some of the operations may be executed substantially concurrently or in the reverse order.

Attention is now drawn to <FIG> illustrating a functional block diagram of a system for providing a secured client computer, in accordance with another aspect of the presently disclosed subject matter. The peripheral components (e.g. <NUM> and <NUM> - and possibly others not shown in <FIG>) as well as the remote computer <NUM> are similar to those described with reference to <FIG> and <FIG>, and may be accommodated in client computer <NUM> which, by this embodiment, may include an additional processing capacity, for instance by employing a computer module <NUM> that is susceptible to being compromised. The latter may be for example a commercially available CPU fitted in a client computer, such as commercially available Intel™ or AMD™ CPUs. The term susceptible to being compromised should be construed to include a processor which is susceptible of being compromised by applying reasonable third party hacking techniques and as defined by way of non-limiting example above. As readily arises from <FIG>, the communication between the peripheral component and the remote computer passes through the computer module <NUM>, and by virtue of the characteristics of susceptible to being compromised computer module <NUM>, any data that originates from a peripheral component and the remote server or vice versa, cannot be considered as secured because it may be hacked at processor module <NUM>.

Accordingly, while processor module <NUM> may add computational capacity to the client computer (compared, for example, to the embodiment of <FIG>), it is susceptible to being compromised, which is a clear disadvantage. There is thus provided a method for obtaining secured communication between a client computer and a remote server in an architecture that employs also a processor module that is susceptible to being compromised.

Accordingly, in accordance with certain embodiments, each of the peripheral components may establish a secured peer-to-peer communication channel between the peripheral component (say <NUM>) and a remote computer (say <NUM>) that is authorized to communicate therewith. To this end, a secured communication channel may be established (e.g. <NUM><NUM> ) that includes establishing a communication key (e.g. symmetric key) known to only the remote computer (<NUM>) and the peripheral component (<NUM>), and the communication key is usable for the data coding between the peripheral component and the remote computer, all as explained in detail above with reference to <FIG>.

Turning now to <FIG>, this illustrates a generalized flow-chart of a sequence of operations for generating a secured communication channel in a system of <FIG>, in accordance with certain embodiments of the presently disclosed subject matter.

For convenience, whenever the term processor module <NUM> is used, it should be meant to refer to a processor module that is susceptible to being compromised in the matter discussed above.

Thus, in <NUM> a secured peer-to-peer communication channel (say <NUM>(<NUM>)) is established between the peripheral component(say <NUM>) and processor module (say <NUM>). In <NUM> a secured processor/remote server peer-to-peer communication channel (say <NUM>) is established between the processor <NUM> and the remote computer <NUM>. In a similar fashion, in <NUM> a secured peer-to-peer communication channel (say <NUM>(<NUM>)) is established between the peripheral component(say <NUM>) and the processor module (say <NUM>). Generation of the specified secured communication channel includes authenticating the respective peripheral component (<NUM> and <NUM> ) and the compute (<NUM>), thereby achieving a secured transport ((<NUM>(<NUM>) and (<NUM>(<NUM>), respectively) in a similar mutatis mutandis process of establishing a secured transport channels (<NUM>(<NUM>) and <NUM>(<NUM>) as described in detail with reference to <FIG> and the pertinent flow chart of <FIG>.

Attention is now drawn to <FIG>, illustrating a sequence of operations of utilizing the secured communication channels established e.g. in accordance with the flow chart of <FIG>, in accordance with the presently disclosed subject matter.

More specifically , in <NUM> the coding module of the peripheral component (say <NUM>) may be utilized to code data (say coded keyboard strokes) designated to the remote computer. Then, in <NUM> the coded data may be transmitted to the processor module through the secured communication channel (e.g. <NUM>(<NUM>)). Then, the coded data may be transmitted <NUM> from the processor module to the authorized remote server ( say <NUM>) through the already established secured processor/remote server communication channel <NUM>.

Note that the coded data (say the coded keystrokes) may not be decrypted by the processor module because the coded data was generated by using a communication key (say symmetric key) known to the peripheral component (say <NUM>) (and possibly only to the peripheral component and not other peripheral components) and the remote computer (say <NUM>), and, accordingly, even if the processor <NUM> is compromised and the coded data is intercepted within the processor <NUM>, it cannot be deciphered and therefore a secured communication between the client computer and authorized server computer (the remote computer) is achieved , irrespective of the utilization of said processor module.

With reference to <FIG>, a sequence of operations of utilizing the secured communication channels in accordance with the presently disclosed subject matter is shown. In this example a coded data is communicated from the remote computer (e.g. <NUM>) to the peripheral component (e.g. display component <NUM>), including (in <NUM>) receiving in processor module <NUM> coded data transmitted by the authorized remote server <NUM> through said secured processor/remote server communication channel <NUM>. As explained above, the coded data may not be decrypted by the processor module.

In <NUM>, the coded data is transmitted from the processor <NUM> to the display peripheral component <NUM> through the secured communication channel <NUM><NUM>.

Next, in <NUM> the coding module of the display peripheral component is utilized to decrypt said coded data, thereby achieving secured communication between the display peripheral and authorized server computer <NUM>, irrespective of the utilization of said processor module <NUM>.

Note that whereas the peripheral components exemplified in the first aspect (described with reference to <FIG>) and the second aspect (described with reference to <FIG>) where one-directional by nature keyboard outgoing and display incoming are used, in accordance with other embodiments, other bi-directional peripheral components may be used for sending and receiving coded data to and from the remote computer.

Note that in the context of <FIG> the term coded data should be construed to include, as variants thereof, e.g. including additional data added by the processor <NUM>.

Note also that in accordance with certain embodiments, the two architectures (e.g. of <FIG> and <FIG>) may be combined, allowing the peripheral component to communicate directly with the remote computer or through the processor module, whichever the case may be, and likewise the remote computer may communicate directly with the peripheral component, or through the computer.

It is noted that the teachings of the presently disclosed subject matter are not bound by neither any of the flow charts illustrated in <FIG> , nor by the specific modules illustrated in <FIG>. For instance, the illustrated operations can occur out of the illustrated order. Some of the operations may be executed substantially concurrently or in the reverse order.

Turning now to another aspect of the invention, attention is drawn to <FIG> illustrating a functional block diagram of a system for providing a secured client computer, in accordance with certain embodiments of the presently disclosed subject matter.

The peripheral components (e.g. <NUM> and <NUM> - and possibly others not shown in <FIG>) are similar to those described with reference to <FIG> and <FIG>, and may be accommodated in client computer <NUM>. Note, that by this embodiment, the usage of a processor module that is susceptible of being compromised (e.g. <NUM> of <FIG>) as well as a remote computer (e.g. <NUM>), may be obviated.

Accordingly, in accordance with certain embodiments, each of the peripheral components (say <NUM>) may establish a secured peer-to-peer communication channel (<NUM>) directly to another peripheral component (say <NUM>). An establishment of such a secured communication channel may include establishing of a communication key (e.g. a symmetric key) known to only the respective group of peripheral components. The communication key is usable for the data coding between the respective peripheral components, all as explained below.

Turning now to <FIG>, it illustrates a generalized flow-chart of a sequence of operations in a system of <FIG>, in accordance with certain ernbodiments of the presently disclosed subject matter.

At the onset, a secured peer-to-peer communication channel is established (<NUM>) between the one peripheral component (say <NUM>) and the other peripheral component (<NUM>) of the group of peripheral modules.

Next (<NUM>), the coding module (see <FIG>) of say peripheral component <NUM> may be utilized to code data that is communicated between the one peripheral component through the secured communication channel with said other peripheral component; the coded data is undecryptable by the coding modules of other (in accordance with certain embodiments all other) peripheral components (not shown in <FIG>).

The data compatibility module (see <FIG> ) of either or both of the peripheral components of the group may be utilized (<NUM>) to translate data of said first type to a data of said second type or vice versa, thereby facilitating communication between said peripheral components in a common data type.

With reference to <FIG>, a sequence of operations of utilizing the secured communication channels in accordance with the presently disclosed subject matter is shown. In this example a coded data is communicated from the first peripheral (e.g. keyboard <NUM>) to the peripheral component (e.g. display component <NUM>) including (in <NUM>) transmitting coded data through secured channel <NUM>.

Next, in <NUM> the coding module of the display peripheral component is utilized to decrypt said coded data, thereby achieving secured communication between the display peripheral and keyboard peripheral <NUM>.

In either of the first and second peripherals of the group, a data compatibility module may be utilized <NUM> to translate the data to a common data type (in the latter example, a keyboard and display).

Note that the coded data (say the coded keystrokes) may not be decrypted by any other peripheral component (apart from the other peripheral component in the group) because the coded data was generated by using a communication key (say a symmetric key) known to the peripheral components (say <NUM> and <NUM>) and possibly only to them.

Note that the peripheral to peripheral secured communication channel facilitates direct secured communication not through a remote computer (as was with certain embodiments of the first aspect of the invention described with reference to <FIG> above). Consider, for example, a password that is keyed-in in the keyboard peripheral component (say <NUM>) and displayed at the display peripheral component (say <NUM>). By virtue of the so-obtained transport security and payload security, the likelihood of compromising any of the components or of the channel, is lower than non-secured components/channels, and, therefore, in accordance with certain embodiments of the third aspect of the invention, communication of sensitive data, such as passwords, is feasible even without utilizing the remote computer. In cases where the data types between the peripherals is non compatible - say keyboard related data type vs. display related data type, the data compatibility module (say a driver) may provide common data type for translating, for instance, keystrokes into displayed pixels)- all as known per se.

Note also that whereas the peripheral components exemplified in the first aspect (described with reference to <FIG>) and the second aspect (described with reference to <FIG>) and the third aspect (described with reference to <FIG>) where they are one-directional by nature (keyboard outgoing and display incoming), other bi-directional peripheral components may be used for sending and receiving coded data to and from the remote computer.

Note also that in accordance with certain embodiments, the two architectures (e.g. of <FIG> and <FIG>) may be combined, allowing the peripheral component to communicate with another peripheral component through the remote computer, and/or directly.

Note also that the description refers a group of peripheral components (e.g. in the context of secured communication channel or e.g. sharing communication key, etc.) it may apply to two peripheral components or in accordance with certain embodiments of the presently disclosed subject matter to more than two (say three or more). Likewise whenever reference is made to peripheral component and remote computer it likewise applies in accordance with certain embodiments of the presently disclosed subject matter to two or more peripheral components and a remote computer e.g. in the context of secured communication channel or e.g. sharing communication key.

It is appreciated that certain features of the presently disclosed subject matter, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features of the presently disclosed subject matter, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable subcombination.

Usage of conditional language, such as "may", "can", or variants thereof should be construed as conveying that one or more examples of the subject matter may include, while one or more other examples of the subject matter may not necessarily include, certain methods, procedures, components and features. Thus such conditional language is not generally intended to imply that a particular described method, procedure, component or circuit is necessarily included in all examples of the subject matter. Moreover, the usage of non-conditional language does not necessarily imply that a particular described method, procedure, component or circuit is necessarily included in all examples of the subject matter.

It is to be understood that the invention is not limited in its application to the details set forth in the description contained herein or illustrated in the drawings. The invention is capable of other embodiments and of being practiced and carried out in various ways. Hence, it is to be understood that the phraseology and terminology employed herein are for the purpose of description and should not be regarded as limiting. As such, those skilled in the art will appreciate that the conception upon which this disclosure is based may readily be utilized as a basis for designing other structures, methods, and systems for carrying out the several purposes of the presently disclosed subject matter.

It will also be understood that the system according to the invention may be, at least partly, implemented on a suitably programmed computer. Likewise, the invention contemplates a computer program being readable by a computer for executing the method of the invention. The invention further contemplates a non-transitory computer-readable memory tangibly embodying a program of instructions executable by the computer for executing the method of the invention.

Claim 1:
A computer implemented method for providing communication between a secured client computer and a remote computer, comprising:
(a) providing a client computer that includes at least two peripheral components; each peripheral component is configured, by a processor, to process a corresponding peripheral component data of a data type that is not compatible with peripheral component data types processed by a processor of other of said at least two peripheral components; the processor of each peripheral component is further configured to code the corresponding data of said data type;
the method further comprising with respect to each peripheral component of said components, by said processor:
(b) establishing a secured peer-to-peer communication channel between the peripheral component and the remote computer that is authorized to communicate with said client computer; and
(c) coding data that is communicated between the authorized remote computer and the peripheral component through said secured communication channel, said coded data being undecryptable by the processors of other of said peripheral components, and wherein for at least one group of said peripheral components, said processor is capable of translating data of a first data type associated with one module of said group to data of a second non compatible type of the other module of said group; the method further comprising:
d) establishing a secured peer to peer communication channel with other peripheral component of said group of peripheral components;
e) coding data for communicating between the one peripheral component through said secured communication channel with said other peripheral component; said coded data is undecryptable by other of said peripheral components apart from said group; and
f) translating data of said first type to a data of said second type or vice versa, thereby facilitating communication between said group of peripheral components in a common data type.