3  GnuPG使用实例
1.使用GPG收发数据 
下面详细介绍如何使用GPG收发数据,主要会涉及到数据交换的两种方式:
 数字签名传输(Signed data):发送者使用私钥对数据加密,接收者使用公钥对数据解密。
 数据加密传输(Encrypted data):发送者使用公钥对数据加密,接收者使用私钥对数据解密。
(1)数字签名传输 
发送者使用私钥对数据进行签名,接收者拥有发送者的公钥,对之信任并使用它验证接收数据的完整性。对数据进行签名的最简单的方法是使用clearsign命令,这将使GPG创建一个易读的签名,很适于发送Email。具体命令及执行情况如下,参见图14:
#gpg --clearsign mymessage.txt
 
图14  对文件tansmit.txt生成签名(transmit.txt.asc)
从图14中可以看到:输入密码后,就将生成一个扩展名为.asc的新文件,这里就是transmit.txt.asc。这个文件包含了transmit.txt文件的原始内容以及签名信息(参见图15):
 
图15  文件transmit.txt.asc的内容
当接收者收到包含上述签名的信息或文件时,他可以使用发送者的公钥来验证信息的完整性,具体命令及执行情况如下,参见图16:
#gpg --verify transmit.txt.asc
 
图16  验证数字签名的完整性
(2)数据加密传输
第2种传输方式的目的是为了只让个别人看到发送信息发送者使用其公钥对文件或数据进行加密,接收者使用发送者的私钥对接收数据进行解密。加密命令包含两个部分,一部分指定接收者的Email,另一部分指定要加密的文件。具体命令如前面所述的加密和解密的流程完全一致,这里不再赘述,这里只给出一个加密后的transmit.txt文件的示例,如图17所示。在网络中传输时,即算该文件为黑客或者其他用户截获到,没有私钥,该用户也无法对该文件进行识别,因而具有很高的安全性。
 
图17  加密后的transmit.txt文件
另外,值得一提的是:通过以上方式被加密的信息也可以被签名,方法是在上述命令中再加上一个-s参数。如下命令所示:
#gpg –r < UID > --encrypt -s< file >
那么,在使用-d选项来解密该文件时,将会出现如图18所示的情况,该图的白色部分给出了对签名的检验情况:

