IP Library Granted Patent US 12,413,407
Granted Patent B2
US 12,413,407 · App. 18/311,879 · Granted Sep 9, 2025

Ciphers to protect keystrokes

Inventors: Xiaoyu Kong (Beijing, CN); Zhiyuan Wang (Beijing, CN); Yiqun Yun (Beijing, CN); Zhanglin Zhou (Beijing, CN); Yang Yu (Beijing, CN)
Assignee: Omnissa, LLC
H04L9/14G06F21/83H04L9/0825
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,413,407
App. No.
18/311,879
Granted
Sep 9, 2025
Kind
B2
Abstract

Encrypting keystroke data on a computing device involves receiving a key identifier (ID) from a keyboard device, creating a keystroke cipher segment comprising a primary authentication code and the key ID, and encrypting the keystroke cipher segment to generate an encrypted keystroke cipher segment. The keystroke cipher segment is included within a keystroke message and transmitted from the keyboard device driver to a window event handler via an input/output (I/O) message channel native to an operating system running on the computing device. The encrypted keystroke cipher segment is decrypted to identify the key ID, which is transmitted to a first application for further processing.

Claims (44)

1. A computer-implemented method of encrypting keystroke data in a computing device, the method comprising:

receiving, by a keyboard device driver of the computing device, a key identifier (ID) from a keyboard device, the key ID representing a keystroke event occurring on the computing device via the keyboard device;

creating a keystroke cipher segment comprising a random number, a primary authentication code and the key ID;

encrypting the keystroke cipher segment resulting in an encrypted keystroke cipher segment;

transmitting the encrypted keystroke cipher segment in a keystroke message from the keyboard device driver to a window event handler via an input/output (I/O) message channel of an operating system running on the computing device, the window event handler being responsible for providing keystroke data to applications running on the operating system;

receiving the keystroke message at the window event handler;

decrypting the encrypted keystroke cipher segment, thereby identifying the key ID; and

transmitting the key ID to a first application for further processing.

2. The computer-implemented method of claim 1 , further comprising creating the keystroke message including storing the encrypted keystroke cipher segment in a preexisting field provided by the I/O message channel.

3. The computer-implemented method of claim 2 , wherein the preexisting field provided by the I/O message channel is an ExtraInformation field defined by a keyboard input data object.

4. The computer-implemented method of claim 2 , further comprising regenerating the random number and the primary authentication code for another key ID.

5. The computer-implemented method of claim 1 , wherein encrypting the keystroke cipher segment is performed by an encryptor integrated with the keyboard device driver.

6. The computer-implemented method of claim 1 , wherein encrypting the keystroke cipher segment includes encrypting the keystroke cipher segment with a random quantity of encryption rounds using a different key in each of the encryption rounds.

7. The computer-implemented method of claim 1 , wherein the primary authentication code includes a shared authentication code that is known by both an encryptor configured to perform the encrypting of the keystroke cipher segment and a decryptor configured to perform the decrypting of the encrypted keystroke cipher segment, the method further comprising authenticating the keystroke message by the decryptor using the shared authentication code.

8. A computer system comprising:

a keyboard device;

a processor; and

a non-transitory computer readable medium having stored thereon program code executable by the processor, the program code causing the processor to:

receive, by a keyboard device driver managing the keyboard device, a key identifier (ID) from the keyboard device, the key ID representing a keystroke event occurring via the keyboard device;

create a keystroke cipher segment comprising a random number, a primary authentication code and the key ID;

encrypt the keystroke cipher segment resulting in an encrypted keystroke cipher segment;

transmit the encrypted keystroke cipher segment in a keystroke message from the keyboard device driver to a window event handler via an input/output (I/O) message channel of an operating system running on the computer system, the window event handler being responsible for providing keystroke data to applications running on the operating system;

receive the keystroke message at the window event handler;

decrypt the encrypted keystroke cipher segment, thereby identifying the key ID; and

transmit the key ID to a first application for further processing.

9. The computer system of claim 8 , wherein the program code further causes the processor to create the keystroke message including storing the encrypted keystroke cipher segment in a preexisting field provided by the I/O message channel.

10. The computer system of claim 9 , wherein the preexisting field provided by the I/O message channel is an ExtraInformation field defined by a keyboard input data object.

11. The computer system of claim 9 , wherein the program code further causes the processor to regenerate the random number and the primary authentication code for another key ID.

12. The computer system of claim 8 , wherein encrypting the keystroke cipher segment is performed by an encryptor integrated with the keyboard device driver.

13. The computer system of claim 8 , wherein encrypting the keystroke cipher segment includes encrypting the keystroke cipher segment with a random quantity of encryption rounds using a different key in each of the encryption rounds.

14. The computer system of claim 8 , wherein the primary authentication code includes a shared authentication code that is known by both an encryptor configured to perform the encrypting of the keystroke cipher segment and a decryptor configured to perform the decrypting of the encrypted keystroke cipher segment, the program code further causing the processor to authenticate the keystroke message by the decryptor using the shared authentication code.

15. A non-transitory computer storage medium having stored thereon program code executable by a processor, the program code embodying a method comprising:

receiving, by a keyboard device driver, a key identifier (ID) from a keyboard device, the key ID representing a keystroke event occurring on a computing device via the keyboard device;

creating a keystroke cipher segment comprising a random number, a primary authentication code and the key ID;

encrypting the keystroke cipher segment resulting in an encrypted keystroke cipher segment;

transmitting the encrypted keystroke cipher segment in a keystroke message from the keyboard device driver to a window event handler via an input/output (I/O) message channel of an operating system, the window event handler being responsible for providing keystroke data to applications running on the operating system;

receiving the keystroke message at the window event handler;

decrypting the encrypted keystroke cipher segment, thereby identifying the key ID; and

transmitting the key ID to a first application for further processing.

16. The non-transitory computer storage medium of claim 15 , wherein the method further comprises creating the keystroke message including storing the encrypted keystroke cipher segment in a preexisting field provided by the I/O message channel.

17. The non-transitory computer storage medium of claim 16 , wherein the preexisting field provided by the I/O message channel is an ExtraInformation field defined by a keyboard input data object.

18. The non-transitory computer storage medium of claim 15 , wherein encrypting the keystroke cipher segment is performed by an encryptor integrated with the keyboard device driver.

19. The non-transitory computer storage medium of claim 15 , wherein encrypting the keystroke cipher segment includes encrypting the keystroke cipher segment with a random quantity of encryption rounds using a different key in each of the encryption rounds.

20. The non-transitory computer storage medium of claim 15 , wherein the primary authentication code includes a shared authentication code that is known by both an encryptor configured to perform the encrypting of the keystroke cipher segment and a decryptor configured to perform the decrypting of the encrypted keystroke cipher segment, the method further comprising authenticating the keystroke message by the decryptor using the shared authentication code.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 25, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067239/0402 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2023
From: KONG, XIAOYU; WANG, ZHIYUAN; YUN, YIQUN; ZHOU, ZHANGLIN; YU, YANG
To: VMWARE, INC.
Reel/Frame 063525/0537 →