扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在OSI模型和tcp/ip模型中,应用发送某个数据到服务器,通过很多条路径才能到达服务器,在发送的路上,因为数据是明文,且任意人都可以查看,这就给数据带来了风险。因此,加密就很有必要了。
专业领域包括成都网站设计、成都网站建设、购物商城网站建设、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,创新互联公司的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。
常见的密钥算法和协议
对称加密(加密解密使用同一个密钥)
公钥加密(非对称加密,公钥和私钥)
单向加密(只能加密,不能解密)
认证协议
对称加密
对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加 密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密 性好,而且对计算机功能要求也没有那么高。IDEA加密标准由 PGP(Pretty Good Privacy)系统使用。
下面举个例子来简要说明一下对称加密的工作过程。甲和乙是一对生意搭档, 他们住在不同的城市。由于生意上的需要,他们经常会相互之间邮寄重要的货物。为了保证货物的安全,他们商定制作一个保险盒,将物品放入其中。他们打造了两 把相同的钥匙分别保管,以便在收到包裹时用这个钥匙打开保险盒,以及在邮寄货物前用这把钥匙锁上保险盒。
上面是一个将重要资源安全传递到目的地的传统方式,只要甲乙小心保管好钥匙,那么就算有人得到保险盒,也无法打开。这个思想被用到了现代计算机通信的信息加密中。在对称加密中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密。
对称加密常用的算法:
DES:Data Encryption Standard;
3DES:Triple DES;
AES:Advanced Encryption Standard; (128bits, 192bits, 256bits, 384bits)
Blowfish
Twofish
IDEA
RC6
CAST5
特性:
1、加密、解密使用同一个密钥;
2、将原始数据分割成为固定大小的块,逐个进行加密;
缺陷:
1、密钥过多;
2、密钥分发困难;
公钥加密
与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果 用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两 个不同的密钥,所以这种算法叫作非对称加密算法。
工作过程
1.A要向B发送信息,A和B都要产生一对用于加密非对称加密算法和解密的公钥和私钥。
2.A的私钥保密(自己保存),A的公钥告诉B;B的私钥保密(自己保存),B的公钥告诉A。
3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
4.A将这个消息发给B(已经用B的公钥加密消息)。
5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
特性:
公钥:从私钥中提取产生;可公开给所有人;pubkey
私钥:通过工具创建,使用者自己留存,必须保证其私密性;private key;
特点:
用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
用途:
数字签名:主要在于让接收方确认发送方的身份;
密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;
数据加密
算法:RSA, DSA, ELGamal
DSS: Digital Signature Standard
DSA:Digital Signature Algorithm
单向加密
又叫单向散列算法,又称hash函数,Hash函数(也称杂凑函数或杂凑算法)就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。一般用于产生消息摘要,密钥加密等。即提取出数据指纹;只能加密,不能解密;
特性:定长输出、雪崩效应;
功能:完整性验证;
常见算法:
md5:Message Digest 5, 128bits
sha1:安全的哈希算法 Secure Hash Algorithm 1, 160bits
sha224, sha256, sha384, sha512
密钥交换:
IKE(Internet Key Exchange)一种用以获得认证密钥的协议。
密钥交换的两种机制:
1、公钥加密实现:
发送方用接收方的公钥加密自己的密钥,接收方用自己的私钥解密得到发送方的密钥,逆过来亦然,从而实现密钥交换。
2、使用DH算法:前提发送方和接受方协商使用同一个大素数P和生成数g,各自产生的随机数X和Y。发送方将g的X次方modP产生的数值发送给接收方,接受方将g的Y次方modP产生的数值发送给发送方,发送方再对接收的结果做X次方运算,接受方对接收的结果做Y次方运算,最终密码形成,密钥交换完成。
通信阶段加密解密
BOB和ALICE通信阶段
黑框A:表示要传输的数据
黑框B:就是单项加密对这段数据提取的特征码,这段特征码同时运用了非对称加密,具体过程是用BOB的私钥加密,传输给ALICE,只要到达后ALICE能解密,表明对方确实是BOB。这一过程同时起到了用户认证和数据完整性的校验。黑框B又称为数字签名
红框A:这一阶段会生成一段很长的随机数(密钥)然后配合对称加密算法对黑框A和黑框B加密,但是我们如何把加密的密钥传输给ALICE呢?这就要用到红框B了
红框B:这一阶段是用ALICE的公钥加密这串随机数(对称加密阶段的密钥),ALICE接收到数据后如果能用自己私钥解密,那就证明接受者确实ALICE
加密过程:
第一步:用单向加密算法提取数据(黑框A)的特征值
第二步:用自己的私钥加密这段特征值形成黑框B
第三步:用对称加密算法,对黑框A和黑框B来加密,得到红框A
第四步:用ALICE的公钥来加密第三步所用的密钥,得到红框B
解密过程:
第一步:ALICE用自己的私钥解密红框B得到对称加密的密钥
第二步:用这个密钥解密红框A内容
第三步:用BOB的公钥解密黑框B,如果能成功,说明发送方确实是BOB,这就完成了身份验证(解密后会得到一串数据的特征值)
第四步:用同样的单项加密算法来对这段数据提取特征值,如果和第三步的特征值一样,说明这段数据是完整的,这就完成了数据完整性的校验
还有一个问题就是BOB和ALICE如何获得对方的公钥,或者说如何证明获得的公钥就是对方。这就需要引入另一方证书颁发机构CA,下面是对证书颁发机构跟BOB/ALICE之间的解释
黑框C:代表要颁发给BOB/ALICE的公钥,组织,地址等信息
黑框D:是对黑框C进行单向加密后得到的数字签名,然后用自己的私钥对其加密,传输给BOB和ALICE,拿着这个证书颁发机构的公钥(这些证书颁发机构
的公钥一般已经被microsoft事先放在windows里面,当然其他操作系统也是一样的)的BOB和ALICE如果能对这个证书进行解密,说明这个
证书颁发机构不是冒充的
红框E:表示颁发给BOB和ALICE的证书
CA的工作方式:
PKI
PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的网络环境。PKI 主要包括四个部分:X.509 格式的证书(X.509 V3)和证书废止列表CRL(X.509 V2);CA 操作协议;CA 管理协议;CA 政策制定。一个典型、完整、有效的PKI 应用系统至少应具有以下五个部分;
公钥基础设施
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库
CA:
公共信任的CA,私有CA;
建立私有CA:
openssl
OpenCA
openssl命令:
配置文件:/etc/pki/tls/openssl.cnf
构建私有CA:
在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;
步骤:
1、生成私钥
2、生成自签证书
3、为CA提供所需的目录和文件
操作步骤
(1) 生成私钥;
[root@bogon ~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) Generating RSA private key, 4096 bit long modulus .......................................................................................... .......................................................................................... .....................................................++................................... .......................................................................................... ...............................................................++ e is 65537 (0x10001)
(2) 生成自签证书;
[root@bogon ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:Beijing Locality Name (eg, city) [Default City]:Beijing Organization Name (eg, company) [Default Company Ltd]:test Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your server's hostname) []:test Email Address []:abc@qq.com
选项解释:
-new:生成新证书签署请求;
-x509:生成自签格式证书,专用于创建私有CA时;
-key:生成请求时用到的私有文件路径;
-out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;
-days:证书的有效时长,单位是day;
(3) 为CA提供所需的目录及文件;
[root@bogon ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts} [root@bogon ~]# touch /etc/pki/CA/{serial,index.txt} [root@bogon ~]# echo 01 > /etc/pki/CA/serial
要用到证书进行安全通信的服务器,需要向CA请求签署证书:
步骤:(以httpd为例)
(1) 用到证书的主机生成私钥;
[root@bogon ~]# mkdir /etc/httpd/ssl [root@bogon ~]# cd /etc/httpd/ssl [root@bogon ~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
(2) 生成证书签署请求
[root@bogon ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
(3) 将请求通过可靠方式发送给CA主机;
U盘复制或其它可靠方式
(4) 在CA主机上签署证书;
[root@bogon ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
查看证书中的信息:
[root@bogon ~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
吊销证书:
步骤:
(1) 客户端获取要吊销的证书的serial(在使用证书的主机执行):
[root@bogon ~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
(2) CA主机吊销证书
先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致;
吊销:
[root@bogon ~]# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
注:其中的SERIAL要换成证书真正的序列号;
(3) 生成吊销证书的吊销编号(第一次吊销证书时执行)
[root@bogon ~]# echo 01 > /etc/pki/CA/crlnumber
(4) 更新证书吊销列表
[root@bogon ~]# openssl ca -gencrl -out thisca.crl
查看crl文件:
[root@bogon ~]# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流