NFC Chip UID
The NFC chip UID is a manufacturer-supplied, usually read-only, unique identifier for the NFC chip used to uniquely identify an NFC tag in a project’s software systems. The UID is also an important part of NFC security and anti-cloning. The NFC chip UID can be read by most software systems, including iPhone and Android 3rd party apps.
Example NFC Tag UID: 044F7132214B80
Read Only NFC Chip UID
The NFC chip UID on most NFC chip types is determined by the chip manufacturer, programmed to the NFC chip during manufacturing and is permanently read-only; meaning that it is not possible to change the value of the UID via software. The fact the UID is not changeable is what makes it useful for NFC security systems. However, there are NFC chip types that allow for the UID to be changed by software after manufacturing; this has significant effects on NFC security and must be protected against. Some NFC chip types support random UIDs; these are still read-only.
In general, GoToTags does not work with or support NFC chip types with writable UIDs.
NFC Chip Manufacturer Code
Every manufacturer of NFC chips is assigned a manufacturer code per NFC standards; this code is included in the NFC chip UID to allow software systems to determine the manufacturer of the NFC chip and help in the process of NFC chip type identification. The location of the manufacturer code in the UID is different for each NFC tag type.
Given that some NFC chips have writable UIDs, using the manufacturer code to determine the manufacturer is not secure as it is possible for a malicious NFC chip to lie about its UID and therefore lie about its manufacturer. To securely verify the manufacturer, the NFC chip’s originality signature must be used if available.
Example UID from NXP NTAG213
NFC Chip UID Formatting
The NFC chip UID is stored as binary (1s and 0s) in an NFC chip. Some NFC chip types store the UID in a different bit position format and need to be reversed after reading and before using. It is important that the NFC chip UID be formatted properly in string format.
NFC Chip UID Randomness
NFC chip UIDs are unique, but they are not very random. Mathematically speaking they have low entropy; practically this means that NFC chip UIDs seem to follow a quasi-pattern and don’t “look” random. This pattern is often more present for NFC chips that were manufactured next to each other in sequence. This has several implications for NFC security:
- It is trivial to create a fake UID that looks like it should be a real UID; a project should never depend on the the UID “looking right” for any reason.
- UIDs should never be used as a password or encryption key as it is not that hard to guess the available set of UIDs for a prioritized brute force attack.
Example Sequence of NFC Chip UIDs
The following is a sequence of NFC chip UIDs (NTAG213). It is clear that these are not very random, with only the part in bold varying between UIDs. It would not be difficult to create a set of additional UIDs that would fit into this pattern.
044F7132214B80 04547032214B80 045A7032214B80 045F6F32214B80
This concept of the randomness of the NFC chip UID is separate from random NFC UIDs which is a security and privacy feature.
Random NFC Chip UIDs
Some NFC chip types have a feature where an NFC chip can be put into a mode such that every time the NFC chip UID is read it returns a random value; often this feature is protected with a password. The effect of enabling a random UID on an NFC chip is that the UID can not be used to uniquely identify the NFC tag anymore; effectively preventing a software system from tracking the tag over multiple interactions. This can be thought of as a privacy feature, similar to a web browser’s “incognito” mode.