Patent ID: 8712050

Claim:
A method of implementing dynamic pseudorandom keyboard remapping of a system including a keyboard in communication with an operating system of a computing device, the method comprising: sending, by the operating system, an initial pseudorandom number generator (PRNG) seed value, x 0 , to the keyboard; determining whether a response to the initial PRNG seed value x 0 is received from the keyboard by the operating system, and in the event a response is received, sending a selected PRNG algorithm, f(x), from the operating system to the keyboard; applying, by the keyboard, the selected PRNG algorithm f(x) to the initial PRNG seed value x 0 so as to generate a first pseudorandomly generated value, x 1 , responsive to a first keystroke received by the keyboard; encrypting, by the keyboard, an original keyboard scan code corresponding to each of a plurality of keyboard keys, using a mapping algorithm, wherein the mapping algorithm encrypts the original keyboard scan code by using both the original keyboard scan code and the first pseudorandomly generated value, x 1 ; transmitting an encrypted scan code from the keyboard to the operating system such that each keystroke is encrypted with a different decodable remapping function; decrypting, with the operating system, the original keyboard scan code from the encrypted scan code generated by the keyboard, wherein the operating system also uses the same mapping algorithm used by the keyboard, the same PRNG algorithm f(x) sent to and used by the keyboard, and the same initial seed value x 0 sent to and used by the keyboard; and generating, for each subsequent keystroke received by the keyboard following the first keystroke, subsequent pseudorandom numbers using the selected PRNG algorithm f(x) and a previous generated pseudorandom number in accordance with the expression f(x[n])=x[n+1], wherein the mapping algorithm encrypts the original keyboard scan code by using both the original keyboard scan code and a current one of the subsequent pseudorandom numbers.