ped*_*lho 2 security encryption payment nfc mifare
我有一个(大学)项目,我基本上使用Android设备从NFC标签中写入和读取文本,以便将余额存储在卡中(例如,可以在自助餐厅使用)。
现在,我正在使用NTAG213执行以下代码:
ndef.connect();
NdefRecord mimeRecord = NdefRecord.createMime("text/plain", messageEncrypted.getBytes(Charset.forName("US-ASCII")));
ndef.writeNdefMessage(new NdefMessage(mimeRecord));
ndef.close();
Run Code Online (Sandbox Code Playgroud)
如您messageEncrypted
所见,我正在使用应用程序级加密对消息()进行加密,然后再将其写入标签(使用'com.scottyab:aescrypt:0.0.1'库进行AES-256加密-具有非常大的密码密钥,也使用标签UID作为其一部分)。
到目前为止一切顺利-只有我能理解标签上的数据。
在研究中,我发现涉及安全性Ultralight C> NTAG213。
问题1)使用应用程序级加密时,为什么(是?)MIFARE Ultralight C比NTAG213更安全?
问题2)我很确定我可以使用AES加密来保证安全性,但是我不希望人们(除了我之外)弄乱存储的数据(在其中格式化标签或写入信息)。我看到防止这种情况的唯一方法(如果我错了,请纠正我)是为标签设置密码。但是,NTAG213和Ultralight C都只有32位密码。够好吗?还有另一种方法可以防止某人(除我以外)写数据吗?
问题3)我可以在此类标签上使用其他哪些安全措施来加强安全性(标签和应用程序层)?
问题4)当您比较标签安全性(MIFARE DESFire> Ultralight> NTAG213> MIFARE Classic)时,真正比较的是什么?容易破解(本机标签)加密还是容易在标签上存储(任何东西)未经许可?
问题5)我看到很多其他技术(MIFARE DESFire,ICODE SLIX,英飞凌Cipurse)更安全,这使我想知道我使用的技术(NTAG213或Ultralight C)是否足以存储某人的平衡。您是否愿意(那是个人观点)说具有应用程序级加密和32位密码的NTAG213足以胜任此类应用程序?某人要花多长时间才能真正破坏其安全性?
首先,“更安全”取决于您的实际保护目标是什么。由于您想在卡上存储余额(现金!),因此您可能希望(至少)保护以下目标:
另外,您可能也不想信任运营商(接受付款并进行充值的人)。在一个系统中,一组操作员仅执行充值操作,而另一组操作员仅执行支付交易,可能不应该允许后一组操作员“创造”金钱。特别是,您必须非常清楚自己是否完全信任在现场使用的(Android)设备来执行这些操作,以及是否信任操作员(例如,他们不会对这些设备进行任何攻击)。
此外,您可能需要考虑隐私方面的问题(例如,余额可以自由阅读,用户可识别等)。
因此,让我们看一下“应用程序级别加密”在安全性方面添加的内容:
因此,让我们看看NTAG213可以具有哪些其他功能来保护系统安全:
MIFARE Ultralight C将添加以下内容:
往上看。这可能是不正确的。
密码/身份验证密钥可能会有所帮助,但请注意由于身份验证与这些标签平台上的读/写分离而导致的限制。
这不是真的。NTAG213具有32位密码。MIFARE Ultralight C使用具有112位密钥的更复杂的双向2K-3DES身份验证机制。
您特定的系统在很多方面都有缺陷。在我看来,对于将现金存储在卡上的离线系统,MIFARE Ultralight / NTAG203 / NTAG21x绝对不是一个不错的选择。
MIFARE Ultralight C在某些预防措施下可能适用。我绝对不会在无人值守的情况下使用它,并且我可能会使用一个在线系统来跟踪余额并监视不一致性。
任何使用对称密码并将密码密钥存储在终端中的事物都肯定需要采取预防措施,以防止恶意操作者。对于操作员(了解一些知识)来说,从应用程序中提取密钥并产生自己的钱可能相当容易。
归档时间: |
|
查看次数: |
573 次 |
最近记录: |