Looking to add a cryptochip (Atmel ATECC608A) to a product that will be used to communicate with a company server.

We want to make sure that only our devices are communicating to our server (authentication).

From what I can tell, my company will have its own key pair which we will use to sign an intermediate key pair which in turn will be used to sign all the device key pairs.

My question is - how does the server "know" that the end devices are legit ?


The canonical cryptographic answer would be client certificates or secrets of some sorts on each device. Consider this example where Microchip details how to authenticate the ATECC608A versus the Google IoT Cloud. The details are given here. You'll need a secret private key and a secure algorithm.

Of course, that means that you'll have to securely deploy those secrets in mass production on your chips.

  • 1
    The point of the architecture described in the question is that each copy of the product gets a unique key. This compartmentalizes the costs of compromise - if someone buys a box and takes it apart, they can only impersonate that one. If someone steals or abuses a factory production rig, they only get one intermediate certificate and units signed by that compromised key can forever be identified. – Chris Stratton Apr 21 '18 at 17:16
  • 1
    I agree, @ChrisStratton, single devices that have been taken apart can be impersonated. Regarding factory production you'll need a proper auditing to be able to trace which keys have been compromised. – Helmar Apr 22 '18 at 9:27
  • Most likely the way you know a key is compromised is that you see an unmanufactured serial number in a product cert it signed trying to register or be placed on an account on your backend. Or you start seeing duplicate serial numbers in disparate locations on different accounts. Conversely if you start seeing thousands of duplicates of one serial number, someone took a product apart and extracted its key. – Chris Stratton Apr 22 '18 at 14:04

In general terms, this is called mutual authentication, most often by using TLS and client certificates, although other schemes are possible. Individual device certificates are signed by the manufacturer using a issuer private key, and that signature is verified during communication handshake when presented by the client. This is how the server "knows" the device is legit.

Effectively, the issuer/manufacturer needs to act as a Certificate Authority or CA, or intermediate CA when issuing individual device certs, and also maintain revocation database for individual compromised devices. I.e. pretty much everything else that setting up a CA involves.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.