As you know there occured some successful attacks again mifare classic tags (manufactured by NXP) and therefore NXP recommends to replace these tags with some newer products like mifare pro desfire and others.
My question is why don't we encrypt data (with AES, ...) and then translate and store this data to the mifare classic's block, with present 32bit micro controllers it doesn't need so calculation time and there will be a good saving in cost . Why don't companies implement this approach ?
tnx all answers. at first my mind from 32 bit mcu was not tag's built in processor,i mean first we separately encrypt plaintext to ciphertext in the mcu based on AES. I have an extra scenario, lets find it's bugs:
- as you know each tag has a Unique ID(UID) & we define a key for transacting data between tag & reader/writer chip that controlled by the mcu( PCD chip).
- when tag entered to PCD's operation field,pcd read tag's UID
- mcu make ENC_KEY with irregular combination of AES_INIT_KEY & uid (each tag will has seprate ENC_KEY)
- mcu calculate plaintext'hash with its hash function(TEXT_HASH).
- mcu encrypt plaintext based on AES with ENC_KEY(it makes CIPH_TEXT).
- mcu transfer & stored CIPH_TEXT & TEXT_HASH to the tag's (mifare classic) via mifare algorithm .
then there are not problems mentioned in answer1, each tag's has unique key & same credit in different has not same CIPH_TEXT
in the second part:
mcu read tag's uid,make ENC_KEY with tag's uid & AES_INIT_KEY ,read CIPH_TEXT & TEXT_HASH with crypto1 & its key from tag,decrypt CIPH_TEXT & TEXT_HASH with ENC_KEY & checked plaintext integrity with its hash value.
i accepted Maarten Bodewes's answer about price case .(tnx a lot) I'm really concerned to read this approach's baugs WBR