Linux应用-加密和安全

本文深入探讨了Linux系统的安全机制,包括墨菲定律、安全设计原则。文章讲解了对称和非对称加密,如RSA和DSA,以及散列算法在RPM中的应用。此外,还介绍了gpg加密工具、PKI、CA、SSL/TLS协议和HTTPS的工作原理。重点讨论了SSH服务、dropbear的安装与配置,以及轻量级自动化运维工具的使用。最后,涉及了AIDE文件完整性检查、sudo权限管理、TCP Wrappers和PAM模块在系统认证中的作用。
摘要由CSDN通过智能技术生成

加密和安全

一、安全机制

1. 墨菲定律

墨菲定律:一种心理学效应,是由爱德华·墨菲(Edward A. Murphy)提出的,
		原话:如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导致灾难
		则必定有人会做出这种选择
		
主要内容:
1.任何事都没有表面看起来那么简单
2.所有的事都会比你预计的时间长
3.会出错的事总会出错
4.如果你担心某种情况发生,那么它就更有可能发生

2. 安全机制

1.信息安全防护的目标
	保密性		Confidentiality
	完整性		Integrity
	可用性		Usability
	可控制性		Controlability
	不可否认性	Non-repudiation

2.安全防护环节
	物理安全:各种设备/主机、机房环境
	系统安全:主机或设备的操作系统
	应用安全:各种网络服务、应用程序
	网络安全:对网络访问的控制、防火墙规则
	数据安全:信息的备份与恢复、加密解密
	管理安全:各种保障性的规范、流程、方法
	
3.安全攻击:
	STRIDESpoofing				假冒
	Tampering					篡改
	Repudiation					否认
	Information Disclosure		信息泄漏
	Denial of Service			拒绝服务
	Elevation of Privilege		提升权限

3. 安全设计基本原则

	1.使用成熟的安全系统
	2.以小人之心度输入数据
	3.外部系统是不安全的
	4.最小授权
	5.减少外部接口
	6.缺省使用安全模式
	7.安全不是似是而非
	8.STRIDE思考
	9.在入口处检查
	10.从管理上保护好你的系统

二、对称和非对称加密

1. 安全算法

1.常用安全技术
	认证
	授权
	审计
	安全通信

2.加密算法和协议
	对称加密
	公钥加密
	单向加密
	认证协议

2. 对称加密算法

对称加密:加密和解密使用同一个密钥
	DES:Data Encryption Standard,56bits
	3DES:
	AES:Advanced (128, 192, 256bits)
	Blowfish,TwofishIDEA,RC6CAST5

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

缺陷:
	1、密钥过多
	2、密钥分发
	3、数据来源无法确认

3. 非对称加密算法

1.公钥加密:密钥是成对出现
	公钥:公开给所有人;public key
	私钥:自己留存,必须保证其私密性;secret key
2.特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
3.功能:
	数字签名:主要在于让接收方确认发送方身份
	对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
	数据加密:适合加密较小数据
4.缺点:密钥长,加密解密效率低下
5.算法:
	RSA(加密,数字签名)
	DSA(数字签名)
	ELGamal

6.基于一对公钥/密钥对
	用密钥对中的一个加密,另一个解密
	
7.实现加密:
	接收者
		生成公钥/密钥对:PS
		公开公钥P,保密密钥S
	发送者
		使用接收者的公钥来加密消息MP(M)发送给接收者
	接收者
		使用密钥S来解密:M=S(P(M))
		
8.实现数字签名:
	发送者
		生成公钥/密钥对:PS
		公开公钥P,保密密钥S
		使用密钥S来加密消息M
		发送给接收者S(M)
	接收者
		使用发送者的公钥来解密M=P(S(M))
		
9.结合签名和加密
10.分离签名

数字签名
在这里插入图片描述

4. RSA和DSA

1.RSA:公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在
(美国麻省理工学院)开发的,RSA取名来自开发他们三者的名字,后成立RSA
数据安全有限公司。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目
前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于
一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积
进行因式分解却极其困难,因此可以将乘积公开作为加密密钥

2.DSA (Digital Signature Algorithm)1991726日提交,并归属于David
W. Kravitz前NSA员工,DSA是Schnorr和ElGamal签名算法的变种,被美国
NIST作为SS(DigitalSignature Standard)DSA是基于整数有限域离散对数难
题的,其安全性与RSA相比差不多。DSA只是一种算法,和RSA不同之处在于
它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多

三、散列算法

1. 单向散列

1.将任意数据缩小成固定大小的“指纹”
	• 任意长度输入
	• 固定长度输出
	• 若修改数据,指纹也会改变(“不会产生冲突”)
	• 无法从指纹中重新生成数据(“单向”)
