加密算法

2020-03-10  本文已影响0人  Simon_Ye

对称加密算法

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

特性

  1. 加密、解密使用同一个密钥,效率高
  2. 将原始数据分割成固定大小的块,逐个进行加密

缺陷:

  1. 密钥过多
  2. 密钥分发困难
  3. 数据来源无法确认

非对称加密算法

基于一对公钥/私钥对

密钥是成对出现,用密钥对中的一个加密,另一个解密

特点

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

功能

缺点

密钥长,加密解密效率低下

算法

实现加密

  1. 接收者:
    生成公钥/密钥对:P和S
    公开公钥P,保密密钥S
  2. 发送者:
    使用接收者的公钥来加密消息M
    将P(M)发送给接收者
  3. 接收者:
    使用密钥S来解密:M=S(P(M))

实现数字签名

  1. 发送者:
    生成公钥/密钥对:P和S
    公开公钥P,保密密钥S
    使用密钥S来加密消息M
    发送给接收者S(M)
  2. 接收者
    使用发送者的公钥来解密M=P(S(M))

单向散列(hash)算法

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

功能:

数据完整性

常见算式:

md5:128bits
sha1:160bits
sha224:224bits
sha256:256bits
sha384:384bits
sha512:512bits

常用工具:


密钥交换

密钥交换:IKE(Internet Key Exchange)

DH

  1. A:a,p协商生成公开的整数a,大素数p
    B:a,p
  2. A:生成隐私数据:x(x<p),计算得出a^x%p,发送给B
    B:生成隐私数据:y,计算得出a^y%p,发送给A
  3. A:计算得出[(a^y%p)^x]%p=a^xy%p,生成为密钥
    B:计算得出[(a^x%p)^y]%p=a^xy%p,生成为密钥

应用程序:RPM

文件完整性的两种实施方式

  1. 被安装的文件
    • MD5单向散列
    • rpm --verify package_name(or -V)
  2. 发行的软件报文件
    • GPG公钥签名
    • rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
    • rpm --checksig pakage_file_name(or -k)

使用gpg实现对称加密

示例


使用gpg工具实现公钥加密

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

  1. 在hostA主机上生成公钥/私钥对,保存路径为/root/.gnupg目录
    ~]# gpg -gen-key
  2. 在hostA主机上查看公钥
    ~]# gpg --list-keys
  3. 在hostA主机上导出公钥为可读格式的指定文件名
    ~]# gpg -a --export -o wang.pubkey
    -a:编码格式
    --export:导出
    -o:指定文件名
  4. 从hostA主机上复制公钥文件到需加密的B主机上
    ~]# scp wang.pubkey hostB:
  5. 在需加密数据的hostB主机上生成公钥/私钥对
    ~]# gpg --list-keys
    ~]# gpg --gen-key
  6. 在hostB主机上导入hostA的公钥
    ~]# gpg --import wang.pubkey
    ~]# gpg --list-keys
  7. 用从hostA主机导入的公钥,加密hostB主机的文件 file1 ,生成 file1.gpg
    ~]# gpg -e -r wange file1
    ~]# file file1.gpg
  8. 从hostB主机上把刚刚加密生成的文件 file1.gpg 复制给hostA主机
    ~]# scp file1.gpg hostA:
  9. 在hostA主机上解密hostB主机传来的文件 file1.gpg
    ~]# gpg -o file1 -d file1.pgp
  10. 删除公钥和私钥
    ~]# gpg --delete-keys wange
    ~]# gpg --delete-secret-keys wange
上一篇下一篇

猜你喜欢

热点阅读