公钥与私钥,有那么复杂吗?

转载 2013年12月02日 17:53:15

这篇文章是以前在网上看到的,之后自己保存到笔记本里面了,最近不太爱用笔记本了,就把这篇文章贴到这里吧,没有去找原文章的链接,如有冒犯请见谅。

公钥与私钥,在使用公钥密码学加密与签名时,真的就很难选择吗?
    这篇文章是第二版,因为第一版不幸地……闲话少说,言归正传。
    经常听到有人说,在使用公钥密码学加密与签名时,一定要知道是使用公钥还是使用私钥,否则容易闹笑话。可是,对于一个学过一点密码学的人来说,真的就那么难吗?下面就来讨论一下这个问题。
    密码学中要使用Key,而在公钥密码学中,有两个Key,一个公钥PK(Public Key),一个私钥SK(Secret Key),其中公钥PK公开,任何人都可以查到,而私钥SK保密,理论上只应该有你一个人知道。这一点是与分组密码算法(DES,AES)不同的(DES的实现可以看我以前的一篇博文),因为在分组密码算法中,只有一个KEY,且是在通信双方共享的,并且需要保密。下面以公钥密码算法RSA为例(RSA的小数情况实现也可以看我的另一篇文章),来讲一讲在公钥密码学,加密与签名时,key的选择问题。
    首先要说一说通信,通信自然要涉及通信双方,当然,你也可以自己和自己通信(如果你这时还加密签名的话,你这是闲得……)。密码学的大师给了通信双方两个好听的名字A(lice),B(ob)。下面约定一下PK(A),PK(B)分别代表Alice和Bob的公钥,是完全公开的,任何人都可以查到;SK(A)为Alice的私钥,只有Alice自己知道,SK(B)为Bob的私钥,只有Bob一个人知道。下面从Bob的角度来讨论。
    加密:
    加密,为什么要加密?因为通信的双方使用的是公开的信道,而信道上是可能有窃听者的,如果使用明文传输消息,即不加密,那么窃听者就可以知道消息的内容了,如果你传输的是什么**消息的话,你就悲剧了。所以为防止消息被不应该知道的人知道,传输时要加密。
    在公钥密码学中,一个消息M,在key1的控制下,经过密码算法,得到密文C,是为加密;而密文C,在另一个Key2的控制下,经过密码算法,可以得到对应的明文M,是为解密。其中一个是公钥PK,一个是私钥SK,这是与分组密码不同的。下面来说Bob要传输消息给Alice,该使用那个Key。这里使用枚举,这个办法很好用。总共用四个key。(你不会还想用其他人的key吧。。。)
    1)使用PK(B)吗(自己的公钥)?这个,来分析分析。使用PK(B)加密的消息,只能使用对于的SK(B)来解密,而SK(B)只有你自己知道,Alice不知道,窃听者也不知道。使用这个Key的效果最好,别的人都不能知道消息的内容,窃听者也拿它没办法,但是,通信的另一方Alice也不知道消息的内容了,这样的通信就没有意义了。所以,否定掉。
    2)使用SK(B)吗(自己的私钥)?我们来看看,使用SK(B)加密的消息,要使用PK(B)来加密。而PK(B)是公开的,Alice知道,恩,Alice可以解密消息了,这个可以吧!这个真的可以吗?正是因为PK(B)是公开的,Alice知道,窃听者也知道,所以Alice能解密,窃听者也能解密,所以根本就没有保密性。和明文传输没多大的差别了。这个一个悲剧的选择。Pass掉。
    3)使用SK(A)吗(对方的私钥)?SK(A)是Alice的私钥,只有Alice知道,Bob不知道,这个不行。假设Alice将私钥偷偷告诉了你,这样你就可以使用了吧。原理和结局同2中的分析。同样……
    4)使用PK(A)吗(对方的公钥)?排除法告诉我们,只有这个可以选了,那就选它吧。原理什么的就不用讲了吧,大家也没兴趣的。不行,老夫子教导我们,知其然必知其所以然。我们要知道原理。好吧,讲一讲。使用PK(A)加密的消息,要使用SK(A)来解密,而SK(A)对方是知道的,所以消息是可以解密的;而又因为SK(A)只有Alice知道,别的人包括窃听者是不知道的,所以消息的保密性是可以保证的。满足要求。恩,终于弄懂了。
    讲了这么多,口都渴了,喝口水了再来讲。。。。。。下面将签名。
    签名:
    签名,现实生活中,我们可以使用自己的笔迹来签名的。而电子世界呢?签名,这个是公钥密码学提供的而分组密码是无法与他比的特性。签名,为什么要签名?举个例子,假如你发送一条消息给银行,从你的账号中转1亿出去(反正是举例子,说这么大的数额也没什么关系),银行执行了这条消息,转了账,事后,你跟银行说,你没有转过账,要让银行赔偿,如果银行拿不出证据,那银行就悲剧了、破产了,而银行是可以拿出证据的,证据就在那条消息中,因为你对它签名了,而签名在法律上是有效的证据的。好吧。那么,Bob要对消息签名,他该使用哪个key?枚举法再次闪亮登场……
    1)使用PK(A)吗(对方的公钥)?假设可以的话,由于PK(A)是公开的,那么任何都是可以伪造你的签名的,你的银行卡就爆了。。。
    2)使用SK(A)吗(对方是私钥)?同样这个你是不知道的。就是对方告诉了你,还是有问题的,因为这个和你的另一个key不匹配,签名是不能验证的,这个问题同样出现在1中。所以,不妥。。。
    3)使用PK(B)吗(自己的公钥)?同样有问题,第一,原理同1,由于是公开的,任何人都可以伪造,银行卡再次爆掉了;第二,原理同2,要验证,就需要使用你的另一个key,即你的私钥,而这个只有你自己知道,所以签名无法验证。这又是一个失败的例子。。。
    4)私钥SK(B)吗(自己的私钥)?还是说说原理吧。签名要使用唯一能确认是你的东西来签名,譬如笔迹。因为SK(B)只有你自己知道,所以满足要求的;其次,使用SK(B)签名的东西,是可以用PK(B)验证的,因为它是公开的。所以也满足要求。Jackpot!
    写了这么多,终于写完了。由于昨天的失误,今天算是重新敲了一遍,我还以为只有几百字呢,没想到竟有2k多的字。不过上面的都是废话,下面来总结一下,接下来的这句才是重点。
    在公钥密码学中,加密使用对方的公钥,签名使用自己的私钥。

