一,验证服务器通信。
二,HTTP认证。
手机银行应用有两种认证模式:标准验证与快速验证。标准验证只是提示用户输入用户名与密码,而快速验证则让用户注册设备,然后使用PIN进行验证,每次验证时无需用户名和密码。要想确保快速认证的安全性,如果用户选择在给定的认证请求中注册设备,那么服务器响应就需要包含一个额外的属性,即用户的证书。应用会存储这个证书,并在随后启动时检查,从而确定应该显示哪个认证视图。
1,HTTPBasic,HTTP Digest与NTLM认证。
2,客户端证书认证。
三, 使用哈希与加密确保消息的完整性。
既然应用已经验证在与正确的服务器通信并已被成功认证,那么用户就可以开始发出服务请求了。应用必须确保传输的数据在传输过程中是安全且被修改的。本节将会介绍能满足这个需求的技术,包括密码散列,消息认证码以及加密移除。
1,哈希,对于给定的数据块,密码哈希与接要会生成固定大小的位序列。这些哈希值可以简化数据块的比较与排序。哈希的常见使用场景包括追踪文件变更,下载校验和,数据混淆以及进行数据库存储,以及验证请求数据的完整性等。
2,消息认证码。消息认证码(MAC)是这样一种机制:可以检测到负载是否被修改并验证其真实性。实现方式是对进来的请求数据(或是预先设定好的请求数据的子集)生成哈希值,然后将哈希值与随负载一同发送的预先计算好的MAC进行对比。MAC类似于之前介绍的哈希函数,但却更加安全,这是因为它们总是与一个密钥配对。
1)对于开发者来说,将各种处理细节输出到日志中是种很常见的做法,不过绝不应改将生成的密钥打印到控制台,日志文件可以非常容易地从设备上获取,如果被攻击发现,那就是非常严重的安全问题了。
3,加密。
四,在设备上安全地存储认证信息。
既然能安全地与服务层进行通信,那就需要在设备上安全地存储信息。Apple提供了Keychain Services API来完成这项工作。
参考资料:《iOS网络高级编程-iPhone和iPad的企业应用开发》