您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 加密解密签名认证的原理
StarTest3/18目录文档历史...........................................................................................................................错误!未定义书签。目录..............................................................................................................................................................3图片索引...........................................................................................................................错误!未定义书签。表格索引...........................................................................................................................错误!未定义书签。1.1加密解密,签名认证.......................................................................................................................41.1.1密码学..................................................................................................................................41.1.2RSA公钥加密体制..............................................................................................................5StarTest4/181.1加密解密,签名认证1.1.1密码学此处简单介绍下,加密方法,数字签名和数字证书。1.加密方法可以分为两大类。一类是单钥加密(privatekeycryptography),还有一类叫做双钥加密(publickeycryptography)。前者的加密和解密过程都用同一套密码,后者的加密和解密过程用的是两套密码。2.在单钥加密的情况下,密钥只有一把,所以密钥的保存变得很重要。一旦密钥泄漏,密码也就被破解。3.在双钥加密的情况下,密钥有两把,一把是公开的公钥,还有一把是不公开的私钥。双钥加密的原理如下:a)公钥和私钥是一一对应的关系,有一把公钥就必然有一把与之对应的、独一无二的私钥,反之亦成立。b)所有的(公钥,私钥)对都是不同的。c)用公钥可以解开私钥加密的信息,反之亦成立。d)同时生成公钥和私钥应该相对比较容易,但是从公钥推算出私钥,应该是很困难或者是不可能的。4.目前,通用的单钥加密算法为DES(DataEncryptionStandard),通用的双钥加密算法为RSA(Rivest-Shamir-Adleman),都产生于上个世纪70年代。RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。公钥用于对数据进行加密,私钥用于对数据进行解密。5.在双钥体系中,公钥用来加密信息,私钥用来数字签名。(1)私钥用来进行解密和签名,是给自己用的。(2)公钥由本人公开,用于加密和验证签名,是给别人用的。6.因为任何人都可以生成自己的(公钥,私钥)对,所以为了防止有人散布伪造的公钥骗取信任,就需要一个可靠的第三方机构来生成经过认证的(公钥,私钥)对。目前,世界上最主要的数字服务认证商是位于美国加州的Verisign公司,它的主要业务就是分发RSA数字证书。StarTest5/181.1.2RSA公钥加密体制RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。公钥用于对数据进行加密,私钥用于对数据进行解密。当然了,这个也可以很直观的理解:公钥就是公开的密钥,其公开了大家才能用它来加密数据。私钥是私有的密钥,谁有这个密钥才能够解密密文。否则大家都能看到私钥,就都能解密,那不就乱套了。1.1.2.1RSA签名体制RSA签名体制。签名体制同样包含3个算法:KeyGen(密钥生成算法),Sign(签名算法),Verify(验证算法)。在签名算法中,私钥用于对数据进行签名,公钥用于对签名进行验证。这也可以直观地进行理解:对一个文件签名,当然要用私钥,因为我们希望只有自己才能完成签字。验证过程当然希望所有人都能够执行,大家看到签名都能通过验证证明确实是我自己签的。签名和验证的过程中使用了hash函数,不使用hash函数的话,消息被修改了接收方也不能知道.使用了hash函数的话就可以看出消息是否被修改过,因为你是先用hash函数算出消息的摘要,若消息被修改过的话,接收者再算接收到的消息的hash消息摘要时就不能得到相应的摘要.hash函数一般都是单向散列的,一般想根据hash摘要算出消息是不可能的.1.1.2.2RESTXMPP加密方案主要使用M2Crypto库。可以用私钥加密,公钥解密。注意安装时要先安装swig,sudoapt-getinstallswig再pipinstallM2Crypto1.1.2.2.1.1密钥生成和分发主控端(云端),使用M2Crypto库函数,生成rsa密码对,长度可设置为2048,并分别保存在文件中。私钥自己妥善保存。公钥分发给每个被控制端,即ibox1.1.2.3encryptandsignature发送消息格式{command:ljkfkdl;,m;]\\[\.//.lgdgd,signature:lkdjfldjfl@#$%%\\.../[]}command的内容是使用本地私钥加密原始命令后,再base64的内容。signature的内容是使用command的内容加时间戳再使用私钥签名,再base64的内容StarTest6/181.1.2.4decryptandverify收到密文的被控端,先base64decode后,使用事先存好的公钥解密command内容,再验证签名,然后在比较时间戳,超时时限可暂设置为1min。任何一个环节出错,收到的消息都废弃,而不会执行任何命令。1.1.2.5回复.执行完毕命令后,回复的消息明文发送。
本文标题:加密解密签名认证的原理
链接地址:https://www.777doc.com/doc-2612581 .html