图18  解密过程中检验数字签名
2.使用GPG验证RPM包
一旦学会使用RPM,很容易安装好它们就不管了,并且忘记了安全性问题。破解者可能会在网络上发布的RPM中植入病毒或木马。rpm命令包括了检查RPM完整性的方法,它同样使用的是GPG。它也可以验证程序包,甚至验证一个文件的内容。
该系统的关键是Fedora Core GPG密钥。它们应默认安装为/etc/gpg/rpm-gpg/RPM-GPG-KEY.*。接着,导入GPG公共密钥。例如,如果从安装CD或DVD导入,应该用下面的命令导入/var/lib/rpm /Pubkeys文件:
# rpm --import /media/disk/RPM-GPG-KEY
(1)验证程序包
现在可以验证RPM程序包是否有真正的Fedora Core签名。例如,在重新编译前想验证内核源RPM的完整性。要在本地目录验证kernel .src RPM的下载版本,可执行下面的命令:
# rpm -K kernel-2.6.15-1.2054_FC5.src.rpm
kernel-2.6.15-1.2054_FC5.src.rpm: (shal) dsa sha1 md5 gpg OK
该命令对照声明的加密方案(包括GPG)来验证内核源RPM的完整性。
(2)验证文件
对照原始配置检查文件是很有用的。例如,想了解计算机上的一个文件是否被破解者修改,需要对比原始配置检查文件的一系列标准属性。与通过RPM程序包安装的每个文件相关联的数据存储在/var/lib/rpm目录下的RPM数据库中。
如果怀疑某个命令运行不正常,可以对照此RPM数据库检查该命令。以mount命令为例。用下面的命令能检查mount的完整性:
# rpm -Vf /bin/mount
如果看不到任何输出,该命令还和原来安装时一样。
如果有人篡改了mount命令,会生成下面的输出:
# rpm -Vf /bin/mount
S.5 T /bin/mount
该命令将检查/bin/mount的9个属性。如果见到表1中的一个字母,说明文件在某一方面不同于原始文件。上面的例子说明文件大小、MD5校验和以及文件修改时间有变化。
表1  验证文件的错误输出
输出 错误原因
S 文件大小不匹配
M 模式(不同的权限和文件类型)
5 MD5校验和错误
L 符号链接不正确
D 设备号错误
U 用户所有权被修改
G 组所有权被修改
T 文件修改时间不匹配
? 不可读的文件
C 配置文件标志
在某些情况下,测试失败不是问题。比如,如果修改了/etc/inittab文件,就会看到一个像是验证失败的结果:
# rpm -Vf /etc/inittab
S.5 T c /etc/inittab
但这个失败也许不表示存在问题。例如,我是在修改了此配置文件中的initdefault变量后得到这个结果的。也就是说,文件大小(S)和校验和(5)发生变化是因为修改了文件的内容,文件修改时间(T)自然也不同于在计算机上安装Fedora Core的时间。
4  GnuPG使用技巧
在使用GnuPG的过程中,需要注意如下几个问题:
 需要根据实际的应用来确定生成密钥的算法、密钥的长度以及密钥的有效期限;
 需要用户通过交互移动鼠标、键盘来保证生成的密钥对的随机性;否则,极有可能被黑客破解;
 公钥的安全性问题是GnuPG安全的核心,一个成熟的加密体系必然要有一个成熟的密钥管理机制配套。公钥体制的提出就是为了解决传统加密体系的密钥分配难保密的缺点。比如网络黑客们常用的手段之一就是“监听”,如果密钥是通过网络传送就太危险了。对GnuPG来说公钥本来就要公开,就没有防监听的问题。但公钥的发布中仍然存在安全性问题,例如公钥的被篡改,这可能是公钥密码体系中最大的漏洞,因为大多数新手不能很快发现这一点。你必须确信你拿到的公钥属于它看上去属于的那个人。
 私钥的保密也是决定性的。相对公匙而言,私钥不存在被篡改的问题,但存在泄露的问题。GnuPG的办法是让用户为随机生成的RSA私钥指定一个口令。只有通过给出口令才能将私钥释放出来使用,用口令加密私钥的方法保密程度和GnuPG本身是一样的。所以私钥的安全性问题实际上首先是对用户口令的保密。当然私钥文件本身失密也很危险,因为破译者所需要的只是用穷举法试探出你的口令了,虽说很困难但毕竟是损失了一层安全性。在这里只用简单地记住一点,要像任何隐私一样保藏你的私钥,不要让任何人有机会接触到它。
 在实际的使用过程中,用户可以将GnuPG软件灵活地运用到网络数据传输,包括电子邮件发送,FTP文件传送等各个应用领域。
本文转自samsunglinuxl51CTO博客,原文链接: http://blog.51cto.com/patterson/237647,如需转载请自行联系原作者

