安全和加密需要注意的事项
讲到安全机制,我们信息安全防护的首要目标应该是保密性、完整性、可用性、可控制性、不可否认性。而在安全防护环节,物理安全(各种设备/主机、机房环境)、系统安全(主机或设备的操作系统)、应用安全(各种网络服务、应用程序)、网络安全(对网络访问的控制、防火墙规则)、数据安全(信息的备份与恢复、加密解密)等环节是尤其需要注意的。
受到攻击常出现的状况是:
假冒
篡改
否认
信息泄漏
拒绝服务
提升权限
设计安全机制的基本原则是:
使用成熟的安全系统
严格把控输入数据
外部系统是不安全的
最小授权
减少外部接口
缺省使用安全模式
安全不是似是而非
从STRIDE思考
在入口处检查
从管理上保护好你的系统
不安全的传统协议:
Telnet、FTP、POP3等待;不这全密码
http、smtp、NFS等等;不安全信息
Ldop、NIS、rsh等等;不安全验证
密码算法和协议:
对称加密:加密和解密都使用一个同一个密钥
属于对称加密的有:DES(56位), AES, Blowfish, Twofish, IDEA, RC6, CAST5
特性:加密、解密使用同一个密钥,效率高
将原始数据分割成固定大小的块,逐个进行加密
缺陷:密钥过多
密钥分发
数据来源无法确定
公钥加密:密钥是成对出现
公钥:公开给所有人;public key
私钥:自己留存,必须保证其私密性;secret key
特点:用公钥加密数据,从能使用与之配对的私钥解密;反之亦然;
功能:
数字签名:主要在于让接收方确认发送方身份
对称密钥交换:发送方用对方的公钥加密一个对称密钥后以给对方
数据加密:适合加密较小数据
缺点:密钥长,加密解密效率低下
算法:
RSA(加密,数字签名),DSA(数字签名),ELGamal
单向加密:hash算法的工作原理是将任意数据缩小成固定大小的“指纹”
任意长度输入
固定长度输出
若修改数据,指纹也会改变(“不会产生冲突”)
无法从指纹中重新生成数据(“单向”)
功能:数据完整性
常见算式:
md5: 128bits、sha1:160bit、sha224、sha256、sha384、sha512
常用工具:
md5sum|sha1sum [ --check ] file
openssl, gpg
rpm -V
由上图可知:要想知道一个程序是否被改变,可以比对二者的sha1sum值
查看文件完整性的两种实施方式:
(1)被安装过的文件:
MD5单向加密
rpm --verify package_name (or -V)
(2)发行的软件包文件
GPG公钥签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
Rpm --checksig pakage_file_name (or -K)
使用gpg实现对称加密:
(1)对称加密file文件
gpg -c file
ls file.gpg
(2)在另一台主机上解密file
gpg -o file -d file.gpg
使用gpg工具实现公钥加密:
在hostB主机上用公钥加密,在hostA主机上解密
在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 xiaochun file
file file.gpg
复制加密文件到hostA主机
scp fstab.gpg hostA
在hostA主机解密文件
gpg -d file.gpg
gpg -o file -d file.gpg
删除公钥和私钥
gpg --delete-keys xiaochun
gpg --delete-secret-keys xiaochun
Eg:
[[email protected] bin]# gpg --gen-key
gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: directory `/root/.gnupg‘ created
gpg: new configuration file `/root/.gnupg/gpg.conf‘ created
gpg: WARNING: options in `/root/.gnupg/gpg.conf‘ are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg‘ created
gpg: keyring `/root/.gnupg/pubring.gpg‘ created
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 1024
Requested keysize is 1024 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 1
Key expires at Wed 20 Sep 2017 03:00:47 PM CST
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Real name: xiaohong
Email address:
Comment:
You selected this USER-ID:
"xiaohong"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
can‘t connect to `/root/.gnupg/S.gpg-agent‘: No such file or directory
gpg-agent[5795]: directory `/root/.gnupg/private-keys-v1.d‘ created
┌─────────────────────────────────────────────────────┐
│ Enter passphrase │
│ │
│ │
│ Passphrase **********______________________________ │
│ │
│ <OK> <Cancel> │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ Please re-enter this passphrase │
│ │
│ Passphrase **********______________________________ │
│ │
│ <OK> <Cancel> │
└─────────────────────────────────────────────────────┘
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
在上面文字下方界面,你可以一直敲击键盘或移动鼠标,就可以了,
下面是在/root/.gnupg/下面生成了以下文件
用下面命令查看公钥
以同样的方法在另一台主机上生成公钥私钥对
导出公钥到xiaohong.pubkey
查看公钥内容
从主机A复制到主机B
然后,将从主机A导入的公钥也导入,由图可知,主机B有了两把公钥
为/boot/bin/for6.15.sh加密
认证协议