密码/数据嗅探 数据操作 验证操作 相当于邮寄明信片
telnet、FTP、POP3等等;不安全密码http、sendmail、NFS等等;不安全信息Ldap、NIS、rsh等等;不安全验证
1) 保密性: 数据保密性 隐私性2)完整性:不可篡改 数据完整性 系统完整性3)可用性
Spoofing(假冒)、Tampering(篡改)、Repudiation(否认)、Information Disclosure(信息泄漏)、 Denial of Service(拒绝服务)和Elevation of Privilege(提升权限)
加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证
认证 访问控制 数据保密性 连接保密性 无连接保密性 选择域保密性 流量保密性 数据完整性 不可否认性
使用成熟的安全系统 以小人之心度输入数据 外部系统是不安全的 最小授权 减少外部接口 缺省使用安全模式 安全不是似是而非 从STRIDE思考在入口处检查 从管理上保护好你的系统
常用安全技术 认证 授权 安全通信 审计 密码算法和协议: 对称加密 公钥加密 单向加密 认证协议 Linux系统:OpenSSL, gpg(pgp协议的实现)
1)对称加密:加密和解密使用同一个密钥 DES:Data Encryption Standard,56bits 3DES: AES:Advanced (128, 192, 256bits) Blowfish,Twofish IDEA,RC6,CAST52) 特性: 1、加密、解密使用同一个密钥,效率高 2、将原始数据分割成固定大小的块,逐个进行加密3)缺陷: 1、密钥过多 2、密钥分发 3、无法实现数据来源确认
1)公钥加密:密钥是成对出现 公钥:公开给所有人;public key 私钥:自己留存,必须保证其私密性;secret key 2)特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然 功能: 3)数字签名:主要在于让接收方确认发送方身份 4)对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方 5)数据加密:适合加密较小数据 6)缺点:密钥长,加密解密效率低下 7)算法: RSA(加密,数字签名),DSA(数字签名),ELGamal 8)基于一对公钥/密钥对 用密钥对中的一个加密,另一个解密 9)实现加密: 接收者 生成公钥/密钥对:P和S 公开公钥P,保密密钥S 发送者 使用接收者的公钥来加密消息M 将P(M)发送给接收者 接收者 使用密钥S来解密:M=S(P(M)) 10)实现数字签名 发送者 生成公钥/密钥对:P和S 公开公钥P,保密密钥S 使用密钥S来加密消息M 发送给接收者S(M) 接收者 使用发送者的公钥来解密M=P(S(M)) 11)结合签名和加密使用或者分离签名
1)将任意数据缩小成固定大小的“指纹” 任意长度输入 固定长度输出 若修改数据,指纹也会改变(“不会产生冲突”) 无法从指纹中重新生成数据(“单向”)2)功能:数据完整性3)常见算式 md5: 128bits、sha1: 160bits、sha224sha256、sha384、sha5124)常用工具 md5sum | sha1sum [ --check ] file openssl、gpg rpm -V5)find ./ -type f -exec md5sum {} \;常用来分析两套文件系统的文件变化情况
1)密钥交换:IKE(Internet Key Exchange ) 公钥加密: DH (Deffie-Hellman):2)DH 1、A: a,p协商生成公开的整数a,大素数p B: a,p 2、A:生成隐私数据:x (x<p ),计算得出a^x%p,发送给B B:生成隐私数据:y,计算得出a^y%p,发送给A 3、A:计算得出(a^y%p)^x = a^xy%p,生成为密钥
B:计算得出(ax%p)y = a^xy%p, 生成为密钥
1)PKI: Public Key Infrastructure 签证机构:CA(Certificate Authority) 注册机构:RA( registry Authority) 证书吊销列表:CRL(Certificate revoke list) 证书存取库:2)X.509:定义了证书的结构以及认证协议标准 版本号、序列号、签名算法、颁发者、有效期限、主体名称、主体公钥、CRL分发点、扩展信息、发行者签名 3)证书类型 证书授权机构的证书 服务器 用户证书4)获取证书两种方法: 使用证书授权机构 生成签名请求(csr) 将csr发送给CA 从CA处接收签名5)自签名的证书 自已签发自己的公钥
1)SSL: Secure Socket Layer TLS: Transport Layer Security 1995:SSL 2.0 Netscape 1996: SSL 3.0 1999: TLS 1.0 2006: TLS 1.1 RFC(Request For Comments )4346 2008:TLS 1.2 当前使用 2015: TLS 1.3 功能:机密性,认证,完整性,重放保护2)两阶段协议,分为握手阶段和应用阶段 握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证), 并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。 应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信。3)SSL/TLS protocol 安全套接字层/传输层安全性协议图示
4)ssl/TLS协议过程 Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换; ChangeCipherSpec 协议:一条消息表明握手协议已经完成 Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告 Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等。 HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP over SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二进制形式传输5)协议请求与回应过程图示
1)三个组件: openssl: 多用途的命令行工具 libcrypto: 加密算法库 libssl:加密模块应用库,实现了ssl及tls 2)openssl命令 两种运行模式:交互模式和批处理模式 opensslversion:程序版本号 标准命令、消息摘要命令、加密命令 标准命令: enc, ca, req, ... enc查看命令的详细使用方法 3)对称加密 工具:opensslenc, gpg 算法:3des, aes, blowfish, twofish 4)enc命令:man enc 加密: openssl enc -e -des3 -a -salt -in /tmp/fstab -out fstab.cipher 解密: openssl enc -d -des3 -a -salt -in fstab.cipher -out fstab 5)opensl dgst -md5 fstab==md5sum fstab 6)单向加密: 工具:md5sum, sha1sum, sha224sum,sha256sum… openssldgst 7)dgst命令:man dgst openssldgst -md5 [-hex] /PATH/TO/SOMEFILE openssldgst -md5 fstab md5sum /PATH/TO/SOMEFILE 8)MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现网络通信中保证所传输数据的完整性机制 CBC-MAC HMAC:使用md5或sha1算法 9)生成用户密码: passwd命令:man sslpasswd opensslpasswd -1 -salt SALT(最多8位) opensslpasswd -1 –salt centos 10)生成随机数:man sslrand opensslrand -base64|-hex NUM NUM: 表示字节数;-hex时,每个字符4位,出现的字符数为NUM*2 11)公钥加密 算法:RSA, ELGamal 工具:gpg, opensslrsautl(man rsautl) 12)数字签名 算法:RSA, DSA, ELGamal 13)密钥交换 算法:dh DSA: Digital Signature Algorithm DSS:Digital Signature Standard RSA: 14)密钥生成过程 生成密钥对儿:man genrsa 生成私钥: openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS (umask077; openssl genrsa -out key.pri –des 2048) 从私钥中提取出公钥: openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE openssl rsa -in aaa.key -pubout -out aaa.pub 随机数生成器:伪随机数字 键盘和鼠标 块设备中断 /dev/random:仅从熵池返回随机数;随机数用尽,阻塞 /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞
1)PKI:Public Key Infrastructure CA:证书认证 RA:证书注册 CRL:证书吊销 证书存取库2)建立私有CA: OpenCA openssl3)证书申请及签署步骤 1.生成申请请求 2.RA核验 3.CA签署 4.获取证书4)创建CA和申请证书 openssl的配置文件:/etc/pki/tls/openssl.cnf (1) 创建所需要的文件 touch /etc/pki/CA/index.txt echo 01 > /etc/pki/CA/serial (2)CA自签证书 生成私钥 cd /etc/pki/CA/ (umask066; openssl genrsa -out /etc/pki/CA/private/cakey.pem2048) 生成自签名证书 openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem -new: 生成新证书签署请求; -x509: 专用于CA生成自签证书; -key: 生成请求时用到的私钥文件; -days n:证书的有效期限; -out /PATH/TO/SOMECERTFILE: 证书的保存路径 (3)颁发证书 (a) 在需要使用证书的主机生成证书请求; 给web服务器生成私钥 (umask066; openssl genrsa -out/etc/httpd/ssl/httpd.key 2048) 生成证书申请文件 openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr (b) 将证书请求文件传输给CA (c) CA签署证书,并将证书颁发给请求者; opensslca -in /tmp/httpd.csr –out /etc/pki/CA/certs/httpd.crt -days 365 注意:证书中国家,省,公司名称必须和CA一致(配置文件中有定义,如果想要不一致也可以,则可以去修改配置文件完成) (d) 查看证书中的信息: openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|subject|serial|dates (4) 吊销证书 (a) 在客户端获取要吊销的证书的serial openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject (b) 在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致 吊销证书: openssl ca -revoke /etc/pki/CA/newcerts/ SERIAL.pem 注:在index.txt中保存的证书信息前是V为有效证书,如果是R则为已吊销的证书 在文件/etc/pki/CA/newcerts中有每个证书对应的序列号 (c) 生成吊销证书的编号(第一次吊销一个证书时才需要执行) echo 01 > /etc/pki/CA/crlnumber (d) 更新证书吊销列表 openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl 查看crl文件 openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text 注:客户端中配置的有关于证书的吊销列表从互联网哪里下载,以保证证书的有效性
1)文件完整性的两种实施方式2)被安装的文件 MD5单向散列 rpm -versify package_name(or -V)3)发行的软件包文件 GPG公钥签名 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat* rpm --checksig pakage_Pfile_name(or -K)
1)使用gpg实现对称加密 对称加密file文件 gpg -c file ls file.gpg 解密file gpg -o file2 -d file.gpg 注:如果加密和解密在同一台主机上,解密的时候不需要输入密码2)使用gpg工具实现公钥加密 在hostA主机上生成公钥/私钥对 gpg --gen-key 在hostA主机上查看公钥 gpg --list-keys 在hostA主机上导出公钥wang.pubkey gpg -a --export -o wang.pubkey 从hostA主机上复制公钥文件到需加密的B主机上 scp wang.pubkey hostB 在需加密数据的hostB主机上生成公钥/私钥对 gpg --list-keys gpg --gen-key 在hostB主机上导入公钥 gpg --import wang.pubkey gpg--list-keys 用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg gpg -e -r wangedu file file file.gpg 复制加密文件到hostA主机 scp fstab.gpg hostA 在hostA主机解密文件 gpg -d file.gpg gpg -o file -d file.gpg 删除公钥和私钥 gpg --delete-secret-keys wangedu gpg --delete-keys wangedu
本文出自 “提着酱油瓶打醋” 博客,请务必保留此出处http://sauce.blog.51cto.com/11880696/1856382
原文地址:http://sauce.blog.51cto.com/11880696/1856382