Linux安全和加解密(一)

本文主要介绍:1、安全机制 2、对称和非对称加密 3、散列算法 4、密钥交换 5、加密工具gpg 6、CA和证书

一、安全机制

安全机制

信息安全防护的目标

  • 保密性 Confidentiality
  • 完整性 Integrity
  • 可用性 Usability     运维两大要点:保证数据安全,保证系统运行高可用性
  • 可控制性Controlability   系统处于可控范围内
  • 不可否认性 Non-repudiation    特定手段保障不可否定性

 

安全防护环节

  • 物理安全:各种设备/主机、机房环境
  • 系统安全:主机或设备的操作系统    acl权限ro权限之类
  • 应用安全:各种网络服务、应用程序
  • 网络安全:对网络访问的控制、防火墙规则    iptables命令
  • 数据安全:信息的备份与恢复、加密解密
  • 管理安全:各种保障性的规范、流程、方法

 

安全

  • 安全攻击: STRIDE
  • Spoofing 假冒   假冒发邮件
  • Tampering 篡改
  • Repudiation 否认
  • Information Disclosure 信息泄漏    wireshark抓包工具  ftp连接主机被抓包泄露口令信息,telnet泄露口令每个字符一个包
  • Denial of Service 拒绝服务    例ping命令 ping -f -s 65507 尽全力发送数据包  生产中较常见
  • Elevation of Privilege 提升权限

 

 

 

不安全的传统协议

  • telnet、FTP、POP3等等;不安全密码
  • http、smtp、NFS等等;不安全信息
  • Ldap、NIS、rsh等等;不安全验证

 

密码算法和协议:

  • 对称加密
  • 公钥加密
  • 单向加密
  • 认证协议
  • Linux系统:OpenSSL, gpg(pgp协议的实现)

二、对称和非对称加密

 

1、对称加密

简介:

A–>B

明文–加密–密文–传输–解密–明文

加密算法:算法得公开,秘钥key不公开

量子计算机普及后密码可以采取暴力破解,一个个试出来

 

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

常见对称加密算法:

DES:Data Encryption Standard,56bits   数据加密标准,较强

3DES:  更强

AES:Advanced (128, 192, 256bits)

Blowfish,Twofish

IDEA,RC6,CAST5

特性:

1、加密、解密使用同一个密钥,效率高

2、将原始数据分割成固定大小的块,逐个进行加密

缺陷:

1、密钥过多

2、密钥分发  不方便传给对象

3、数据来源无法确认   无法确认对象

 

2、非对称加密

简介:

Alice—>Bob

Alice :Pa公钥(公开),Sa私钥(不公开)

Bob:Pb,Sb  (同上)

如果用A公钥加密,则必须用A私钥解密

同样用B私钥加密,则必须用B公钥解密

 

则A如果想传给B数据且只让B看,用B公钥加密,且加密后A也打不开

A分享数据给所有人,用A私钥加密,大家都能用A公钥打开,且能确认数据来源是A

拿到私钥可以推出公钥,反过来不可

 

公钥加密:密钥是成对出现

公钥:公开给所有人;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))

结合签名和加密

分离签名

三、散列算法

 

单项散列简介:

hash(data)=digest摘要

data不同,digest必不同

digest不可反推算出data,digest长度固定大小

md5:128

sha1:160    

/etc/shadow 就是 sha512加密算法

 

md5sum /etc/fstab > md5.log 得出/etc/fstab的hash值存入文件中

md5sum –check md5.log  检查文件有无改动,会有标准输出,只要内容不变名字没所谓

sha1sum /etc/fstab  sha1算法

 

将任意数据缩小成固定大小的“指纹”,即摘要(digest)

任意长度输入

固定长度输出

若修改数据,指纹也会改变(“不会产生冲突”)

无法从指纹中重新生成数据(“单向”)

 

功能:数据完整性

 

常见算式

md5: 128bits、sha1: 160bits、sha224、sha256、sha384、sha512

 

常用工具

 md5sum | sha1sum [ –check ] file

openssl、gpg

rpm -V  检查数据完整性

 

