热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用GPG加密使您的信息安全保障无忧二(图)

文章标题:用GPG加密使您的信息安全保障无忧二(图)。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  导入公钥
  
  作为用户,也会收到别人的GPG公钥,它们可能来自网站、电子邮件、FTP和目录服务等,只要信任其来源,就可以将其导入自己的GPG环境,之后才可以与相应的人员进行基于GPG的各种应用。导入公钥的过程可以分为以下三步:
  
  1.导入
  
  比如,Terry收到朋友Brian的公钥文件brian.gpg,可以使用以下命令导入文件:
  
  #gpg --import terry.gpg
  
  2.核对“指纹”
  
  公钥是可以伪造的。James可以伪造一个Brian的公钥,然后想办法让Terry得到。如果Terry对收到的公钥不加验证,那么他发给Brian的加密邮件就可能被James解密。GPG的架构中并没有一个PKI这样的证书管理系统,GPG的公钥信任是通过“Truth Web”实现的。
  
  生成Terry公钥的“指纹”:
  
  #gpg --fingerprint terry@mykms.org
  pub 1024D/7234E374 2004-09-10 Terry
  Yu (for test)
  Key fingerprint = A58F D71A 28BA
  499D 805B 588E 82FB CD0F 7234 E374
  sub 2048g/4907EA0A 2004-09-10 [expires: 2005-09-10]
  
  这个“指纹”是惟一的。可以通过与对方核对“指纹”是否一致,来确定这个公钥是否可信和合法。
  
  3.签名
  
  在成功导入,并确定这个公钥是可以相任之后,要立即对这个公钥进行签名。这样,就可以验证来自对方邮件的真实性了。
  
  对公钥进行签名可以使用如下命令:
  
  #gpg --sing-key brian@mykms.org
  
  或者
  #gpg --edit-key name
  #command > sign
  
  检查对方邮件,比如Brian的签名:
  
  #gpg --check-sigs brian@mykms.org
  
  现在,有了Brian签名的公钥,通过这个公钥就可以和Brain进行非对称加密通信了。
  
  应用GPG
  
  GPG使用的是非对称的密钥体系,用户拥有一对密钥,包括一个公钥和一个私钥。公钥对外公布,私钥则由自己保存。使用公钥加密的数据可以用私钥解密,同样,使用私钥加密的数据可以用公钥解密。
  
  非对称的密钥可以用来加密和做数字签名。当用户关心信息保密性时,使用加密功能;当用户关注信息完整性及不可抵赖性时,使用数字签名功能;当用户需要同时关注信息的机密性、完整性及不可抵赖性时,可以将加密和数学签名混合使用。
  
  简单了解这些密码学概念后,就可以开始真正的应用实践了。
  
  对文件进行加密和数字签名
  
  KDE中提供了图形化的加密操作方法。比如,在KDE中对一个文件加密,只需在KDE文件管理器Konqueror中选中该文件,单击右键选择“Actions”中的“Encrypt File”就可以加密文件。加密后的文件以.asc结尾。
  
  对于图形方式的加密操作不多做介绍,下面将重点放在命令行操作方式上,介绍命令行下的各种文件加密和签名的操作方法。
  
  1.对文件进行数字签名
  
  #gpg --clearsign policy.txt
  You need a passphrase to unlock the secret key for
  user: "test (test) "
  1024-bit DSA key, ID ADD93830, created 2004-07-01
  
  运行以上命令,生成一个名为report.txt.asc的文件,该文件中除了原文件信息外还包含数字签名信息。
  
  2.验证文件的数字签名
  
  #gpg --verify policy.txt.asc
  gpg: Signature made 2004年11月04日 星期四 15时58分07秒 UTC using DSA key ID ADD93830
  gpg: Good signature from "test (test) "
  
  以上命令运行的结果显示该签名是正确的。
  
  3.用指定的公钥对文件加密
  
  #gpg --encrypt -r terry@mykms.org report.txt
  gpg: checking the trustdb
  gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1
  gpg: next trustdb check due at 2005-09-10
  
  运行以上命令,使用自己的公钥加密report.txt文件,生成加密文件report.txt.gpg。如果使用编辑软件打开该加密文件,会发现它包含的是一些不可理解的字符和乱码。
  
  4.用私钥对加密文件解密
  
  #gpg --decrypt report.txt.gpg >report.txt
  You need a passphrase to unlock the secret key for
  user: "test1 (unclassfication) "
  2048-bit ELG-E key, ID 33735683, created 2004-09-29
  (main key ID 79EB3D97)
  gpg: encrypted with 2048-bit ELG-E key, ID 33735683,
  created 2004-09-29
  "test1 (unclassfication) "
  
  以上命令要求输入对应私钥的保护口令才能成功解密,解密后的文件内容被输出到report.txt文件中。
  
  5.用公钥同时进行文件签名和加密
  
  #gpg -se -r test@yahoo.com.cn report.txt
  You need a passphrase to unlock the secret key for
  user: "test (test) "
  1024-bit DSA key, ID ADD93830, created 2004-07-01
  
  以上命令要求输入对应私钥的保护口令,输入正确的口令后,签名和加密成功完成。
  
  这些都是应用GPG签名和加密文件的一些常用命令,更详细的用法可以参考GPG的帮助文件。
  
  对电子邮件进行加密和数字签名
  
  实际上,GPG应用最多的地方是在电子邮件的加密和数字签名上。许多电子邮件客户端软件都支持PGP/GPG方式的加密及数字签名。这里以Kmail为例,介绍如何设置Kmail,并利用Kmail发送加密及数字签名的电子邮件。
  
  Kmail是KDE环境中的电子邮件客户端,类似于Windows下的Outlook Express。在选单中选择“Settings→Configure-Kmail→Identites”,选定一个身份,单击“Modify”进行编辑。选择其中的“Advanced”标签页,可以看到类似图2的界面。
  
 

  
