A method for checking a binding between a first software module and a second software module performed by a computing device comprising a processor, a first software module and a second software module, the method comprising: generating, by the first software module, a challenge request comprising data elements including a first software module identifier and a time period; encrypting, by the first software module, using a symmetric key generated based on a first challenge element, the data elements in the challenge request, wherein the first challenge element is a previous challenge element which is securely stored by both the first software module and the second software module. providing, by the first software module, the encrypted challenge request to the second software module; decrypting, by the second software module, the data elements in the encrypted challenge request using a matching symmetric key generated based on the first challenge element; verifying, by the second software module, the data elements including the first software module identifier and the time period; generating, by the second software module, a random number as a second challenge element for a subsequent communication interaction between the first software module and the second software module; signing, by the second software module, the second challenge element using a private key of a second software module public-private key pair to create a digital signature. encrypting, by the second software module, the second challenge element using the matching symmetric key generated based on the first challenge element; providing, by the second software module to the first software module, a challenge response including the encrypted second challenge element and the digital signature; decrypting, by the first software module, the encrypted second challenge element using the symmetric key generated based on the first challenge element verifying, by the first software module, the digital signature using a public key of the second software module public-private key pair; storing, by the second software module, the second challenge element, and storing, by the first software module, the second challenge element for use in encrypting a subsequent challenge request at a later time. generating, by the first software module, a challenge request comprising data elements including a first software module identifier and a time period; encrypting, by the first software module, using a symmetric key generated based on a first challenge element, the data elements in the challenge request, wherein the first challenge element is a previous challenge element which is securely stored by both the first software module and the second software module. providing, by the first software module, the encrypted challenge request to the second software module; decrypting, by the second software module, the data elements in the encrypted challenge request using a matching symmetric key generated based on the first challenge element; verifying, by the second software module, the data elements including the first software module identifier and the time period; generating, by the second software module, a random number as a second challenge element for a subsequent communication interaction between the first software module and the second software module; signing, by the second software module, the second challenge element using a private key of a second software module public-private key pair to create a digital signature. encrypting, by the second software module, the second challenge element using the matching symmetric key generated based on the first challenge element; providing, by the second software module to the first software module, a challenge response including the encrypted second challenge element and the digital signature; decrypting, by the first software module, the encrypted second challenge element using the symmetric key generated based on the first challenge element verifying, by the first software module, the digital signature using a public key of the second software module public-private key pair; storing, by the second software module, the second challenge element, and storing, by the first software module, the second challenge element for use in encrypting a subsequent challenge request at a later time.