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

简介:

加密可以分为对称加密非对称加密。两者的主要区别就是是否使用同一个秘钥,对称加密需要用同一个秘钥。非对称加密不需要用同一个秘钥,而是需要两个秘钥:公开密钥(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次密码

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

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

spacer.gif1.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

spacer.gif1.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
相关文章
|
17天前
|
安全 算法 数据安全/隐私保护
加密与安全:公开密钥加密、加密过程、数字签名等
这篇文章详细解释了非对称加密算法,包括公开密钥加密的原理、加密过程、数字签名的功能,以及它与对称加密的比较和实际应用场景。
加密与安全:公开密钥加密、加密过程、数字签名等
|
17天前
|
安全 算法 Java
java系列之~~网络通信安全 非对称加密算法的介绍说明
这篇文章介绍了非对称加密算法,包括其定义、加密解密过程、数字签名功能,以及与对称加密算法的比较,并解释了非对称加密在网络安全中的应用,特别是在公钥基础设施和信任网络中的重要性。
|
7天前
|
安全 开发者 数据安全/隐私保护
Xamarin 的安全性考虑与最佳实践:从数据加密到网络防护,全面解析构建安全移动应用的六大核心技术要点与实战代码示例
【8月更文挑战第31天】Xamarin 的安全性考虑与最佳实践对于构建安全可靠的跨平台移动应用至关重要。本文探讨了 Xamarin 开发中的关键安全因素,如数据加密、网络通信安全、权限管理等,并提供了 AES 加密算法的代码示例。
18 0
|
14天前
|
安全 网络安全 数据安全/隐私保护
|
14天前
|
安全 网络安全 数据安全/隐私保护
|
20天前
|
存储 安全 Linux
Linux存储安全:数据加密的实践与策略
【8月更文挑战第19天】数据加密是Linux存储安全的基石之一。通过使用LUKS进行磁盘加密和使用GnuPG进行文件加密,可以显著提高数据的安全性。
29 0
|
23天前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
63 0
|
2天前
|
SQL 安全 网络安全
数字堡垒之下:网络安全漏洞、加密技术与安全意识的现代博弈
在这个数字信息日益膨胀的时代,网络安全成为了保护个人隐私和企业资产的关键防线。本文将深入浅出地探讨网络安全的薄弱环节—漏洞,以及如何通过加密技术和提高安全意识来强化这道防线。我们将从漏洞的类型和发现讲起,进而解析加密技术的原理和应用,最后强调培养良好的安全习惯和意识的必要性。无论你是网络新手还是资深专家,这篇文章都将为你的安全知识库添砖加瓦。
|
1天前
|
监控 安全 算法
数字堡垒之下:网络安全漏洞与加密技术的较量
【9月更文挑战第5天】在数字化时代的浪潮中,网络安全成为了保护信息资产的盾牌。本文将深入探讨网络安全的薄弱环节—漏洞,以及如何利用先进的加密技术来加固这面盾牌。从基础概念到实际操作,我们将一步步揭示如何在网络世界中构筑一道坚不可摧的防线。
|
1天前
|
SQL 安全 网络安全
网络安全的守护者:漏洞、加密与意识的三重奏
【9月更文挑战第5天】在数字时代的交响乐中,网络安全扮演着不可或缺的守护者角色。本文将带领读者穿梭于网络世界的安全缝隙,探索加密技术的奥秘,并唤醒每一位用户内心深处的安全意识。通过深入浅出的讲解和生动的案例分析,我们将一同见证如何构建一道坚不可摧的防线,保护我们的数据不受侵犯,确保个人信息的安全。
23 9
下一篇
DDNS