Swift添加跨平台加密组件Crypto

现在程序语言Swift多了一个用于加密的开源项目Swift Crypto,Swift Crypto是一个新的组件,让Swift开发社群也能用到Apple CryptoKit的功能,开发人员可以应用API进行一系列通用的加密操作。Swift Crypto是一个跨平台的加密解决方案,在所有Swift支持的平台都可以使用。

Swift Crypto加密组件由两部分组成,在Apple的平台上,Swift Crypto依循Apple CryptoKit加密框架,提供Apple CryptoKit的API,而在其他平台上,Swift Crypto则是以BoringSSL函数库为基础重新实例,目标是提供一组简单易于使用的API,让开发者用于开发跨平台程序代码。

官方提到,Swift Crypto需要考量复杂的硬件实例问题,虽然Apple CryptoKit是由公开的加密原语实例,但是其API子集使用Apple的Secure Enclave处理器来存储并且计算密钥信息,但Apple的Secure Enclave处理器无法用于非Apple的硬件,因此Swift Crypto不会提供部分相关API。

而且为了让开发人员在非Apple平台上,方便地更新Swift Crypto,开发团队利用Swift组件管理器发布Swift Crypto,开发者可以简单快速更新组件,以获取安全修复程序和API更新。官方强调,从Swift Crypto获得的结果,与从Apple CryptoKit获得的结果相同,相同输入对Swift Crypto和Apple CryptoKit的同一API,将会产生语义上相同的结果,官方发布了测试组件,开发者可用来进行验证。

不过,在部分情况下,开发人员需要进行额外的工作,桥接Apple CryptoKit验证与BoringSSL验证不相符的情况,甚至在特定的案例,部分算法有重新实例的需要,官方提到,这些工作将是Swift Crypto项目接下来努力的方向,而且也会尽力在Swift Crypto中提供Apple CryptoKit的所有功能。

Swift Crypto项目的目标是提供跨平台的解决方案,以便在更广泛的平台上使用Apple CryptoKit的API,因此Swift Crypto的发展会跟随Apple CryptoKit的发展状况,也由于Swift Crypto是一个开源项目,因此贡献者有一定程度的自由可以发出API提案,并且根据这些API影响的范围,Apple会考虑在Apple CryptoKit中实例。

除了需要用到专有硬件的API之外,Apple CryptoKit实例的API都会被Swift Crypto采用,不可用的部分会以Swift Crypto为基础实例,官方会通过共享的测试组件,确保Swift Crypto和Apple CryptoKit完全兼容。而官方也提到,Swift Crypto的重点不在于提供所有加密原语,因为这会使得开发者选择困难。