不安全网络中的数据安全传输利器——GnuPG(下)相关推荐

  1. 不安全网络中的数据安全传输利器——GnuPG(上)

    不安全网络中的数据安全传输利器--GnuPG 李洋 1  GnuPG简介 随着网络与计算机技术的发展,数据存储与数据交换的安全性.完整性和一致性已经变得越来越重要.如何保证在不安全的网络上传输数据的安 ...

  2. 数据在网络中是如何传输的

    更多专业文档请访问 www.itilzj.com 你有想过吗,在计算机网络当中,数据是怎么样保证准确的从客户端发送到服务器端的?中间涉及到了哪些理论? 01 客户端各层对数据的封装 java实现客户端 ...

  3. linux系统中加密文件传输助手,Linux 下的安卓文件传输助手!

    如果你尝试在 Ubuntu 下连接你的安卓手机,你也许可以试试 Linux 下的安卓文件传输助手.本质上来说,这个应用是谷歌 macOS 版本的一个克隆.它是用 Qt 编写的,用户界面非常简洁,使得你 ...

  4. 命名数据网络(NDN)中的数据安全隐患

    当前互联网不断面临着动态性.安全性和可扩展性等方面的技术挑战,其发展速度已经难以适应全球网络规模的爆发式扩张. 什么是命名数据网络 (Named Data Network,NDN)? 为了适应发展迅猛 ...

  5. shapenet数据集什么格式_网络中的链路层数据格式是什么样?6个知识点1张图给您说明白...

    做网络或者IT的时候,总能听到链路层.MAC.以太封装.数据帧等等名词,有时候我们做的时候也是一知半解,不是特别清晰其中的知识点以及内容,今天大脸鹏帮助大家提炼总结一下,并绘制了一张图片,让大家看到图 ...

  6. 电话交换机和网络交换机_网络中交换机的介绍和工作

    电话交换机和网络交换机 交换机简介 (Introduction to Switches) Switches are intelligent devices. Switches are consider ...

  7. wifi丢包率高怎么解决_大家有没有发现无线网络中多播的丢包率很高

    在linux下用vlc在若干笔记本组成的无线网络中做视频传输实验 如果用单播(unicast)的udp,效果很好,很流畅 但如过用多播(Multicast)的udp,效果就很差,接收的图像上有很多方块 ...

  8. 【数学模型】基于matlab实现车载自组织网络中路边性能及防碰撞算法研究

    1 简介 随着智能交通系统的发展,车载自组网(VANET)已经成为该领域的热门网络通信技术.车载网络是一种透过随意网络提供车辆之间的通讯,即由无线通信与数据传递技术,串联交通工具以及路边交通设施,所形 ...

  9. JAVA使用ByteArrayOutputStream、ByteArrayInputStream将对象序列化反序列化,通过JAVA socket实现对象在网络中传输

    1.序列化和反序列化: 序列化是对象(类的实例)转换成字节数组或者字符串通过网络传输或者存储到本地文件.反序列化:就是将字节数组或字符串在转换成对象实例的过程. (因为在网络中传输或者写本地文件,是不 ...

最新文章

  1. aforge videoresolution获取的相机像素不全_新手做视觉系统,如何选择合适的相机?...
  2. nginx强制使用https访问(多站点多域名配置)
  3. python实现滑块验证功能_python3.8.1+selenium实现登录滑块验证功能
  4. Java集合中的排序API分析
  5. webpack中跨域请求proxy代理(vue与react脚手架不同设置方法)
  6. react-router5.x 的配置及其页面跳转方法和js跳转方法
  7. vue 开发过程中遇到的问题
  8. (6)Vivado软件开发流程(第2天)
  9. 终于来了!iOS 13大更新发布,新功能均与新冠疫情有关
  10. 基于W5500+Yeelink的远程灯光控制设计
  11. matlab机器人运动仿真,基于MATLAB机器人手臂运动仿真
  12. W54 - 999、TensorFlow框架识别图片
  13. 2.4G有源RFID数据读取实验
  14. mysql 授权root帐号可以远程访问,导入sql文件,登录mysql用root帐号,设置密码
  15. PanDownload 3.5.1 卢本伟修改版
  16. 第六周项目2建立链栈算法库
  17. 算法第十九期——图论初入门
  18. useradd与adduser(更全面)创建用户命令 和 让用户拥有root权限
  19. 技术人变现的9个路线
  20. Matlab S-Function详解

热门文章

  1. 北京瑜舍酒店成京城“精品”酒店代表(图)_新浪尚品_新浪网
  2. 话里话外:按单制造(MTO II)企业的资源瓶颈是怎么形成的?
  3. 关于AndroidSDK配置时的tools目录下找不到adb.exe的错误
  4. 总结C#保留小数位数
  5. 分析Unicode和UTF-8
  6. Vue中data和computed的区别
  7. 从无到有-在create-react-app基础上接入react-router、redux-saga
  8. 太多脚本将会毁掉持续交付
  9. 科普:浅谈 Hellinger Distance
  10. HDU 1824 Let's go home