A method to authenticate a computer program (program) for a vehicle-located processor, using a security element operatively coupled to the vehicle-located processor, the vehicle-located processor being configured to execute the program, the program comprising executable instructions arranged in a sequence, the method comprising: re-ordering the instructions obtained from a first pre-determined segment of a first copy of said program, the first copy being known to be authentic, the re-ordering being according to a second sequence, which is different than the first sequence; computing a first hash code of said re-ordered pre-determined segment obtained from the first copy, the first hash code being computed using a first hash function; storing the first computed hash code in the security element; getting in a consecutive way the next segments of the first copy of said program, re-ordering them, computing respective hash codes and storing them in the security element until all segments of the first copy of said program are re-ordered and hashed; in the vehicle-located processor: re-ordering the same instructions obtained from the same pre-determined segment of a second copy of said program, the second copy of the program being obtained from the vehicle-located processor, which is also coupled to the element, the authenticity of the second copy being unknown, the re-ordering of the instructions from the second copy being according to the same second sequence; providing the re-ordered segment of the second copy to the security element; in the security element: computing a second hash code of said re-ordered segment of the second copy, the second hash code being computed by the security element using the first hash function; determining whether the first and second hash codes are identical; whereby, if the first and second hash codes are determined by the security element to not be identical, providing an inhibit signal to the processor from the security element, the inhibit signal causing the processor to alter execution of the program, whereby, if the first and second hash codes are determined by the security element to be identical, get next segment from the processor and repeat the steps in the vehicle-located processor. re-ordering the instructions obtained from a first pre-determined segment of a first copy of said program, the first copy being known to be authentic, the re-ordering being according to a second sequence, which is different than the first sequence; computing a first hash code of said re-ordered pre-determined segment obtained from the first copy, the first hash code being computed using a first hash function; storing the first computed hash code in the security element; getting in a consecutive way the next segments of the first copy of said program, re-ordering them, computing respective hash codes and storing them in the security element until all segments of the first copy of said program are re-ordered and hashed; in the vehicle-located processor: re-ordering the same instructions obtained from the same pre-determined segment of a second copy of said program, the second copy of the program being obtained from the vehicle-located processor, which is also coupled to the element, the authenticity of the second copy being unknown, the re-ordering of the instructions from the second copy being according to the same second sequence; providing the re-ordered segment of the second copy to the security element; re-ordering the same instructions obtained from the same pre-determined segment of a second copy of said program, the second copy of the program being obtained from the vehicle-located processor, which is also coupled to the element, the authenticity of the second copy being unknown, the re-ordering of the instructions from the second copy being according to the same second sequence; providing the re-ordered segment of the second copy to the security element; in the security element: computing a second hash code of said re-ordered segment of the second copy, the second hash code being computed by the security element using the first hash function; determining whether the first and second hash codes are identical; whereby, if the first and second hash codes are determined by the security element to not be identical, providing an inhibit signal to the processor from the security element, the inhibit signal causing the processor to alter execution of the program, whereby, if the first and second hash codes are determined by the security element to be identical, get next segment from the processor and repeat the steps in the vehicle-located processor. computing a second hash code of said re-ordered segment of the second copy, the second hash code being computed by the security element using the first hash function; determining whether the first and second hash codes are identical; whereby, if the first and second hash codes are determined by the security element to not be identical, providing an inhibit signal to the processor from the security element, the inhibit signal causing the processor to alter execution of the program, whereby, if the first and second hash codes are determined by the security element to be identical, get next segment from the processor and repeat the steps in the vehicle-located processor.