【发布时间】:2015-03-30 12:05:19
【问题描述】:
我有一个 JavaCard 小程序在智能手机中的金雅拓 SIM 卡上运行。我想创建一个在指定日期和时间有效的电子钱包。
我知道使用经典智能卡是不可能的,因为没有电池,智能卡内部没有时钟。但是,使用 SIM 卡可能会:当 SIM 卡连接到网络时,它必须能够访问网络时间(不是本地系统时间,用户可以更改),并且最后一个已知的网络时间值可能是可能存储在 SIM 卡上的某个位置。
有什么方法可以安全地从我的小程序访问最后一次已知的网络时间? (我不信任手机中安装的任何应用程序,因为它很容易被黑客入侵)
您认为我的问题还有其他解决方案吗?
编辑
我没有提到我考虑这个的原因:我需要在没有互联网连接的情况下解决这个问题,因为我的客户应该在他们的手机没有互联网连接的情况下使用我的电子钱包.他们需要在没有信号的地铁中使用它,其中一些人根本不支付互联网连接费用。所以我的应用程序必须能够找出离线时间。
编辑 2
在 Android 手机上,有一个选项:
这意味着有一些独立于用户的时间来源。问题是,是否可以从 SIM 卡上的 JavaCard 小程序以某种安全方式访问它。 (或者如果在没有连接的情况下可以访问最后一个已知值)
【问题讨论】:
-
看起来很有趣。您不应该自己编写移动应用程序吗?您不能以每次从服务器接收加密代码并将其发送到 SIM 卡的方式编写您的移动应用程序。 SIM可以验证它是否是一个有效的代码?如果代码错误,它会拒绝执行您的小程序。
-
@Abraham 问题是您的解决方案需要互联网连接。通过互联网连接很容易 - 服务器可以轻松发送签名时间戳。请参阅编辑...
-
好的。您可以使用手机应用程序发送和接收短信,对吗?因此,您可以简单地向同一部手机发送一条空短信(您可以要求用户在安装过程中输入他的号码)。默认情况下,运营商会将网络时间和传入的 SMS-s 发送到您的手机。这样就可以同步 SIM 小程序时间了。假设每个人通常每天使用您的小程序 2 次,因此如果您每 10 个会话执行 1 次同步过程,您大约每 5 天同步一次时间。请注意,新手机会隐藏此网络时间(它们会替换为手机时间)......
-
......但是你可以在旧手机中看到它,在收到短信的末尾。只需更改手机的时间并向自己发送一条短信,然后看看它的结尾。 (我用诺基亚 1100 试过)
-
@TheGoodUser 您无法通过使用任何 API 以及仅由 TAR 指定的用于您的小程序的信封获得该值。因此,任何专有信封必须由网络准备并发送是强制性的到指定的小程序有时间信息。Java小程序可以使用ussd触发网络发送信封。
标签: android time gsm javacard sim-card