1、了解
Linux service and security
OpenSSL:为网络通信提供安全及数据完整性的一种安全协议
2、一般都是C/S通信,此种通信客户端有什么特性?服务端有什么特性呢?
(1)两台主机上的通信方式?主机通信实际是进程间通信。
通信方式:socket (套接字)ip:port
客户端cip:port<-->服务器端 scip:port
(2)如何让客户知道自己的主机和端口呢?
把某些众所周知的服务应用设置成默认的端口(固定分配),http服务默认80 ,https443。
(3)服务器日常工作状态
无论有没有客户访问,服务器端都要处于监听模式(打开某个进程来监听ip和port,随时等待客户端来访)
(4)客户端、服务器端两者之间的一个简单通信流程。
客户端要打开某一网页,服务器端在收到请求以后,通过磁盘IO到磁盘的某个分区上讲用户所请求的页面文件加载到应用层进行封装,
,每层逐一封装然后发送给用户。
3.ssl(隧道中通信)
(1)ssl定义
可被调用的公共功能模块,放在了应用层和传输层之间,只有半层。任何不具备加解密功能的程序在研发时只要
调用了此库(此库能自动帮我们完成加解密功能,能帮我们完成密钥分发功能)。这个半层库就叫
ssl(Secure Sockets Layer安全的套接字层)。ssl是一种规范,一种协议。
(2)http到https
http协议(服务、应用程序)本身不具备加密、解密功能,如果调用了ssl库,就能实现其功能(成为https),从而能够完成安全通信。
4.所谓的通信安全
*保密性:confidentiality
*完整性:intergrity
*可用性:availability
5.所谓的通信不安全
*威胁保密性的攻击:窃听、通信量分析;
*威胁完整性的攻击:更改、伪装、重放、否认
*威胁可用性的攻击:拒绝服务
6.通过技术和服务来实现所谓的通信安全
(1)技术:加密和解密
(2)服务:用于抵御攻击的服务,也即是为了上述安全目标而特地设计的安全服务
7、加密、解密的过程
(1)加密的过程:
结合某种算法(比如移位) 通过网络通信机制传输给
未加密的数据(明文)——————————————>密文————————————>收信方
(2)解密的过程(收信方接受到密文后进行解密):
结合解密算法还原成
密文————————————>明文
8、秘钥参与时的加密算法
一般算法都是公开的,安全的实现并不能通过算法本身,而是要依赖参与者(秘钥)的复杂程度,
算法依赖于秘钥的复杂程度来保证安全性。
9、服务
*认证机制
*访问控制机制
10、密钥算法和协议
*对称加密
*公钥加密(非对称加密)
*单向加密
*认证协议
11、Linux系统实现上述技术、服务安全通信使用到的工具
(1)openssl(使用在ssl协议上)
OpenSSL由三部分组成:
*提供了加密解密库:libencrypto库
*libssl库
*openssl多用途命令行工具
(2)GPG(使用在pgp协议上)
12、加密算法和协议:
(1)对称加密:加密和解密使用同一个密钥;
加密算法 DES:Data Encryption Standard;
3DES:Triple DES;
AES:Advanced Encryption Standard; (128bits, 192bits, 256bits, 384bits)
Blowfish
Twofish
IDEA
RC6
CAST5
(2)对称加密的特性:
a、加密、解密使用同一个密钥;
b、将原始数据分割成为固定大小的块,逐个进行加密;
(3)缺陷:
a、密钥过多;
b、密钥分发困难;(秘钥如何安全的送达给通信方?通信方需要秘钥来解密。互联网本身是不安全的,如何在不安全的网络通信上建立一个安全通道?)