IOS逆向_密码学:单向散列函数、数字签名、证书

1、单向散列函数;

2、数字签名;

3、证书;


1、单向散列函数;

        1.1 概念:又称单向Hash函数、杂凑函数,就是把任意长的输入消息串变化成固定长的输出串且由输出串难以得到输入串的一种函数。这个输出串称为该消息的散列值。一般用于产生消息摘要,密钥加密等。

        1.2 常见的单向散列函数:

image

        1.3 特性:

            ① 根据任意长度的消息,计算出固定长度的散列值;

            ② 计算速度快,能快速计算出散列值;

            ③ 消息不同,散列值也不同;

            ④ 具备单向性。


2、数字签名;

        2.1 概念:又称公钥数字签名,是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称秘钥加密技术与数字摘要(单向散列函数)技术的应用。 

        2.2 数字签名与公钥密码:

image

        2.3 数字签名的作用:保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。

            ① 防冒充(伪造)。私有密钥只有签名者自己知道,所以其他人不可能构造出正确的。 

            ② 可鉴别身份。由于传统的手工签名一般是双方直接见面的,身份自可一清二楚。在网络环境中,接收方必须能够鉴别发送方所宣称的身份。 

            ③ 防篡改(防破坏信息的完整性)。对于传统的手工签字,假如要签署一份200页的合同,是仅仅在合同末尾签名呢?还是对每一页都签名?如果仅在合同末尾签名,对方会不偷换其中的几页? 而对于数字签名,签名与原有文件已经形成了一个混合的整体数据,不可能被篡改,从而保证了数据的完整性。  

            ④ 防重放。如在日常生活中,A向B借了钱,同时写了一张借条给B,当A还钱的候,肯定要向B索回他写的借条撕毁,不然,恐怕他会再次用借条要求A还钱。在数字名中,如果采用了对签名报文添加流水号、时间戳等技术,可以防止重放攻击。 

            ⑤ 防抵赖。如前所述,数字签名可以鉴别身份,不可能冒充伪造,那么,只要保存好签名的报文,就好似保存好了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。那如果接收者确已收到对方的签名报文,却抵赖没有收到呢? 要预防接收者的抵赖。在数字签名体制中,要求接收者返回一个自己签名的表示收到的报文,给对方或者第三方或者引入第三方机制。如此操作,双方均不可抵赖。 

            ⑥ 机密性(保密性)。有了机密性保证,截收攻击也就失效了。手工签字的文件(如同文本)是不具备保密性的,文件一旦丢失,其中的信息就极可能泄露。数字签名可以加密要签名的消息,当然,如果签名的报名不要求机密性,也可以不用加密。

        2.4 数字签名无法解决的问题:

image

           PS: 如何验证公钥的合法性? 引出证书的概念。


3、证书;

        3.1 概念:Public-key Certificate,PKC; 公钥证书,通常简称为证书,是一种数字签名的声明,它将公钥的值绑定到持有对应私钥的个人、设备或服务的身份。大多数普通用途的证书基于 X.509v3 证书标准。

        3.2 CA: Certificate Authority,CA; CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织;

            ① 有国际性组织、政府设立的组织;

            ② 有通过提供认证服务来盈利的企业;

            ③ 个人也可以成立认证机构。

        3.3 证书的使用:

image

        3.4 证书的注册和下载:

image

(PS : 其中有部分章节是从前人的文章中搬运过来整理而成,这些文章里已经对部分知识点解释的很清楚明了了,我也没有更好的表达方式,所以站在巨人的肩膀上,我只是一个整理者加了部分自己的理解。)

你可能感兴趣的:(IOS逆向_密码学:单向散列函数、数字签名、证书)