We are working on some Embedded device (Tag, the Tag hardware is: MCU, external EEPROM, Temperature and Humidity sensors) that collects temperature and humidity, the Tag save the samples in the EEPROM, the connection between the MCU and the EEPROM is I2C.

My questions is:

Is there a way to secure the EEPROM that only my MCU is able to connect and extract logged data? My concerned is that someone connects a DevelopmentKIT with an I2C driver to the Tag EEPROM and extracts the data.

  • 1
    Welcome to the site. I edited your question in order to make it clearer. However, I'm not sure if I got your problem. I put your question on hold for now. Please edit your question to clearly state your problem. Moreover, I'm also not sure if this is an IoT question. If you could make the connection to the Internet of Things clearer your question can probably be opened again. – Helmar Dec 27 '17 at 10:45
  • 1
    Thanks @RichardChambers, and no the data can't be encrypted. – user5742600 Dec 27 '17 at 12:13
  • 1
    Wild idea, you can make things complicated for others by keeping low the I2C bus when not used by your MCU. They will have to eliminate your MCU this way to use the bus with a new master. Also please add the datasheet of the EEPROM because it matters what kind of chip you are using. – Bence Kaulics Dec 27 '17 at 13:19
  • 1
    Why can't the data be encrypted by the way? – Bence Kaulics Dec 27 '17 at 14:44
  • 4
    I'm voting to close this question as off-topic because it is a generic Embedded Systems question and not at all about the Internet of Things. Additionally, it is really too broad for the Stack Exchange format. Likely the only possibility is to encrypt your data, but beware that it is very hard to use encryption in a way that is safe against an attacker who can observe changes in the cyphertext corresponding to small changes in the plaintext over time, possible injection of known plaintext or even just monitoring of the readings leading to plaintext, etc. And you need to protect the key. – Chris Stratton Dec 27 '17 at 17:01

You can make things a little bit complicated for others by disturbing the I2C bus in some way. Lock the bus from other I2C masters by your controller, but this is not much as anyone can easily remove your MCU from the board and free the bus.

I recommend to remove the markings from the EEPROM's package, this will make harder to interface the EEPROM with another MCU, but not impossible. Also you should enable read-out protection on your MCU so they cannot use your firmware to reverse-engineer the interface of the EEPROM.

But all of the above mentioned items are just tricks, none of them offer real protection. If you want real protection you should use encryption.

You did not mentioned why the data cannot be encrypted, so I assume that your MCU is not able to handle such task.

So you could consider using secure EEPROM, such as Atmel's CryptoMemory family.

CryptoMemory is designed to keep contents secure, whether operating in a system or removed from the board and sitting in the hacker’s lab.

Here is an overview and a chip datahseet. It offers four levels:

  1. First Option: No Security
  2. Second Option: Password Protection
  3. Third Option: Authentication
  4. Fourth Option: Data Encryption and MACs
  • 1
    No need to remove the MCU, just hold it in reset. And sanding off the part number is kind of pointless since it probably has an ID register. – Chris Stratton Dec 30 '17 at 4:44

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