安全与加密-使用gpg和openssl实现加密与解密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

加密可以分为对称加密非对称加密。两者的主要区别就是是否使用同一个秘钥,对称加密需要用同一个秘钥。非对称加密不需要用同一个秘钥,而是需要两个秘钥:公开密钥(publickey)和私有密钥(privatekey),并且加密密钥和解密密钥是成对出现的。


对称加密算法

对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。

不足之处是,交易双方都使用同样钥匙,安全性得不到保证。

常见的对称加密有DES,3DES,AES,Blowfish,Twofish,IDEA,RC6,CAST5 等。


非对称加密算法

密钥是成对出现。使用一对“私钥-公钥”,用私钥加密的内容只有对应公钥才能解开

常见的非对称加密有 RSA、ESA、ECC 等。

 公钥:公开给所有人。不能通过公钥反推出私钥;public key

 私钥:自己留存,不公开。有且只有一个对应的私钥;secret key

 特点:通过私钥加密的密文只能通过公钥能解密,通过公钥加密的密文也只能通过私钥能解密。

但由于算法强度比对称加密复杂,加解密的速度比对称加解密的速度要慢。


来查看本机系统中ssh中的密钥都长啥样呢。pub结尾的就是公钥,key结尾的就是私钥

#ls /etc/ssh/

ssh_host_dsa_key.pub  ssh_host_key.pub  ssh_host_rsa_key.pub

ssh_config  ssh_host_dsa_key  ssh_host_key          ssh_host_rsa_key


查看系统中密码加密算法

#authconfig --test|grep password

shadow passwords are enabled

password hashing algorithm is sha512


常见加密算法工具

md5: 128bits、 sha1: 160bits、 sha224

sha256、 sha384、 sha512


 常用工具

md5sum

sha1sum

sha512sum

openssl

gpg

• rpm -V

需要先导入光盘中的GPG-KEY:

#rpm --import /dvd/RPM-GPG-KEY-CentOS-6

或安装好的系统的

#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#rpm -K /dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm

/dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK


可以利用加密算法对文件进行计算以便发现是否被篡改

md5sum --check 保存的计算结果文件

#sha512sum --check file.sum

b: FAILED

sha512sum: WARNING: 1 of 1 computed checksum did NOT match


使用gpg实现对称加密与解密

 对称加密file文件

#gpg -c sshd_config

1.png

输入2次密码之后,会生成一个sshd_config.gpg


#file sshd_config.gpg

sshd_config.gpg: data


解密此加密过的file,输入正确的密码即可

-o 是指定输出位置,必须放在前面。

#gpg -o /tmp/sshd -d sshd_config.gpg


使用gpg工具实现非对称公钥加密与解密


#gpg --gen-key

gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want: 选择加密方式

(1) RSA and RSA (default)

(2) DSA and Elgamal

(3) DSA (sign only)

(4) RSA (sign only)

Your selection? 1

RSA keys may be between 1024 and 4096 bits long.选择加密长度

What keysize do you want? (2048) 默认回车

Requested keysize is 2048 bits

Please specify how long the key should be valid.选择密钥有效期

0 = key does not expire

<n>  = key expires in n days

<n>w = key expires in n weeks

<n>m = key expires in n months

<n>y = key expires in n years

Key is valid for? (0) 1y

Key expires at Sun 13 Jan 2019 08:02:46 PM CST

Is this correct? (y/N) y 是否确认以上信息

GnuPG needs to construct a user ID to identify your key.

Real name: gpg 保存一个名字

Name must be at least 5 characters long 至少需要5个字符

Real name: gpg-key-a

Email address: aa@aa.com 邮件地址

Comment:  备注

You selected this USER-ID:

"gpg-key-a <aa@aa.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O 保存是O

再接输入2次密码

然后,加密过程就根据加密长度,会让你随机输入字符,总这就是你不断的敲东西啦。可以开多个终端窗口,批量发送信息。挺有意思的。

这个操作在图形界面下只需要动动鼠标就好了

1.png

生成了一对密钥。

#ls ~/.gnupg/

gpg.conf  private-keys-v1.d  pubring.gpg  pubring.gpg~  random_seed  secring.gpg  trustdb.gpg

pubring.gpg 公钥

secring.gpg 私钥

#gpg -k

/root/.gnupg/pubring.gpg

------------------------

pub   2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]

uid                  gpg-key-a <aa@aa.com>

sub   2048R/215FAF14 2018-01-13 [expires: 2019-01-13]


导出公钥

#gpg -a --export -o gpg-a-pubkey


在另外一个系统导入公钥

#gpg --import gpg-a-pubkey

#gpg -k   能看到导入的公钥

/root/.gnupg/pubring.gpg

------------------------

pub   2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]

uid                  gpg-key-a <aa@aa.com>

sub   2048R/215FAF14 2018-01-13 [expires: 2019-01-13]


加密文件

#gpg -e -r gpg-key-a gpg.conf     -r 是指定加密的公钥名


回到导出公钥的主机,执行解密

#gpg -d gpg.conf.gpg

1.png

成功


OpenSSL

开源项目

三个组件:

openssl: 多用途的命令行工具,包openssl

libcrypto: 加密算法库,包openssl-libs

libssl:加密模块应用库,实现了ssl及tls,包nss,openssl命令:

两种运行模式:交互模式和批处理模式

直接使用openssl回车进入交互模式,输入?列出命令菜单。

命令分为:

标准命令Standard commands

消息摘要命令Message Digest commands

加密命令Cipher commands

openssl命令

帮助:man enc ,man dgst

对称加密

语法:

