GunPG是完全免费的公钥加密技术软件包,其有4个含义
1、如所有其他GUN产品一样,可以免费获得它。
2、可以得到它的源代码,并安装GUN库一般公共许可(LGPL)规定,任何人都可以自由修改它并可以重新发布。与一般的公共许可协议(GPL)不同,LGPL也允许商业销售商编写建立在GunPG上的专用软件产品,而无须被迫发布它们的源代码。
3、避免了如IDEA和RSA这样的受专利制约的算法,因此,不必向任何一方支付许可费就可以使用它。
4、GnuPG是在德国开发的,因此,它逃避了美国的出口限制。
在使用GunPG之前,先说说公钥加密技术在什么情况下应用,这里用的语言只是我自己理解的,可能不会很准确,如果需要准确的描述,请查看相关书籍。
1、生成“钥”时会产生一对“钥”:公钥和私钥。公钥,顾名思义,是公开的“钥”,那么私钥就是自己秘密保留的“钥”。
2、某人A想要给你发一个消息,但是希望不让其他人知道。那么,他可以使用你公布出来的公钥,对消息进行加密成密文。如果其他人得到密文,则没有办法解密。而如果你得到了密文,你可以使用你保留的私钥对密文进行解密。这个过程即“加密解密”的过程。
3、你给某人A发送一条消息,但是A可能怀疑这个消息是否真正是你发出的。那么你可以使用你的私钥对这个消息进行标记。而A要验证这个消息真的是你发出的,就可以使用你公布出来的公钥进行验证。这个对消息标记的过程即“数字签名”。
4、A与B之间存在信任,B与C之间存在信任。那么,要在A与C之间建立信任,则可以……
需要特别注意的是:
1、请注意你们得到的公钥是真正来自你认为的那个人的。如果不是,则所有的信任将不复存在。
2、一般来说,将一个人的私钥保存在多用户系统上不是一个好办法,有可能会被其他用户访问到。你应该始终把私钥保存在一张软盘上(要做备份),当不使用时把两者都锁起来。
实际操作
使用对方公钥加密信息,并将此信息发送给对方
1、使用对方公钥对信息进行加密,首先要获得对方公钥,然后使用 gpg -- import 进行导入。
2、然后应该使用 gpg --sign-key name 对这个公钥进行签名,来告诉 gpg 你能够确认这个公钥是正确并有效的。如果不进行这一步,会出现类似于下面的信息:
gpg: BB2CFA5A: There is no indication that this key really belongs to the owner
1024g/BB2CFA5A 2003-12-09 "……(这部分忽略)"
Primary key fingerprint: ……(这部分忽略)
Subkey fingerprint: ……(这部分忽略)
It is NOT certain that the key belongs to the person named
in the user ID. If you *really* know what you are doing,
you may answer the next question with yes
Use this key anyway?
当然如果输入“y”也可以。但是每次都会提示。
3、使用下面命令对文件进行加密:
gpg --encrypt --recipient name --armor secret_file
如果要加密外加数字签名就要:
gpg --recipient user_name --sign --encrypt --armor msg_file
快速参考
1、生成密钥对:
gpg --export --armor
2、提出公钥并显示在屏幕上:
gpg --export
3、提取公钥并仅仅使用可打印字符(ASCII):
gpg --export --armor
4、从key.asc中导入公钥:
gpg --import key.asc
5、列出我的公钥串的所有密钥
gpg --list-keys
6、列出公钥串中所有的密钥以及签名(证书)
gpg --list-sigs
7、列出我的私钥(可以多于一个)
gpg --list-secret-keys
8、提出一个公钥的指纹
gpg --fingerprint [user]
9、执行有关用户密钥的操作
gpg --edit-key user_name
10、加密文件msg中的信息,而只有user用户可以读取
gpg --encrypt --armor --recipient user msg_file
11、对收到的一条信息解密
gpg --decrypt msg_file
12、使用我的私钥对一条消息签名,并使输出可以打印
gpg --sign --armor msg_file
13、使用我的私钥对消息进行透明签名(保持消息可读)
gpg --clearsign msg_file
14、核对我收到的一个签名消息是否来自经过验证的用户
gpg --verify signed_msg_file
15、对一条消息进行签名和加密,并使输出可以打印
gpg --recipient user_name --sign --encrypt --armor msg_file
责任编辑 赵毅 zhaoyi#51cto.com TEL:(010)68476636-8001
|
· 教你使用Anti ARP Snif.. · 网络嗅探教程:使用Sni.. · 时代亿信企业级信息安.. · ISA Server、虚拟机、.. · Windows年底再现图片漏.. · MBSA本地审核策略建议 |
· 企业局域网安全访问控.. · 常见病毒手工清除方法.. · 网络技术经典基础教程 · 系统安全设置终结教程-.. · IT系统安全白皮书 · 使用ipsec加强系统安全.. |
|
|||
| · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · CISSP认证成长之路 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 |
· 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |