不少果粉对 Apple 钟情,与它的纯净、安全有很大关系,我们发现在苹果的设备上下载应用时,不会出现触发下载一系列垃圾软件的情况,而且用户可以明确 App 的来源——通过官方商店 AppStore 购买、企业证书安装还是 TestFlight 下载。为了防止盗版软禁、病毒入侵、静默安装以及屏蔽其它不可控因素,并确保每一个安装到 iOS 设备上的应用都是被官方允许的,苹果设定了一套 应用签名机制 。
数字签名
数字签名,又称公钥数字签名,是只有信息的发送者才能产生的别人无法伪造的一段数字串,发送者对要发送的数据打上签名标记,表示这份经过认证,未被篡改的。
数据传输
下面模拟一下 数据传输 的过程:
假如发送方直接将原始数据明文传输给接收方时,数据非常不安全,极易被篡改;
为了提升安全性并同时简化明文,可以对数据进行 哈希算法 处理,得到原始数据的 摘要 ,然后将摘要发送给接收方。但假如哈希算法被泄漏,依然存在数据被篡改的风险;
引入 非对称加密算法 ,对一份数据,用 哈希算法 计算出摘要后,再用 RSA 的 私钥 加密摘要,得到原始数据的数字签名, 发送方将数字签名与原始数据一起发送给接收方 。
我们将 原始数据进行哈希加密、非对称加密后的数据 称为 数字签名 。
接收方拿到数据后,需要进行签名验证,来确保数据传输过程中,未被篡改。
数字签名验证
签名验证的具体步骤如下:
接收方拿到数据后,通过同样的 哈希加密处理原始数据 ,得到哈希值(摘要);
再利用 非对称将数字签名中的校验哈希值(摘要)解密 出来;