图2 Kmail的设置界面

  
  其中,“OpenPGP Key”项是该身份所对应的PGP或GPG密钥,可以单击“Change”按钮从GPG环境中选择对应的密钥对。
  
  保存后,GPG的设置完成。试写一封邮件,如图3所示。图中工具栏中凹下去的“钢笔尖”图标表示此邮件使用了数字签名,紧靠旁边的锁形图标表示加密,如果两个图标都凹下去则表示同时使用了加密和数字签名。
  
 

  
图3 使用数字签名的电子邮件

  
  发送邮件时,Kmail会要求给出对应密钥的保护口令,如图4所示。
  
 

  
图4 要求输入密钥保护口令

  
  正确输入保护口令后,会弹出一个确认窗口,如图5。
  

  
图5 确认窗口

  
  确认内容无误后,单击“OK”按钮,一封带有数字签名的电子邮件就成功发出。发送加密邮件,以及发送同时加密和数字签名的邮件,方法都是类似的。
  
  软件包签名验证
  
  对于Red Hat等Linux发行商来说,他们常常会利用GPG对发布的软件包进行签名。用户可以通过验证软件包的签名来确保得到的软件包没有损坏,或者是被他人动过手脚。
  
  验证一个下载软件包的GPG签名可以按照以下步骤来进行:
  
  1.从网上下载或其它方式得到软件发行商的公钥,并将其导入自己的GPG环境中。
  
  2.通过对比“电子指纹”来确认公钥,并对此公钥进行签名。
  
  3.使用以下命令来验证软件包的GPG签名:
  
  #gpg --verify singaturefile.tar.gz taballpackage.gz
  
  如果该软件是RPM格式的,还可以使用如下命令来验证:
  
  #rpm -Kv your.rpm
  
  密钥管理
  
  前面介绍了GPG在加密和签名两方面的应用,在应用过程中用户要认真地对待密钥管理问题。GPG的密钥采用的是信任机制,并没有一个中心的PKI可以帮助发布和验证GPG用户的公钥。为了防止公钥欺骗,保证公钥的不可否认性(Non-repudiation),需要有一种机制来进行管理。下面是一些有益的建议,可供参考。
  
  ◆ 备份好私钥
  
  一旦私钥丢失或损坏,则无法打开以前加密的文件。并且,即使知道私钥被他人滥用,也无法使自己的公钥过期。有了私钥的备份,就能有效地回避此类风险。
  
  ◆ 建立有过期保护的公钥机制
  
  万一私钥丢失不能人工收回公钥时,公钥也可以在预定时间后自动过期。
  
  ◆ 为私钥加上强口令保护
  
  这样,即使私钥文件泄漏,还有口令保护。保护口令一定要有足够的复杂度,才能有效地对抗暴力破解。
  
  ◆ 多重机制
  
  在紧急情况下恢复密钥要有多重控制。
  
  ◆ 使用版本控制软件
  
  使用版本控制软件来收集和维护自己的公钥库。版本控制软件可以有效地记录历史变更情况,保证公钥库的有条不紊。
  
  小结
  
  GPG作为一个开源并且免费的加密和数字签名软件已经存在多年。它不但可以为企业、个人之间的重要信息提供加密保护,还可以为出版的软件、内核等电子产品进行数字签名
推荐阅读
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • 在使用 iOS 应用时,遇到网络请求错误是常见的问题。本文将探讨两种常见的错误代码 -1003 和 -1001,并提供详细的解释和解决方案。 ... [详细]
  • 本文介绍了如何在 Ubuntu 18.10 Cosmic 停止官方支持后,通过更换软件源来解决 `apt update` 失败的问题。 ... [详细]
author-avatar
手机用户2702933733
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有