US 12,225,113 B2
End to end file-sharing schema using signed Merkle tree randomly originated keys
Igor Stolbikov, Apex, NC (US); Sergei Rodionov, Plano, TX (US); and Scott Wentao Li, Cary, NC (US)
Assigned to Lenovo (Singapore) Pte. Ltd., Singapore (SG)
Filed by Lenovo (Singapore) Pte. Ltd., Singapore (SG)
Filed on Sep. 16, 2022, as Appl. No. 17/932,904.
Prior Publication US 2024/0097886 A1, Mar. 21, 2024
Int. Cl. H04L 9/08 (2006.01); H04L 9/06 (2006.01); H04L 9/32 (2006.01)
CPC H04L 9/0825 (2013.01) [H04L 9/0643 (2013.01); H04L 9/0869 (2013.01); H04L 9/3263 (2013.01)] 17 Claims
OG exemplary drawing
 
1. A process for transmitting a file from a sender device to a receiver device comprising:
generating a random symmetric session key for the sender device;
randomly selecting a private ephemeral key for the sender device, the private ephemeral key associated with a corresponding first public key;
wherein the receiver device comprises a randomly selected public ephemeral key, the public ephemeral key associated with a corresponding first private key;
generating a random value within a range;
calculating an encrypted session key;
encrypting the file using symmetric encryption; and
transmitting from the sender device to the receiver device a group ID, the encrypted session key, the random value, a sender device ID, a receiver device ID, a hashed file ID, a sender key ID, and a receiver key ID, wherein the receiver device includes a record comprising the random value, the sender device ID, the hashed file ID, and the group ID;
wherein the sender device comprises a first public X509 certificate comprising a second public key and a corresponding second private key that is signed by a service provider;
wherein the receiver device comprises a second public X509 certificate comprising a third public key and a corresponding third private key; and
wherein the encrypted session key is calculated as follows:
encrypted session key=(the random symmetric session key+the random value*the first public key*the first private key+the random value*the second public key*the third public key)/(mod(the range)).