安全在计算机行业中可能会是个永久的话题。2004年到2005年间,山东大学王小云教授攻破MD5,降低了SHA-1的安全强度,这更是引起了大家的关注。并且,随着网络技术的发展和普及,大家的网络安全意识也越来越强。因此,在这里对加密和安全的基础知识做一点入门性质的介绍,以便大家能对这方面有更准确的了解和把握,能更好地保护自己重要数据的安全。
本文侧重密码方面的基础知识的介绍。本文一直在逐步修改和完善。 如果哪位朋友在安全方面存在疑惑和问题,欢迎提出来,我们将尽力帮忙寻求解答,并丰富本文的内容,以便能帮助更多的人。如果本文存在问题和错误,也欢迎诸位给予批评指正。
1. 请大家准备好,开工了
密码学的方法离我们并不遥远。它应用很广泛,在我们日常使用计算机的时候就会经常用到,只不过我们没有多加留意而已。比如我们启动Windows的时候,我们要输入口令,这个口令在系统中就是加密后保存的。在我们上网时,有些网站需要我们建立安全连接,这时也是在密码算法支持下进行的。在你的IE浏览器中,看一下工具->Internet选项->内容->证书,会发现密码技术其实早已在后台默默地为我们工作了。
密码算法有很多种。包括对称算法、非对称算法、消息摘要算法等。对称加密算法包括DES和AES等;非对称加密算法包括RSA、DSA、椭圆曲线算法等。
接下来将以逐条解释基本概念的形式对主要的密码安全技术做一个简单的介绍。
2. 朴素的密码
“天王盖地虎,宝塔镇河妖……”大家一定在电影里看过土匪对暗号的场面。其实,土匪口中的“黑话”就是一种最朴素的密码。只不过这种密码过于简单,经不起密码学家的分析,非常容易破译。
3. 凯撒密码
这是一个古老的加密方法,当年凯撒大帝行军打仗时用这种方法进行通信,因此得名。它的原理很简单,其实就是单字母的替换。让我们看一个简单的例子:“This is Caesar Code”。用凯撒密码加密后字符串变为“vjku ku Ecguct Eqfg”。看起来似乎加密得很“安全”。可是你可以尝试一下,把这段很难懂的东西每一个字母换为字母表中前移2位的字母……哦,结果出来了。
凯撒密码的字母对应关系:
A b c d e f g h i … x y z
C d e f g h I j k … z a b
4. rot13
ROT13是网络上常见的一种简单的“加密”方式。它是用字母表里a-m的字符来代替n-z,用n-z的字符来代替a-m字符。它的原理和凯撒密码非常类似。凯撒密码移了2位,而ROT13移了13位。ROT13通常作为简单的手段使得我们的电子信件不能被直接识别和阅读,也不会被那些匹配程序用通常的方法直接找到。
如"V Ybir lbh!" 这个句子实际上是"I Love you!"。
ROT13字母对应关系:
A b c d e f g h I … x y z
N o p q r s t u v … k l m
明白了吗?“解密”一下下面的内容:
jrypbxr gb jjj.syntjner.arg
5. 受限密码
上面讨论的“加密”是非常简单的,简单到不用计算机的帮助就能手工破译,简单到只能防止3岁的小妹妹偷看你的文件 J
我们可以把这些算法变得更复杂,引入更多的变换、更多的交叉和扩散 …… 这样也许会更难破译些。但是,在这个基础上变得再复杂,也还跳不出“受限密码”的范畴。所谓“受限密码”,是指算法的安全性是建立在算法保密的基础上的。一旦算法泄漏,所加密的内容也就完全没有安全性可言了。我们前面讨论的算法就是有这个特点的。
算法泄漏的问题使得这类算法的应用范围受到很大的限制。基本上,现在已经没人用了。
6. 现代密码技术的开始:密钥与算法分离
受限密码一旦泄漏了算法,那么所有加密的内容都会曝露在光天化日之下。使用这样的方法来保护重要信息是很危险的。因此,密码学家提出了算法和密钥分离的思想。这是密码学的一个里程碑。
它的思想是,密码的安全性取决于一个密钥,而不是取决于一个算法。每条消息用一个Key加密,只要Key不泄露,消息就是安全的。即使算法公开了,也威胁不到消息的安全性。现代的密码算法,如3DES,AES等,都是属于这一类。后面我们将会对这些算法做简要的介绍。
7. 澄清一个观念:通常没有绝对的信息安全
在介绍现代的密码和信息安全技术之前,有必要澄清一个观念:密码技术里所提到的信息安全性通常不是绝对的,它是一个相对的范畴。
一位密码学家曾经这样评论:如果你想让你的信息绝对安全的话,你得把你要保密的信息写下来装在保险柜里,把保险柜焊死,到太平洋海底某个不为人知的角落挖坑深埋,这样也许会接近绝对的安全。可是这样的安全是没有用的,因为这并不能让需要信息的人得到它。所以,这种“安全”是没有用的。实际上,这不能叫做“信息安全”,把它叫做“信息隐藏”也许更为合适。
我们所讨论的信息安全,是有使用价值的信息安全。这种安全是相对的安全。
不过“相对安全”并不意味着不安全。我们日常生活中用的“锁”其实也是相对的安全。事实上,密码算法的安全强度要比平常的锁的安全强度高出很多倍。
8. 相对的安全
在数学家香农(Claude E.Shanon)创立的信息论中,用严格的数学方法证明了这么一个结论:一切密码算法,除了一次一密以外,在理论上都是可以破解的。这些密码算法,包括现在的和过去的,已知的和未知的,不管它多么复杂、多么先进,只要有足够强大的计算机,有足够多的密文,一定可以破译。
那么就产生了这样一个问题:既然这样,那密码还有什么用呢?
这就是为什么我们要讨论相对安全的原因。
前面提到了,一切密码,理论上都是可以破译的。但是,只有在拥有足够强大的计算机的情况下才有可能破译。在实际上,也许并不存在这么强的计算机。如果破译一个算法需要现在最强的计算机运算几百年,那么这样的算法即使理论上可以破译,在实践中也还是有实用价值的。
因此,我们可以这样理解相对安全的观念:假如一条信息需要保密10年,如果要花20年的时间才能破解它,那么信息就是安全的。否则就不安全。
在现实中,能获得的计算能力在一定程度上与付出的经济代价成比例。因此,也可以从经济的角度来衡量安全程度。假如一条信息价值一百万元,如果需要要花1000万元的代价才能制造出足够强的计算机来破解它,那它就是安全的。但是,如果信息价值1000万,用100万元就能获得足够的计算能力来破解它,那么它就是不安全的。
9. 一次一密
前面提到除了一次一密以外,其它的密码理论上都是可以破解的。那么什么是一次一密呢?一次一密就是每一次加密都使用一个不同的密钥(废话,和没说一样J)。严格的说,满足以下条件的密码才是真正的一次一密:
a.密钥是随机产生的,并且必须是真随机数,而不是伪随机数;
b.密钥不能重复使用;
c.密钥的有效长度不小于密文的长度。
一次一密是最安全的加密算法,双方一旦安全交换了密钥,之后交换信息的过程就是安全的。这种算法一直在一些要求高度机密的场合使用,据说美国和前苏联之间的热线电话、前苏联的间谍都是使用一次一密的方式加密的。不管有多强的超级计算机,不管超级计算机工作多久,也不管多少人,用什么方法和技术,具有多大的计算能力,都不可能破解用一次一密方法加密的信息,除非回到那个时代拿到他用过的密码本(也就是密钥)。前苏联间谍用一次一密方法加密过的信息将成为永久的谜。
10. 对称算法的概念
所谓对称算法就是指加密和解密过程均采用同一把密钥。如DES,3DES,AES等算法都属于对称算法。下面会对这几种有代表性的算法一一做介绍。
11. DES算法
DES(Data Encryption Standard)是一种经典的对称算法。其数据分组长度为64位,使用的密钥为64位,有效密钥长度为56位(有8位用于奇偶校验)。它由IBM公司在70年代开发,经过政府的加密标准筛选后,于1976年11月被美国政府采用,随后被美国国家标准局和美国国家标准协会(American National Standard Institute, ANSI) 承认。
该技术算法公开,在各行业有着广泛的应用。DES算法从公布到现在已有20多年的历史,随着计算机能力的飞速发展,DES的56位密钥长度显得有些短了。现在,已经有可能通过穷举的方法来对其进行攻击。但是除此以外,还没有发现穷举以外的能有效破译DES的方法。
DES算法的数据流程图如下图所示:
12. 三重DES
DES算法现在已经不能提供足够的安全性,因为其有效密钥只有56位。因此,后来又提出了三重DES(或称3DES),该方法的强度大约和112比特的密钥强度相当。
这种方法用两个密钥对明文进行三次运算。设两个密钥是K1和K2,其算法的步骤如图所示:
1. 用密钥K1进行DES加密。
2. 用K2对步骤1的结果进行DES解密。
3. 用步骤2的结果使用密钥K1进行DES加密。
13. AES算法
1997年1月美国国家标准和技术研究所(NIST)宣布征集新的加密算法。2000年10月2日,由比利时设计者Joan Daemen和Vincent Rijmen设计的Rijndael算法以其优秀的性能和抗攻击能力,最终赢得了胜利,成为新一代的加密标准AES(Advanced Encryption Standard)。
Rijndael加密:
Rijndael是一个密钥迭代分组密码,包含了轮变换对状态的重复作用。轮数Nr 的值取决于分组和密钥的长度。对于AES,当密钥长度为128比特时,Nr =10;当密钥长度为192比特时,Nr =12;当密钥长度为256比特时,Nr =14。
Rijndael算法的加密过程如图1所示。它包括一个初始密钥加法,记作AddRoundKey,接着进行Nr-1次轮变换(Round),最后再使用一个轮变换(FinalRound)。
轮变换由4个步骤组成:SubBytes,ShiftRows,MixColumns和AddRoundKey。最后一轮与前Nr -1次轮变换稍有不同,省掉了其中的MixColumns步骤。
步骤SubBytes是Rijndael算法中唯一的非线性变换。
步骤ShiftRows是一个字节换位,它将状态中的行按照不同的偏移量进行循环移位。使第i 行第j 位的字节移动到位置(j -Ci)mod Nb,移动偏移量Ci 的值依赖于Nb 的取值。其中Nb =分组长度/32,对于AES,Nb 取固定长度4。
步骤MixColumns是作用在状态各列的置换算法。
密钥加法AddRoundKey将状态与一个轮密钥进行异或。轮密钥是由密码密钥通过密钥编排方案[1]导出。轮密钥的长度等于分组的长度。
Rijndael解密:
Rijndael解密算法有2种形式。一种是直接解密算法,即直接利用步骤InsubBytes,InvShiftRows,InvMixColumns和AddRoundKey的逆并倒置其次序对数据进行解密。
另一种是等价解密算法,其实现原理如图2所示。等价解密算法有利于有效实现良好的运算次序。
14. 非对称算法的概念
所谓非对称算法就是指加密和解密用的不是同一个密钥。
非对称算法的密钥分为二部分,通常称为“公钥”和“私钥”(或者称为“公开密钥”和“秘密密钥”)。公钥和私钥存在数学上的关系,使得用公钥加密的数据只能用对应的私钥解密,用私钥加密的数据只能用对应的公钥解密。但是从公钥中推导出私钥是很难的(理论上是可以推导出来的,但是实际上找不到这么强的计算能力)。
RSA,DSA等算法属于非对称算法。
15. RSA算法
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和 *** 作。RSA是被研究得最广泛的公钥算法,从1978年提出到现在已近三十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。通常认为破译RSA的难度与大数分解难度等价。算法以三个发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。
RSA算法的原理:
1、密钥对的产生:
选择两个大素数,p 和q 。计算: n = p * q
然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后,利用
Euclid 算法计算解密密钥d, 使其满足
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。
2、加密
加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。加密的公式是:
ci = mi^e ( mod n )
3、解密
解密时作如下计算:
mi = ci^d ( mod n )
16. 散列算法
散列算法,也称为单向散列函数、杂凑函数、哈希算法、HASH算法或消息摘要算法。它通过把一个单向数学函数应用于数据,将任意长度的一块数据转换为一个定长的、不可逆转的数据。这段数据通常叫做消息摘要(比如,对一个几兆字节的文件应用散列算法,得到一个128位的消息摘要)。消息摘要代表了原始数据的特征,当原始数据发生改变时,重新生成的消息摘要也会随之变化,即使原始数据的变化非常小,也可以引起消息摘要的很大变化。因此,消息摘要算法可以敏感地检测到数据是否被篡改。消息摘要算法再结合其它的算法就可以用来保护数据的完整性。
好的单向散列函数必须具有以下特性:
1) 计算的单向性:给定M和H,求h=H(M)容易,但反过来给定h和H,求M=H-1(h)在计算上是不可行的。
2) 弱碰撞自由:给定M,要寻找另一信息 M′,满足 H(M′)=H(M)在计算上不可行。
3) 强碰撞自由:,要寻找不同的信息M 和M′,满足 H(M′)=H(M)在计算上不可行。
单向散列函数的使用方法为:用散列函数对数据生成散列值并保存,以后每次使用时都对数据使用相同的散列函数进行散列,如果得到的值与保存的散列值相等,则认为数据未被修改(数据完整性验证)或两次所散列的原始数据相同(口令验证)。
典型的散列函数有:MD5,SHA-1,HMAC,GOST等。单向散列函数主要用在一些只需加密不需解密的场合:如验证数据的完整性、口令表的加密、数字签名、身份认证等。
17. 关于MD5和SHA-1等
2004年,山东大学王小云教授攻破了MD5算法,引起密码学界的轩然大波。
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。
2004年8月17日的美国加州圣巴巴拉召开的国际密码学会议(Crypto’2004)安排了三场关于杂凑函数的特别报告。在国际著名密码学家Eli Biham和Antoine Joux相继做了对SHA-1的分析与给出SHA-0的一个碰撞之后,来自山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告。王小云教授的报告轰动了全场,得到了与会专家的赞叹。
不久,密码学家Lenstra利用王小云提供的MD5碰撞,伪造了符合X.509标准的数字证书,这就说明了MD5的破译已经不仅仅是理论破译结果,而是可以导致实际的攻击,MD5的撤出迫在眉睫。
安全散列算法1(SHA-1)是由NSA设计的,并由NIST将其收录到 FIPS 中,作为散列数据的标准。它可产生一个 160 位的散列值。SHA-1是流行的用于创建数字签名的单向散列算法。
在MD5被王小云为代表的中国专家破译之后,世界密码学界仍然认为SHA-1是安全的。2005年2月7日,美国国家标准技术研究院发表申明,SHA-1没有被攻破,并且没有足够的理由怀疑它会很快被攻破。而仅仅在一周之后,王小云就发布了消息,说明了SHA-1算法寻找一对碰撞的复杂度是2^69,而不是密码学家以前认为的2^80。
如何理解这个结果呢?在很多报道中,包括山东大学的网站上,都说SHA1被攻破了,被破解了,云云。作者对这类说法持保留态度。引用王小云教授论文中的说法:
“对于SHA0,这种攻击很有效,我们能够在不超过2^39次Hash *** 作中找到实际的碰撞。我们也对弱化到58步的SHA1进行了攻击,并在不超过2^33次Hash *** 作中找到了实际的碰撞。”
“SHA0和58步的SHA1是作为80步完整SHA1的简化版,用来验证我们的新方法的效率的。此外,我们的分析表明,减弱到70步的SHA1的碰撞复杂度是2^50次Hash *** 作。基于这个估计,我们期望在现在的超级计算机上能找到70步SHA1的真实碰撞。”
所以,严格说来应该这样理解:这个结果把攻破SHA1的计算量降低了2000倍。在某些情况下,SHA1似乎走到了不安全的边缘。
MD5被攻破了,SHA1也不那么安全了,怎么办呢?现在看来,还有SHA-256和SHA-512等算法可用。密码学家也在研究新的散列算法。
18. 数字鉴名
密码技术除了提供信息的加密解密外,还提供对信息来源的鉴别、保证信息的完整和不可否认等功能,而这三种功能都是结合数字签名技术来实现的。
简单地说,数字签名的原理可以这样理解:用非对称算法的私钥加密的内容只能用对应的公钥来解密。而私钥是不公开的。因此,如果一段信息能用某个人的公钥解密,那么它一定是用此人的私钥加密的。它和物理的签名一样,是很难伪造的。
在实际应用中,数字签名的过程通常是这样实现:
将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要用私钥加密后与明文一起传送给接受方,接受方用发送方的公钥来解密报文摘要,再将接受的明文产生新的报文摘要与发送方的报文摘要比较,比较结果一致表示明文确实来自期望的发送方,并且未被改动。如果不一致表示明文已被篡改或不是来自期望的发送方。
19. 数字证书
为了保证互联网上电子交易及支付的安全性,防范交易及支付过程中的欺诈行为,必须在网上建立一种信任机制。这就要求参加电子商务的买方和卖方都必须拥有合法的身份,并且在网上能够有效无误的被进行验证。数字证书是一种权威性的电子文档。它提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份z。它是由一个由权威机构----CA证书授权(Certificate Authority)中心发行的,人们可以在互联网交往中用它来识别对方的身份。当然在数字证书认证的过程中,证书认证中心(CA)作为权威的、公正的、可信赖的第三方,其作用是至关重要的。
数字证书颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。
随着Internet的普及、各种电子商务活动和电子政务活动的飞速发展,数字证书开始广泛地应用到各个领域之中,目前主要包括:发送安全电子邮件、访问安全站点、网上招标投标、网上签约、网上订购、安全网上公文传送、网上缴费、网上缴税、网上炒股、网上购物和网上报关等。
20.CA
CA是Certification Authority的缩写。CA中心,又称为数字证书认证中心。CA中心作为电子交易中受信任的第三方,负责为电子商务环境中各个实体颁发数字证书,以证明各实体身份的真实性,并负责在交易中检验和管理证书;数字证书的用户拥有自己的公钥/私钥对。证书中包含有证书主体的身份信息、其公钥数据、发证机构名称等,发证机构验证证书主体为合法注册实体后,就对上述信息进行数字签名,形成证书。在公钥证书体系中,如果某公钥用户需要任何其它已向CA注册的用户的公钥,可直接向该用户索取证书,而后用CA的公钥解密解密即可得到认证的公钥;由于证书中已有CA的签名来实现认证,攻击者不具有CA的签名密钥,很难伪造出合法的证书,从而实现了公钥的认证性。 数字证书认证中心是整个网上电子交易安全的关键环节,是电子交易中信赖的基础。他必须是所有合法注册用户所信赖的具有权威性、信赖性及公正性的第三方机构。
CA的核心功能就是发放和管理数字证书。概括地说,CA认证中心的功能主要有:证书发放、证书更新、证书撤销和证书验证。具体描述如下:
(1)接收验证用户数字证书的申请。
(2)确定是否接受用户数字证书的申请,即证书的审批。
(3)向申请者颁发(或拒绝颁发)数字证书。
(4)接收、处理用户的数字证书更新请求。
(5)接收用户数字证书的查询、撤销。
(6)产生和发布证书的有效期。
(7)数字证书的归档。
(8)密钥归档。
(9)历史数据归档。
21. PGP
PGP是Pretty Good Privacy的缩写。PGP最初是Phil Zimmermann在1991年写的一套程序的名字。这套程序后来由MIT, ViaCrypt, PGP Inc.维护和发布。现在的PGP由Network Associates Inc. (NAI)作为商业软件进行销售。同时,PGP也是一个网络标准的名字(RFC 2440: Open PGP Message Format)。在这里,我们主要讨论作为RFC标准的PGP。
PGP是一种以RSA等密码算法为基础,用来保护电子邮件等信息的安全性的系统。可以用它对你的邮件保密以防止非授权者阅读,它还能对你的邮件加上数字签名从而使收信人可以确信邮件是你发来的。它让你可以安全地和你从未见过的人们通讯,事先并不需要任何保密的渠道用来传递密匙。
它的加密方法用的是我们前面讨论过的算法。它与其它系统不同的地方在于它的密钥管理。
一个成熟的加密体系必然要有一个成熟的密钥管理机制配套。公钥体制的提出就是为了解决传统加密体系的密钥分配过程保密的缺点。比如网络黑客们常用的手段之一就是"监听",如果密钥是通过网络传送就太危险了。对PGP来说公钥本来就要公开,就没有防监听的问题。但公钥的发布中仍然存在安全性问题,例如公钥被篡改(public key tampering),这可能是公钥密码体系中最大漏洞 。用户必须确信用户的公钥属于需要收信的那个人。
下面举个例子来说明这个问题:以用户A和用户B通信为例,现假设用户A想给用户B发信,首先用户A就必需获取用户B的公钥,用户A从BBS上下载或其它途径得到了B的公钥,并用它加密了信件发给了B。不幸的是,用户A和B都不知道,另一个用户C潜入BBS或网络中,侦听或截取到用户B的公钥,然后在自己的PGP系统中用用户B的名字生成密钥对中的公钥替换了用户B的公钥,并放在BBS上或直接以用户B的身份把更换后的用户B的“公钥”发给用户A。那用户A用来发信的公钥是已经是更改过的,实际上是用户C伪装用户B生成的另一个公钥。这样谁都不会起疑心,但这样一来用户B收到用户A的来信后就不能用自己的私钥解密了,更可恶的是,用户C还可伪造用户B的签名给用户A或其他人发信,因为用户A手中的公钥是伪造 ,用户A会以为真是用户B的来信。
防止这种情况出现的最好办法是避免让任何其他人有机会篡改公钥,但能做到这一点的是非常困难的,一种方法是直接从用户B手中得到他的公钥,然而当他在远在他乡或在时间上根本不可达到时,这是不可办到的。
但PGP提出了一种公钥介绍机制来解决这个问题,其思路是这样的:如果用户A和用户B有一个共同的朋友D,而D知道他手中的B的公钥是正确的。这样D就成为用户A和B之间的公证人,用户B为了防止别人篡改自己的公钥,就把经过D签名的自己的公钥上载到BBS上让用户去拿,用户A想要取得用户B的公钥就必需先获取D的公钥来解密BBS或网上经过D签名的B的公钥,这样就等于加了双重保险,一般没有可能去篡改它而不被用户发现,即使是BBS的管理员。这就是从公共渠道传递公钥的安全手段。
说到这里也许有人会想到,只通过一个签名公证力度是不是小了点。 PGP当然考虑到了这一点,它的办法就是把由不同的人签名的自己的公钥收集在一起,发送到公共场合,这样可以希望大部分人至少认识其中一个,从而间接认证了用户的公钥。同样用户签了朋友的公钥后应该寄回给他,这样就可以让他通过该用户被该用户的其他朋友所认证。有点意思吧,和现实社会中人们的交往一样。PGP会自动根据用户拿到的公钥中有哪些是朋友介绍来的,把它们分为不同的信任级别,供用户参考决定对它们的信任程度。也可指定某人有几层转介公钥的能力,这种能力是随着认证的传递而递减的。
如何安全地得到D或其他签名朋友的公钥呢?确实有可能用户A拿到的D或其他签名的朋友的公钥也假的,但这就求这个用户C必须对你们三人甚至很多人都很熟悉,这样的可能性不大,而且必需经过长时间的策划。当然,如果一定要追究这一点的话,那就是由一个大家普遍信任的机构担当这个角色,他被称为认证权威机构,每个由他签过字的公钥都被认为真的,这样大家只要有他的公钥就行了,认证这个人的公钥是方便的,因他广泛提供这个服务,假冒他的公钥是极困难的,因为他的公钥流传广泛。这样的"权威机构"适合由非个人控制组织或政府机构充当----这就是我们前面讨论过的CA。
22. 数字信封
数字信封是一种综合运用对称算法、非对称算法、消息摘要算法和数字签名的消息加密机制。为什么要引入这种机制呢?这是因为:
1、对称算法速度比较快,与同等安全强度的非对称算法相比,一般要快三个数量级左右。但是对称算法需要通过一个安全的通道交换密钥(或协商密钥,或事先约定密钥)之后才能进行通信。
2、非对称算法较慢,但是它的优点是通信双方不必事先约定密钥
普通上传是单线程,仿佛一个工程一个人干活,速度慢,网络利用率不高多线程是将上传的文件切割成块,同时上传,这样速度快,网络利用率高
这点前边两位说的都是对的,但要注意,不是所有的ISP都是支持多线程的,多线程的数量也要依服务器的限制而定。
至于openpgp,前边的解说就不对了。OpenPGP是Phil Zimmermann成立的业界团体(如果你知道公开密钥方式加密程序“PGP”的话,就是他建立的)该团体的宗旨是促进以OpenPGP为标准的软件间的相互兼容性。 PGP是一种保护电子邮件等网络上数据的机密性的公开密钥标准加密程序。而OpenPGP则是以PGP为基础的电子邮件加密技术标准规格。其标准化工作由因特网技术的标准化团体IETF(Internet Engineering Task Force)负责。RFC序号为2440,现在的应用范围已经扩展到扩展至电子邮件以外的领域”(OpenPGP Alliance)
cuteftp吧主:zy2001net
p1[i]=pk[i*4+0]等号的左边char类型,右边是char指针类型,你说能赋值么?
要说怎么改,只有问你自己,因为你的问题和你的程序逻辑有关,不是什么少个分号,那我告诉你加个分号就可以了。你要知道你的程序想要干什么,至少,你要想清楚,你这句赋值语句本意是干什么
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)