2.功能:数据完整性
3.常见算法
	md5: 128bits、sha1: 160bits、sha224、sha256、sha384、sha512
4.常用工具
	• md5sum | sha1sum [ --check ] file
	• openssl、gpg
	• rpm -V

2. 应用程序:RPM

1.文件完整性的两种实施方式
2.被安装的文件
	• MD5单向散列
	• rpm --verify package_name (or -V)
3.发行的软件包文件
	• GPG公钥签名
	• rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
	• rpm --checksig pakage_file_name (or -K)

3. 密钥交换

密钥交换:IKE( Internet Key Exchange )
	公钥加密:
	DH (Deffie-Hellman):生成会话密钥,由惠特菲尔德·迪菲(Bailey
Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年发表
参看:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

DH:
第一步:
 A: g,p 协商生成公开的整数g, 大素数p
 B: g,p
第二步:
 A:生成隐私数据 :a (a<p ),计算得出 g^a%p,发送给B
 B:生成隐私数据 :b,计算得出 g^b%p,发送给A
第三步: 
 A:计算得出 [(g^b%p)^a] %p = g^ab%p,生成为密钥
 B:计算得出 [(g^a%p)^b] %p = g^ab%p,生成为密钥

四、gpg

1. 使用gpg实现对称加密

1.对称加密file文件
	gpg -c file
	ls file.gpg
2.在另一台主机上解密file
	gpg -o file -d file.gpg

2. 使用gpg工具实现公钥加密

1.在hostB主机上用公钥加密,在hostA主机上解密
2.在hostA主机上生成公钥/私钥对
	gpg --gen-key
3.在hostA主机上查看公钥
	gpg --list-keys
4.在hostA主机上导出公钥到wang.pubkey
	gpg -a --export -o wang.pubkey
5.从hostA主机上复制公钥文件到需加密的B主机上
	scp wang.pubkey hostB:
6.在需加密数据的hostB主机上生成公钥/私钥对
	gpg --list-keys
	gpg --gen-key
7.在hostB主机上导入公钥
	gpg --import wang.pubkey
	gpg --list-keys
8.用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg
	gpg -e -r wangxiaochun file
	file file.gpg
9.复制加密文件到hostA主机
	scp fstab.gpg hostA:
10.在hostA主机解密文件
	gpg -d file.gpg
	gpg -o file -d file.gpg
11.删除公钥和私钥
	gpg --delete-keys wangxiaochun
	gpg --delete-secret-keys wangxiaochun

3. 中间人攻击

在这里插入图片描述

五、PKI和CA

1. CA和证书

1.PKI:Public Key Infrastructure
	签证机构:CA(Certificate Authority)
	注册机构:RA
	证书吊销列表:CRL
	证书存取库:
2.X.509:定义了证书的结构以及认证协议标准
	版本号
	序列号
	签名算法
	颁发者
	有效期限
	主体名称
	主体公钥
	CRL分发点
	扩展信息
	发行者签名

2. 证书获取

1.证书类型:
	证书授权机构的证书
	服务器
	用户证书
2.获取证书两种方法:
	使用证书授权机构
		生成证书请求(csr)
		将证书请求csr发送给CA
		CA签名颁发证书
	自签名的证书
		自已签发自己的公钥

3. 安全协议

1.SSL:Secure Socket Layer,TLS: Transport Layer Security
	1995SSL 2.0 Netscape
	1996SSL 3.0
	1999TLS 1.0
	2006TLS 1.1 IETF(Internet工程任务组) RFC 4346
	2008TLS 1.2 当前使用
	2015TLS 1.3
	功能:机密性,认证,完整性,重放保护
2.两阶段协议,分为握手阶段和应用阶段
	握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字
证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使
用的所有密钥都是通过MasterSecret生成
	应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密
钥进行安全通信

4. SSL/TLS

1.Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身
  份认证可选)、密钥交换
2.ChangeCipherSpec 协议:一条消息表明握手协议已经完成
3.Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,
  fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,
  只是会给出错误警告
4.Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等
5.HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP over
  SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二
  进制形式传输

在这里插入图片描述

5. HTTPS

HTTPS结构
在这里插入图片描述

HTTPS工作过程
在这里插入图片描述

六、openssl

1. OpenSSL

1.OpenSSL:开源项目
	三个组件:
		openssl:多用途的命令行工具,包openssl
		libcrypto:加密算法库,包openssl-libs
		libssl:加密模块应用库,实现了ssl及tls,包nss
		
