从SSL安全传输到iOS证书安全体系1

从SSL安全传输到iOS证书安全体系

安全是计算机网络科学永恒的话题,随着计算机科学的发展数据安全将会越来越重要。

人们都是通过网络进行数据的交互传输,如果数据被别人在传输过程中截取,进行篡改将会造成严重的后果,给人们的生活带来影响。

数据的加密是保证不合法的人获得的数据不可读,或者要想解密也很难或者不可能,而合法的人通过约定的方式就能获得可读的传输信息。

下面我们通过一个例子来把数据传输加密进行分解:

情景1:A要写一封信给B,A写的信是可读的它并没有对信的内容进行任何的修改,B得到A的信之后不经过任何处理就可以阅读。如果我们生活在一个决定诚信安全的社会环境的话,没有必要做任何的处理。B拿到的信就是A想要给B的信。

我们把情景1进行分解:A用户,写的信Email,传输过程transport,接收者B,在这个情景中Email是要保护的对象,传输过程是一个复杂的过程,如果有不良用户想得到信,进行串改,在发给B。这样B得到的信就不是A想要表达的真正信息。

如果我们想避免数据在传输过程中即使数据安全,和两端信息的真实信,就要对数据进行处理,A对数据进行加密处理处理,即使在传输过程中被截取也不能可读,B得到数据通过约定的解密方法解密数据,B还可以验证数据的完整行,和用户的是否是A发出的。

通过情景引伸出问题?

1.A如何证明自己就是A?

2.A如何证明信是A写的?

3.A如何加密数据?

4.A如何让数据保持完整性?

5.A和B之间的加密约定是什么?

6.A和B之间的公钥怎么交换?

7.B接受到信时,如何知道信没有被修改?

8.B怎么验证这份信就是A写的?

上面的问题就是今天的主题:

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。

下面我将通过图解SSL的方式对上面的问题进行一一解答。(note:讲解的主题是非对称加密,至于对称加密大家可以文度娘)

问题1.A如何证明自己就是A?

在现实生活中我们每个人都会有一个身份证,这个身份证上有身份证号码,家庭住址,出生年月等基本信息,还有就是发证机关。通过身份证我们就知道这个人。A通过身份证告诉别人我就是A。身份证是公信度比较高的机构签发,如果A的身份证不是公信度高的机构签发的,就相当于一个人拿着不是公安机关签发的身份证你会相信这个人就是A吗?这就引出了计算机加密中的一个关键词发证机构:(certification authority)CA。CA就相当于公信度比较高的机构,它可以签发证书。CA就相当于公安机关。

如果A想要去CA申请一个证书的话,A就要提供自己的相关信息,就像你想办理身份证,你要去提供你的照片出生年月家庭住址等信息,公安机关通过你提供的信息就会为你办理身份证,你的身份证上面就有你的基本信息和身份证好,身份证号就是公共机构管理身份证的唯一标识,并加上发证机关的信息,表示是由哪个机构发的证。A通过上传自己的信息到CA机构,CA机构同样的为你生成证书certificate。

你可以去公安机关拿你的身份证,但是A同样的可以去发证机关CA下载自己的证书,就像你去Apple的证书中心下载它为你创建的证书一样。CA同样的为你的证书进行签名,它是用它自己的自签名证书(root certification根证书)为你的证书签名,表示是又它发证的。

CA是如何使用root certification为你的证书签名的了(一般是这样的通过hash算法得到你的证书的hash码,如MD5算法,不同的内容的hash码不一样,这就保证了你的证书的完整性),得到了证书的hash码之后,CA通过它的root certification的private key(私有钥匙)通过一定的加密算法把证书的hash码加密。你可以通过它的公钥解密它用私钥加密的文件。这样就有了CA为你生成的证书certification-A,证书的hash码的加密部分,和root certification。

比如你从CA下载下来了你的certification包裹,里面的组成是(certification-A,证书的hash码加密部分,root certification),这样你就可以通过rootcertification中的公钥对证书的hash码的加密部分进行解密得到certification-A的hash1码,你在通过hash算法把你得到的证书进行hash运算得到hash2码,如果hash1和hash2是相等的,就表明certification-A是有CA签发的发送过程中没有被修改。这样A就得到了自己的证书了。B同样也是通过这种方式去获得自己的证书。

关键字:certification:证书,其中包含了个人信息,证书的有效期,证书号,公钥,发证机关信息,root certification;

CA:发证机关;

证书签名:通过对内容进行hash运算,通过私钥加密,保证内容的完整性;

hash:不同长度的内容通过hash算法得到定长的数据的算法;

公钥(public key):在非对称加密中公钥是可以向外公开的,它可以对对应的私钥进行解密;

私钥(private key):在非对称加密中是自己保存的。

得到了certification后,在Mac平台下,我们可以通过key chain钥匙串管理程序对证书进行管理,还可以通过它来导出证书对应的私钥。

问题2.A在发送信息时如何让B知道是A写的信了。所以在信息中要加上A的数字证书,这样B在收到信息之后就用CA的公钥对附加的A的数字证书进行解密,解密得到附加的证书是不A。

问题3.A如何加密信息,A通过hash函数得到了内容的hash码,用自己的私钥进行加密签名,保证数据的完整性,附加上自己的数字证书,通过B的公钥进行加密,加密之后就得到最终要发送的数据。

问题4.A如何保证数据的完整性,通过提取内容的hash码,并通过自己的私钥进行加密,得到数字签名附加到发送的信息中。

问题5.加密约定是通过对方的公钥可以解开对方用私钥加密的数据。

问题6.公钥是包含在数字证书中的,当SSL握手完成之后,实际上就完成的公钥的交换。

问题7.B接受到消息之后,首先通过自己的私钥进行解密,对A的身份进行确认,用A的公钥解开签名得到内容的hash码,通过hash函数重新生成内容的hash码,对比两个hash码,如果相同则信息没有被修改,如果不相同则说明信息被修改了。

问题8.B是如何验证是A写的信,SSL握手完成之后就交换了信息公钥,当B接受到A的消息之后,B通过自己的私钥解密消息包,得到A的数字证书,得到数字证书通过CA的公钥进行解密得到A的证书就可以验证是不是A写了。

万事具备只差东风。。。。。。。。。。。。

非对称加密原理:

A持有B的公钥,A通过B的公钥可以解密B通过B的私钥加密的信息。

B持有A的公钥,B通过A的公钥可以解密A通过A的私钥加密的信息。

使用证书加密通信和解密信息的过程:

加密发送方:

再发展下来才有了:大霞美的花卉基地和清源山的花博园。

从SSL安全传输到iOS证书安全体系1

相关文章:

你感兴趣的文章:

标签云: