Linux加密算法和协议

文章目录

    • 相关名词解释🤣
    • 加密算法和协议
      • 1 对称加密
      • 2 非对称加密▼
        • 1 非对称介绍
        • 2 非对称实现加密
        • 3 非对称实现数字签名
        • 4 RSA和DSA
      • 3 使用gpg实现两种加密
        • ▼1 实现对称加密
        • ▼2 实现公钥加密
      • 4 单向哈希算法
      • 5 综合应用
        • 1 实现数据加密
        • 2 实现数字签名
        • 3 综合加密和签名▼
      • 6 密码交换 IKE

相关名词解释🤣

基本概念

名称全名定义与功能
STRIDE安全攻击
DESData Encryption Standard常用的对称加密算法
RSARSA algorithmRSA公钥私钥加密算法(创始人)
DSADigital Signature Algorithm【数字签名算法】是一种标准的数字签名算法
ECCElliptic Curves Cryptography【椭圆曲线密码编码学】比RSA加密算法使用更小的密钥
IKEInternet Key Exchange【秘钥交换】实现安全地建立或更新共享密钥
DHDeffie-Hellman algorithm【实现秘钥交换的一种算法】生成对称(会话)密钥
PKIPublic Key Infrastructure【公钥加密体系】实现远程用户之间的的通信安全
CACertificate Authority【签证机构】负责颁发证书(根CA自己证明自己的权威)
RARegistry Authority【注册机构】可以是CA,也可以是CA授权的代理机构
CRLCertificate Revocation List【证书吊销列表】对已经吊销的证书进行公布
CSRCerificate Signing Request【证书申请文件】用户用私钥生成CSR,用来向CA申请证书

易混淆:

定义与功能
SSL(Secure Socket Layer)【安全传输协议】实现了信息加密、认证、数据完整、重放保护
TLS(Transport Layer Security)【安全传输协议】同上
HTTPS【http + TLS】【加密文本传输协议】对http协议的文本数据进行加密处理
OpenSSL开源【软件库包】,实现了基本的加密功能,实现了SSL/TLS协议
SSH(secure shell protocol)【安全shell协议】实现安全的远程登录与加密通信
OpenSSH是ssh协议的开源实现方式之一,CentOS 默认安装此程序

加密算法和协议

  • 对称加密
  • 非对称(公钥)加密
  • 单向加密
  • 认证协议

=

1 对称加密

对称加密:加密和解密使用同一个密钥(普通人常用与普通文档加密)

【特点】

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

【缺陷】

  • 密钥过多
  • 密钥分发
  • 数据来源无法确认

【常用算法】

  • DES:Data Encryption Standard,56bits
  • 3DES
  • AES:Advanced (128, 192, 256bits)
  • Blowfish,Twofish
  • IDEA,RC6,CAST5

=

2 非对称加密▼

1 非对称介绍

【特点】

  • 密钥是成对出现,每个公钥唯一对应一个私钥
    用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
  • 公钥:public key,公开给所有人,主要【给别人加密】使用
  • 私钥:secret key,private key 自己留存,必须保证其私密性,用于【自已加密签名】
  • 用私钥能算出对应公钥,反之不可

【实现功能】

  • 用对方公钥加密——数据加密:适合加密较小数据,比如: 加密对称密钥
  • 用自己私钥加密——数字签名:主要作用是让接收方确认发送方身份

【缺陷】

  • 密钥长,算法复杂加密
  • 解密效率低下

【常用算法】

  • RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的
    可实现加密和数字签名
  • DSA(Digital Signature Algorithm):数字【签名】算法,是一种标准的 DSS(数字签名标准)
  • ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学,比RSA加密算法使用更小的密钥,提供相当的或更高等级的安全
2 非对称实现加密
  1. 接收者生成【公钥/密钥对P和S】公开公钥P,保密密钥S
  2. 发送者使用接收者的公钥P来加密消息M,然后将P(M)发送给接收者
  3. 接收者使用密钥S来解密:M=S(P(M))
3 非对称实现数字签名
  1. 发送者生成【公钥/密钥对P和S】公开公钥P,保密密钥S
  2. 发送者使用密钥S来加密消息M,并将S(M)发送给接收者
  3. 接收者使用发送者的公钥来解密M=P(S(M))
4 RSA和DSA

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
原理:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥

DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,【只用于签名】,它比RSA要快很多,而且安全性与RSA相比差不多

=

3 使用gpg实现两种加密

【gpg】是实现加密的命令,来自于包【gnugp】

▼1 实现对称加密

对称加密

gpg -c file
输入两次密码即可完成
# 加密成功之后生成一个新文件xxx.gpg

在另一台主机上解密file

gpg -d file.gpg
# 直接解密只能输出原文内容,不生成文件
【生成文件】的方法:
gpg [-o file] -d file.gpg
gpg -d file.gpg > file
▼2 实现公钥加密

