移动应用的流行迎程度与日俱增,越来越多的交易开始通过移动设备完成,安全的重要性日益凸显。在 QCon New York 2016 活动名为“ 现代化iOS应用的安全性 ”的演讲中,Dan Guido详细探讨了有关iOS的安全问题。
Guido首先介绍了iOS应用程序中现已采用的安全机制。iOS的安全模型包含下延至基于硬件和具体设备的加密在内的多层面安全通信机制:
虽然这些机制为应用提供了安全的运行环境,Guido进一步展示了一系列需要引起我们重视的威胁。
传输层安全技术并非所有网络连接必须使用的,如果不进行相应的数据加密和证书检查,信息很容易受到中间人攻击。通过对网络连接进行配置即可激活必要的安全机制,或者更简单的做法可以直接在应用中嵌入诸如TrustKit这样的库,借此在后台处理安全事宜。
数据保护机制非常强大,以至于最近在Apple和FBI之间造成了不小的纷争。如果使用内置的硬件密钥对数据进行加密,这些数据将无法在设备之外解密。因此敏感数据应始终使用密码和设备ID进行加密。然而开发者依然需要尽量避免数据泄露。有很多应用和工具会尝试从安全性不够高的位置,例如剪贴板、应用偏好设置,以及Cookie中查找有用的数据。另外敏感数据应尽量维持最小化痕迹,开发者应当避免备份或同步此类数据,应当从背景屏幕截图和日志中排除敏感数据,键盘缓存也需要及时停用。
根据Guido的介绍,遵守相关准则可进一步提高应用安全性,但还有一个问题是开发者不容忽视的:越狱。设备一旦越狱,无论用户主动越狱或在不知情的情况下“被”越狱,上述所有安全机制都会失去作用。如果开发者需要更高的安全性,应当确保设备未被越狱:
最后Guido通过一些事实暗示大家,LLVM只能生成Bitcode代码而非机器代码。Apple使用这种技术的目的在于改进或优化为不同平台提供代码的方法,开发者可以借助这一概念增添IDE中已经具备的自动化的安全加固机制。但这一过程中也可以使用其他一些工具,例如 MAST 。
请注意,Qcon大会结束后一周内,大部分演讲将免费发布至InfoQ。
查看英文原文: Dan Guido: Modern iOS Application Security