为文件贴防伪标签 Ubuntu文件数字签名应用

系统 Linux
在《Ubuntu系统中如何对文件进行加密传输》一文中,我们为大家讲解了网络传输过程中,如何对文件进行加密的方法。但是在实际应用中,文件的传输还会碰到其他问题,例如如何确认收到的文件不是伪造的?又如何知道发来的文件不是窜改过的呢?而类似的问题,就需要利用另外一项技术——数字签名来解决。

在《Ubuntu系统中如何对文件进行加密传输》一文中,我们为大家讲解了网络传输过程中,如何对文件进行加密的方法。但是在实际应用中,文件的传输还会碰到其他问题,例如如何确认收到的文件不是伪造的?又如何知道发来的文件不是窜改过的呢?而类似的问题,就需要利用另外一项技术——数字签名来解决。

提示:“数字签名”是一种采用公钥加密算法对电子信息进行签名的方法。对一个文件进行数字签名和校验的过程可简单地描述为:文件发送方首先依据某种摘要算法生成发送文件的一组摘要信息(特征信息),并用自己的私钥对其进行加密(即“签名”)形成签名文件,然后将原文件和签名文件一起发给接收方。接收方首先按算法计算出原文件的摘要信息,并用发送者提供的公钥解密签名文件,同时得到另外一个摘要信息,通过对两个摘要信息的比对就可以确认文件信息是否完整正确,这就是“校验”。

本文介绍基于Ubuntu Desktop 9.10(i386),采用GNOME集成桌面环境。并设定有两台主机Host1和Host2,具有相同的用户账号(为叙述方便,用户名和密码相同)。

步骤一、在Host1上对文件进行签名

在主机Host1中,假设当前用户目录下有一个文件“abc.txt”,下面我们在Nautilus文件浏览器中选中该文件并点击鼠标右键,在弹出的快捷菜单中选择“签署”项,则弹出“选择签署者”对话框(如图1所示),在“签署消息的密钥”栏选择用户“testuser”对应的私钥。点击“确定”按钮,则弹出“批准密码存取”对话框,确定后就会在当前登录用户的目录下生成文件“abc.txt.sig”,该文件就是“abc.txt”的签名文件。

为文件贴防伪标签 Ubuntu文件数字签名应用
选择对用户的私钥


下面,我们将原文件“abc.txt”和签名文件“abc.txt.sig”一起发送到Host2主机中。以使用“scp”命令进行操作为例。

在“应用程序→附件”下找到“终端”项,点击并打开一个GNOME终端窗口,在终端窗口中输入命令“scp abc.* testuser@Host2:~/.”,命令成功执行后,即可复制上述两个文件到Host2主机中相应的用户目录下。

步骤二、在Host2上对文件进行校验

接收到Host1上用户传输过来的文件“abc.txt”和“abc.txt.sig”后,如何确认“abc.txt”文件来源的合法性及其完整性呢?这就需要对其进行校验。下面我们以使用“gpg”命令为例对其进行校验。

首先,校验工作需要用到发送方,即主机Host1用户的公钥,因而首先要在主机Host2中导入Host1用户的公钥(详细过程可参见《Ubuntu系统中如何对文件进行加密传输》)。

然后,在主机Host2中,对导入的公钥进行签署操作。

运行Seahorse密钥管理器程序,在出现的“密码和加密密钥”窗口的“其他密钥”标签页,点选导入的密钥所在的行并点击鼠标右键,在弹出的快捷菜单中选择“签署密钥”项,在出现的“签署密钥”对话框中点击“签署”按钮,即可完成对导入公钥的签署操作。

接下来,打开一个GNOME终端窗口并输入命令:“gpg ——verify abc.txt.sig”,在输出结果中,如果看到“gpg:完好的签名,来自于……”开头的行,那么则表明文件是完整的且来源是合法的。

提示:如果导入的公钥没有被签署,即Host2上的用户没有确认该公钥的合法性,虽然依然可以用“gpg”命令来校验接收到的文件,但会给出类似“警告:这把密钥未经受信任的授权验证”这样的警告信息(如图2所示)。

为文件贴防伪标签 Ubuntu文件数字签名应用
签署操作必不可少

通过校验信息,我们就可以确认接收的文件是否被窜改,而通过查看发送方的个人信息,则可以确认文件的来源是否合法,从而确认对方身份。

双保险 加密与数字签名组合使用

在本文中,我们并没有对文件进行加密处理,而只是进行了数字签名操作,尽管这样文件接收方能够确认文件来源的合法性和数据的完整性,但文件本身并没有得到很好的保护,依然存在数据泄露等风险。因而在实际应用中,一般都是将加密和数字签名技术结合起来使用。

结合《Ubuntu系统中如何对文件进行加密传输》中介绍的文件加密传输方法,在Nautilus文件浏览器中选中某个文件进行加密时,在“选择收件人”对话框的下方还有一项“签署消息的密钥”,其后列出的是用户可用的私钥,如果选择了某个用户私钥,则对文件进行加密处理的同时也进行了数字签名操作。而接收方接收到文件后,就可以用自己的私钥来解密文件,再用发送方的公钥来校验文件,从而进一步确保文件的安全性和完整性。

【编辑推荐】

  1. Ubuntu Server 9.04中文UTF-8环境的配置
  2. Ubuntu9.04下CUDA环境的搭建
  3. Windows7/Ubuntu9双系统轻松配置
责任编辑:赵宁宁 来源: zzit
相关推荐

2009-03-02 16:42:33

2009-12-18 15:16:49

Ruby on Rai

2015-11-06 13:54:08

2009-08-14 13:40:17

数字签名电子签名安全体系结构

2011-08-29 10:27:38

IT技术数字签名数字证书

2010-09-17 20:20:14

2010-06-04 09:21:51

身份认证数字签名

2019-04-18 15:00:36

2018-06-07 14:45:11

Windows验证查看

2010-10-08 21:14:08

2010-09-02 21:10:13

2021-12-28 13:54:52

加密密钥Java

2009-07-19 21:44:39

2011-01-19 17:27:21

Sylpheed

2016-11-10 23:51:41

2011-06-20 15:12:48

微软木马

2020-08-13 18:40:51

OpenSSL密码学Linux

2021-12-03 08:46:42

微软Edge浏览器

2021-06-22 17:26:39

DigiCert数字签名身份验证

2022-02-21 09:00:08

数字签名验证
点赞
收藏

51CTO技术栈公众号