3.4 文件加密
3.4  文件加密
3.4.1  实例——用对称加密算法加密文件
可以用openssl进行文件加密。该方法没有创建密钥的过程,比gpg加密方法简单。
将密文发给接收方后,只要接收方知道加密的算法和口令,就可以得到明文。
openssl支持的加密算法很多,包括:bfcastdesdes3idearc2rc5等及以上各种的变体,具体可参阅相关文档。
本实例对文件的加密和解密在同一台计算机上进行,如图3.98所示。
图3.98  用openssl加密、解密文件
1.发送方加密一个文件
发送方执行openssl enc -des -e -a -in -out c命令加密文件,生成加密文件c
enc:使用的算法。
-怎样给文档加密des:具体使用的算法。
-e:表示加密。
-a:使用ASCII进行编码。
-in:要加密的文件名。
-out:加密后的文件名。
2.接收方解密密文
接收方执行openssl enc -des -d -a -in c -out 命令对密文temp_
解密,生成明文文件
-d:表示解密。
3.4.2  对称加密算法
对称加密算法又称传统密码算法,或单密钥算法,其采用了对称密码编码技术,其特点是文件加密和解密使用相同的密钥。使用对称加密算法简单快捷,密钥较短,并且破译难度很大。数据加密标准(DESData Encryption Standard)是对称加密算法的典型代表,除了DES,另一个对称加密算法是国际数据加密算法(IDEA),它比DES的加密性更好,并且对计算机功能要求不高。IDEA加密标准由PGPPretty Good Privacy)系统使用。
对称加密算法的安全性依赖于密钥的安全性,泄露密钥就意味着任何人都能对密文进行解密。因此必须通过安全可靠的途径(如信使递送)将密钥送至接收端。这种如何将密钥安全可靠地分配给通信对方,包括密钥产生、分配、存储、销毁等多方面的问题统称为密钥管理(Key Management),这是影响系统安全的关键因素。
对称加密算法分为两类。
一类是序列算法或序列密码:一次只对明文中的单个比特(有时对字节)进行运算。
另一类是分组算法或分组密码:对明文中的一组比特进行运算,这些比特组称为分组。
现代计算机密码算法的典型分组长度是64bit,该长度大到足以防止破译,而又小到足以方便使用。
综上所述,对称加密算法的主要优点是运算速度快,硬件容易实现;缺点是密钥的分发与管理比较困难,容易被窃取,另外,当通信的人数增加时,密钥数目也会急剧增加。例如,在拥有众多用户的网络环境中使n个用户之间相互进行保密通信,若使用同一个对称密钥,一旦密钥被破解,整个系统就会崩溃;使用不同的对称密钥,则密钥的个数几乎与通信人数成正比(需要 1)个密钥)。由此可见,若采用对称密钥,大系统的密钥管理是不容易实现的。
1.数据加密标准DES算法
DES算法的发明人是IBM公司的W.TuchmanC.Meyer,于19711972年研制成功。美国商业部的国家标准局NBS19735月和19748月两次发布通告,公开征求用于电子计算机
的加密算法,经评选,从一大批算法中采纳了IBMLUCIFER方案,该算法于197611月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard InstituteANSI)承认。19771月以数据加密标准DESData Encryption Standard)的名称正式向社会公布,并于1977715日生效。
2.国际数据加密算法IDEA
近年来,新的分组加密算法不断出现,IDEA就是其中的杰出代表。IDEAInternational Data Encryption Algorithm的缩写,即国际数据加密算法。它是根据中国学者朱学嘉博士与著名密码学家James Massey1990年联合提出的建议标准算法PESProposed Encryption Standard)改进而来的。它的明文与密文块都是64bit,密钥长度为128bit,作为单钥体制的密码,其加密与解密过程相似,只是密钥存在差异,IDEA无论是采用软件还是硬件实现都比较容易,而且加、解密的速度很快。
IDEA算法是面向块的单钥密码算法,它的安全性与DES类似,不在于算法的保密,而是密钥的安全性。
3.4.3  实例——用非对称加密算法加密文件
3.4.3.1  用GnuPG加密文件
GnuPG软件包(Gnu Privacy GuardGnu隐私保镖),软件包的名称是gpg
1.创建密钥对
创建一个用来发送加密数据和进行解密数据的密钥。执行gpg命令,会在主目录下创建一个.gnupg子目录。在该子目录里面有一个f的配置文件,它里面是gpg工具的各种选项及其默认设置值。
执行gpg --gen-key命令,生成密钥,如图3.99所示:
图3.99  创建密钥
在图3.99中,确认选择无误后,在最后一行输入“y”,回车。
在图3.100中,根据提示输入相关信息。
图3.100  创建密钥
现在已经在.gnupg目录中生成了一对密钥且存在于文件中,进入.gnupg目录进行查看,如图3.101所示。
图3.101  .gnupg目录内容
2.提取公共密钥
为了使对方使用刚才生成的公共密钥,需要用命令将公共密钥提取出来,发给对方。执行命令gpg --export 5294DEAC > pub.key,将公共密钥提取到文件pub.key中。
3.对方收到公共密钥
收到别人的公共密钥后,执行命令gpg --import pub.key把这个公共密钥放到自己的pubring.g
pg文件(钥匙环文件)里。命令的执行如图3.102所示。
图3.102  保存别人的公共密钥
执行gpg –kv命令查看目前存放的别人的公共密钥,如图3.103所示。
图3.103  查看公共密钥
图3.104  用公共密钥加密文件
4.对方用公共密钥加密文件
对方执行gpg -ea -r 5294DEAC 文件进行加密。
-e:代表加密。
-
a:代表ASCII格式。
-r:后面是公共密钥标识。
5294DEAC:为密钥标识。
该命令执行后,在当前目录下生成了一个同名的asc的文件,即加密后的文件。具体执行过程如图3.104所示。
5.我方对加密文件进行解密
我方收到asc文件后,执行gpg -o -d asc命令,用私有密钥对加密文件进行解密。
-o:输出文件。
-d:表示解密。
在当前目录下生成了解密后的文件。具体执行过程如图3.105所示。
图3.105  对加密文件进行解密
3.4.3.2  用OpenSSL加密文件
OpenSSL可以实现消息摘要、文件的加密和解密、数字证书、数字签名和随机数字。
网址为:/
SSLSecure Sockets Layer的缩写,是支持在Internet上进行安全通信的标准,并且将数据密码技术集成到协议中。数据在离开计算机之前被加密,然后只有到达它预定的目标后才被解密。
1.安装openssl-0.9.8n
[root@localhost Desktop]# tar -xzvf openssl-0.9.
[root@localhost Desktop]# cd openssl-0.9.8n
[root@localhost openssl-0.9.8n]# ./config --prefix=/root/openssl
[root@localhost openssl-0.9.8n]# make
[root@localhost openssl-0.9.8n]# make install
2.产生CA证书
修改~/openssl/ssl/opensslf文件中的一行(约42行)为:dir=/root/openssl/ssl/misc/demoCA,将产生的CA证书放置在/root/openssl/ssl/misc/demoCA下。
[root@localhost openssl-0.9.8n]# cd /root/openssl/ssl/misc/
[root@localhost misc]# cp ../opensslf /etc/pki/tls/opensslf
[root@localhost misc]# dir
CA.pl  CA.sh  c_hash  c_info  c_issuer  c_name
执行CA证书产生脚本CA.sh,如下所示:
[root@localhost misc]# ./CA.sh -newca
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
......................++++++..................................++++++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:HN
Locality Name (eg, city) []:XX
Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXU
Organizational Unit Name (eg, section) []:JSJ
Common Name (eg, YOUR name) []:ZTG
Email Address []:jsjoscpu@163
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:COMPUTER
Using configuration from /etc/pki/tls/opensslf
Enter pass phrase for ./demoCA/private/./cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            f2:01:3d:54:f6:16:bd:a9
        Validity
            Not Before: Jun  3 04:15:28 2010 GMT
            Not After : Jun  2 04:15:28 2013 GMT
        Subject:
            countryName              = CN
            stateOrProvinceName      = HN
            organizationName          = XXU
            organizationalUnitName    = JSJ
            commonName                = ZTG
            emailAddress              = jsjoscpu@163
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                B8:AC:08:62:87:4C:B0:B3:D8:D3:B9:84:6D:04:AA:66:3B:6F:11:F2
            X509v3 Authority Key Identifier:
                keyid:B8:AC:08:62:87:4C:B0:B3:D8:D3:B9:84:6D:04:AA:66:3B:6F:11:F2
                DirName:/C=CN/ST=HN/O=XXU/OU=JSJ/CN=ZTG/emailAddress=jsjoscpu@163
                serial:F2:01:3D:54:F6:16:BD:A9
            X509v3 Basic Constraints:
                CA:TRUE
Certificate is to be certified until Jun  2 04:15:28 2013 GMT (1095 days)
Write out database with 1 new entries
Data Base Updated
[root@localhost misc]#

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。