首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NFC上传输数据的安全方法?

在NFC上传输数据的安全方法?
EN

Cryptography用户
提问于 2012-02-11 03:02:14
回答 1查看 4.7K关注 0票数 3

我目前正在编写一个支付系统,以接受从启用NFC的智能手机(BlackBerry 9900)到Windows (C#.NET)的支付详细信息。

我目前有两个与安全有关的问题:

  1. 什么是保护数据在NFC上传输的好方法?我正在考虑公钥加密,这样就可以在电话上使用公钥加密,然后由另一边的.NET使用私钥解密。
  2. 如何对数据进行安全保护,使数据不能被另一个阅读器复制,即另一个读取器冒充windows客户端并读取安全数据。然后,攻击者可以在以后的数据中将其回放到windows客户端,以支付费用。我在想,当电话点击客户端阅读器时,客户端将发送一个令牌,该令牌必须存在于从包含敏感数据的电话返回的数据中。我认为,也许每个事务请求都应该创建公钥和私钥。发送到电话以加密数据的公钥。也许这足以作为令牌,而且好像它不能被客户端解密一样,那么它就是一个无效的请求。

请注意,我根本没有密码学的经验。我的目标是实现一个在.NET 3.0和BlackBerry SDK7.0中都有现成库的解决方案。

EN

回答 1

Cryptography用户

发布于 2012-02-11 13:33:45

这里的近场通信没有什么特别之处--就像任何不安全的传输介质一样,它们可以被丢弃(外部天线的距离可达几米)。

由于距离限制,如果您(人工操作员)确信您的设备正在与正确的阅读器通信,则无法对中间人进行攻击,但也存在中继攻击(您的黑莓与读取器通信,后者将数据转发给另一个与真正的读取器通信的设备),这也可能包括重放问题。

我建议不要构建新的协议(特别是如果您对密码学还不熟悉),而是重用现有的、众所周知的协议。在这种情况下,通常的TLS (传输层安全)协议似乎非常合适,如果您可以为您的“服务器”提供保密的私钥,并且其相应的公钥可以由某个证书代理机构认证,其密钥(或某个链的根密钥)将为“客户”所知。

在通常的SSL/TLS操作方式中,客户端和服务器协商一个共享秘密,然后从该秘密派生会话密钥。

(我认为让黑莓( Blackberry )成为客户端,让windows机器成为服务器会更容易一些,但它的工作方式也会相反。)

我对Blackberry编程(也不知道.NET)一无所知,但我认为两者都可以使用SSL/TLS库。

请注意,虽然这避免了重放攻击(键是根据每个会话单独创建的,以后不会起作用),但这并不能真正帮助防止中继攻击--所以请确保只向您信任的卖家发送您的支付详细信息。

票数 6
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/1838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档