A system for enhancing security of a communication device when conducting a 2. transaction the system comprising a transaction application configured to be installed into the communication device, wherein - the transaction application comprising a processing unit and a controlling unit, the controlling unit comprising a security module, - the processing unit comprises code which, when executed by the processor of the communication device, causes it to transmit to the security module of the controlling unit, a transaction data, - the security module comprises code which, when executed by the processor of the communication device, causes it to, during computation of a transaction cryptogram: - compute a first integrity check value associated with the transaction data wherein the integrity check value is a return of a verification function of the integrity of the transaction data; - compute a second integrity check value associated with a certificate of the transaction application wherein the integrity check value is a return of a verification function of the integrity of the certificate; - apply a transformation operation to the transaction data with the first integrity check value and the second integrity check value to get in return a transformed transaction data, - compute the transaction cryptogram using the transformed transaction data, wherein the transaction is authorized based on at least whether the transformed transaction data matches the transaction data, if at least one of the integrity check values is a failed value, then the transformed transaction data is corrupted and the transaction cryptogram wrongly computed, consequently the transaction is rejected. - the transaction application comprising a processing unit and a controlling unit, the controlling unit comprising a security module, - the processing unit comprises code which, when executed by the processor of the communication device, causes it to transmit to the security module of the controlling unit, a transaction data, - the security module comprises code which, when executed by the processor of the communication device, causes it to, during computation of a transaction cryptogram: - compute a first integrity check value associated with the transaction data wherein the integrity check value is a return of a verification function of the integrity of the transaction data; - compute a second integrity check value associated with a certificate of the transaction application wherein the integrity check value is a return of a verification function of the integrity of the certificate; - apply a transformation operation to the transaction data with the first integrity check value and the second integrity check value to get in return a transformed transaction data, - compute the transaction cryptogram using the transformed transaction data, wherein the transaction is authorized based on at least whether the transformed transaction data matches the transaction data, if at least one of the integrity check values is a failed value, then the transformed transaction data is corrupted and the transaction cryptogram wrongly computed, consequently the transaction is rejected. - compute a first integrity check value associated with the transaction data wherein the integrity check value is a return of a verification function of the integrity of the transaction data; - compute a second integrity check value associated with a certificate of the transaction application wherein the integrity check value is a return of a verification function of the integrity of the certificate; - apply a transformation operation to the transaction data with the first integrity check value and the second integrity check value to get in return a transformed transaction data, - compute the transaction cryptogram using the transformed transaction data, wherein the transaction is authorized based on at least whether the transformed transaction data matches the transaction data, if at least one of the integrity check values is a failed value, then the transformed transaction data is corrupted and the transaction cryptogram wrongly computed, consequently the transaction is rejected.