Patent ID: 8577808

Claim:
A computer-implemented method for distributing a software module by a distribution server having access to a plurality of software modules, comprising: encrypting said software module with an encryption key; distributing said encrypted software module, over a network, from said distribution server to storage of a computing device of a user; receiving information identifying the user; creating, based on the information identifying the user, a user public key and a user private key; sending the user public key to the computing device; receiving a client public key from the computing device, wherein the computing devices creates the client public key and a client private key based on information identifying the computing device; applying a first tier of encryption to a decryption key by encrypting the decryption key with the client public key, thereby creating an encrypted decryption key, and then applying a second tier of encryption to the decryption key by encrypting the encrypted decryption key with the user private key, thereby creating a two-tiered encrypted version of the decryption key; and transmitting the two-tiered encrypted version of the decryption key to the computing device of the user, wherein the decryption key, once removed of the two-tiered encryption at the computing device is used to decrypt the encrypted software module present at the storage of the computing device.