time
Storage? I am Storage!
We sell a service that is metered, with a running balance currently stored on a prepaid Smartcard. The balance gets debited as you use the service, until it is exhausted and you need to buy a new card. It's reasonably secure, but we have to burn a balance onto the cards and ship them around the world, which is a real pain.
We are considering a variation on this where we somehow recharge the card remotely. However, there is a 100,000 write cycle limit on the card EEPROM, which a customer could exceed in a few months with our current metering approach.
It would be simpler to just store the balance, encrypted with other info, directly on each customer's PC.
The obvious way to crack this method is to backup the customer PC when the balance is exhausted, then apply a recharge. When the balance is exhausted again, restore the PC from the backup, change the date, and reapply the first recharge - ad infinitum. Or just restore it back to when the balance was full.
In practice, we also have a PLC type device attached to the PC and we could view counters in its NVM (non-volatile RAM) to check alignment with the PC. I'm sure you could crack this if you had enough knowledge and skill, but I'll bet that's in considerably shorter supply than PC hacking expertise.
So, does any of this make any sense to anyone? Can you think of something similar? Can you point out glaring weaknesses?
We are considering a variation on this where we somehow recharge the card remotely. However, there is a 100,000 write cycle limit on the card EEPROM, which a customer could exceed in a few months with our current metering approach.
It would be simpler to just store the balance, encrypted with other info, directly on each customer's PC.
- For recharges, I'm wondering about employing something similar to the basic blockchain concept. What I'm envisaging is that a customer PC will generate a request for a recharge. The encrypted request token (file) will include the history of previous debits and recharges.
- The request token gets transferred to a remote server, via email or whatever transport medium is available.
- The remote server matches the packaged history against a customer register. If that's in alignment, the server stores the new info and generates an encrypted recharge token specific to that customer and that snapshot of their usage/recharge history.
- The customer installs the recharge token, which is matched against the original request and history.
The obvious way to crack this method is to backup the customer PC when the balance is exhausted, then apply a recharge. When the balance is exhausted again, restore the PC from the backup, change the date, and reapply the first recharge - ad infinitum. Or just restore it back to when the balance was full.
In practice, we also have a PLC type device attached to the PC and we could view counters in its NVM (non-volatile RAM) to check alignment with the PC. I'm sure you could crack this if you had enough knowledge and skill, but I'll bet that's in considerably shorter supply than PC hacking expertise.
So, does any of this make any sense to anyone? Can you think of something similar? Can you point out glaring weaknesses?