A computer-implemented method for upgrading a software module on a portable electronic device, said method comprising the acts of: receiving device information at a network-based server device, the device information pertaining to the portable electronic device and including device descriptive information, a public cryptographic key and a current version indicator for the software module on the portable electronic device; determining whether there is a new or updated version of the software module for use with the portable electronic device, wherein the determining comprises: determining a most current version of the software module on the portable electronic device based upon the device descriptive information, and determining whether the most current version of the software module on the portable electronic device is the same as a most current version available from the server device; encrypting the updated version of the software module when there is a new or updated version of the software module for use with the portable electronic device, said encrypting using the public cryptographic key provided by the portable electronic device; and transmitting the encrypted software module to the portable electronic device when there is a new or updated version of the software module for use with the portable electronic device. receiving device information at a network-based server device, the device information pertaining to the portable electronic device and including device descriptive information, a public cryptographic key and a current version indicator for the software module on the portable electronic device; determining whether there is a new or updated version of the software module for use with the portable electronic device, wherein the determining comprises: determining a most current version of the software module on the portable electronic device based upon the device descriptive information, and determining whether the most current version of the software module on the portable electronic device is the same as a most current version available from the server device; encrypting the updated version of the software module when there is a new or updated version of the software module for use with the portable electronic device, said encrypting using the public cryptographic key provided by the portable electronic device; and transmitting the encrypted software module to the portable electronic device when there is a new or updated version of the software module for use with the portable electronic device. determining a most current version of the software module on the portable electronic device based upon the device descriptive information, and determining whether the most current version of the software module on the portable electronic device is the same as a most current version available from the server device; encrypting the updated version of the software module when there is a new or updated version of the software module for use with the portable electronic device, said encrypting using the public cryptographic key provided by the portable electronic device; and transmitting the encrypted software module to the portable electronic device when there is a new or updated version of the software module for use with the portable electronic device.