In my scenario i have a very simple P2P network usually working "offline" (i mean that the P2P rely on a detached from internet network). Each peer on the network is a IoT device bheave automatically, and the first thing it does is present itself to the P2P network trying to join it. There is no central infrastructure on the network on which i can rely on, so my question is, how can i verfy if a peer that try to join the network is a leggitimate ones and not an attacker?

I have thought to use a private key to identify "me" the network owner (and not shared with the peer) to sign the public key of each peer (different for each peer) that i will relase in the environment (not in a single release). So when a peer need to present itself to the network other peers (with the public key that identify "me") can see if the peer public key is well signed or not. But a problem remain, how prevent an attacker with phisical access to a peer to copy its keys (the public with my sign and the private ones) and then impersonate that peer for evil pourpose ? (how said before each peer on the network is a IoT device easilly accessibile by an attacher and not supervised at all)


1 Answer 1


If an attacker has full access to the peer then you cannot expect security to be kept. However, you assume that if an attacker has access to a device that it is full under his control.

This assumption is not true in practice if you embed a secure element. A secure element is a device such as a smart card chip that can keep one of more secret values and perform actions on it, for instance signing so it can authenticate itself to the network.

So a secure element can be used to keep your problem from occurring. It is however impossible for a secure element to make a system moderately secure on its own. However, describing such a system is beyond what you can expect from a Q/A site.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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