Method for remotely programming a programmable device
A method for remotely programming a programmable device designed to provide an expected sensitive result. The method including transmitting a first program code to the programmable device, the first program code being configured to get at least one distinctive data unique and physically inherent to the programmable device, retrieving the distinctive data, and transmitting a second program code based on the retrieved distinctive data to the programmable device, so as to load the second program code into the programmable device.
1 . A method for remotely programming a programmable device designed to provide an expected sensitive result, the method comprising:
transmitting a first program code to the programmable device, the first program code being configured to obtain distinctive data unique and physically inherent to the programmable device, the distinctive data obtained by the first program code detecting physical characteristics of circuitry of the programmable device which result in unique and physically inherent data;
retrieving the distinctive data; and
transmitting a second program code configured based on the retrieved distinctive data to the programmable device, to load the second program code into the programmable device,
wherein the second program code is transformed by an invertible function depending on the distinctive data, the invertible function being a calculated function or a logical function and the second program code is a global program code configured to be personalized by way of a personal setting message, the personal setting message being based on the distinctive data of the programmable device.
2 . The method of claim 1 , wherein the first program code and the second program code are designed by a provider remotely linked to the programmable device via a communication channel.
3 . The method of claim 2 , wherein in the event that the communication channel is at least partly provided by an untrusted communication channel, the first program code is transmitted to the programmable device in a secure manner so as to ensure authenticity and integrity of the first program code.
4 . The method of claim 1 , wherein the distinctive data results or is derived from a physically unclonable function applied to at least one component of the programmable device.
5 . The method of claim 1 , wherein the second program code is transformed by an invertible function depending on the distinctive data.
6 . The method of claim 5 , wherein the invertible function is a mathematical function.
7 . The method of claim 5 , wherein the second program code is transformed by replacing at least one program code portion, retrievable from the distinctive data, by an altered portion.
8 . The method of claim 1 , wherein the second program code is a global program code, common to a set of distinguishable programmable devices, configured to be personalized by means of a personal setting message for at least one programmable device of the set of distinguishable programmable devices, the personal setting message being based on distinctive data of the at least one programmable device.
9 . The method of claim 8 , wherein the at least one programmable device comprises a unique function configured to provide a first key from the personal setting message used as input data in the unique function, the first key being further used as input of the global program code for providing therefrom the expected sensitive result.
10 . The method of claim 8 , wherein the global program code is a cryptographic algorithm.
11 . The method of claim 1 , wherein the expected sensitive result is a second key, the second key being an activation key or a cryptographic key.
12 . The method of claim 1 , wherein at least one of the transmitting or the retrieving is secured by at least one of an authentication process and an encryption process.
13 . The method of claim 1 , wherein at least one of the first program code and the second program code is a netlist, a source code or a machine code.
14 . The method of claim 1 , wherein the second program code is configured externally from the programmable device before transmitting of the second program code to the programmable device.
15 . The method of claim 1 , wherein the second program code is transformed by an invertible function depending on the distinctive data, the invertible function being a logical function.
16 . The method of claim 1 , wherein the second program code is transformed by an invertible function depending on the distinctive data, the invertible function being a calculated function.
17 . A programmable device designed to be remotely programmed in order to provide an expected sensitive result, the programmable device comprising:
distinctive data unique and physically inherent to the programmable device;
a communication interface configured to receive a first program code, configured to obtain the distinctive data, and a second program code, configured based on the distinctive data, the distinctive data obtained by the first program code detecting physical characteristics of circuitry of the programmable device which result in unique and physically inherent data;
at least one memory for storing the first and second program codes; and
a processor or a hardware state machine configured to execute the first and second program codes,
wherein the second program code is transformed by an invertible function depending on the distinctive data, the invertible function being a calculated function or a logical function and the second program code is a global program code configured to be personalized by way of a personal setting message, the personal setting message being based on the distinctive data of the programmable device.
18 . A provider for remotely providing program codes to at least one programmable device, the provider comprising:
a program code generator configured to generate a first program code and configured to obtain at least one distinctive data unique and physically inherent to the at least one programmable device, and a second program code, configured based on the at least one distinctive data, the at least one distinctive data obtained by the first program code detecting physical characteristics of circuitry of the at least one programmable device which result in unique and physically inherent data; and
a communication interface configured to be connected to a communication channel, to send the first and second program codes to the at least one programmable device and, and to receive therefrom the at least one distinctive data,
wherein the second program code is transformed by an invertible function depending on the at least one distinctive data, the invertible function being a calculated function or a logical function and the second program code is a global program code configured to be personalized by way of a personal setting message, the personal setting message being based on the at least one distinctive data of the at least one programmable device.