在互联网诞生初期,接入互联网的主机数量不多,应用也很少,因此早起设计的网络协议都没有考虑到网络安全的概念,数据在网络中传输都是以明文传输的。随着互联网的迅猛发展,网络通信已经成为信息传递的主要途径,而数据在明文传输的的环境下是非常不安全的,如果没有一套数据加密机制,就使得数据在网络传输过程中存在被窃听,篡改等安全问题,会给用户带来不可估量的损失
一、信息安全定义:
1、NIST定义了计算机安全三元组:CIA
保密性(Confidentiality):只有授权用户可以获取信息;
数据保密性;
隐私性;
完整性(Integrality):信息在输入和传输的过程中,不被非法授权修改和破坏,保证数据的一致性;
数据完整性;
系统完整性;
可用性(Availability):保证合法用户对信息和资源的使用不会被不正当地拒绝;
真实性:一个实例是真实的是可被验证的,数据发送者不会被冒名顶替;
可追溯性:发生入侵事件之后,可找到攻击者的源数据;
2、OSI定义了x.800:
安全攻击:
被动攻击:窃听
主动攻击:伪装、重播、消息修改、拒绝服务
安全机制:
加密、数字签名、反问控制、数据完整性、认证交换流量填充、路由控制、公正(第三方机制);
安全服务:
认证
访问控制
数据保密性:
连接保密性
无连接保密性
选择域保密性
流量保密性
数据完整性
不可否认性
二、加密算法和协议:
1、认证协议:
IKE(InternetKey Exchange,密钥交换协议):常用来确保虚拟专用网络VPN与远端网络或者宿主机进行交流时的安全;
SSL(ecure Sockets Layer,安全套接字层): 网络通信提供安全及数据完整性的一种安全协议。
TLS(Transport Layer Security,传输层安全协议): 是仿照SSL制定,用于在两个通信应用程序之间提供保密性和数据完整性。
2、加密和解密:
加密:通过算法将明文数据转换为密文数据;
解密:通过算法将密文数据转换为明文数据;
密钥:加密和解密过程中所需要的参数;
3、对称加密:
密钥:加密和解密使用同一个密匙;
常用对称加密算法:DES(56),3DES,AES(128、192、256、384、512),Blowfish,Twofish,IDEA,RC6,CAST5
特性:
加密、解密使用同一口令;
将明文分隔成固定大小的块,逐个进行加密;
缺陷:
维护密钥过多;
密钥传输不安全;
应用场景:数据隐秘性;
4、非对称加密(公钥加密):
密钥:
成对出现,公钥(public key)隐含在私钥(secret key)中;用公钥加密的数据必须与之匹配的私钥解密,用私钥加密的数据必须用与之匹配的公钥解密;
公钥:可以公开;
私钥:必须自己留存;
常用公钥加密算法:RSA, DSA,EIGamal
缺陷:加密、解密时间过长,通常不用于简单通信;
应用场景:身份认证,密钥交换;
密钥交换:IKE(Internet KeyExchange)
DH算法:Diffie Hellman
4、单向加密:
发送方和接收方可根据算法生成数据的特征码,即数据指纹;进行比较,用来进行数据完整性校验;
常用单向加密算法:MD5、SHA1、SHA256、SHA384、SHA512
特性:
定长输出:不管输入的数据有多大,输出的特征码的长度都输固定的;
蝴蝶效应:输入数据的微小改变会引起输出的特征码的巨大变化;
应用场景:数据完整性校验;
三、openssl的基本用法:
openssl:即开源的安全套接层,是一个强大的安全套接字层密码库,多用途命令行工具;
libcrypto: 公共加密库
libssl: ssl协议的实现
安装openssl软件包:
# yuminstall openssl
查看openssl版本号:
# openssl version
openssl命令选项:
-e:指定为加密,可以不写默认为加密;
-des3:指定算法算法;
-salt:默认设置,生成一段字符串放在密码最前面进行加密,提高解密难度;
-a:基于base64处理数据,加密结果进行base64编码处理;
-in:读取那个文件进行加密;
-out:输出到那里;
-d:指定为解密;
1、对称加密:
工具:gpg,openssl enc;
算法:DES,3DES,AES,Blowfish,Twofish,RC6,idea,CAST5;
加密:
# opensslenc -des3 -a -salt -in /path/from/somefile -out /path/to/somecipherfile
解密:
# opensslenc -d -des3 -a -salt -in /path/from/somecipherfile -out /path/to/somefile
2、单向加密:
工具:md5sum,sha1sum,openssl dgst,chsum;
算法:Md5(128bit),sha1(160bit),sha256,sha384,sha512;
# openssldgst [-md5|-sha1] [-out /path/to/filename] /path/from/somefile
MAC:消息摘要码,单向加密的一种延伸类应用
应用:用于实现在网络通信中保证所传输的数据的完整性
机制:
CBC MAC;
HMAC:使用md5或sha1的算法;
用户密码:
# opensslpasswd -1 -salt SALT
生成随机数:
# opensslrand -base64| -hex num
3、公钥加密:
工具:gpg,opensslrsautl;
算法:RSA,EIGamal;
数字签名:
算法:RSA,EIGamal,DSA;
DSA:DigitalSignature Algorithm
DSS:DigitalSignature Standard
密钥交换:IKE
算法:公钥加密、DH
DH:Diffie Hellman
生成密钥:
# (umask077; openssl genrsa -out/path/to/keyfile NUMBEROFBITS )
提出公钥:
# opensslrsa -in /path/from/private_key_file �pubout
五、openssl基本应用实例:
1、复制/etc/rc.d/init.d/functions文件至/root目录,对/root /functions文件进行对称加密保存至/tmp/functions.cipher;
2、对/tmp/functions.cipher文件解密保存至/tmp/functions;
3、用单向加密生成原文件/root/functions和解密后文件/tmp/functions的特征码作比较。
对称加密操作:
对functions.cipher文件解密:
生成原文件/root/functions和解密后文件/tmp/functions的特征码作比较:
本文出自 “小马的学习记录” 博客,请务必保留此出处http://masachencer.blog.51cto.com/8683770/1679317