安全问题,标题与https中的HMAC,还是两者兼而有之?

jus*_*ser 2 iphone https android hmac

我正在设置一个Android应用程序和iPhone应用程序将连接的服务器.我想知道什么类型的安全性更安全地发送/请求数据?

目前,我生成了一个HMAC-SHA256,其内容是我在标头中发送给服务器以验证其完整性.但我想知道使用https连接是否更安全?如果我使用https,我可以跳过HMAC吗?

我想知道安全性的差异,哪个更安全?

而且,如果我使用其中任何一个是更好的使用两个额外的安全层?

use*_*701 6

快速回答您的问题:SSL如果使用得当,应该比HMAC提供更多的安全保障.因此,通常可以使用SSL来消除对HMAC的需求.

HMAC提供完整性和真实性.假设客户端和服务器使用预共享对称密钥来计算HMAC,一方可以确定另一端的设备具有密钥.这提供了服务器和客户端的真实性.

这张照片中缺少的东西(只有HMAC)是机密性.服务器和客户端之间交换数据的性质是什么?在通信过程中是否有任何敏感的用户数据被传输,您不希望中间人看到?如果是这样,那么您可能想要使用SSL.

SSL为您提供机密性(除其他外).这意味着您可以确定您具有安全的端到端连接,并且没有中间人可以查看服务器和客户端之间正在交换的数据.但是,常见的SSL使用不包括客户端计算机身份验证.例如,当您访问他们的https网页时,您的网络浏览器会检查Paypal的真实性.但Paypal服务器不会要求您的浏览器从您身边发送任何证书.

由于您将SSL与HMAC进行比较,我假设您关心双方的真实性.因此,将SSL与服务器和客户端身份验证结合使用.这基本上意味着他们都会要求彼此的证书并检查证书的不同方面(即通用名称,证书颁发者等).您可以创建自己的证书颁发者来签署这些证书.

如果您正在为AppStore或Google Play制作用户只需安装并开始使用的应用程序,您可能需要考虑如何生成,签署或签署客户端证书.您可以通过采用类似于GitHub的模型来消除对客户端证书(和签名)的需求,其中用户手动通知服务器可信公钥以验证设备.但你可能会看到这个过程可能不是用户友好的.