说明:

centos7  gpg --gen-key
centos8 的 gpg --gen-key 默认开启快捷模式,正常: gpg --full-gen-key

演示过程:在hostB主机上用【A公钥】加密文件boot.html,在hostA主机上用【自己的私钥】解密

注意:gpg在centos7/8上【创建密钥】的操作过程有微小差别

  1. 在接收方centos7主机上【生成公钥/私钥对】

    gpg --gen-key
    # Your selection?    (1) RSA and RSA (default)
    # What keysize do you want? (2048) 1024
    # Key is valid for? (0)   0 = key does not expire
    # Is this correct? (y/N)  y
    # 输入Real name:
    # 输入Email address:(可选项)
    # 描述信息:Comment: (可选项)
    Change (N)ame, (E)mail, or (O)kay/(Q)uit?  # 输入O 表示下一步
    Please enter the passphrase to protect your new key 
    '不设密码的情况:'# 要求输入密码保护私钥(timeout=30)# 直接  两次# 继续坚持选择 # 要求再次输入:继续直接 OK
    '设置密码的情况:'# 输入密码,提示密码太弱,铁头娃选择# 再次输入:Please re-enter this passphrase   OK
    然后提示随便【进行一些硬件操作】以创建密码# 此操作最好直接在VM上操作,否则抓不到键盘鼠标的操作内容
    创建成功:# 存放目录:gpg: /root/.gnupg/trustdb.gpg
    
  2. 在centos7主机上【查看公钥】

    # 一般查看公钥不是去浏览文件,而是使用命令
    gpg --list-keys[root@CentOS7 ~]#gpg --list-keys
    /root/.gnupg/pubring.gpg   '公钥的路径'
    ------------------------
    pub   1024R/B2C25345 2020-09-03
    uid                  centos777  '表示所有者,重要凭证'
    sub   1024R/58F0441F 2020-09-03[root@CentOS7 ~]#tree .gnupg/
    .gnupg/
    ├── gpg.conf
    ├── private-keys-v1.d	'centos7私钥'
    ├── pubring.gpg			'centos7公钥'
    ├── pubring.gpg~
    ├── random_seed
    ├── secring.gpg
    ├── S.gpg-agent
    └── trustdb.gpg1 directory, 7 files
    
  3. 在centos7主机上【导出】公钥

    # 公钥是特殊文件,不能直接复制粘贴发送源文件,需要【导出】
    gpg -a --export -o centos7.pubkey[root@CentOS7 ~]#ls
    dead.letter
    [root@CentOS7 ~]#gpg -a --export -o centos7.pubkey  # 导出文件名可自定义
    [root@CentOS7 ~]#ls
    centos7.pubkey  dead.letter   # 成功导出
    [root@CentOS7 ~]#
    
  4. 发送公钥文件到需加密的centos8主机上

    scp centos7.pubkey  10.0.0.8:/root[root@CentOS8 ~]#ls
    centos7.pubkey  rrreset_jacklee.sh   # centos8已收到文件
    
  5. 在需加密数据的centos8主机上生成公钥/私钥对(用于5/6步骤的对比演示)

    gpg --gen-key
    # 注意:centos8上操作步骤有所减少,生成速度变快[root@CentOS8 .gnupg]#tree 
    .
    ├── openpgp-revocs.d
    │   └── 44CAC02F73907B9FBCE10743887C828C305B3FFF.rev
    ├── private-keys-v1.d   'centos8的私钥目录'
    │   ├── 63C50F1AB78C6C78867957FC507131D1EDB67F6B.key
    │   └── 8D0FF2079640AEFA0D028D459871F2EF32880BF6.key
    ├── pubring.kbx    'centos8的公钥'
    ├── pubring.kbx~
    ├── random_seed
    └── trustdb.gpg2 directories, 7 files
    
  6. 在centos8主机上【导入】7的公钥(注意centos7主机本来也有自己的公钥,如何区分?)

    gpg --import centos7.pubkey [root@CentOS8 ~]#gpg --import centos7.pubkey 
    gpg: key 34D03D46B2C25345: public key "centos777" imported
    gpg: Total number processed: 1
    gpg:               imported: 1# 此时centos8上有【多个公钥】
    [root@CentOS8 ~]#gpg --list-keys
    /root/.gnupg/pubring.kbx
    ------------------------
    pub   rsa2048 2020-09-03 [SC] [expires: 2022-09-03]44CAC02F73907B9FBCE10743887C828C305B3FFF
    uid           [ultimate] centos888   '识别信息'
    sub   rsa2048 2020-09-03 [E] [expires: 2022-09-03]pub   rsa1024 2020-09-03 [SC]EEC801402ADBB892E0F6790A34D03D46B2C25345
    uid           [ unknown] centos777	 '识别信息'
    sub   rsa1024 2020-09-03 [E]
    
  7. 用centos7主机的公钥,加密centos8主机的文件【xxx】,生成【xxx.gpg】

    gpg -e -r centos777 xxx   【centos777是uid,不是文件名】 其中'-r centos777'表示指定使用centos7的公钥(因为本机有多个公钥)理由:uid           [ unknown] centos777	 '识别信息'
    加密后生成文件【xxx.gpg】执行file xxx.gpg	查看文件类型:已经是加密文件
    
  8. 发送加密文件到centos7主机

    scp file.gpg 10.0.0.7:/root
    
  9. 在centos7主机用自己的私钥解密文件

    gpg -d xxx.gpg  '只需要写文件,系统自动识别私钥'# 上述解密只能显示在屏幕,生成文件的方法:
    gpg -o xxx -d file.gpg
    gpg -d xxx.gpg > file
    系统提示信息:gpg: encrypted with 1024-bit RSA key, ID 58F0441F, created 2020-09-03"centos777"
    
  10. 删除公钥和私钥

    # 要删除自己的一套密钥,必须先删除私钥
    gpg --delete-secret-keys  uidgpg --delete-keys  uid
    

