Linux学习66 运维安全-通信加密和解密技术入门
一、Linux Service and Security
1、OpenSSL(ssl/tls)协议
2、OpenSSH(ssh)协议
3、bind(dns)
4、web(http):httpd(apache),php,mariadb(mysql),LAMP,nginx(tengine,openresty),lnmp
5、file server:nfs,samba,ftp
6、dhcp,pxe
7、iptables
8、sudo,pam,nsswitch
二、OpenSSL
1、我们网络通信的两套协议家族(OSI和TCP/IP)
2、我们的通信协议大概可以分为两层,位于用户空间的叫做资源子网,位于内核空间的叫做通信子网,任何一个进程通信的数据报文都要通过网络发送给主机才能完成通信的目的。因此TCP/IP协议栈中应用层(资源子网)以下的几层主要考虑的是报文如何安全无误的送达到通信对端的。而资源子网中主要是考虑我们的数据是如何组织和交换的。我们的数据该如何表示,如何组织以及如何完成双方在应用层的交换。因此应用层主要是在用户空间实现,那么用户空间谁来负责实现它呢?其实在用户空间中每安装一款软件他就能作为我们用户空间的协议的客户端或服务端在进行工作,比如我们安装了httpd那么他就能作为我们http协议的服务端在工作。我们的浏览器就相当于作为http协议的客户端在工作。
3、同一主机上的进程间通信:IPC,message queue(消息队列),shm(共享内存),semerphor
4、不同主机上的进程间通信:socket
a、IP:port
port:进程地址,其是由内核中传输层协议提供,进程向内核注册使用某端口(独占)。
b、传输层协议:TCP,UDP,SCTP(流控协议)
c、cip:port <-- --> sip:port
d、我们通信的时候是一方发起一方接收,那么我们接收的一方到底该怎么接收呢?是别人随来我们就可以随意接收呢还是说我们应该做出什么样的准备来接收呢?因此一般来讲通信请求的发起方一般来讲应该明确对端的地址,包含了IP+端口,那么我们如何得知对端的IP+端口呢?因此我们的服务器端随时就需要处于监听模式。他指的是无论有没有人访问他都在那里。因此我们默认的http服务是80,https服务是443
5、ssl(Secure Socket layer):我们的wangjing公司为http协议设计研发了一种可被调用的公共功能模块,这个公共功能模块把它放在了应用层和传输层之间,他以库的形式来表示,并且在应用层和传输层协议层中都只放了半层。任何本身不具备加解密的程序在研发时调用了这个库他就能使用这个功能。研发时你调用了这个库他就能使用这个功能,不调用的话也照样可以工作,因此你用或者不用都可以,而这个半层库就叫ssl,也就叫安全的套接字层。所以无论是客户端还是服务器端开发时的程序员都需要用到这个库,程序员如果调用了这个库,这个库自身就能帮我们完成加解密功能。能帮我们完成秘钥分发功能。如果不调用也是可以的。

6、https,如果http协议调用了ssl就变成了https。http和https实现上差别非常的大。现在我们有一种全栈https运动,相当于你浏览商品的过程也是加密的,为什么呢?并不是说你浏览商品的过程是不可告人的,而是说现在互连网上很多运营商是非常流氓的,他会悄悄分析你浏览的过程,然后将过程中的广告悄悄换成自己的。
7、通信安全目标
a、通信的保密性:confidentiality
b、通信完整性:integrity
c、通信可用性:availability
8、安全攻击类型
a、威胁保密性攻击:窃听、通信量分析
b、威胁完整性的攻击:更改、伪装、重放,否认
c、威胁可用性的攻击:拒绝服务(DoS)
9、解决方案
a、技术
(1)、加密和解密
(2)、服务(用于抵御攻击的服务,也即是为了实现上述安全目标而特地设计的安全服务)
b、加密和解密
(1)、传统加密方法:替代加密方法、置换加密方法
(2)、现代加密方法:现代块加密方法、
任何未加密的技术我们都可以称为明文,然后我们结合算法将其转换为另外一种机制,我们称为密文,这个过程我们就称为加密。解密相当于我们拿到密文后使用解密算法然后将其转换为明文。因为算法好多人都知道,因此我们更多的不能依赖于算法本身而应该依赖于参与者,我们可以额外加一个参与者,也叫秘钥。我们可以让秘钥作为参与者从而保证加密的安全性,算法人人都可以理解,即便你知道算法和密文,我们也要确保不能通过密文在不知道秘钥的情况下暴力还原回来。这儿就有一个问题就是你的秘钥如何安全送达到对方,因为对方没有你的秘钥他也没法解密。如果你们此前未曾见过面,这时候就比较麻烦了

c、服务
(1)、认证机制
(2)、访问控制
d、秘钥算法和协议
(1)、对称加密
(2)、公钥加密
(3)、单向加密
(4)、认证协议
10、Linux实现上述加密功能的协议
a、OpenSSL(ssl协议的实现)
b、GPG(pgp协议的实现)
三、OpenSSL
1、OpenSSL由三部分组成
a、libencrypt:加密和解密库,专门实现加密和解密功能
b、libssl:用来实现sll安全通信机制的库。因此任何程序如果要想实现加密解密功能不是为了通信的目的可以调用libencrypt库,如果要基于安全通信方式加密解密就可以使用libssl
c、openssl:多用途命令行工具
2、加密算法和协议
a、对称加密:加密和解密使用同一个密钥

