行业动态
如何防止中间人拦截,检查数据是否会被篡改?
2021-03-14

数字签名

数字签名(也称为公钥数字签名,电子签名等)类似于书面在纸上的普通物理签名,但是使用公钥加密领域的技术来实现,以识别数字信息。 。一组数字签名通常定义两个互补操作,一个用于签名,另一个用于验证。

数字签名是只能由邮件的发件人生成的数字字符串,并且此数字字符串也是发件人发送的邮件的真实性的有效证明。

数字签名技术是使用发送者的私钥对摘要信息进行加密ios开发数字签名代码,然后将其与原始文本一起发送给接收者。接收者只能使用发送者的公钥来解密加密的摘要信息,然后使用哈希函数为接收到的原始文本生成摘要信息,并将其与解密的摘要信息进行比较。如果它们相同,则表示接收到的信息是完整的,并且在传输过程中没有被修改。否则,则意味着信息已被修改,因此数字签名可以验证信息的完整性。

例如:移动客户端将数据发送到服务器

ios开发数字签名代码

ios开发数字签名代码

客户端发送数据

如果您什么都不做,则可能会受到中间一个男人的攻击。我不会说后果有多严重。那么我们如何防止中间人拦截或检查数据是否已被篡改?

直接使用RSA(RSA加密原理)进行加密不符合我们的需求。 RSA仅适用于加密小数据。我们知道可以通过哈希(哈希概述)来验证数据的完整性,并且可以验证数据是否执行哈希,并将哈希值和原始数据打包并发送到服务器。服务器对原始数据进行哈希处理,然后将获取的哈希值与客户端发送的哈希值进行比较。如果它们是一致的,则可以保证数据的有效性。但这会带来安全风险。如果中间人篡改了客户端发送的数据,当然也可以修改客户端发送的Hash值,因此此操作不可行。

这时,我们可以使用RSA保护哈希值。此时,客户端将发送原始数据和由RSA加密的数据的哈希值。

ios开发数字签名代码

ios开发数字签名代码

数字签名

服务器解密RSA加密的数据以获得原始数据的哈希值。然后,原始数据通过相同的哈希算法传递,并将获得的哈希值与解密的哈希值进行比较。如果它们是一致的,则可以保证数据的有效性。在整个过程中,如果解密后的Hash值与原始Hash值不一致,或者无法解密RSA数据,则表明该数据已被篡改。

ios开发数字签名代码

ios开发数字签名代码

3. jpg

现在,我们已经解决了服务器接收客户端发送的数据的有效性。这时,我们说原始数据哈希值经过RSA加密后的数据是原始数据的数字签名。数字签名的一个简单解释是非对称地加密原始数据的哈希值。

代码签名

代码签名是一种对可执行文件或脚本进行数字签名的措施,以标识软件的来源和软件开发人员的真实身份,并在签名后确认软件没有被修改或损坏。与原始数字签名相同,不同之处在于签名的数据是代码。

Apple还使用代码签名来确保IOS上安装的每个APP都经过Apple正式批准,以防止盗版软件,病毒入侵,无提示安装等。如果要进行验证,最简单的方法是生成一个通过苹果官方网站进行非对称加密的一对公钥和私钥。在IOS系统中内置了与服务器相对应的公钥。私钥存储在Apple后端中,我们将其发送到APP。当我到达App Store时,Apple随后使用私钥对APP数据进行了签名。 IOS系统下载了APP后,便用公钥验证了签名。如果签名正确,则必须由Apple后端对APP进行身份验证,并且尚未对其进行修改。或损坏。

ios开发数字签名代码

ios开发数字签名代码

代码签名

整个过程非常简单,这可以确保Apple所安装的每个APP都经过Apple的正式批准。对于大多数普通用户而言,这样的数字签名解决了隐藏的安全性问题,但实际上IOS设备安装APP不仅是App Store渠道,例如,对于我们IOS er而言,我们正在开发APP仍在在真实机器上调试。当然,苹果公司还开放了企业内部的分销渠道。目前,无法通过简单的代码签名来满足这些需求。

为了使Apple满足这些要求,IOS签名的复杂性也开始增加,因此出现了双层代码签名。先决条件,我们都知道描述文件,但是描述文件到底做了什么


393701618