2.openssl命令:
	两种运行模式:交互模式和批处理模式
	openssl version:程序版本号
	标准命令、消息摘要命令、加密命令
		标准命令:enc, ca, req, ...

3.对称加密:
	工具:openssl enc, gpg
	算法:3des, aes, blowfish, twofish
	
4.enc命令:
	帮助:man enc
	加密:
		openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
	解密:
		openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
		openssl ?

5.单向加密:
	工具:md5sum, sha1sum, sha224sum,sha256sum…
		openssl dgst
		
6.dgst命令:
	帮助:man dgst
	openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
	openssl dgst -md5 testfile
	md5sum /PATH/TO/SOMEFILE
		
7.MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现
网络通信中保证所传输数据的完整性机制
	CBC-MAC
	HMAC:使用md5或sha1算法

8.生成用户密码:
	passwd命令:
	帮助:man sslpasswd
	openssl passwd
写了个linux平台加密程序ende 共两个程序 (一) 用tar打包压缩一个文件夹后用openssl的AES256加密 #!/bin/bash # Use openssl to encrypt one folder. # # Usage: # en infolder # Result: # infolder.tar.gz.aes256cbc # # Note: # 1) tar zcvf => openssl # 2) Don't use space in folder[or path]! # # Version: # v0.1[20110721] # Author: # JEF [dungeonsnd@126.com] # (二) 用openssl的AES256-cbc解密一个文件成一个tar.gz包,然后解包成一个文件夹 #!/bin/bash # Use openssl to decrypt one folder. # Usage: # en InFolder.tar.gz.aes256cbc # Note: # 1) Don't use space in InFolder! # 2) openssl => tar zxvf # # # Version: # v0.1[20110721] # Author: # JEF [dungeonsnd@126.com] # ============================================================== (三) 使用试例 view plain dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 4 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> cd myfolder/ dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> ll total 8 -rw-r--r-- 1 dnd users 4 Jul 22 11:46 infile2.txt -rw-r--r-- 1 dnd users 21 Jul 22 11:46 infile.txt dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cat infile.txt abc你好?? !!好啊 dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cat infile2.txt aaa dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cd .. dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 4 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> en myfolder/ =========================================== [Now,tar will compress myfolder to myfolder.tar.gz,please wait......] myfolder/ myfolder/infile.txt myfolder/infile2.txt =========================================== [Now,openssl will encrypt myfolder.tar.gz to myfolder.tar.gz.aes256cbc,please wait......] enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password: =========================================== [Now,script finished successfully!] dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 8 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder -rw-r--r-- 1 dnd users 325 Jul 22 13:14 myfolder.tar.gz.aes256cbc dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> mv myfolder myfolder.bk dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 8 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder.bk -rw-r--r-- 1 dnd users 325 Jul 22 13:14 myfolder.tar.gz.aes256cbc dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> de myfolder.tar.gz.aes256cbc =========================================== [Now,openssl will decrypt myfolder.tar.gz.aes256cbc to myfolder.tar.gz,please wait......] enter aes-256-cbc decryption password: =========================================== [Now,tar will extract myfolder.tar.gz to myfolder.,please wait......] myfolder/ myfolder/infile.txt myfolder/infile2.txt =========================================== [Now,script finished successfully!] dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> ll total 12 drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder drwxr-xr-x 2 dnd users 4096 Jul 22 11:46 myfolder.bk -rw-r--r-- 1 dnd users 325 Jul 22 13:14 myfolder.tar.gz.aes256cbc dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t> cd myfolder dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> ll total 8 -rw-r--r-- 1 dnd users 4 Jul 22 11:46 infile2.txt -rw-r--r-- 1 dnd users 21 Jul 22 11:46 infile.txt dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cat infile.txt abc你好?? !!好啊 dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> cat infile2.txt aaa dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> ll /usr/bin/en -rwxr-xr-x 1 root root 827 Jul 22 13:00 /usr/bin/en dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> ll /usr/bin/de -rwxr-xr-x 1 root root 715 Jul 22 13:00 /usr/bin/de dnd@linux-ibzb:~/doc/fromdisk/Tech/MySrc/t/myfolder> 可以看到,加密一个文件夹使用如下命令: en foldername 而解决刚才的文件夹使用如下命令 de filename 另外,如果想使用另外的加密算法要改这两个脚本。目前是使用openssl库的,AES256-cbc. 所以你的linux机器上一定要安装成功openssl(直接在终端敲入"openssl",如果成功进入openssl程序则说明安装好了openssl了,那么这两个脚本可以直接用,否则要先到openssl官网下载并安装之). 详细用法见作者博客。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值