美文网首页
安全和加密

安全和加密

作者: 择一城遇一人 | 来源:发表于2017-09-10 23:03 被阅读0次

    对称加密算法

    v对称加密:加密和解密使用同一个密钥

    DES:Data Encryption Standard,56bits

    3DES:

    AES:Advanced (128, 192, 256bits) Blowfish,Twofish

    IDEA,RC6,CAST5

    v特性:

    1、加密、解密使用同一个密钥,效率高

    2、将原始数据分割成固定大小的块,逐个进行加密v

    缺陷:

    1、密钥过多

    2、密钥分发

    3、数据来源无法确认

    现有两个通讯双方A和B。A给B发送数据

    A---->B

    数据需要加密

    Data(明文)------>data’(密文)

    A需要加密数据为key1(data)=data’加密后的数据

    B需要解密数据key2(data’)=data解密后的数据

    所谓对称加密意思就是key1=key2他们的秘钥相同

    如果不相等为不对称加密

    非对称加密算法

    公钥加密:密钥是成对出现Ø

    公钥:公开给所有人;public key Ø

    私钥:自己留存,必须保证其私密性;secret key v

    特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

    实现数据加密,隐私

    现有两个通讯双方A和B

    每个人都有两把钥匙(公钥和私钥)A(公钥Pa,私钥Sa)

    A---->B

    A发数据,用B的公钥去加密,加密后的数据发送给B,B用自己的私钥解密

    A[Pb(data)]=data’对A发送的数据加密

    Sb(data’)用B的私钥解密

    功能:Ø

    数字签名:主要在于让接收方确认发送方身份Ø

    对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方Ø

    数据加密:适合加密较小数据v

    缺点:密钥长,加密解密效率低下v

    算法:

    RSA(加密,数字签名),DSA(数字签名),ELGamal

    基于一对公钥/密钥对

    用密钥对中的一个加密,另一个解密v

    实现加密:

    接收者

    生成公钥/密钥对:P和S

    公开公钥P,保密密钥S

    发送者

    使用接收者的公钥来加密消息M

    将P(M)发送给接收者

    接收者

    使用密钥S来解密:M=S(P(M))

    实现数字签名:主要在于让接收方确认发送方身份

    数据来源确认

    data---加密Sa(data)=data'----> 解密Pa(data')=data

    数据来源的确认,A给B发送数据,想要确定是A发的,就要A用自己的私钥加密,然后发送给B,B接收到数据后,用A的公钥来解密。

    发送者

    生成公钥/密钥对:P和S

    公开公钥P,保密密钥S

    使用密钥S来加密消息M

    发送给接收者S(M)

    接收者

    使用发送者的公钥来解密M=P(S(M)) v

    结合签名和加密v

    分离签名

    单向散列

    将任意数据缩小成固定大小的“指纹”

    任意长度输入

    固定长度输出

    若修改数据,指纹也会改变(“不会产生冲突”)

    无法从指纹中重新生成数据(“单向”)

    实现数据加密,实现数据来源确认,同时提高效率

    方法1:

    A---->B

    Pb{data+Sa[hash(data)]}

    在数据的最后(data)累加一个字符串,对这个数据做个hash运算,得出一个摘要值,然后在外层用A的私钥加密(签名)Sa[hash(data)]可忽略不计,签名完了以后在最外面来一个加密用B的公钥,然后发送给B,用B的私钥去解密

    方法2:

    用对称加密算法,非对称加密算法和hash算法实现数据加密,实现数据来源确认,同时提高效率

    key{data+Sa[hash(data)]}+Pb(key)

    跟上述方法类似,在对data+Sa[hash(data)]进行对称加密,然后最后在加上这个秘钥(key)用B的公钥

    如何解密呢:先用B的秘钥将key这个钥匙拿到手,拿到key后就可以解开key{data+Sa[hash(data)]}这个数据,得到这个数据后,如何让确认数据的来源呢,用A的公钥解密后得到[hash(data)]然后用相同的hash算法再次的运算,

    hash(data)=[hash(data)]如果这两个摘要值相同就说明是同一个人加密的。

    功能:数据完整性

    常见算式md5: 128bits、sha1: 160bits、sha224 sha256、sha384、sha512 v 常用工具

    md5sum | sha1sum [ --check ] file

    使用gpg工具实现公钥加密

    在hostB主机上用公钥加密,在hostA主机上解密 v

    在hostA主机上生成公钥/私钥对

    gpg --gen-key v

    在hostA主机上查看公钥

    gpg --list-keys v

    在hostA主机上导出公钥到wang.pubkey

    gpg -a --export -o wang.pubkey v

    从hostA主机上复制公钥文件到需加密的B主机上

    scp wang.pubkey hostB:

    在需加密数据的hostB主机上生成公钥/私钥对

    gpg --list-keys

    gpg --gen-key v

    在hostB主机上导入公钥

    gpg --import wang.pubkey gpg --list-keys v

    用从hostA主机导入的公钥,加密hostB主机的文件file,生成 file.gpg

    gpg -e -r wangxiaochun file

    file file.gpg

    复制加密文件到hostA主机

    scp fstab.gpg hostA: v

    在hostA主机解密文件

    gpg -d file.gpg gpg -o file -d file.gpg v

    删除公钥和私钥

    gpg --delete-keys wangxiaochun

    gpg --delete-secret-keys wangxiaochun

    创建CA和证书申请

    自己给自己颁发证书

    先切换目录到cd /etc/pki/CA/

    1、创建所需要的文件

    touch /etc/pki/CA/index.txt 生成证书索引数据库文件

    echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号

    2、先生成私钥

    (umask 066; openssl genrsa -out private/cakey.pem 2048)

    3、生成自签名证书

    openssl req -new -x509 –key private/cakey.pem -days 7300 -out cacert.pem

    给客户端颁发证书

    1、还是生成私钥

    (umask 066; openssl genrsa -out private/test.key 2048)

    2、生成证书申请文件

    openssl req -new -key /etc/pki/tls/private/test.key  -out etc/pki/tls/test.csr

    3、复制test.csr给根CA

    scp test.csr 172.18.77.7:/etc/pki/CA

    4、CA签署证书,审核信息,并将证书颁发给请求者

    openssl ca -in /tmp/test.csr –out certs/test.crt -days 365

    5、最后将证书发给客户端

    scp certs/app.crt 172.18.77.6:/etc/pki/tls/certs

    给子CA颁发证书(申请过程是一样的)

    1、

    touch /etc/pki/CA/index.txt

    echo 01 > /etc/pki/CA/serial

    2、

    (umask 066; openssl genrsa -outprivate/cakey.pem2048)当CA必须放到这个文件

    3、申请证书

    openssl req -new–keyprivate/cakey.pem -out subca.csr

    4、

    scp subcsr.csr 172.18.77.7:/etc/pki/CA

    5、

    openssl ca -in subca.csr –outcerts/sub.crt-days 365

    6、

    scp certs/sub.crt 172.18.77.6:/etc/pki/CA/cacert.pem

    子CA给客户端颁发证书

    1、还是先生成私钥

    2、还是一样申请证书

    3、复制给子CA

    4、颁发证书

    5发送证书给客户端

    un:'�n����_

    相关文章

      网友评论

          本文标题:安全和加密

          本文链接:https://www.haomeiwen.com/subject/qetxsxtx.html