资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,of 97,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,of 97,单击此处编辑母版标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,MSPACES项目开题报告-080415.PPT,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,ONE,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,ONE,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,ONE,谌侃,深圳农村商业银行,2026年10月27日,有关加密和编码相关技术分享,目录,综述:加密、编码、认证,1,加密:几种加密技术,2,编码:几种编码方式,3,认证:,SSL,及加密编码的应用,4,综述:加密、编码、认证,加密,加密就是以某种算法改变原有信息数据,让未授权用户无法获得信息内容,加密类型分为两种:对称加密(如,DES,,,AES,)和非对称加密(如,RSA,,,DSA,),编码,认证,问题的提出,:,网络中存在各种攻击手段,如,ARP,欺骗,,IP,地址欺骗,中间人攻击等。需要验证实体是否是其定义的。,认证就是要确认实体是它所声明的。,认证的种类:,数字签名,消息认证,HASH,函数,身份认证,认证协议,编码,(Encoding),:用一套算法,将一个集合转换成另一个集合。,经常使用的一些编码:字符集编码(,UTF-8,,,GBK,),其他编码(,Base64,,,punnycode,),目录,综述:加密、编码、认证,1,加密:几种加密技术,2,编码:几种编码方式,3,认证:,SSL,及加密编码的应用,4,加密:几种加密技术,非对称加密:需要两个密钥:公钥和私钥。如,RSA,,,DSA,。,对称加密:基于对称密码算法的鉴别依靠一定协议下的数据加密处理。通信双方共享一个密钥(通常存储在硬件中),该密钥在询问,应答协议中处理或加密信息交换。如,DES,,,AES,。,最传统也最简单的加密,特点:算法公开,计算量小,加密速度快,加密效率高,安全性依赖于对密钥的保护。,不足:安全性得不到保证,私钥数量呈几何增长,不能提供数字签名功能。,DES,加密为例:,加密解密使用相同的密钥,密文是,64,位,,8,字节长,非对称加密,特点:算法强度复杂,安全性依赖于算法与密钥,密钥包含公钥和私钥,安全性比对称加密更高。能够同时提供加密和数字签名功能。,不足:但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。,RSA,为例:,通常发送方以对方的公钥加密,接收方以自身的私钥解密,密钥长度通常,1024bit,以上,对称加密技术:,DES,DES,加密原理,机框,安全,路由,/,交换,传输,配电,在,Java,代码中的实践,原始思想:对称加密的本质原理都是替代模糊,增加分析难度。因而加密算法和密钥在安全性上最为重要。,简单例子:通过位移,加密,原文,des cipher-,右循环,3,位,ghv flskhu,解密,密文,ghv flskhu,-,左循环,3,位,(,加密,),des cipher,加密原理:,DES,使用一个,56,位密钥以及附加的,8,位奇偶校验位,产生最大,64,为的分组大小。使用,16,个循环,通过异或置换代换移位进行操作。从而生成,64bit,的加密报文。,具有相当高的复杂性,破解开销较大,同时安全性不依赖于算法,而且加密解密速度较快,比较经济,通常使用在金卡工程中:加油站,高速公路收费路口。,使用到的库:,java.security.Key(,私钥相关,),java.crypto.Cipher(,加密行为相关,),相关函数调用:,获取私钥:,例子采用从文件中获取,Key key=gen.getKey(Constant.CRYPT_KEY_FILE);,使用,DES,加密实例:,Cipher cipher=Cipher.getInstance(“DES”);,cipher.init(Cipher.ENCRYPT_MODE,key);,更新要加密的数据:,Cipher.update(Constant.DATA.getBytes();,对数据进行加密:,byte result=cipher.doFinal();,测试用例,对字符串“,TEST,”加密解密,源码,非对称加密技术:,RSA,RSA,加密原理,机框,安全,路由,/,交换,传输,配电,在,Java,代码中的实践,原始思想:计算两个大质数,p,和,q(p!=q),的乘积,N=p*q,比较容易。但是,由,N,计算出这两个大质数,p,和,q,很困难。,根据欧拉函数,,r=(p-1)(q-1),选择一个小于,r,的整数,e,,求得,e,关于,r,的模反元素,d,。,(N,e)(N,d),可以作为公钥和密钥。,RSA,与对称算法,DES,相比,就会慢得多。,RSA,典型密钥长度通常是,1024 bit,。通常会更长。可以通过,keytool,的,keysize,进行设置。,在电子商务中比较常用。,是第一个既能用于数据加密也能用于数字签名的算法。,使用到的库:,java.security.PublicKey(,公钥相关,),java.security.PrivateKey(,私钥相关,),java.crypto.Cipher(,加密行为相关,),相关函数调用:,获取公钥:,例子采用从文件中获取,Key key=gen.getKey(Constant.PUB_KEY_FILE);,使用,DES,加密实例:,Cipher cipher=Cipher.getInstance(“RSA”);,cipher.init(Cipher.ENCRYPT_MODE,key);,更新要加密的数据:,Cipher.update(Constant.DATA.getBytes();,对数据进行加密:,byte result=cipher.doFinal();,测试用例,对字符串“,TEST,”加密解密,源码,散列算法:,MD5,和,SHA,DES,加密原理,散列算法:主要针对的问题不是对原始数据的加密解密,因而不是一种加密算法。,散列算法主要针对的问题是验证消息的完整性,散列算法对不同长度的输入消息,长生固定长度的输出,这个输出成为原输入消息的散列或消息摘要。,机框,安全,路由,/,交换,传输,配电,在,Java,代码中的实践,使用到的库:,java.security.MessageDigest(,消息摘要,),相关函数调用:,获取,MD5,或,SHA,实例:,MessageDigest md=MessageDigest.getInstance(MD5);,MessageDigest md=MessageDigest.getInstance(SHA);,更新要散列的数据:,md.update(Constant.DATA.getBytes();,对数据进行散列:,byte result=md.digest();,测试用例,对字符串“,TEST,”加密解密,源码,目录,综述:加密、编码、认证,1,加密:几种加密技术,2,编码:几种编码方式,3,认证:,SSL,及加密编码的应用,4,编码方式之,Base64,Base64,由来,最早的时候,,Base64,主要是用来解决邮件问题。由于历史原因,,Email,只被允许传,ASCII,字符,也就是,8,位字节的首尾必须为,0,,如果传了其他编码,网关会把最高位置,0,而导致错误。,为了能够正常的传送,Email,,就产生了,Base64,编码。,Base64,的设计思想,把任意序列,8,位字节编码成高,2,位为,0,的形式,因而正好对应,2,6,=64,个字符,通常,这,64,个字符是,A-Z a-z 0-9/=,Base64,的特点和应用,Base64,编码详解,填充:,将,3,个,8,位字节转化为,4,个,6,位字节,计算二进制对应的数字:,Base64,具有不可读性。,(,防君子不防小人,即一眼看上去不能读懂其中内容,),Base64,会将原来字节流的长度增加,1/3(,介绍编码方式时会讲到为什么,),当前迅雷的,thunder:/,*将连接就是将原链接头加上,AA,,尾加上,ZZ,进行,Base64,编码,数字签名就可以用,Base64,编码,方便进行调试,如:,11 01 01 01,11 00 01 01,00 11 00 11,被填充成:,00,11 01 01,|00,01,11 00,00,01 01,00,|00,11 00 11,00,11 01 01,=53,00,01,11 00,=34,00,01 01,00,=20,00,11 00 11,=51,根据,Base64,表查询获得编码:,53-1 28-i 20-U51-z,得到编码为,1iUz,补齐:,如果输入字节长度不是,3,的倍数,则需要进行补齐。,如果模,3,的结果为,1,,则补一个,=,如果模,3,的结果为,2,则补两个,=,目录,综述:加密、编码、认证,1,加密:几种加密技术,2,编码:几种编码方式,3,认证:,SSL,及加密编码的应用,4,SSL,体系的产生,解决实际问题(一),问题一:发送消息不希望被其他人获取,问题描述:,甲希望向乙发送一个合同,不希望被其他人看到、修改。,问题二:截获文件是否同一算法就能解密,问题三:怎样安全送给乙密钥,解决方案:,最自然的解决方案就是,甲对文件进行加密,乙在收到文件后,对文件解密。,产生,/,使用到的技术:对称,加密算法。,可以采用一些成熟的加密算法,如,DES,,,AES,等,对称,加密算法对文件加密。,问题回答:不可以,原因:,加密和解密都需要两个组件,加密算法和密钥,黑客不知道密钥的情况下是无法对报文解密的。(当然,黑客可以穷举法暴力破解,但是需要时间较长,就可以认为是不可解密的。),产生,/,使用到的技术:,密钥。,作为一种参数,在明文转密文或密文转明文时的算法输入数据。,问题描述:,乙需要解密甲发送的文件,需要密钥,但是,密钥的传输也需要安全。,解决方案:,把密钥进行加密,然后传送给乙。,产生,/,使用到的技术:,非加密算法。,如果还是用对称加密方式,就会无法解决问题,陷入死循环。非对称加密就可以解决这种问题。,非对称加密有两个密钥:公开密钥和私有密钥。,公钥是在网上传送的。甲是用乙的公钥对对称加密算法中的密钥加密。是的只有拥私钥的乙才能解开密文,问题四:为什么不直接用非对称加密来加密,问题回答:在前面的例子可以看到,非对称加密的加密速度比对称加密慢的多,另外会使密文变得长。,实际使用方案:,对较长的文件通常使用对称加密算法来进行加密,然后,再将对称加密中使用到的密钥通过非对称加密算法加密。,初步解决方案,:,文件,甲,密文,对称算法密钥,加密后的密钥,乙的公钥,密文,加密后的密钥,乙的私钥,对称算法密钥,文件,乙,网络传输,SSL,体系的产生,解决实际问题(二),问题五:伪造身份,问题描述:,黑客拦截了密文,伪造了一份假文件,同时加密,并通过乙的公钥加密其密钥,乙收到的就是黑客伪造的文件。,数字摘要,数字签名,解决方案:,通过,数字签名,证明其身份。,产生,/,使用到的技术:,数字摘要,数字签名。,可以采用一些散列算法,,MD5,SHA1,取得一个摘要。再对摘要进行非对称加密。乙获得后,解密并验证签名。信息不同,摘要不同,就不能被验证。,数字摘要:将任意长度的消息变成固定长度的短消息。有固定的长度,且不同的明文摘要成密文的结果总是不同的,而同样的明文摘要必须要一致。,产生,/,使用到的技术:,散列算法。,常用的算法是前面介绍的,MD5,,,SHA1,数字签名,附加在数据单元上的一些数据,允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被伪造,数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。,通常以私钥签名,公钥验签。,通过对文件的数字前面,就可以防止被黑客恶意篡改。,SSL,体系的产生,解决实际问题(三),问题六:怎么确定公钥一定是甲的,问题描述:,乙收到了相应的密文,加密的私钥,数字签名以及一个对方的公钥。但是,乙并不能确定这个公钥一定是来自于甲,这个公钥同样可能是来自于黑客。,数字证书,数字证书格式,解决方案:,用数字证书来绑定公钥和公钥所属人。,产生,/,使用到的技术:,数字证书,,CA,机构。,数字证书就是通信网络中各方身份信息的一系列数据,由,CA,机构发行,用以识别对方身份。,最简单证书包括一个公钥名称及,CA,的数字签名,数字证书是一种权威性的电子文档,由权威的第三方机构,,CA,中心签发的证书,。(遵循,X.509,标准),数字证书绑定了公钥和持有者的真实身份,同时,还含有,CA,中心对该证书的数字签名,以防该证书被篡改,伪造。,有效的证书能够证明持有者的身份。,版本:对应了证书使用的版本,,X.509,有,3,个版本,序列号:当前证书的序列号,主要应用用于,CRL,(证书吊销列表)确认证书是否有效,签名算法:,CA,中心的数字签名算法,签名哈希算法,:CA,中心的数字签名哈希算法,有效期:证书只有在有效期范围内才能使用,使用者:证书的使用者的相关信息,公钥:被认证的公钥所属人所提供的公钥,指纹算法:指纹所用的散列算法,指纹:指纹散列的值,验签,SSL,流程:,解决了上述问题,就是一个完整的,PKI,流程,文件,甲,密文,对称算法密钥,加密后的密钥,乙的公钥,密文,加密后的密钥,乙的私钥,对称算法密钥,文件,乙,网络传输,甲的私钥,CA,中心,甲的证书,数字摘要,数字签名,数字签名,甲的证书,谌侃:,kylemickchan,谢 谢!,补充:,X.509,X.509,简介,由,ITU-T,指定的数字证书标准,定义了公钥证书、证书吊销清单、属性证书和证书路径验证算法等标准。,证书必须包含的信息有:版本号,序列号,签名算法标示符,认证机构,有效期限,主题信息,认证机构的数字签名,公钥信息。,PKI,实体,数字证书格式,Certificate:=SEQUENCE,tbsCertificate TBSCertificate,signatureAlgorithm AlgorithmIdentifier,signatureValue BIT STRING,TBSCertificate:=SEQUENCE,version 0 EXPLICIT Version DEFAULT v1,serialNumber CertificateSerialNumber,signature AlgorithmIdentifier,issuer Name,validity Validity,subject Name,subjectPublicKeyInfo SubjectPublicKeyInfo,issuerUniqueID 1 IMPLICIT UniqueIdentifier OPTIONAL,-If present,version shall be v2 or v3,subjectUniqueID 2 IMPLICIT UniqueIdentifier OPTIONAL,-If present,version shall be v2 or v3,extensions 3 EXPLICIT Extensions OPTIONAL-If present,version shall be v3,Keytool,工具,Keytool,简介,JDK,中提供管理密钥仓库,(KeyStore),和与之相关的,X.509,证书链的工具。,JDK1.4,之后的版本都有的功能。,%JAVA_HOME%binkeytool.exe,Keytool,通过,keystore,来保存私钥和证书,通常会用密码保护起来。,主要功能:,创建一对密钥,创建证书,创建密钥仓库,导,入,/,导出证书,查看证书,增,/,删,/,改密钥仓库中的条目,修改证书条目的口令,生成证书请求,Keystore,密钥仓库,有,两,种,Entry,:,PrivateKeyEntry,:保存了私钥(非对称加密),TrustedCertificate,:保存证书(叫,Trusted,因为,keystore,的所有者相信这个证书),另一种存储方式:,pfx,通过,PKCS#12,(,公,钥加密技术,12,)方式为私钥,公钥和证书指定一个可移植的格式,两种格式文件可以互相转:,Jks,转,pfx,:,keytool-importkeystore-v-srckeystore kclient.keystore-srcstoretype jks-destkeystore kclient.pfx-deststoretype pkcs12,Pfx,转,jks,keytool-importkeystore-v-srckeystore kclient.pfx-srcstoretype pkcs12-destkeystore kclient.keystore-deststoretype jks,Keytool,相关命令,Keytool,生成密钥对并存储文件,Keytool,查看密钥仓库,keytool-genkeypair-alias ckkey-keysize 1024-keyalg RSA-keypass 123456-storepass 123456 validity 365-keystore ck.jks,Genkeypair,:表示要生成密钥对,Alias,:别名,(,不分大小写,但需要唯一,),Keysize,:密钥大小,Keyalg:,加密算法,Keypass,:密码,Storepass,:仓库密码,Keystore,:指定的密钥仓库文件,Validate:,有效期(天),生成非对称密钥对,,RSA,算法,生成对称密钥对,,DES,算法,keytool-genseckey-alias cksec-keypass 12345678-keyalg aes-keysize 128-storepass 12345678,storetype jceks,-keystore ck1.jks,必须加上,storetype,,否则无法通过,Keytool list v keystore ck.jks,Keytool,导出证书,Keytool export alias ckkey file ck.crt keystore ck.jks,Keytool,相关命令,Keytool,导,入证书,Keytool,查看证书信息,keytool-genkeypair-alias ckkey-keysize 1024-keyalg RSA-keypass 123456-storepass 123456 validity 365-keystore ck.jks,Keytool printcert file ck.crt,Keytool,删除条目,Keytool delete alias mykey keystore ck.jks,Keytool,口令修改,Keytool keypasswd alias ckkey keypass 123456 new 000000,
展开阅读全文