pgp加密解密,gpg加密文件

  pgp加密解密,gpg加密文件

  众所周知,互联网是不安全的,但是在上面使用的大部分应用,比如Web、Email,一般只提供明文传输(https、smtps除外)。因此,当我们需要传输重要文件时,我们应该对其中的信息进行加密。非对称加密是常用的加密方法之一。但是基于PGP加密的中文介绍很少,于是我萌生了写一个完整教程的想法。当然,本文部分资料是通过搜索网络整理的,不能保证100%原创。

  GnuPG是非对称加密(PGP)的免费软件,简称GPG。(有没有一些童鞋被PGP和GPG搞糊涂了?)。先说非对称加密。传统的加密方法通常使用相同的密码进行加密和解密。比如加密时用的密码是“abc”,解密时也要用“abc”。有一个问题是你不能给你的朋友发送加密信息。试想一下,如果你用这种加密方式给你的朋友发送信息,你的朋友一定知道你的密码才能解密你的信息。但是你怎么能保证你的朋友绝对可靠呢?也就是说,如果你的朋友把你的密码告诉别人,你的密码就不再安全了。

  非对称加密采用了另一种思想。它会给你两把钥匙,一把叫“公钥”,一把叫“私钥”。公钥是可以公开的,所以你可以把它传给别人。你必须保证私钥的安全,不让任何人知道。当有人得到你的公钥时,他可以给你发送加密信息。具体来说,他用你的公钥加密他想发给你的消息,发给你。加密的邮件只能用您的私钥解密。这样,由于世界上除了你之外,没有其他人知道你的私钥,所以即使别人看到了发送给你的加密信息,他也无法解密,就连发送者自己也无法解密。因为他不知道你的私钥。简单来说,就是用公钥加密;使用相应的私钥解密。你要向谁发送加密信息,你必须先得到他的公钥。

  支持非对称加密的软件有很多种,最著名的大概是美国的PGP,但它是商业软件,价格也不便宜。至于加密软件,我反对使用破解软件,因为如果信息需要加密,那一定是非常重要的信息,破解软件无法保证加密的安全性和可靠性。所以我建议使用免费开源的GnuPG软件来加密和解密信息。

  # gpg - gen-key

  gpg(GnuPG)1 . 4 . 5;版权所有(C) 2006自由软件基金会。

  这个程序绝对没有担保。

  这是自由软件,欢迎您重新发布

  在特定条件下。详见文件复制。

  请选择您想使用的密钥类型:

  (1) DSA和ElGamal(默认)

  (2) DSA(仅用于签名)

  (5) RSA(仅用于签名)

  你的选择?1只有1可以用于加密,其他种类只能用于签名。

  DSA密钥对将有1024位。

  ELG-E密钥的长度应该在1024位到4096位之间。

  您想使用多大的密钥?(2048)选择您的密码位数。位数越大越安全,但速度越慢。

  所需的密钥大小为2048位。

  请设置此密钥的有效期。

  0=密钥永不过期。

  N=密钥将在n天后过期。

  W=周后密钥过期。

  M=个月后密钥过期。

  Y=密钥在n年后过期。

  密钥的有效期是多长?(0) 0根据实际情况选择关键术语。

  密钥永不过期。

  以上正确吗?(是/否)y确认

  您需要一个用户ID来标识您的密钥;该软件将使用真实姓名,评论和电子邮件地址的组合。

  进入用户身份,如下所示:

  "海因里希海涅(Der Dichter)Heinrich @ Dusseldorf . de "

  真实姓名:连字符王请填写真实姓名,稍后使用。

  电子邮件地址:gpgencrypt@linuxfly.org电子邮件是标志之一,不可复制。

  评论:用于GPG加密只是一个评论。

  您已经选择了此用户ID:

  "连字符王(用于加密)"

  改名字(n)、评论(c)、邮箱(e)还是确认(O)/退出(q)?O输入“O”确认

  您需要一个密码来保护您的私钥。输入两次用于访问私钥的密码,记住,不能公开,也不能丢失。

  我们需要生成大量的随机字节。这时,你可以做更多的杂务(如敲击键盘、移动

  鼠标、读写硬盘等。),这样会让随机数生成器有更好的机会获得足够的熵。

  .

  没有足够的随机字节。请做一些其他琐碎的事情,让操作系统收集更多的熵数!

  (需要274字节)运行一些程序,在内存中获取更多的随机数。

  我们需要生成大量的随机字节。这时,你可以做更多的杂务(如敲击键盘、移动

  鼠标、读写硬盘等。),这样会让随机数生成器有更好的机会获得足够的熵。^^^

  Gp:密钥A3942296被标记为绝对信任/密钥ID。

  公钥和私钥已经生成并签名。

  Gpg:检查信任数据库。

  Gpg:需要3个勉强信托和1个完全信托,PGP信托模型

  Gp:深度:0有效性:2已签名:0信任:0-,0q,0n,0m,0f,2u

  2008年12月19日

  指纹=e 95 E1 f 77 6 C4 e 33 BD 740 c 19 ab eef 9a 67 a 394 2296

  王(用于加密)

  sub 2048g/911E677B

  生成密钥对后,您应该立即制作公钥恢复证书。如果您忘记了您的私钥的密码,或者您的私钥丢失或被盗,您可以发出此证书来声明以前的公钥不再有效。回收证书的选项是- gen-revoke 。

  mykey参数是可以表示的密钥标识符,生成的回收证书放在revoke.asc文件中。一旦颁发了回收证书,其他用户就不能再访问以前的证书,因此以前的公钥无效。

  PS:如果决定撤销上传的公钥,需要上传该密钥的恢复证书到密钥服务器完成恢复。

  3.上传密钥

  当上述工作完成后,为了让尽可能多的人得到你的公钥,你可以把它邮寄出去,或者发布在你的个人主页上。当然更好的方法是上传到全局密钥服务器,其他用户可以通过你提供的公钥ID搜索得到你的公钥。

  您可以通过以下命令将您的密钥发布到服务器:

  PS:当然也可以定义默认的密钥服务器。通常,安装后默认的密钥服务器是subkeys.pgp.net。您还可以通过修改gnupg/gpg.conf中的密钥服务器信息来更改您的密钥服务器

  通常,我们需要导出公钥和私钥并保存它们。当然,公钥可以洒得到处都是,但私钥一定要保存,否则你的密钥对就永久失效了。

  gpg -o keyfilename - export mykeyID

  如果没有mykeyID,则备份所有公钥。-o表示输出到文件keyfilename。如果添加了参数-a,则输出文本格式(ASCII)的信息,否则,输出二进制格式的信息。

  gpg-o key filename-export-secret-keys mykeyID

  如果没有mykeyID,将备份所有私钥。-o表示输出到文件keyfilename。如果添加了参数-a,将输出文本格式的信息。否则,将以二进制格式输出信息。

  PS:用户可以使用gpg - list-keys命令来检查密钥是否被成功导入。

  5.加密、解密和数字签名

  经过上述的密钥生成和公钥分发后,加密和解密数据就变得非常容易,用户可以利用该功能在网络上安全地传输自己的秘密数据。

  如果用户patterson想发送一个加密的文件给用户liyang,他可以用liyang的公钥加密该文件,而该文件只能由liyang用自己的密钥解密和查看。下面给出加密和解密的步骤:

  用户patterson使用liyang的公钥加密文件test,使用以下指令:

  您没有指定用户id。(您可以使用-r )

  输入用户ID。以空行结尾:李阳

  增加1024g/C50E455A 2006-01-02“溧阳(你好)liyang@sina.com”

  这样就可以将gpg.conf文件加密成test.gpg,普通用户无法读取。

  PS:当然也可以直接指定使用哪个用户的公钥进行加密:

  Gp-e-r liyangtest (-r表示指定的用户)

  还可以添加参数-a来输出ASCII编码的文件test.asc(test.gpg是二进制编码的,不能通过文本读取)。

  gpg -ea -r李阳试验

  您需要一个密码来解锁的密钥

  用户:“李阳(你好)liyang@sina.com”

  1024位ELG-E密钥,ID C50E455A,创建于2006年1月2日(主密钥ID 378D11AF)

  GnuPG提示用户输入用于生成私钥的密码:

  输入密码:

  gpg:使用1024位ELG-E密钥加密,ID为C50E455A,创建于2006年1月2日

  李阳(你好)liyang@sina.com

  PS:不管是加密还是解密,都可以添加-o参数来指定加密和解密的输出文件,例如

  #gpg -o文档. gpg -er名称文档

  其中,name表示选择了谁的公钥加密,即谁是文件的接收者。

  Doc是要加密的文件,也就是原始文件。

  Doc.gpg是命令执行后生成的加密文件。这里,应该首先指定文件名。

  1.数字签名

  命令格式:

  #gpg -o文档. sig -s文档

  Doc是原始文件,doc.sig包含原始文件和签名,是二进制的。该命令将要求您输入您的私钥密码。

  #gpg -o doc.sig -ser name doc

  签名和加密

  2.文本签名

  # gpg-o doc . SIG-clear SIG doc

  生成的doc.sig还包含原始文件和签名,其中签名是文本,而原始文件不变。

  3.单独签名

  #gpg -o文档. sig -ab文档

  Doc.sig只包含签名。分割签名意味着原始文档和签名是分开的。

  b表示分离签名,一个单独的签名。

  4.验证签名

  #gpg - verify doc.sig [doc]

  在验证之前,必须导入文件作者的公钥。对于分割签名,必须在末尾添加原始文件,即下面的doc。

  虽然在理论上,用公钥和私钥可以实现安全的信息通信,但在实际中,公钥必须得到有效的确认。因为确实存在伪造公钥信息的可能。

  因此,一个复杂的信任系统被引入GPG,以帮助我们区分哪些密钥是真的,哪些是假的。这个信任体系是基于密钥的,主要包括密钥签名。

  当收到一个熟人的公钥,而GPG告诉我们这个公钥没有附加实体可信信息时,第一件事就是“指纹化”这个密钥。例如,我们从迈克那里导入公钥,GPG告诉我们,关于这个密钥没有额外的可信信息。这时,我们首先要做的就是对这把新钥匙进行“指纹采样”。相关命令和实现如下:

  $ gpg-fingerprint Mike @ hairnet . org pub 1024d/4f 03 BD 39 2001-01-15 Mike Socks(我是有线的)Key fingerprint=B121 5431 8de 4 e3a 8 4a a7 737d 20 be 0 db 8 4f 03 BD 39 sub 1024g/fdbb 477d 2001-01-15 $。

  这样它的指纹信息是从关键数据中生成的,应该是唯一的。然后,我们打电话给迈克确认两件事。首先,他是否给我们送来了钥匙;其次,他的公钥指纹信息是什么。如果迈克确认了这两件事,我们就可以确定这把钥匙是合法的。接下来,我们对密钥进行签名,以表明该密钥来自Mike,并且我们信任该密钥。相关命令和执行如下:

  $ gpg-sign-key Mike @ hairnet . org pub 1024d/4 f 03 BD 39创建时间:2001-01-15到期时间:neversub 1024g/FDBB477D创建时间:2001-01-15到期时间:never(1)Mike Socks(I m WIRED)pub 1024d/4 f 03 BD 39创建时间:2001-01-15到期时间:never fingerprint=B121 5431 8de 4 e3a 8 4a 7 737d 27d您需要一个密码来解锁用户的密钥:Ima用户(我就是我)1024位DSA密钥,ID D9BAC463,创建于2001-01-03输入密码:$

  到目前为止,Mike的公钥是用我们的私钥签名的,任何持有我们公钥的人都可以验证签名确实属于我们。附加在Mike的公钥上的签名信息将随其在互联网上传播。我们用个人信誉,也就是我们自己的私钥,来保证这个密钥真的属于迈克。这是一个多么感人而又诚实的故事。现实世界中的人们是否应该反思这种严格的技术标准?

  或者回到这里。获取附加到公钥的签名信息列表的命令是:

  gpg -检查-mike@hairnet.org

  签名列表越长,密钥的可信度越高。实际上,提供密钥验证功能的是签名系统本身。假设我们收到一个由Mike签名的密钥,通过Mike的公钥,我们验证签名确实属于Mike,那么我们信任这个密钥。推而广之,我们可以信任任何由Mike签名的密钥。

  为了更加安全,GPG还引入了另一个附加功能:信任级别。有了它,我们可以为我们拥有的任何密钥的所有者指定信任级别。例如,即使我们知道Mike的公钥是可信的,但事实上我们在对其他密钥进行签名时不能相信Mike的判断;我们认为迈克可能只签署了几个密钥,但他没有正确检查它们。

  设置信任级别的命令及其实现如下:

  $ gpg-edit-key Mike @ hairnet . org pub 1024d/4f 03 BD 39 created:2001-01-15 expires:never trust:-/fsub 1024g/fdbb 477d created:2001-01-15 expires:never(1)Mike Socks(我已连线)命令信任1=不知道2=不信任3=勉强信任4=完全信任s=请显示更多信息m=返回主菜单您的决定?2命令退出$

  在命令编辑环境中执行trust,然后选择level 2(我不信任),这样我们就切断了任何信任链,每一个密钥都必须有Mike的签名。

  6.删除密钥

  从私钥环中删除密钥:

  # gpg -删除-秘密-密钥hyphenwang@redflag-linux.com

  gpg(GnuPG)1 . 4 . 5;版权所有(C) 2006自由软件基金会。

  这个程序绝对没有担保。

  这是自由软件,欢迎您重新发布

  在特定条件下。详见文件复制。

  连字符王(用于加密)

  您想从密钥环中删除此密钥吗?(是/否)是

  这是私钥!-您真的要删除它吗?(是/否)是

  # gpg -删除键hyphenwang@redflag-linux.com

  gpg(GnuPG)1 . 4 . 5;版权所有(C) 2006自由软件基金会。

  这个程序绝对没有担保。

  这是自由软件,欢迎您重新发布

  在特定条件下。详见文件复制。

  连字符王(用于加密)

  您想从密钥环中删除此密钥吗?(是/否)是

  三。对称加密:

  当然GPG也有常见的对称加密功能,所以这个时候你不需要密钥,用密码加密就可以了(注意这里的密码不一定是你私钥的密码,可以随意设置)。

  gpg -o文档. gpg -c文档

  -

  四。GPG的通用参数:

  -s,-sign[文件名]以生成签名。

  -clear sign[文件名]生成清晰的签名。

  -b -b,- detach-sign生成分离的签名。

  -e,-encrypt加密数据

  -c,-symmetric只使用对称加密。

  -d,-解密数据(默认)

  -验证验证签名

  - list-keys列出密钥。

  - list-sigs列出密钥和签名。

  - check-sigs列出并检查密钥签名。

  - fingerprint列出了按键和指纹。

  -k,-list-secret-keys列出私钥。

  - gen-key生成新的密钥对。

  - delete-keys从公钥环中删除密钥。

  - delete-secret-keys-keys从私钥的密钥环中删除密钥。

  - sign-key向密钥添加签名。

  -l sign-key向密钥添加本地签名。

  - edit-key编辑密钥或向其添加签名。

  - gen-revoke生成吊销证书。

  -导出导出密钥

  - send-keys将密钥导出到公钥服务器。

  - recv-keys从公钥服务器导入密钥。

  - search-keys在公钥服务器上搜索密钥。

  - refresh-keys从公钥服务器更新所有本地密钥。

  -导入导入/合并密钥

  -卡状态打印卡的状态。

  -卡-编辑以更改卡上的数据

  - change-PIN更改卡的PIN。

  - update-trustdb更新信任数据库。

  - print-md algorithm [file]使用指定的哈希算法打印消息哈希值。

  选项:

  -a,-装甲输出打包成ASCII码。

  -r,-收件人A加密收件人“A”

  -u -u,-local-用户使用此用户ID进行签名或解密。

  -z N将压缩级别设置为N (0表示不压缩)

  - textmode使用标准文本模式。

  -o,-output指定输出文件。

  -v,-详细模式

  -n -n,-模拟运行不会进行任何更改。

  -I,-覆盖前交互询问。

  - OpenPGP行为严格遵循OpenPGP的定义。

  - pgp2生成与pgp2.x兼容的消息。

  示例:

  -se-r Bob[文件名]签名并加密Bob作为收件人。

  -clear sign[文件名]以纯文本形式签名。

  -detach-sign[文件名]单独签名。

  - list-keys [A]显示键。

  -指纹[a]显示指纹。

  -

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: