Method for controlling the distribution of software code updates
First Claim
1. A method for controlling the distribution of a software code update for an embedded software application on a device, wherein the distribution is from a sender to a plurality of devices each including the software application via a plurality of recipients, comprising:
- assigning an asymmetric key pair, including a public key PU1 and a private key PR1, to the software application;
securely distributing the private key PR1 to the plurality of recipients and distributing the public key PU1 to the sender;
assigning an asymmetric key pair, including a public key PU2 and a private key PR2, to the sender;
securely distributing the private key PR2 to the sender and distributing the public key PU2 to the plurality of recipients;
generating a random secret session key;
encrypting the software code update using the secret session key by the sender to produce a secure body of an encrypted message;
computing an authentication value HV0 over a data area by the sender;
encrypting HV0 using the private key PR2 by the sender to produce a secure value, MIC;
encrypting the secret session key and the secure value MIC using the public key PU1 by the sender to produce a secure header of the encrypted message;
sending the encrypted message, including the secure body and the secure header;
receiving the encrypted message by one or more of the recipients;
decrypting the secure header using the private key PR1 to obtain the secret session key and the secure value MIC;
computing an authentication value HV1 over the same data area;
decrypting the secure value MIC using the public key PU2 to obtain HV0;
comparing the authentication value HV0 to the authentication value HV1 to verify that the encrypted message came from the sender and has not been altered; and
decrypting the secure body using the secret session key to obtain the software code update.
4 Assignments
0 Petitions
Accused Products
Abstract
A method is described for controlling the distribution of a software code update for an embedded software application on a device. The method includes the steps of assigning an asymmetric key pair to the software application and another asymmetric key pair to the sender of the software code update. The software code update is sent in a secure manner to one or more devices while preventing devices not possessing to the appropriate keys from obtaining the software code update.
53 Citations
18 Claims
-
1. A method for controlling the distribution of a software code update for an embedded software application on a device, wherein the distribution is from a sender to a plurality of devices each including the software application via a plurality of recipients, comprising:
-
assigning an asymmetric key pair, including a public key PU1 and a private key PR1, to the software application; securely distributing the private key PR1 to the plurality of recipients and distributing the public key PU1 to the sender; assigning an asymmetric key pair, including a public key PU2 and a private key PR2, to the sender; securely distributing the private key PR2 to the sender and distributing the public key PU2 to the plurality of recipients; generating a random secret session key; encrypting the software code update using the secret session key by the sender to produce a secure body of an encrypted message; computing an authentication value HV0 over a data area by the sender; encrypting HV0 using the private key PR2 by the sender to produce a secure value, MIC; encrypting the secret session key and the secure value MIC using the public key PU1 by the sender to produce a secure header of the encrypted message; sending the encrypted message, including the secure body and the secure header; receiving the encrypted message by one or more of the recipients; decrypting the secure header using the private key PR1 to obtain the secret session key and the secure value MIC; computing an authentication value HV1 over the same data area; decrypting the secure value MIC using the public key PU2 to obtain HV0; comparing the authentication value HV0 to the authentication value HV1 to verify that the encrypted message came from the sender and has not been altered; and decrypting the secure body using the secret session key to obtain the software code update. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for securely distributing an updated version of a software application embedded in a device, wherein the distribution occurs from a sender to a plurality of devices, wherein each device includes the software application, comprising:
-
assigning an asymmetric key pair, including a public key PU1 and a private key PR1, to a first version of the software application; distributing public key PU1 to the sender, and securely distributing private key PR1 to the plurality of devices; assigning an asymmetric key pair, including a public key PU2 and a private key PR2, to the sender; distributing public key PU2 to the devices and securely distributing PR2 to the sender; generating a random, symmetric secret session key; assigning an asymmetric key pair, including a public key PU3 and a private key PR3 to a second version of the software application; encrypting the second version of the software application and private key PR3 using the secret session key by the sender to produce a secure body of an encrypted message; computing a hash value HV0 using a hash function over the secure body by the sender; encrypting HV0 using the private key PR2 by the sender to produce a secure value MIC; encrypting the secret session key and the secure value MIC using the PU1 key by the sender to produce a secure header of the encrypted message; sending the encrypted message, including the secure body and the secure header; receiving the encrypted message by one of the plurality of devices; decrypting the secure header using the private key PR1 to obtain the secret session key and the secure value MIC; computing a hash value HV1 over the secure body; decrypting the secure value MIC using the public key PU2 to obtain HV0; comparing the hash value HV0 to the hash value HV1 to verify that the encrypted message came from the sender and has not been altered; decrypting the secure body using the secret session key to obtain the second version of the software application and private key PR3; and producing another encrypted message to distribute a third version of the software application using public key PU3, and allowing only devices having PR3 to decrypt the encrypted third version of the software. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A method for controlling the distribution of a message from a sender to a plurality of message group members, comprising:
-
assigning an asymmetric key pair, including a public key PU1 and a private key PR1, to the message group members; assigning an asymmetric key pair, including a public key PU2 and a private key PR2 to the sender of the message; distributing the public key PU2 to the sender and securely distributing the private key PR1 to the message group members; distributing the public key PU1 to the message group members and securely distributing the private key PR2 to the sender; generating a random secret session key; encrypting the message using the secret session key by the sender to produce a secure body of an encrypted message; computing an authentication value HV0 over the secure body by the sender; encrypting HV0 using the private key PR2 by the sender to produce a secure value MIC; encrypting the secret session key and the secure value MIC using the public key PU1 by the sender to produce a secure header of the encrypted message; sending the encrypted message, including the secure body and the secure header; receiving the encrypted message; decrypting the secure header using the private key PR1 by any message group member to obtain the secret session key and the secure value MIC; computing an authentication value HV1 over the secure body by any message group member; decrypting the secure value MIC using the public key PU2 by any message group member to obtain HV0; comparing the authentication value HV0 to the authentication value HV1 to verify that the encrypted message came from the sender and has not been altered; and decrypting the secure body using the secret session key to obtain the message.
-
Specification