ssh,公钥和私钥,远程复制

1.openssh 是一个提供远程访问控制的软件 2.ssh 远程主机用户@远程主机ip地址 ssh root@172.25.254.1 The authenticity of hos...
  • qq_31863071
  • qq_31863071
  • 2016年07月27日 17:31
  • 2068

数字证书、公钥和私钥这三者之间的关系是什么

根据非对称密码学的原理,每个证书持有人都有一对公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由证书持人自己持有,并且必须妥善保管和注意保密。数字证书则是由证书认证机构(CA)...
  • u014386474
  • u014386474
  • 2016年07月21日 14:37
  • 6294

什么是PKI?什么是公钥和私钥?什么是CSR ?

PKI(公钥基础设施 Public Key Infrastructure)是一种遵循标准的利用公钥加密技术为电子商务提供一套安全基础平台的技术和规范。它能够为所有网络应用提供加密和数字签名等密码服务及...
  • zhengdanqi
  • zhengdanqi
  • 2014年09月03日 09:06
  • 2020

公钥与私钥,真的就那么复杂吗

公钥与私钥,在使用公钥密码学加密与签名时,真的就很难选择吗? 这篇文章是第二版,因为第一版不幸地……闲话少说,言归正传。 经常听到有人说,在使用公钥密码学加密与签名时,一定要知道是使用公钥还是使用...
  • AndyDHU
  • AndyDHU
  • 2012年05月10日 13:13
  • 287

公钥与私钥,有那么复杂吗

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://andydhu.blog.51cto.com/3337368/859688 ...
  • bill200711022
  • bill200711022
  • 2012年05月11日 12:41
  • 795

id_rsa id_pub 公钥与私钥

本文基于实际Linux管理工作,实例讲解工作中使用ssh证书登录的实际流程,讲解ssh证书登录的配置原理,基于配置原理,解决实际工作中,windows下使用SecureCRT证书登录的各种问题,以及实...
  • u010030590
  • u010030590
  • 2016年09月08日 14:21
  • 5157

ssh-keygen 产生公钥与私钥对.

ssh-keygen  产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~....
  • bugall
  • bugall
  • 2015年05月14日 15:56
  • 990

Java安全之公钥与私钥

公钥与私钥机制属于非对称加密的范畴,非对称是相对于对称加密而言的,对称加密用于加密与解密的密钥是同一把,而非对称加密则用于加密与解密的密钥不相同,一个公开,称为公钥;一个保密,称为私钥,公钥与私钥必须...
  • xtayfjpk
  • xtayfjpk
  • 2015年05月29日 16:38
  • 962

理解公钥与私钥

一直都对公钥和私钥的概念不清不楚,以至于在 腾讯面试 被问到“如何在一个不安全的环境中实现安全的数据通信?”时,并没有答上来。今天查阅了一些资料,决定写一篇总结文章来加深自己的理解。 一、公钥算法与...
  • lisong694767315
  • lisong694767315
  • 2015年05月02日 12:43
  • 952

公钥与私钥

一,公钥私钥    1,公钥和私钥成对出现    2,公开的密钥叫公钥,只有自己知道的叫私钥    3,用公钥加密的数据只有对应的私钥可以解密    4,用私钥加密的数据只有对应的公钥可以解密...
  • atco
  • atco
  • 2011年09月23日 14:49
  • 2984
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:公钥与私钥,有那么复杂吗?
举报原因:
原因补充:

(最多只允许输入30个字)