二维码安全

Ric*_*ing 4 security qr-code

我一直在阅读很多关于QR码以及代码本身如何导致严重安全风险的内容.但有一点我没有遇到过以下情况.

在下面的场景中:我有一个QR代码,显示我的一些数据可以说: - 名称 - 地址 - 我可以做的事情列表

我扫描我的代码以查看其内容,添加一些stuf到我允许做的事情列表并重新打印QR码.第二天,我来上班扫描我的代码,我被允许做我添加到代码中的额外的东西.

我的问题是:我怎样才能阻止这种情况的发生.请注意,无法检查我的数据是否与DataBase数据一致.

更多信息:

我正在使用phonegap与Sencha Touch 2一起创建我的QR码阅读器.
它是专为Android 4.0设备设计的Android应用程序.
QR码每年提供一次.
如果有人会扫描他去年的二维码,那就不行了.
请注意:理论上如果他改变了他能够进入的代码的日期,这正是我试图阻止的.
一些员工可以访问读取代码的应用程序.
该应用程序没有任何方法来验证QR码上的数据,因此它必须是仅使用QR码上的数据的东西.

Dav*_*rtz 11

使用私钥对QR代码数据进行签名.读者需要公钥来验证QR码,但公钥不需要保密.

如果使用ECDSA Secp256K1密钥,签名将仅向QR代码数据添加大约68个字节.

在QR码中也包括发行日期.读者需要一个本地时钟来检查QR码是否太旧.如果读卡器没有时钟,您至少可以跟踪您见过的最新有效代码.在该日期之前一年多发布的任何代码肯定无效.

BouncyCastle和OpenSSL都包含您需要的代码实现.

如果代码阅读器/验证器包含生成伪QR码所需的所有信息,那么您可以使用HMAC而不是ECDSA.这更简单,HMAC可以只有16字节,仍然可以完成这项工作.


Sea*_*wen 6

如果您意识到QR码只是编码纯文本,这就更容易推理了.如果你的方案是不安全的,如果你只是处理文本文件或印在墙上的文字 - 二维码不会改变它.QR码中没有安全机制.

扭转它 - 在QR码之外的任何可用于保护您的方案的方法都可以在这里应用.您正在寻找的是数字签名,用于证明SSL证书有效并且电子邮件来自声明的发件人的相同类型的公钥/私钥方案.您的用户需要提供的数据必须由您签名才能知道他们没有篡改过.

您可以在QR码中放置任何您想要的内容,包括代表签名文档的Base-64编码字节.没有读者会知道如何处理它; 你必须编写一个自定义应用程序,扫描然后知道解码它并采取相应的行动.

我认为设想一个涉及将用户引导到您安全控制的网站的方案要容易得多.