我有一个(大学)项目,我基本上用Android设备写和读NFC标签中的文本,以便将余额存储在卡中(例如,可以在自助餐厅使用)。
现在,我正在使用NTAG213编写下面的代码:
ndef.connect();
NdefRecord mimeRecord = NdefRecord.createMime("text/plain", messageEncrypted.getBytes(Charset.forName("US-ASCII")));
ndef.writeNdefMessage(new NdefMessage(mimeRecord));
ndef.close();
正如您所注意到的,我正在使用应用程序级加密来加密消息(消息加密
),然后再将其写入标签(AES-256加密与'com.scottyab: AESCrypt: 0.0.1'库-使用一个非常大的密码密钥,该密钥也使用标签UID作为其中的一部分)。
到目前为止一切顺利 - 只有我能理解标签上的数据。
在我的研究中,我发现当涉及到安全Ultralight C时
问题1)使用应用程序级加密时,为什么(是吗?)MIFARE Ultralight C比NTAG213更安全吗?
问题2)我很确定我可以使用AES加密来保证安全性,但我不希望人们(除了我)弄乱存储的数据(格式化标签或在那里写入信息)。我认为防止这种情况的唯一方法(如果我错了,请纠正我)是为标签设置密码。但是,NTAG213和Ultralight C都只有32位密码。它足够好吗?有没有另一种方法阻止某人(除了我)写数据?
问题3)我可以在这些标签上使用哪些其他安全措施来加强安全性(标签和应用层)?
问题4)当您比较标签安全性(MIFARE DESFire
问题5)我看到一堆其他技术(MIFARE DESFire,ICODE SLIX,英飞凌Cipurse)更安全,这让我想知道我正在使用的技术(NTAG213或Ultralight C)是否足以存储某人的余额。您会(这是个人意见)说具有应用程序级加密和 32 位密码的 NTAG213 足以满足此类应用程序的需求吗?有人需要多长时间才能真正破坏其安全性?
我想你的问题太宽泛了,并不是对于所有子问题,SO的这一部分是最合适的。
通过专注于加密强度,你会错过一些东西:如果令牌的低级别安全性很容易被攻击,那么没有人需要破解你的密钥。
首先,“更安全”取决于您的实际保护目标是什么。既然您想在卡上存储余额(现金!),您可能希望(至少)朝着以下目标进行保护:
此外,您可能也不想信任运营商(接受付款和执行充值的人)。在一个系统中,一组运营商只执行充值,另一组只执行支付交易,后一组可能不应该被允许“创造”金钱。特别是,你必须明确你是否完全信任你在现场使用的(Android)设备来执行这些操作,以及你是否信任运营商(例如,他们不会对这些设备进行任何攻击)。
此外,您可能需要考虑隐私方面(例如,如果余额是可自由阅读的,如果用户是可识别的,等等)
因此,让我们看看您的“应用程序级加密”在安全性方面增加了什么:
因此,让我们看看NTAG213将具有哪些其他功能来保护您的系统:
MIFARE Ultralight C将添加以下内容:
见上文。这可能不是真的。
密码/身份验证密钥可能会有所帮助,但请注意由于在这些标签平台上身份验证与读/写分离而造成的限制。
这不是真的。NTAG213 具有 32 位密码。MIFARE Ultralight C使用更复杂的相互2K-3DES身份验证机制和112位密钥。
您特定的系统在许多方面都存在缺陷。在我看来,MIFARE Ultralight/NTAG203/NTAG21x绝对不是在卡上存储现金的离线系统的好选择。
MIFARE Ultralight C可能适合一些预防措施。我肯定不会在无人值守的情况下使用副歌,我可能会使用在线系统跟踪平衡和监控不一致。
任何使用对称密码学并将密码密钥存储在终端中的东西都肯定需要对恶意操作员采取预防措施。操作员(有一些知识)从应用程序中提取密钥并生成自己的钱可能相当容易。
主要内容:创建项目,在Eclipse中导入项目,运行项目从这篇文章开始,我们使用Spring-AOP框架编写实际的AOP应用程序。在开始使用Spring-WS框架编写第一个示例之前,必须确保已经按照Spring AOP安装配置教程中的说明正确设置了Spring-AOP开发运行环境。 现在我们继续来编写一个简单的基于控制台的Spring AOP应用程序,它用于演示AOP的概念。 先来看看要创建的项目的目录结构 - 创建项目 打开命令控制台,进入目录并执行
问题内容: 我正在设计一个简单的基于Web的应用程序。我是这个基于Web的领域的新手,我需要您提供有关设计模式的建议,例如应如何在Servlet之间分配职责,创建新Servlet的条件等。 实际上,我主页上的实体很少,而与每个实体相对应,我们几乎没有添加,编辑和删除等选项。之前,我为每个选项使用一个Servlet,例如Servlet1用于添加实体1,Servlet2用于编辑实体1,依此类推,这样我
我有一个Sencha应用程序,用于创建iOS和Android应用程序。我试过cordova,但不太明白为什么人们喜欢phonegap而不是cordova。需要启蒙
商家支付回调接口 url POST http://callback_url 回调参数说明 参数 类型 描述 uid string 百度用户ID order_id string 百度网盘订单号 third_order_id string 业务方订单号 pay_no string 支付流水号 pay_time int 支付时间 ts int 当前时间戳 sign string 签名参数(对以上参数按照
同公众号支付
说明 支付宝小程序支付交易SDK。 官方文档:https://opendocs.alipay.com/open/204/105465/ 类 请求参数类 APP支付参数 类名:\Yurun\PaySDK\AlipayApp\MiniApp\Params\Pay\Request 属性 名称 类型 说明 $method string 接口名称 $notify_url string 支付宝服务器主动通知商