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 的 ...
随机推荐
- go学习第四天、条件和循环
循环 Go语言仅支持循环关键字 for for i := 0; i<5; i++ 示例 while 条件循环 while(n<5) n := 0 for n < 5 { n++ fm ...
- Vue2.0 【第一季】第2节 v-if v-else v-show 指令
目录 Vue2.0 [第一季]第2节 v-if v-else v-show 指令 第二节 v-if v-else v-show 指令 2.1 v-if指令.v-else指令: 2.2 v-show的使 ...
- python基础学习day03
基础数据类型总览 why:机器无法像人一样分编各种类型 int(数字) str(字符串)作用:存储少量信息. '12','我和你','qw' bool值 作用:判断真假 True False list ...
- C# 获取系统所有字体
获取已安装的所有字体列表 System.Drawing.FontFamily StringBuilder str = ); InstalledFontCollection fonts = new In ...
- java-乘法口诀表。(新手)
//创建的一个包名. package qige; //定义一个类. public class KJ { //公共静态的一个主方法. public static void main(String[] a ...
- Arch Linux开启SSH远程安装(1.5)
现在你的眼前应该可以看到[root@archiso~]#的提示. 首先,建立目标机器的网络设置: 安装和升级软件包前,先让本地的包数据库和远程的软件仓库同步是个好习惯. [root@archiso~] ...
- Journal of Proteome Research | 人类牙槽骨蛋白的蛋白质组学和n端分析:改进的蛋白质提取方法和LysargiNase消化策略增加了蛋白质组的覆盖率和缺失蛋白的识别 | (解读人:卜繁宇)
文献名:Proteomic and N-Terminomic TAILS Analyses of Human Alveolar Bone Proteins: Improved Protein Extr ...
- drf 简介以及部分源码分析
目录 复习 drf框架 全称:django-rest framework 知识点 接口 restful接口规范 基于restful规范的原生Django接口 主路由:url.py api组件的子路由: ...
- STM8L152的EEPROM读写(使用固件库)
STM8L系列单片机内置1K字节的EEPROM,使用起来很方便. EEPROM的地址为: 使用1.6.1的固件库 void EEPROM_Write_Byte(uint16_t Addr,uint8_ ...
- 解决使用requests_html模块,req.html.render()下载chromium速度慢问题
1.第一步,代码如下: from requests_html import HTMLSession url="https://www.baidu.com/" headers={ & ...