openssl enc

常用选项有:

-in filename: 指定要加密的文件存放路径

-out filename: 指定加密后的文件存放路径

-salt: 自动插入一个随机数作为文件内容加密,默认选项

-e: 可以指明一种加密算法,若不指的话将使用默认加密算法。支持的算法在man中

-d: 解密,解密时也可以指定算法,若不指定则使用默认算法,但一定要与加密时的 算法一致

-a/-base64: 使用-base64位编码格式

示例

#openssl enc -e -des3 -a -in issue -out issue.des3

enter des-ede3-cbc encryption password:

Verifying - enter des-ede3-cbc encryption password:

#ll

-rw-r--r-- 1 root root 33 Jan 14 16:11 issue

-rw-r--r-- 1 root root 78 Jan 14 16:25 issue.des3

#cat issue.des3

U2FsdGVkX1+eOWAl9ZWtfyLzZY/4+256W1QduATECmFFuhYhc9pX2HZAe9AQ9l/o

K3aVnlttg4s=

解密

#openssl enc -d -des3 -a -in issue.des3 -out issue2

单向加密:

openssl dgst

常用选项有:

-out filename: 将加密的内容保存到指定文件中

示例

#openssl dgst issue   默认是MD5

MD5(issue)= 1ad7bcb8447ccaaeb490feea29c6f6df

#openssl dgst -sha512 issue

生成用户密码:

openssl passwd

帮助:man sslpasswd

常用选项

-salt string:加入随机数,最多8位随机数

-in file:对输入的文件内容进行加密

-stdion:对标准输入的内容进行加密

openssl passwd -1 -salt SALT(最多8位)

openssl passwd -1 –salt centos

生成随机数:

openssl rand

帮助:man sslrand

openssl rand -base64 NUM

NUM: 表示字节数

生成密钥对:

openssl genrsa

帮助:man genrsa

openssl rand -base64 NUM

NUM: 表示字节数

#openssl genrsa -out issue.key -des3 2048  

#(umask 066;openssl genrsa -out issue.key -des3 2048)  使用这绿色的参数是非对称加密

生成后必须放到一个安全的地方,并且修改权限不让其他人查看

使用非对称加密后的key会有这些字样:Proc-Type: 4,ENCRYPTED

将加密key解密

#openssl rsa -in issue.key -out issue.key2

从私钥中提取出公钥

常用选项:

-in filename:指明私钥文件

-out filename:指明将提取出的公钥保存至指定文件中

-pubout:根据私钥提取出公钥

#openssl rsa -in issue.key -pubout -out issue.key.pub

cat issue.key.pub

-----BEGIN PUBLIC KEY-----




总结,用你的公钥来加密文件,只有你的私钥才能解密。安全性提高。




本文转自 ljpwinxp 51CTO博客,原文链接:http://blog.51cto.com/191226139/2060667
相关文章
|
4月前
|
存储 安全 API
如何对 API 进行安全加密?
对API进行安全加密是保障数据安全和系统稳定的重要措施
330 56
|
9天前
|
存储 安全 数据安全/隐私保护
Hyper V文件复制安全:加密与访问控制
在Hyper-V环境中,确保文件复制的安全性至关重要。主要措施包括:启用数据加密、使用HTTPS协议和磁盘加密技术(如BitLocker)保护数据传输和存储;通过身份验证、权限管理和审核日志控制访问;定期更新补丁、实施网络隔离及制定备份恢复策略。这些多层次的安全措施共同防止未经授权的访问和数据泄露,保障数据安全。
Hyper V文件复制安全:加密与访问控制
|
21天前
|
安全 算法 物联网
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。
|
1月前
|
算法 安全 Java
即时通讯安全篇(一):正确地理解和使用Android端加密算法
本文主要讨论针对Android这样的移动端应用开发时,如何正确的理解目前常用的加密算法,为诸如即时通讯应用的实战开发,如何在合适的场景下选择适合的算法,提供一些参考。
50 0
|
5月前
|
存储 安全 前端开发
端到端加密:确保数据传输安全的最佳实践
【10月更文挑战第12天】端到端加密(E2EE)是确保数据传输安全的重要手段,通过加密技术保障数据在传输过程中的隐私与完整性,防止第三方窃听和篡改。本文介绍E2EE的工作原理、核心优势及实施步骤,并探讨其在即时通讯、文件共享和金融服务等领域的应用,强调了选择加密协议、密钥管理、数据加密及安全接口设计的重要性,旨在帮助企业和开发者有效保护用户数据,满足数据保护法规要求。
|
5月前
|
安全 数据安全/隐私保护 CDN
阿里云国际站:海外视频安全的DRM
阿里云国际站:海外视频安全的DRM加密
|
5月前
|
安全 数据安全/隐私保护 CDN
阿里云海外视频安全的DRM
阿里云海外视频安全的DRM加密
|
23天前
|
云安全 安全 数据建模
《数字证书:互联网世界的"身份证"与"防盗门"》 ——揭秘网络安全背后的加密江湖
在2023年某深夜,上海陆家嘴金融公司机房遭遇黑客攻击,神秘青铜大门与九大掌门封印的玉牌突现,阻止了入侵。此门象征数字证书,保障网络安全。数字证书如验钞机识别假币,保护用户数据。它通过SSL/TLS加密、CA认证和非对称加密,构建安全通信。证书分为DV、OV、EV三类,分别适合不同场景。忽视证书安全可能导致巨额损失。阿里云提供一站式证书服务,助力企业部署SSL证书,迎接未来量子计算和物联网挑战。
|
3月前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
3月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。