我目前有一个通过蓝牙连接控制锁定机制的应用程序。我面临的问题是如何加密我的应用程序和锁中发现的BLE接收器之间的通信,以便锁定操作只响应应用程序(例如,没有欺骗)
如果有人能够检测到信号,我怎样才能阻止某人嘲笑同一个包并打开锁?这是非对称加密解决方案的一个很好的用例吗?
重要提示:在应用程序内付款时,锁定会被打开和关闭 - 我主要担心的是通过欺骗包裹或其他方式阻止那些没有付款的人使用锁定
答案 0 :(得分:1)
除了拦截之外你还需要担心的是有人反编译应用程序并获取密钥来生成解锁所需的任何加密代码。解决此问题的一种方法是使用服务器端解决方案来生成解锁代码。
应用程序可以将注册ID和锁定设备通过SSL传输时间戳传递给服务器。然后,服务器将验证注册ID,并且如果有效,则基于时间戳的散列和服务器与解锁设备之间的共享秘密返回有限时间解锁代码。这样,应用程序代码中不存储任何秘密,因此反编译它是没有用的。此外,由于解锁代码仅在几秒钟内有效,因此拦截也没有用。