四、密钥交换

 

密钥交换:IKE( Internet Key Exchange )

公钥加密:将公钥加密后通过网络传输到对方进行解密,安全度不高,不常用;

DH (Deffie-Hellman):生成会话密钥,

参看: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

DH:

 1、A: a,p 协商生成公开的整数a, 大素数p  (素数即质数:除了1和此整数自身外,不能被其他自然数整除的数。)

B: a,p

2、A:生成隐私数据 😡 (x<p ),计算得出 a^x%p,发送给B

B:生成隐私数据 :y,计算得出 a^y%p,发送给A

3、A:计算得出 [(a^y%p)^x] %p = a^xy%p,生成为密钥

B:计算得出 [(a^x%p)^y] %p = a^xy%p,生成为密钥

 

五、应用程序:RPM     文件完整性的两种实施方式

 

被安装的文件

      MD5单向散列

rpm –verify package_name (or -V)

发行的软件包文件

       GPG公钥签名

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*    光盘下也有此文件

rpm –checksig pakage_file_name (or -K)

六、加密工具  gpg

 

1、使用gpg实现对称加密

 

对称加密file文件           gpg -c file   

查看生成的加密文件     ls file.gpg     

在另一台主机上解密file       gpg -o file -d file.gpg   

 -d解密但只是标准输出,-o跟文件名生成新文件,选项位置有要求

 

2、使用gpg实现对称加密

 

在hostB主机上用A公钥加密文件 ——-> 在hostA主机上解密

 

流程:A生成公私对钥 –> A(公钥)传给B –> 在B上用A(公钥)加密文件–> 传文件给A –> 在A上解密文件 ==> OK

 

在hostA主机上生成公钥/私钥对

gpg –gen-key    建议在虚拟机上操作,长度1024-4096之间默认2048,有效期默认永久,起名至少五个字符以上如qiqiqi,邮箱可不写,对生成的私钥设口令可不输入系统会询问几遍,移动鼠标生成随机数!存在/root/.gnupg里面

 

在hostA主机上查看公钥

gpg –list-keys    可以看到公钥名字qiqiqi

 

在hostA主机上导出公钥到aaaa.pubkey

gpg -a –export -o aaaa.pubkey   文件名随便写,cat  aaaa.pubkey可读字符

 

从hostA主机上复制公钥文件到需加密的B主机上

scp aaaa.pubkey hostB:

 

 

在hostB主机上导入公钥

gpg –import aaaa.pubkey

gpg –list-keys   可以看到A主机的公钥qiqiqi

 

用从hostA主机导入的公钥,加密hostB主机的文件f1,生成f1.gpg

gpg -e -r qiqiqi f1   这里要用A主机公钥名字,而不是存放公钥的文件名

file f1.gpg      查看文件类型

 

制加密文件到hostA主机

scp f1.gpg hostA:

 

在hostA主机解密文件

gpg -d f1.gpg   预览加密文件解密后的内容,并不生成新文件

gpg  -o  f2  -d  f1.gpg  解密后的文件生成新文件f2

 

删除公钥和私钥

gpg –delete-keys qiqiqi    删除公钥,/root/.gnupg/pubring.gpg 文件会减小

gpg –delete-secret-keys qiqiqi   要写公钥的名字

七、CA和证书

 

PKI: Public Key Infrastructure  公钥基础设施

签证机构:CA(Certificate Authority)   类似公安局

注册机构:RA

证书吊销列表:CRL  网站上名字是“CRL分发点”,可下载文本查看

证书存取库:CB

 

X.509:定义了证书的结构以及认证协议标准,如下:

版本号

序列号                       主体公钥

签名算法                    CRL分发点

颁发者                       扩展信息

有效期限                   发行者签名

主体名称    (即颁发对象)

 

证书类型:

证书授权机构的证书

服务器

用户证书     例如发送邮件,加密邮箱时有

 

获取证书两种方法:

  •   使用证书授权机构

      生成签名请求(csr)  –>  将csr发送给CA   –>     从CA处接收签名

  •   自签名的证书 :  自已签发自己的公钥

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/99674

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code