Android WifiP2pManager加密/安全

时间:2015-02-25 17:06:41

标签: android encryption android-wifi wifi-direct wifimanager

我已经构建了一个基本应用程序,可以使用应用程序向其他手机发送消息,而不需要WiFi AP,这要归功于WifiP2pManager类。

但是,我现在正试图保护通过应用程序传输的消息,我不确定如何最好地安全地执行此操作。

我想使用一种公钥加密形式,但由于该应用程序的设计是在不访问Internet的情况下运行,因此我不确定采用这种方法的最佳方法,因为在设备上需要共享密钥连接。

使用SSLSockets是否合适?如何使用它?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

WiFi P2P(直接)连接默认使用WPA2加密。连接的认证阶段使用WPS(必须由用户接受的推送对话框)并且交换密钥以设置WPA2。组成组后,您可以使用WifiP2pGroup.getPassphrase()获取加密密钥。

通信已经非常安全(假设设备连接成功而没有任何人使用连接建立),但如果您想确保一切都是防弹的,您可以在组所有者设备上设置辅助密钥并与之交换密钥。客户(组成后的第一件事)。并使用辅助密钥加密数据。

发送:finalMessage = EncryptUsingGroupKey(消息)
接收:finalMessage = DecryptUsingGroupKey(消息)

'finalMessage'也将通过WiFi P2P使用WPA2密码加密/解密。

对于内置完整性的加密/解密,我建议使用Facebook Conceal。它使Android上的加密非常容易和快速。它的主要目的是流式传输更大的文件(getCipherOutputStream和getCipherInputStream),但您可以使用加密/解密函数对较小的内容进行快速加密。但是,您需要修改基本KeyChain以使用特定键,而不是每次都生成一个随机键。

关于SSLSockets,你真的不需要它们;基本的Java套接字应该可以解决问题。