android安全学习之1—什么是数字签名、数字证书

来源:互联网 发布:macbook下软件好下吗 编辑:程序博客网 时间:2024/06/10 01:53

大概对加解密机制进行了学习,以下是自己对一些概念的理解。

  • 加密:

加密就是为了让别人看不懂,加密前的东东称为明文,加密后的为密文。例如我把写给susan的信进行了加密,明文是:12,经过加密后变成了:56,这就是加密。加密是结合加密算法和密钥完成的。

  • 密钥:

就是密码嘛,微信密码啥的,一样的道理。

  • 加密算法:

就是如何去加密,例如上面将12加密变成56,我的加密算法是原数字每一位+2+n,这里的n是我的密码,即密钥。这里我将密钥设置为2,则第一位由1变成了5,第二位变成了6。当然这只是一个非常简单的例子,只是为了便于理解。记得以前看过一本书上讲过,密码学里对算法公开,密钥是不公开的。细想,加密算法公开类似于开源,有助于对算法的优化和不断改进。而密钥的不公开,则保证了数据的安全性。加密算法又包括对称加密算法和非对称加密算法。

  • 对称加密算法和非对称加密算法:

对称加密算法的大概意思就是加密和解密用的是同一个密钥(算法是算法,密钥是密钥,相辅相成)。例如A需要写一封加密信给B,A写完后用自己的密钥(记为密钥A)利用对称加密算法(记为对称加密算法A)完成了加密,然后发送给B,B收到后首先需要解密,只有借助密钥A利用对称加密算法A才能正确对信件进行解密(只有加密算法和密钥都正确才能正确解密)。对称加密算法的缺点非常明显,B如何才能得到A的密钥?一旦A将密钥通过网络等手段传送给B,密钥就有泄露的可能。非对称加密算法解决了这个问题。
非对称加密算法有两个密钥,成对出现。通过一个密钥加密,必须通过另外一个密钥进行解密,分别称为公钥A和私钥A,通过公钥A进行加密的东东,必须经过私钥A进行解密才行。这样A就可以将自己的公钥共享出去,A将信件通过自己的私钥A进行加密,B可以利用A共享的公钥A进行解密。非对称加密解决了对称加密密钥共享的问题。

  • 数字签名:

签名,在信件后面署上自己的亲笔签名,证明这封信是你写的。数字签名,顾名思义利用电脑等制作的数字的签名。数字签名的主要作用是防篡改,防伪造。
数字签名使用了上述的非对称加密。如何来做的呢?
我要向susan写一封信,先用Hash函数对我的信件进行hash,得到的hash值为信件的摘要,然后用我的私钥对这个摘要进行加密(加密后的摘要就是数字签名),最后将信件和数字签名一起发送给susan.
susan收到信后,用我的公钥解密数字签名(我的公钥是公开的),成功解密表示这封信是我写的,然后再将信件内容进行hash,和解密的hash值进行比对,如果一样,表示信件内容完整,没有被修改。
通过上面的例子可以看出来, 通过数字签名,能够证明这个信件是我写的,同时可以证明信件信息的完整性。

  • 数字证书:

但是上面还有一个问题,如果susan那里的我的公钥是假的,被别人换过的,例如susan的电脑被黑客入侵,公钥被黑客替换,这样别人就能冒名顶替我给susan发信。怎么解决这个问题?
有个公立的组织,证书颁发机构 (CA)。证书颁发机构是一个类似公证人的实体, 它可以颁发数字证书,对证书进行签名以验证其有效性,以及跟踪已吊销或过期的证书。我可以去CA,让CA对我的公钥和其他一些信息利用CA的私钥进行加密,生成数字证书!例如IE浏览器中就有很多公开的CA机构发布的自己的数字证书,里面包含自己的公钥(CA机构的)。
这样我以后再写信给susan的时候,可以在信件上附上数字签名的同时,也附上数字证书。Susan收到信件后,利用CA机构提供的公钥,对这个CA证书进行解密,解密后得到我的公钥,然后再对数字签名进行解密,保证了我这个身份无法被篡改!
下面是一个X.509 v3格式的数字证书,证书中包括的选项可以帮助我们理解。
The structure of an X.509 v3 digital certificate is as follows:

•   Version•   Serial Number•   Algorithm ID•   Issuer 颁发机构•   Validity•   Not Before•   Not After•   Subject 颁发给谁•   Subject Public Key Info•   Public Key Algorithm 公钥加密算法•   Subject Public Key 公钥•   Issuer Unique Identifier (optional)•   Subject Unique Identifier (optional)•   Extensions (optional)•   ...•   Certificate Signature Algorithm   CA对证书签名的算法•   Certificate Signature   CA对证书的签名,利用这个就能利用浏览器CA的公钥验证证书是否合法,是否未被篡改。
1 0