浅谈加密与安全之密钥

浅谈加密与安全之密钥


安全机制

  • 信息安全防护的目标
    保密性 Confidentiality
    完整性 Integrity
    可用性 Usability
    可控制性 Controlability
    不可否认性 Non-repudiation
  • 安全防护环节
    物理安全:各种设备/主机、机房环境
    系统安全:主机或设备的操作系统
    应用安全:各种网络服务、应用程序
    网络安全:对网络访问的控制、防火墙规则
    数据安全:信息的备份与恢复、加密解密
    管理安全:各种保障性的规范、流程、方法
  • 安全攻击: STRIDE
    Spoofing 假冒
    Tampering 篡改
    Repudiation 否认
    Information Disclosure 信息泄漏
    Denial of Service 拒绝服务
    Elevation of Privilege 提升权限
  • 常用安全技术
    • 认证
    • 授权
    • 审计
    • 安全通信
  • 加密算法和协议
    • 对称加密
    • 公钥加密
    • 单向加密
    • 认证协议

对称加密和非对称加密

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

  • 常用加密标准:
    DES: Data Encryption Standard, 56bits
    3DES
    AES: Advanced Encryption Standard, (128, 192, 256bits)

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

  • 缺陷:
    1、密钥过多:与不同用户通信需要保存不同秘钥
    2、密钥分发:秘钥分发的过程要么不安全,要么分发的效率太低、成本太高
    3、数据来源无法确认
    二、非对称加密

  • 公钥加密:密钥是成对出现,一个用于加密,另一个用于解密

    • 公钥(public key):公开给所有人
    • 私钥(secret key):自己留存,必须保证其私密性
  • 特性:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

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

  • 功能:

    • 数字签名:主要在于让接收方确认发送方身份
    • 对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
    • 数据加密:适合加密较小数据
  • 常用加密标准:
    RSA(加密,数字签名),DSA(数字签名),ELGamal

  • 实现数据加密的过程:

    • 接收者
      生成公钥/密钥对:P和S
      公开公钥P,保密密钥S
    • 发送者
      使用接收者的公钥来加密消息M
      将P(M)发送给接收者
    • 接收者
      使用密钥S来解密:M=S(P(M))
      *实现数字签名的过程
    • 发送者
      生成公钥/密钥对:P和S
      公开公钥P,保密密钥S
      使用密钥S来加密消息M
      发送给接收者S(M)
    • 接收者
      使用发送者的公钥来解密M=P(S(M))

三、单向散列

  • 定义:将任意数据缩小成固定大小的“指纹”
  • 特点:
    • 任意长度输入
    • 固定长度输出
    • 若修改数据,指纹也会改变( “不会产生冲突” )
    • 无法从指纹中重新生成数据( “单向” )
  • 功能:验证数据完整性
  • 常见算法:
    md5: 128bits, sha1: 160bits, sha224, sha256, sha384, sha512
  • 常用工具
    • md5sum | sha1sum [ --check ] file
    • openssl, gpg
    • rpm -V
      浅谈加密与安全之密钥_第1张图片
#md5sum, sha1sum工具验证数据完整性
[root@Centos7 ~]# md5sum /etc/issue > issue_md5
[root@Centos7 ~]# echo >> /etc/issue
[root@Centos7 ~]# md5sum --check issue_md5 
/etc/issue: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
  • 使用gpg实现对称加密
    发送方:gpg -c file,过程输入两次密码,生成file.gpg的加密文件
    接收方:gpg -o file -d file.gpg,输入密码,将解密结果重定向到文件
  • 用gpg实现公钥加密
  • 一、接收方:执行gpg --gen-key命令生成密钥对
    • 第1步:选择密钥加密标准,选择默认RSA
      浅谈加密与安全之密钥_第2张图片
    • 第2步:选择密钥位数,这里指明1024位
      在这里插入图片描述
    • 第3步:选择密钥有效期,选择默认值0,表示永久有效
      浅谈加密与安全之密钥_第3张图片
    • 第4步:为密钥提供一个标签便于区分
      浅谈加密与安全之密钥_第4张图片
    • 第5步:提示输入密码,可以不指定密码,直接ok继续,系统会反复提示确认密码,然后提示生成公钥和私钥成功
      浅谈加密与安全之密钥_第5张图片
  • 二、接收方:查看公钥并且导出公钥
    • 第1步:查看公钥gpg --list-keys
[root@Centos7 ~]#gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024R/C676D850 2019-11-06
uid                  ceshi
sub   1024R/0C4EE36C 2019-11-06
  • 第2步:导出公钥pg -a --export -o hellopeiyang.pubkey
    浅谈加密与安全之密钥_第6张图片

  • 第3步:将公钥发送给发送方
    scp ceshi.pubkey [email protected]:/data

  • 三、发送方:导入接收方的公钥,用这个公钥加密文件,将密文传送给接收方

  • 第1步:导入接收方的公钥gpg --import ceshi.pubkey,可以查看一下是否正确导入gpg --list-keys

[root@Centos7 ~]# gpg --import /data/ceshi.pubkey 
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key C676D850: public key "ceshi" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
[root@Centos7 ~]# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024R/C676D850 2019-11-06
uid                  ceshi
sub   1024R/0C4EE36C 2019-11-06
  • 第2步:用公钥加密文件gpg -e -r ceshi fstab,-r 选项后指定公钥的标签名,生成"原文件名.gpg"的加密文件
[root@Centos7 data]# gpg -e -r ceshi fstab 
gpg: 0C4EE36C: There is no assurance this key belongs to the named user

pub  1024R/0C4EE36C 2019-11-06 ceshi
 Primary key fingerprint: EE8B 48B2 8DFE 404D E9B1  F837 F1B5 EA12 C676 D850
      Subkey fingerprint: 41EF F39B F65E B1EB D2CA  7465 3372 2687 0C4E E36C

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) y
[root@Centos7 data]# ls
ceshi.pubkey  fstab  fstab.gpg
  • 第3步:将加密文件发送给接收方

  • 四、接收方:接收加密文件,用私钥解密文件

    • 执行命令gpg -o fstab -d fstab.gpg,-o选项将解密结果输出重定向到文件
[root@Centos7 /data]#gpg -o fstab -d fstab.gpg 
gpg: encrypted with 1024-bit RSA key, ID 0C4EE36C, created 2019-11-06
      "ceshi"
[root@Centos7 /data]#ls fstab
fstab
  • 五、后续工作:删除密钥
    必须先删除私钥,再删除相应的公钥
    删除私钥:gpg --delete-secret-keys ceshi
    删除公钥:gpg --delete-keys ceshi
    浅谈加密与安全之密钥_第7张图片

你可能感兴趣的:(浅谈加密与安全之密钥)