=

4 单向哈希算法

哈希算法:也称为散列算法,将任意数据缩小成【固定大小】的“指纹”,称为【digest】,即【摘要】

【特性】

  • 任意长度输入,固定长度输出
  • 若修改数据,指纹也会改变,且有雪崩效应,数据的一点微小改变,生成的指纹值变化非常大
  • 无法从指纹中重新生成数据,即【不可逆】,具有单向性

【作用】:保证数据完整性,用来确认源数据是否发生过任何改动

【算法】:md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512

【运用工具】

  • md5sum | sha1sum [ --check ] file
  • openssl、gpg
  • rpm -V

=

哈希运算得到摘要:

sha512sum  file

将摘要保存到文件

sha512sum  file  >  xxx.log

匹配检查:

sha512sum -c xxx.log# 假设对文件centos7.pubkey进行校验
成功:centos7.pubkey: OK失败:centos7.pubkey: FAILEDsha512sum: WARNING: 1 computed checksum did NOT match

=

5 综合应用

1 实现数据加密

【效果】实现数据加密,但无法验证数据完整性和来源

【原理】由于非对称加密对大文本处理速度很慢,因此可先将体量较大的源数据先进行【对称加密】,
然后再将使用的密码【用公钥】加密,实现大文件的快速加密

【发送内容】对称加密的源文件 + 将密码进行非对称加密得到的gpg文件

2 实现数字签名

【效果】不加密数据,可以保证数据来源的可靠性、数据的完整性和一致性

【原理】先对源数据进行【哈希运算】得到摘要,然后再将得到的摘要【用私钥】加密,实现数字签名

【发送内容】源文件 + 用作者私钥加密摘要得到的gpg文件

  • 接收方收到后,用作者公钥解密gpg,得到【标准摘要】
  • 接收方再用同样的哈希算法操作源文件,得到【最新摘要】
  • 比较两个摘要,内容一致则说明文件内容无问题

=

3 综合加密和签名▼

【效果】即实现数据加密,又可以保证数据来源的可靠性、数据的完整性和一致性

方法1(a发送data给b)

Pb{Sa[hash(data)]+data}1=hash(data)                 # 得到摘要
2=Sa[hash(data)]             # 实现签名
3=Pb{Sa[hash(data)]+data}    # 打包并用公钥加密注:无法解决数据量过大,加密解密耗时太长的问题

方法2(a发送data给b)

Pb【对称key{Sa[hash(data)]+data}】1=hash(data)		# 得到摘要
2=Sa[hash(data)]	# 实现签名
3=对称key{Sa[hash(data)]+data}		 # 打包并对称加密
4=Pb【对称key{Sa[hash(data)]+data}# 对简短的key进行公钥加密'全程文字详解:
1=哈希获得原文的【甲方摘要】
2=原文+摘要一起使用甲方私钥加密,得到【数字签名】
3=再把【数字签名】进行对称加密,得到【对称密文】
4=【对称密文】用乙方公钥加密,得到【传输密文】
-------------
1=用乙方私钥解密,得到【对称密文】
2=用对称秘钥解开,得到【数字签名】
3=乙方用甲方公钥解开数字签名,得到:原文+【甲方摘要】乙方用哈希对原文运算,得到【乙方摘要】 
4=比较【乙方摘要】与【甲方摘要】,匹配则文件内容无问题

=

6 密码交换 IKE

密钥交换:IKE( Internet Key Exchange )

  • 公钥加密:用目标的公钥加密对称密钥(即为上一节介绍的方法)
  • DH (Deffie-Hellman):生成对称(会话)密钥

DH 实现过程:

A、B协商生成公开的整数g、大素数p
A:已知 g,p 
B:已知 g,p
A:生成隐私数据:a,(a

=


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部