(1)、DES:Data Encryption Standrd。2003年被废了,因为被一个100万美元的服务器破解了。
(2)、3DES:Triple DES。比DES安全了三个数量级
(3)、AES:Advanced Encryption Standrd。DES使用56位密钥,而AES支持128,192,256,384位密钥
(4)、Blowflsh
(5)、Twoflsh
(6)、IDEA
(7)、RC6
(8)、CAST5
b、特性
(1)、加密,解密使用同一个密钥
(2)、将原始数据分割成为固定大小的块,逐个进行加密
c、缺陷
(1)、密钥过多:作为服务器端,我们需要与成千上万的客户端通信,这就导致我们要与每一个通信者之间都要使用一个独立的专用密钥,否则都有可能导致密钥彼此之间共享,一旦共享了安全性就不复存在了。
(2)、密钥分发困难:某东生成了密钥加密了一个数据,加密了数据后你访问不了还要再把密码给你,怎么拿到密码呢?因此就涉及到密钥交换。
Linux学习66 运维安全-通信加密和解密技术入门的更多相关文章
- 运维安全系列基础服务之 FTP 服务(系列一)
做了多年运维工程师,积攒了一些经验,和大家分享下.个人认为,运维安全话题的系列,主要包括下面四个方面: 基础服务 网络层 应用层 云安全 今天主要讲的是基础服务里面的[FTP服务][ftp]. 文件传 ...
- linux运维安全工具集合[持续更新中..]
lynis 安全漏洞检测工具 https://cisofy.com/download/lynis/ https://cisofy.com/files/lynis-2.2.0.tar.gz ...
- linux学习9 运维基本功-Linux常用基础命令实战应用
一.文件系统知识回顾 1.Linux文件系统: a.文件名称严格区分字符大小写 b.文件可以使用除/以外任意字符 c.文件名长度不能超过255个字符 d.以.开头的文件为隐藏文件: . :当前目录 . ...
- linux学习8 运维基本功-Linux获取命令使用帮助详解
一.Linux基础知识 1.人机交互界面: a.GUI b.CLI:[login@hostname workdir]# COMMAND 2.命令知识 通用格式:# COMMAND OPTIONS A ...
- linux学习17 运维核心技能-Linux系统下用户权限管理
一.权限管理 1.ls -l rwxrwxrwx 左三位:定义user(owner)的权限 中三位:定义group的权限 右三位:定义other的权限 1.进程安全上下文 a.进程对文件的访问权限应用 ...
- Java采用RSA加密及解密技术的有关Maven项目的配置流程:
第一步: 获得RSA公钥私钥(秘钥格式:PKCS#8 ,测试使用的是无私钥密码的) 公钥: -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4G ...
- Linux轻量级自动运维工具-Ansible浅析【转】
转自 Linux轻量级自动运维工具-Ansible浅析 - ~微风~ - 51CTO技术博客http://weiweidefeng.blog.51cto.com/1957995/1895261 Ans ...
- Linux轻量级自动运维工具-Ansible浅析 转
转自 Linux轻量级自动运维工具-Ansible浅析 - ~微风~ - 51CTO技术博客http://weiweidefeng.blog.51cto.com/1957995/1895261 Ans ...
- [转帖]Linux学习笔记之rpm包管理功能全解
Linux学习笔记之rpm包管理功能全解 https://www.cnblogs.com/JetpropelledSnake/p/11177277.html rpm 的管理命令 之前学习过 yum 的 ...
随机推荐
- idea最下方视图中没有spring框解决方法
之前遇到过idea打开一个项目后,如图所示的spring视图框消失不见了. 并且view-Tool windows里面也找不到的问题;因为没有这个的话还挺烦的,网上搜了好久都没有资料,所以记录一下; ...
- 记录一个引用文件所有js文件的方法
在项目api声明的时候,避免每次添加新的js都要对应去处理 首先我在项目api文件下新建一个files的文件夹,然后再api文件夹下的index.js这样写: var api = {}; const ...
- 关于beforeRouteEnter中的next()
beforeRouteEnter(to,from, next){ console.log(this) //undefined next(vm => { console.log(vm)}) } ...
- node 微信授权 获取openid
node获取微信授权拿到openid 需要了解的网站 1.微信授权. 先说一下流程(一张图代替所有): 流程步骤: 1.用户同意,获取code. 2.通过code获取网页授权access_toke ...
- SpringBoot入门系列(七)Spring Boot整合Redis缓存
前面介绍了Spring Boot 中的整合Mybatis并实现增删改查,.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/ ...
- (转)const的内部链接属性(C++中适用)
转载自:http://xiangwangfeng.com/2011/05/02/const%E7%9A%84%E5%86%85%E9%83%A8%E9%93%BE%E6%8E%A5%E5%B1%9E% ...
- AspNetCore3.1_Secutiry源码解析_3_Authentication_Cookies
系列文章目录 AspNetCore3.1_Secutiry源码解析_1_目录 AspNetCore3.1_Secutiry源码解析_2_Authentication_核心流程 AspNetCore3. ...
- PDF顯示插件
1. ie瀏覽器適用<object id="pdf_panel" class="pdf-panel" classid="clsid:CA8A97 ...
- Python-时间戳、元组时间的格式、自定义时间格式之间的转换
一.时间戳.元组时间的格式.自定义时间格式之间的转换 1.下面是三者之间的转换关系: 2.代码如下: import time import datetime print(time.time()) #获 ...
- 洛谷1258 Tire字典树
直接上代码: #include<bits/stdc++.h> using namespace std; typedef unsigned int ui; typedef long long ...