加密解密签名认证的原理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

文档历史 ......................................................................................................................... 错误!未定义书签。目录 .. (3)

图片索引 ......................................................................................................................... 错误!未定义书签。表格索引 ......................................................................................................................... 错误!未定义书签。

1.1 加密解密,签名认证 (4)

1.1.1 密码学 (4)

1.1.2 RSA公钥加密体制 (5)

1.1 加密解密,签名认证

1.1.1 密码学

此处简单介绍下,加密方法,数字签名和数字证书。

1.加密方法可以分为两大类。一类是单钥加密(private key cryptography),还有一类叫做双钥加密(public key cryptography)。前者的加密和解密过程都用同一套密码,后者的加密和解密过程用的是两套密码。

2.在单钥加密的情况下,密钥只有一把,所以密钥的保存变得很重要。一旦密钥泄漏,密码也就被破解。

3.

在双钥加密的情况下,密钥有两把,一把是公开的公钥,还有一把是不公开的私钥。

双钥加密的原理如下:

a) 公钥和私钥是一一对应的关系,有一把公钥就必然有一把与之对应的、独一无二的私钥,反之亦成立。

b) 所有的(公钥, 私钥)对都是不同的。

c) 用公钥可以解开私钥加密的信息,反之亦成立。

d) 同时生成公钥和私钥应该相对比较容易,但是从公钥推算出私钥,应该是很困难或者是不可能的。

4.

目前,通用的单钥加密算法为DES(Data Encryption Standard),通用的双钥加密算法为RSA (Rivest-Shamir-Adleman),都产生于上个世纪70年代。

RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。

公钥用于对数据进行加密,私钥用于对数据进行解密。

5.

在双钥体系中,公钥用来加密信息,私钥用来数字签名。

(1)私钥用来进行解密和签名,是给自己用的。

(2)公钥由本人公开,用于加密和验证签名,是给别人用的。

6.

因为任何人都可以生成自己的(公钥,私钥)对,所以为了防止有人散布伪造的公钥骗取信任,就需要一个可靠的第三方机构来生成经过认证的(公钥,私钥)对。目前,世界上最主要的数字服务认证商是位于美国加州的Verisign公司,它的主要业务就是分发RSA数字证书。

1.1.2 RSA公钥加密体制

RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。

公钥用于对数据进行加密,私钥用于对数据进行解密。当然了,这个也可以很直观的理解:公钥就是公开的密钥,其公开了大家才能用它来加密数据。私钥是私有的密钥,谁有这个密钥才能够解密密文。否则大家都能看到私钥,就都能解密,那不就乱套了。

1.1.

2.1 RSA签名体制

RSA签名体制。签名体制同样包含3个算法:KeyGen(密钥生成算法),Sign(签名算法),Verify(验证算法)。在签名算法中,私钥用于对数据进行签名,公钥用于对签名进行验证。这也可以直观地进行理解:对一个文件签名,当然要用私钥,因为我们希望只有自己才能完成签字。验证过程当然希望所有人都能够执行,大家看到签名都能通过验证证明确实是我自己签的。

签名和验证的过程中使用了hash函数,不使用hash函数的话,消息被修改了接收方也不能知道.使用了hash函数的话就可以看出消息是否被修改过,因为你是先用hash函数算出消息的摘要,若消息被修改过的话,接收者再算接收到的消息的hash 消息摘要时就不能得到相应的摘要.hash函数一般都是单向散列的,一般想根据hash摘要算出消息是不可能的.

1.1.

2.2REST XMPP 加密方案

主要使用M2Crypto库。可以用私钥加密,公钥解密。

注意安装时要先安装swig,sudo apt-get install swig

再pip install M2Crypto

1.1.

2.2.1.1 密钥生成和分发

主控端(云端),使用M2Crypto库函数,生成rsa 密码对,长度可设置为2048,并分别保存在文件中。

私钥自己妥善保存。公钥分发给每个被控制端,即ibox

1.1.

2.3 e ncrypt and signature

发送消息格式

{

"command": "ljkfkdl;,m;]\\[\.//.lgdgd",

"signature": "lkdjfldjfl@#$%%\\.../[]"

}

command的内容是使用本地私钥加密原始命令后,再base64的内容。

signature的内容是使用command的内容加时间戳再使用私钥签名,再base64的内容

1.1.

2.4 d ecrypt and verify

收到密文的被控端,先base64 decode 后,使用事先存好的公钥解密command内容,再验证签名,然后在比较时间戳,超时时限可暂设置为1min。任何一个环节出错,收到的消息都废弃,而不会执行任何命令。

1.1.

2.5 回复.

执行完毕命令后,回复的消息明文发送。

相关文档
最新文档