当前位置:首页 » 密码管理 » 乘法加密

乘法加密

发布时间: 2022-08-08 04:33:05

1. PGP是什么

PGP(Pretty Good Privacy),是一个基于RSA公匙加密体系的邮件加密软件。可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。它可以可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。它采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。它的功能强大,有很快的速度。而且它的源代码是免费的。

实际上PGP的功能还包括: PGP可以用来加密文件,还可以用PGP代替UUencode 生成RADIX 64 格式(就是MIME 的 BASE 64格式)的编码文件。

PGP 的创始人是美国的 Phil Zimmermann。他的创造性在于他把RSA公匙体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密匙认证管理机制上有巧妙的设计。因此PGP成为几乎最流行的公匙加密软件包。

1.首先简要介绍PGP加密系统的流程。

PGP加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。它使用一对数学上相关的钥匙,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。

PGP采用的传统加密技术部分所使用的密钥称为“会话密钥”(sek)。每次使用时,PGP都随机产生一个128位的IDEA会话密钥,用来加密报文。公开密钥加密技术中的公钥和私钥则用来加密会话密钥,并通过它间接地保护报文内容。

PGP中的每个公钥和私钥都伴随着一个密钥证书。它一般包含以下内容:

密钥内容(用长达百位的大数字表示的密钥)
密钥类型(表示该密钥为公钥还是私钥)
密钥长度(密钥的长度,以二进制位表示)
密钥编号(用以唯一标识该密钥)
创建时间
用户标识 (密钥创建人的信息,如姓名、电子邮件等)
密钥指纹(为128位的数字,是密钥内容的提要表示密钥唯一的特征)
中介人签名(中介人的数字签名,声明该密钥及其所有者的真实性,包括中介人的密钥编号和标识信息)
PGP把公钥和私钥存放在密钥环(KEYR)文件中。PGP提供有效的算法查找用户需要的密钥。

PGP在多处需要用到口令,它主要起到保护私钥的作用。由于私钥太长且无规律,所以难以记忆。PGP把它用口令加密后存入密钥环,这样用户可以用易记的口令间接使用私钥。

PGP的每个私钥都由一个相应的口令加密。PGP主要在3处需要用户输入口令:

需要解开受到的加密信息时,PGP需要用户输入口令,取出私钥解密信息
当用户需要为文件或信息签字时,用户输入口令,取出私钥加密
对磁盘上的文件进行传统加密时,需要用户输入口令
2.以上介绍了PGP的工作流程,下面将简介与PGP相关的加密、解密方法以及PGP的密钥管理机制。

PGP是一种供大众使用的加密软件。电子邮件通过开放的网络传输,网络上的其他人都可以监听或者截取邮件,来获得邮件的内容,因而邮件的安全问题就比较突出了。保护信息不被第三者获得,这就需要加密技术。还有一个问题就是信息认证,如何让收信人确信邮件没有被第三者篡改,这就需要数字签名技术。RSA公匙体系的特点使它非常适合用来满足上述两个要求:保密性(Privacy)和认证性(Authentication)。

RSA(Rivest-Shamir-Adleman)算法是一种基于大数不可能质因数分解假设的公匙体系。简单地说就是找两个很大的质数,一个公开即公钥,另一个不告诉任何人,即私钥。这两个密匙是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。

假设甲要寄信给乙,他们互相知道对方的公匙。甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。由于没别人知道乙的私匙,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。这时候就需要用数字签名来认证。

在说明数字签名前先要解释一下什么是“邮件文摘”(message digest)。邮件文摘就是对一封邮件用某种算法算出一个最能体现这封邮件特征的数来,一旦邮件有任何改变这个数都会变化,那么这个数加上作者的名字(实际上在作者的密匙里)还有日期等等,就可以作为一个签名了。PGP是用一个128位的二进制数作为“邮件文摘”的,用来产生它的算法叫MD5(message digest 5)。 MD5是一种单向散列算法,它不像CRC校验码,很难找到一份替代的邮件与原件具有同样的MD5特征值。

回到数字签名上来,甲用自己的私匙将上述的128位的特征值加密,附加在邮件后,再用乙的公匙将整个邮件加密。这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个128位的特征值来和用甲的公匙解密签名所得到的数比较,如果符合就说明这份邮件确实是甲寄来的。这样两个安全性要求都得到了满足。

PGP还可以只签名而不加密,这适用于公开发表声明时,声明人为了证实自己的身份,可以用自己的私匙签名。这样就可以让收件人能确认发信人的身份,也可以防止发信人抵赖自己的声明。这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。

PGP用的实际上是RSA和传统加密的杂合算法。因为RSA算法计算量极大在速度上不适合加密大量数据,PGP实际上用来加密的不是RSA本身,而是采用了一种叫IDEA的传统加密算法。传统加密,一般说来说就是用一个密匙加密明文,然后用同样的密匙解密。这种方法的代表是DES,也就是乘法加密,它的主要缺点就是密匙的传递渠道解决不了安全性问题,不适合网络环境邮件加密需要。IDEA的加(解)密速度比RSA快得多,所以实际上PGP是以一个随机生成密匙(每次加密不同)用IDEA算法对明文加密,然后用RSA算法对该密匙加密。这样收件人同样是用RSA解密出这个随机密匙,再用IDEA解密邮件本身。这样的链式加密就做到了既有RSA体系的保密性,又有IDEA算法的快捷性。PGP利用这种链式加密,既保证了保密性,又保证了加密的速度。

PGP最核心的功能是:文件加密、通信加密和数字签名。下面将简介一些PGP辅助功能,它们虽然不是整个加密系统的核心,但却起到了协调各部分和方便用户的作用。这儿主要介绍PGP的密钥管理机制。

一个成熟的加密体系必然要有一个成熟的密匙管理机制配套。公匙体制的提出就是为了解决传统加密体系的密匙分配过程难以保密的缺点。如果密匙是通过网络传送,那么网络上其他人就可以通过监听得到。举个例子:Novell Netware 的老版本中,用户的密码是以明文在线路中传输的,这样监听者轻易就获得了他人的密码。当然 Netware 4.1 中数据包头的用户密码现在是加密的了。对PGP来说公匙本来就要公开,就没有防监听的问题。但公匙的发布中仍然存在安全性问题,例如公匙的被篡改(Public Key Tampering),这可能是公匙密码体系中最大的漏洞。必须有一种机制保证用户所得到的公钥是正确的,而不是别人伪造的。下面举一个例子来说明这个问题,以及如何正确地用PGP堵住这个漏洞。

假设Mike想给Alice发封信,那他必须有Alice的公匙。该用户从BBS上下载了Alice的公匙,并用它加密了信件用BBS的Email功能发给了Alice。但是,另一个用户叫Charlie的用户潜入BBS,把他自己用Alice的名字生成的密匙对中的公匙替换了Alice的公匙,而参与通信的这两个人都不知道。那么Mike用来发信的公匙就不是Alice的而是Charlie的,一切看来都很正常。于是Charlie就可以用他手中的私匙来解密Mike给Alice的信,甚至他还可以用Alice真正的公匙来转发Mike给Alice的信,这样谁都不会起疑心,他如果想改动Mike给Alice的信也没问题。甚至他还可以伪造Alice的签名给Mike或其他人发信,因为这些用户手中的公匙是伪造的,他们会以为真是Alice的来信。

防止这种情况出现的最好办法是避免让任何其他人有机会篡改公匙,比如直接从Alice手中得到她的公匙,然而这在很多情况下是比较困难的。PGP发展了一种公匙介绍机制来解决这个问题。举例来说:如果Mike和Alice有一个共同的朋友David,而David知道他手中的Alice的公匙是正确的(关于如何认证公匙,PGP还有一种方法,后面会谈到,这里假设David已经和Alice认证过她的公匙)。这样David可以用他自己的私匙在Alice的公匙上签名,表示他担保这个公匙属于Alice。当然Mike需要用David的公匙来校验他给出的Alice的公匙,同样David也可以向Alice认证Mike的公匙,这样David就成为Mike和Alice之间的“介绍人”。这样Alice或David就可以放心地把David签过字的Alice的公匙上载到BBS上让Mike去拿,没人可能去篡改它而不被发现,即使是BBS的管理员。这就是从公共渠道传递公匙的安全手段。

那么怎么能安全地得到David的公匙呢,确实有可能Mike拿到的David的公匙也是假的,但这就要求这个伪造密钥的人参与这整个过程,他必须对这三个人都很熟悉,还要策划很久,这一般不可能。当然,PGP对这种可能也有预防的建议,那就是由一个大家普遍信任的人或机构担当这个角色,即所谓的“密匙侍者”或“认证权威”(认证中心),每个由他签字的公匙都被认为是真的,这样大家只要有一份他的公匙就行了,认证这个人的公匙是方便的,因为他广泛提供这个服务,假冒他的公匙是很极困难的,因为他的公匙流传广泛。这样的“权威”适合由非个人控制组织或政府机构充当,现在已经有等级认证制度的机构存在。

对于那些非常分散的人们,PGP更赞成使用私人方式的密匙转介方式,因为这样有机的非官方途径更能反映出人们自然的社会交往,而且人们也能自由地选择信任的人来介绍。总之和不认识的人们之间的交往一样。每个公匙有至少一个“用户名”(User ID),最好再加上本人的Email地址,以免混淆。

3.下面,再介绍如何通过电话认证密匙。

每个密匙有它们自己的标识(keyID),keyID是一个八位十六进制数,两个密匙具有相同keyID的可能性是几十亿分之一,而且PGP还提供了一种更可靠的标识密匙的方法:“密匙指纹”(key's fingerprint)。每个密匙对应一串数字(十六个两位十六进制数),这个指纹重复的可能就更微乎其微了。而且任何人无法指定生成一个具有某个指纹的密匙,密匙是随机生成的,从指纹也无法反推出密匙来。这样当拿到某人的公匙后就可以和他在电话上核对这个指纹,从而认证他的公匙。如果无法直接和通信的另一方直接通电话,可以和公钥介绍机制中的中间介绍人通电话认证该介绍人的公匙,从而通过介绍人认证了通信另一方的公匙,这就是直接认证和间接介绍的结合。

这样又引出一种方法,就是把具有不同人签名的自己的公匙收集在一起,发送到公共场合,这样可以希望大部分人至少认识其中一个人,从而间接认证了你的公匙。同样你签了朋友的公匙后应该寄回给他,这样就可以让他可以通过你被你的其他朋友所认证。和现实社会中人们的交往一样。PGP会自动为你找出你拿到的公匙中有哪些是你的朋友介绍来的,那些是你朋友的朋友介绍来的,哪些则是朋友的朋友的朋友介绍的……它会帮你把它们分为不同的信任级别,让你参考决定对它们的信任程度。你可以指定某人有几层转介公匙的能力,这种能力是随着认证的传递而递减的。

转介认证机制具有传递性,这是个有趣的问题。PGP的作者Phil Zimmermann说过一句话:“ 信赖不具有传递性;我有个我相信决不撒谎的朋友。可是他是个认定总统决不撒谎的傻瓜,可很显然我并不认为总统决不撒谎。”

上面所说的是关于公匙的安全性问题,这是PGP安全的核心。另外,和传统单密匙体系一样,私匙的保密也是决定性的。相对公匙而言,私匙不存在被篡改的问题,但存在泄露的问题。RSA的私匙是很长的一个数字,用户不可能将它记住,PGP的办法是让用户为随机生成的RSA私匙指定一个口令(pass phase)。只有通过给出口令才能将私匙释放出来使用,用口令加密私匙的方法保密程度和PGP本身是一样的。所以私匙的安全性问题实际上首先是对用户口令的保密。当然私匙文件本身失密也很危险,因为破译者所需要的只是用穷举法(强力攻击)试探出口令了,虽说很困难但毕竟是损失了一层安全性。需要说明的是:最好不要把私钥写在纸上或者某一文件里,因为这样很容易被别人得到在这里。

PGP在安全性问题上的审慎考虑体现在PGP的各个环节。比如每次加密的实际密匙是个随机数,大家都知道计算机是无法产生真正的随机数的。PGP程序对随机数的产生是很审慎的,关键的随机数像RSA密匙的产生是从用户敲键盘的时间间隔上取得随机数种子的。对于磁盘上的 randseed.bin 文件是采用和邮件同样强度的加密的。这有效地防止了他人从randseed.bin文件中分析出加密实际密匙的规律来。

4.最后提一下PGP的加密前预压缩处理,PGP内核使用PKZIP算法来压缩加密前的明文。

一方面对电子邮件而言,压缩后加密再经过7bits编码密文有可能比明文更短,这就节省了网络传输的时间。另一方面,明文经过压缩,实际上相当于经过一次变换,信息更加杂乱无章,对明文攻击的抵御能力更强。PKZIP算法是一个公认的压缩率和压缩速度都相当好的压缩算法。在PGP中使用的是PKZIP 2.0版本兼容的算法。

5.参考书目:

Philip Zimmermann : “PGP User's Guide Volume I : Essential Topics”
NAI

2. 为什么说加法密码、乘法密码、仿射密码、置换密码、Hill密码以及Vigenere密码

加法密码就是真典密码学中的恺撒密码格式是:密文=(明文+密钥)mod26,剩法密码是恺撒密码发展出来,格式是:密文=明文x实钥mon26;置换密码就是在简单的纵行换位密码中,明文以固定的宽度水平的写在一张图表纸上,密文按垂直方向读出,解密就是密文按相同的宽度垂直的写在图表纸上,然后水平的读出明文。希尔密码(Hill Cipher)是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果MOD26;Vigenere是恺撒密码演变而来。使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。
有兴趣可以了解一下古典密码学,这里面都有。

3. 用C语言乘法加密怎么解密(对文本文件内容乘法加密的。怎么解密比如加密钥匙为K=2。原内容X2.)

给你一个加密算法 我写的 用异或算法处理文本类的文档

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
jiemi()
{
int k,l;
char FN[40],FS[40];
char ch,mima[40],x;
FILE *f1,*f2;
printf("输入要解密的文件夹名称:");
scanf("%s",FN);
if((f1=fopen(FN,"r"))==NULL)
{
printf("您的路径有误,系统将不能完成任务,请重新进入。");
getch();
exit(1);
}
printf("输入您要解密到的文件夹名称:");
scanf("%s",FS);
if((f2=fopen(FS,"w"))==NULL)
{
printf("您的输入有误,系统将不能完成任务,请重新进入。");
getch();
exit(1);
}
printf("输入密码:");
scanf("%s",mima);

l=strlen(mima);
k=0;
ch=fgetc(f1);
while(ch!=EOF)
{
k=k%l;
fputc(ch^mima[k],f2);
ch=fgetc(f1);
k++;
}
fclose(f1);
fclose(f2);
printf("解密成功,请在该软件目录找到您解密的文件。\n");
getch();
}
jiami()
{
int k,l;
char FN[20],FS[20];
char ch,mima[40],x;
FILE *f1,*f2;
printf("输入要打开的文件夹名称:");
scanf("%s",FN);
if((f1=fopen(FN,"r"))==NULL)
{
printf("您的路径有误,系统将不能完成任务,请重新进入。");
getch();
exit(1);
}
printf("输入要保存的文件夹名称:");
scanf("%s",FS);
if((f2=fopen(FS,"w"))==NULL)
{
printf("您的输入有误,系统将不能完成任务,请重新进入。");
getch();
exit(1);
}
printf("输入密码:");
scanf("%s",mima);

l=strlen(mima);
k=0;
ch=fgetc(f1);
while(ch!=EOF) //文件没有到底就继续 ,EOF文件的底部
{
k=k%l;
fputc(ch^mima[k],f2);
ch=fgetc(f1);
k++;
}
fclose(f1);
fclose(f2);
printf("加密成功,请在该软件目录找到您加密的文件。\n");
getch();
}
main()
{
char y;
while(1)
{
printf("说明:欢迎使用文件加密程序,该程序可以将txt文档加密为为不可读文件,解密后返回原状态\n\n");
printf("小提示:输入文件名字的时候请使用字母,数字或下划线。\n并且请加上(文件名).txt的后缀,要加密的文件请放在和程序文件同目录下\n\n");
printf(" ******菜单*******\n");
printf(" * 1.加密 *\n");
printf(" * 2.解密 *\n");
printf(" * 0.退出 *\n");
printf(" *****************\n");
printf(" 请输入要执行的命令:\n");
y=getch();
switch(y)
{
case '1': jiami();system("cls");break;
case '2': jiemi();system("cls");break;
case '0': exit(0);
}
}
}

4. 除了栅栏密码,恺撒密码和维吉尼亚密码,还有哪些密码

培根密码
弗朗西斯·培根,英国人,他是第一个意识到科学技术能够改变世界面貌的哲学家。他不仅意识到这一点,而且积极投入到科学技术的探索中。他对密码学的兴趣很浓,设计出的密码也丰富了密码学的内容。
他设计的密码非常独特,它可以不加过多的“雕饰”,几乎以本来的“素面”在你眼前晃过,而不会引起你的注意。
培根所用的密码是一种本质上用二进制数设计的。不过,他没有用通常的0和1来表示,而是采用a和b。下面是他设计的26个英文字母二进制表示法。
A aaaaa
B aaaab
C aaaba
D aaabb
E aabaa
F aabab
G aabba
H aabbb
I abaaa
J abaab
K ababa
L ababb
M abbaa
N abbab
O abbba
P abbbb
Q baaaa
R baaab
S baaba
T baabb
U babaa
V babab
W babba
X babbb
Y bbaaa
Z bbaab

编写密码时,把密文每五个字母为一组,凡是其中的正体字母代表a,斜体字母代表b。随意选取句子或文章,就可以通过改变字母的写法来加密了。

此外,还有
字母表顺序-数字
进制转换密码
Mod算法
倒序
间隔
字母频率
凯撒密码(Caesar Shifts, Simple Shift)
凯撒移位(中文版)
栅栏密码(The Rail-Fence Cipher)
维吉尼亚密码(Vigenère Cipher)
Polybius密码(Polybius Cipher)
ADFGX/ADFGVX密码(ADFGX/ADFGVX Cipher)
ADFGX
ADFGVX
乘法密码(Multiplication Cipher)
仿射密码(Affine Shift)
希尔密码(Hill Cipher)
加密
解密
Playfair密码(Playfair Cipher)
摩斯电码
置换密码(Transposition Cipher)
替代密码(Monoalphabetic Substitution)
字母表数字
字母表代码
反字母表
随机乱序字母
棋盘密码
键盘密码
键盘移位
软键盘密码
数字小键盘密码
手机键盘密码
数字谐音密码
数字记忆编码
网络/Google/网页字符
网络字符(GB2312)
Google字符(URI)
网页编码(Unicode)
Alt+数字小键盘
MD5

超字数不一一解释了。可以网络。

5. 网络安全中加密和解密的原理是什么

对数据在网络传输中的保护 加密算法 为防止劫包偷取信息而加了密码 只有知道解开的算法才能看
如hash DES

6. 乘法密码的加密过程

设明文消息元素个数为n,密钥为k。
密钥k在选取的时候应满足两个条件:
(1)0<k<n
(2)k与n互素
设明文消息为M,消息元素为m;
则密文消息为C,密文元素为c=m*k mod n;
其解密过程如下:
首先要得到解密密钥,就是要求得加密密钥k模n的逆元;
具体求法为k *mod n=1;
然后计算m=c *mod n即可得到明文消息M。
举例说明如下:
英文字母有26个,即n=26;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
M=m[26]={a , b , c ,d , e , f , g , h , i , j , k , l , m , n , o , p , q , r , s , t , u , v , w , x , y , z };
我们选取密钥k=5;
现在我们对hello进行加密
hello所对应的数组为[8,5,12,12 15];
由于8*5 (mod 26) =40(mod)26=14;
依次类推,可得到加密后的数组为[ 14 , 25,8,8, 23 ];
对应的密文消息就是nyhhw
现在我们开始对nyhhw解密
首先要求得解密密钥;
由于5*21(mod 26)=105(mod26)=1;
所以=21;
nyhhw所对应的数组为[ 14 , 25,8,8, 23 ];
由于14*21(mod26)=294(mod26)=8;
依次类推,可得到解密后的数组为[8,5,12,12 15];
对应的明文消息就是hello。

7. 什么是PGP

PGP(Pretty Good Privacy),是一个基于RSA公匙加密体系的邮件加密软件。可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。它可以可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。它采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。它的功能强大,有很快的速度。而且它的源代码是免费的。 实际上PGP的功能还包括: PGP可以用来加密文件,还可以用PGP代替UUencode 生成RADIX 64 格式(就是MIME 的 BASE 64格式)的编码文件。 PGP 的创始人是美国的 Phil Zimmermann。他的创造性在于他把RSA公匙体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密匙认证管理机制上有巧妙的设计。因此PGP成为几乎最流行的公匙加密软件包。 1.首先简要介绍PGP加密系统的流程。 PGP加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。它使用一对数学上相关的钥匙,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。 PGP采用的传统加密技术部分所使用的密钥称为“会话密钥”(sek)。每次使用时,PGP都随机产生一个128位的IDEA会话密钥,用来加密报文。公开密钥加密技术中的公钥和私钥则用来加密会话密钥,并通过它间接地保护报文内容。 PGP中的每个公钥和私钥都伴随着一个密钥证书。它一般包含以下内容: 密钥内容(用长达百位的大数字表示的密钥) 密钥类型(表示该密钥为公钥还是私钥) 密钥长度(密钥的长度,以二进制位表示) 密钥编号(用以唯一标识该密钥) 创建时间 用户标识 (密钥创建人的信息,如姓名、电子邮件等) 密钥指纹(为128位的数字,是密钥内容的提要表示密钥唯一的特征) 中介人签名(中介人的数字签名,声明该密钥及其所有者的真实性,包括中介人的密钥编号和标识信息) PGP把公钥和私钥存放在密钥环(KEYR)文件中。PGP提供有效的算法查找用户需要的密钥。 PGP在多处需要用到口令,它主要起到保护私钥的作用。由于私钥太长且无规律,所以难以记忆。PGP把它用口令加密后存入密钥环,这样用户可以用易记的口令间接使用私钥。 PGP的每个私钥都由一个相应的口令加密。PGP主要在3处需要用户输入口令: 需要解开受到的加密信息时,PGP需要用户输入口令,取出私钥解密信息 当用户需要为文件或信息签字时,用户输入口令,取出私钥加密 对磁盘上的文件进行传统加密时,需要用户输入口令 2.以上介绍了PGP的工作流程,下面将简介与PGP相关的加密、解密方法以及PGP的密钥管理机制。 PGP是一种供大众使用的加密软件。电子邮件通过开放的网络传输,网络上的其他人都可以监听或者截取邮件,来获得邮件的内容,因而邮件的安全问题就比较突出了。保护信息不被第三者获得,这就需要加密技术。还有一个问题就是信息认证,如何让收信人确信邮件没有被第三者篡改,这就需要数字签名技术。RSA公匙体系的特点使它非常适合用来满足上述两个要求:保密性(Privacy)和认证性(Authentication)。 RSA(Rivest-Shamir-Adleman)算法是一种基于大数不可能质因数分解假设的公匙体系。简单地说就是找两个很大的质数,一个公开即公钥,另一个不告诉任何人,即私钥。这两个密匙是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。 假设甲要寄信给乙,他们互相知道对方的公匙。甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。由于没别人知道乙的私匙,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。这时候就需要用数字签名来认证。 在说明数字签名前先要解释一下什么是“邮件文摘”(message digest)。邮件文摘就是对一封邮件用某种算法算出一个最能体现这封邮件特征的数来,一旦邮件有任何改变这个数都会变化,那么这个数加上作者的名字(实际上在作者的密匙里)还有日期等等,就可以作为一个签名了。PGP是用一个128位的二进制数作为“邮件文摘”的,用来产生它的算法叫MD5(message digest 5)。 MD5是一种单向散列算法,它不像CRC校验码,很难找到一份替代的邮件与原件具有同样的MD5特征值。 回到数字签名上来,甲用自己的私匙将上述的128位的特征值加密,附加在邮件后,再用乙的公匙将整个邮件加密。这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个128位的特征值来和用甲的公匙解密签名所得到的数比较,如果符合就说明这份邮件确实是甲寄来的。这样两个安全性要求都得到了满足。 PGP还可以只签名而不加密,这适用于公开发表声明时,声明人为了证实自己的身份,可以用自己的私匙签名。这样就可以让收件人能确认发信人的身份,也可以防止发信人抵赖自己的声明。这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。 PGP用的实际上是RSA和传统加密的杂合算法。因为RSA算法计算量极大在速度上不适合加密大量数据,PGP实际上用来加密的不是RSA本身,而是采用了一种叫IDEA的传统加密算法。传统加密,一般说来说就是用一个密匙加密明文,然后用同样的密匙解密。这种方法的代表是DES,也就是乘法加密,它的主要缺点就是密匙的传递渠道解决不了安全性问题,不适合网络环境邮件加密需要。IDEA的加(解)密速度比RSA快得多,所以实际上PGP是以一个随机生成密匙(每次加密不同)用IDEA算法对明文加密,然后用RSA算法对该密匙加密。这样收件人同样是用RSA解密出这个随机密匙,再用IDEA解密邮件本身。这样的链式加密就做到了既有RSA体系的保密性,又有IDEA算法的快捷性。PGP利用这种链式加密,既保证了保密性,又保证了加密的速度。 PGP最核心的功能是:文件加密、通信加密和数字签名。下面将简介一些PGP辅助功能,它们虽然不是整个加密系统的核心,但却起到了协调各部分和方便用户的作用。这儿主要介绍PGP的密钥管理机制。 一个成熟的加密体系必然要有一个成熟的密匙管理机制配套。公匙体制的提出就是为了解决传统加密体系的密匙分配过程难以保密的缺点。如果密匙是通过网络传送,那么网络上其他人就可以通过监听得到。举个例子:Novell Netware 的老版本中,用户的密码是以明文在线路中传输的,这样监听者轻易就获得了他人的密码。当然 Netware 4.1 中数据包头的用户密码现在是加密的了。对PGP来说公匙本来就要公开,就没有防监听的问题。但公匙的发布中仍然存在安全性问题,例如公匙的被篡改(Public Key Tampering),这可能是公匙密码体系中最大的漏洞。必须有一种机制保证用户所得到的公钥是正确的,而不是别人伪造的。下面举一个例子来说明这个问题,以及如何正确地用PGP堵住这个漏洞。

8. 乘法密码是怎么一回事 描述的是一种加密吗有没有一种好理解的说法

乘法密码是简单代替密码的一种.
其映射函数为;f(a)=b=a[j]
其中 j=jk mod n并且j与k互素

9. 乘法密码的加密过程

咨询记录 · 回答于2021-10-31

10. PGP软件的特点是什么

PGP—Pretty Good Privacy,是一个基于RSA公匙加密体系的邮件加密软件。可以

用它对你的邮件保密以防止非授权者阅读,它还能对你的邮件加上数字签名从而使收

信人可以确信邮件是你发来的。它让你可以安全地和你从未见过的人们通讯,事先

并不需要任何保密的渠道用来传递密匙。它采用了:审慎的密匙管理,一种RSA和传

统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的

人机工程设计。它的功能强大,有很快的速度。而且它的源代码是免费的。

实际上PGP的功能还不止上面说的: PGP可以用来加密文件,还可以用PGP代替

UUencode 生成 RADIX 64 格式(就是MIME 的 BASE 64格式)的编码文件。

PGP 的创始人是美国的 Phil Zimmermann。他的创造性在于他把RSA公匙体系的方

便和传统加密体系的高速度结合起来,并且在数字签名和密匙认证管理机制上有巧妙

的设计。因此PGP成为几乎最流行的公匙加密软件包。

PGP是一种供大众使用的加密软件。加密是为了安全,私密权是一种基本人权。在

现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分。邮件的安全问题

就日益突出了,大家都知道在Internet上传输的数据是不加密的。如果你自己不保护

自己的信息,第三者就会轻易获得你的隐秘。还有一个问题就是信息认证,如何让收

信人确信邮件没有被第三者篡改,就需要数字签名技术。RSA公匙体系的特点使它非

常适合用来满足上述两个要求:保密性(Privacy)和认证性(Authentication)。

RSA(Rivest-Shamir-Adleman)算法是一种基于大数不可能质因数分解假设的公

匙体系。简单地说就是找两个很大的质数,一个公开给世界,一个不告诉任何人。一

个称为“公匙”,另一个叫“私匙”(Public key & Secret key or Private key)。

这两个密匙是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。假

设甲要寄信给乙,他们互相知道对方的公匙。甲就用乙的公匙加密邮件寄出,乙收到

后就可以用自己的私匙解密出甲的原文。由于没别人知道乙的私匙所以即使是甲本人

也无法解密那封信,这就解决了信件保密的问题。另一方面由于每个人都知道乙的公

匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。认证的问题就出现了,

这时候数字签名就有用了。

在说明数字签名前先要解释一下什么是“邮件文摘”(message digest),简单

地讲就是对一封邮件用某种算法算出一个最能体现这封邮件特征的数来,一旦邮件

有任何改变这个数都会变化,那么这个数加上作者的名字(实际上在作者的密匙里)

还有日期等等,就可以作为一个签名了。确切地说PGP是用一个128位的二进制数作

为“邮件文摘”的,用来产生它的算法叫MD5(message digest 5),MD5的提出者是

Ron Rivest,PGP中使用的代码是由Colin Plumb 编写的,MD5本身是公用软件。所以

PGP的法律条款中没有提到它。MD5是一种单向散列算法,它不像CRC校验码,很难找

到一份替代的邮件与原件具有同样的MD5特征值。

回到数字签名上来,甲用自己的私匙将上述的128位的特征值加密,附加在邮

件后,再用乙的公匙将整个邮件加密。(注意这里的次序,如果先加密再签名的话,

别人可以将签名去掉后签上自己的签名,从而篡改了签名)。这样这份密文被乙收到

以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出

一个128位的特征值来和用甲的公匙解密签名所得到的数比较,如果符合就说明这份

邮件确实是甲寄来的。这样两个安全性要求都得到了满足。

PGP还可以只签名而不加密,这适用于公开发表声明时,声明人为了证实自己的

身份(在网络上只能如此了),可以用自己的私匙签名。这样就可以让收件人能确认

发信人的身份,也可以防止发信人抵赖自己的声明。这一点在商业领域有很大的应用

前途,它可以防止发信人抵赖和信件被途中篡改。

那么为什么说PGP用的是RSA和传统加密的杂合算法呢?因为RSA算法计算量极大

在速度上不适合加密大量数据,所以PGP实际上用来加密的不是RSA本身,而是采用

了一种叫IDEA的传统加密算法。我先解释一下什么叫传统加密,简单地说就是用一个

密匙加密明文,然后用同样的密匙解密。这种方法的代表是DES(US Federal Data

Encryption Standard),也就是乘法加密,它的主要缺点就是密匙的传递渠道解决

不了安全性问题,不适合网络环境邮件加密需要。IDEA是一个有专利的算法,专利

持有者是ETH和一个瑞士公司:Ascom-Tech AG。非商业用途的IDEA实现不用向他们

交纳费用。IDEA的加(解)密速度比RSA快得多,所以实际上PGP是以一个随机生成

密匙(每次加密不同)用IDEA算法对明文加密,然后用RSA算法对该密匙加密。这样

收件人同样是用RSA解密出这个随机密匙,再用IDEA解密邮件本身。这样的链式加密

就做到了既有RSA体系的保密性,又有IDEA算法的快捷性。PGP的创意有一半就在这

一点上了,为什么RSA体系70年代就提出来,一直没有推广应用呢?速度太慢!那么

PGP创意的另一半在哪儿呢?下面我再谈PGP的密匙管理。

一个成熟的加密体系必然要有一个成熟的密匙管理机制配套。公匙体制的提出

就是为了解决传统加密体系的密匙分配过程难以保密的缺点。比如网络hacker们常

用的手段之一就是“监听”,如果密匙是通过网络传送就太危险了。举个例子:

Novell Netware 的老版本中,用户的密码是以明文在线路中传输的,这样监听者

轻易就获得了他人的密码。当然 Netware 4.1 中数据包头的用户密码现在是加密

的了。对PGP来说公匙本来就要公开,就没有防监听的问题。但公匙的发布中仍然

存在安全性问题,例如公匙的被篡改(Public Key Tampering),这可能是公匙密码

体系中最大的漏洞,因为大多数新手不能很快发现这一点。你必须确信你拿到的公

匙属于它看上去属于的那个人。为了把这个问题说清楚,我举个例子,然后再说如

何正确地用PGP堵住这个漏洞。

以你和Alice的通信为例,假设你想给Alice发封信,那你必须有Alice的公匙,

你从BBS上下载了Alice的公匙,并用它加密了信件用BBS的Email功能发给了Alice。

不幸地,你和Alice都不知道,另一个用户叫Charlie的用户潜入BBS,把他自己用

Alice的名字生成的密匙对中的公匙替换了Alice的公匙。那你用来发信的公匙就不

是Alice的而是Charlie的,一切看来都很正常,因为你拿到的公匙的用户名是:

“Alice”。于是Charlie就可以用他手中的私匙来解密你给Alice的信,甚至他还

可以用Alice真正的公匙来转发你给Alice的信,这样谁都不会起疑心,他如果想改

动你给Alice的信也没问题。更有甚者,他还可以伪造Alice的签名给你或其他人发

信,因为你们手中的公匙是伪造的,你们会以为真是Alice的来信。

防止这种情况出现的最好办法是避免让任何其他人有机会篡改公匙,比如直接从

Alice手中得到她的公匙,然而当她在千里之外或无法见到时,这是很困难的。PGP发

展了一种公匙介绍机制来解决这个问题。举例来说:如果你和Alice有一个共同的朋友

David,而David知道他手中的Alice的公匙是正确的(关于如何认证公匙,PGP还有一

种方法,后面会谈到,这里假设David已经和Alice认证过她的公匙)。这样David可以

用他自己的私匙在Alice的公匙上签名(就是用上面讲的签名方法),表示他担保这个

公匙属于Alice。当然你需要用David的公匙来校验他给你的Alice的公匙,同样David

也可以向Alice认证你的公匙,这样David就成为你和Alice之间的“介绍人”。这样

Alice或David就可以放心地把David签过字的Alice的公匙上载到BBS上让你去拿,没

人可能去篡改它而不被你发现,即使是BBS的管理员。这就是从公共渠道传递公匙的

安全手段。

有人会问:那你怎么安全地得到David的公匙呢,这不是个先有鸡还是先有蛋的

问题吗?确实有可能你拿到的David的公匙也是假的,但这就要求这个捣蛋者参与这

整个过程,他必须对你们三人都很熟悉,还要策划很久,这一般不可能。当然,PGP

对这种可能也有预防的建议,那就是由一个大家普遍信任的人或机构担当这个角色。

他被称为“密匙侍者”或“认证权威”,每个由他签字的公匙都被认为是真的,这样

大家只要有一份他的公匙就行了,认证这个人的公匙是方便的,因为他广泛提供这个

服务,假冒他的公匙是很极困难的,因为他的公匙流传广泛。这样的“权威”适合由

非个人控制组织或政府机构充当,现在已经有等级认证制度的机构存在。

对于那些非常分散的人们,PGP更赞成使用私人方式的密匙转介方式,因为这样

有机的非官方途径更能反映出人们自然的社会交往,而且人们也能自由地选择信任的

人来介绍。总之和不认识的人们之间的交往一样。每个公匙有至少一个“用户名”

(User ID),请尽量用自己的全名,最好再加上本人的Email地址,以免混淆。

注意!你所必须遵循的一条规则是:在你使用任何一个公匙之前,一定要首先

认证它!!!无论你受到什么诱惑,当然会有这种诱惑,你都不要,绝对不要,直接

信任一个从公共渠道(尤其是那些看起来保密的)得来的公匙,记得要用熟人介绍的

公匙,或者自己与对方亲自认证。同样你也不要随便为别人签字认证他们的公匙,就

和你在现实生活中一样,家里的房门钥匙你是只会交给十分信任的人的。

下面,我讲讲如何通过电话认证密匙。每个密匙有它们自己的标识(keyID),

keyID是一个八位十六进制数,两个密匙具有相同keyID的可能性是几十亿分之一,而

且PGP还提供了一种更可靠的标识密匙的方法:“密匙指纹”(key's fingerprint)。

每个密匙对应一串数字(十六个两位十六进制数),这个指纹重复的可能就更微乎其

微了。而且任何人无法指定生成一个具有某个指纹的密匙,密匙是随机生成的,从指

纹也无法反推出密匙来。这样你拿到某人的公匙后就可以和他在电话上核对这个指纹,

从而认证他的公匙。如果你无法和Alice通电话,你可以和David通电话认证David

的公匙,从而通过David认证了Alice的公匙,这就是直接认证和间接介绍的结合。

这样又引出一种方法,就是把具不同人签名的自己的公匙收集在一起,发送到

公共场合,这样可以希望大部分人至少认识其中一个人,从而间接认证了你的公匙。

同样你签了朋友的公匙后应该寄回给他,这样就可以让他可以通过你被你的其他朋友

所认证。有点意思吧,和现实社会中人们的交往一样。PGP会自动为你找出你拿到的

公匙中有哪些是你的朋友介绍来的,那些是你朋友的朋友介绍来的,哪些则是朋友

的朋友的朋友介绍的……它会帮你把它们分为不同的信任级别,让你参考决定对它

们的信任程度。你可以指定某人有几层转介公匙的能力,这种能力是随着认证的传

递而递减的。

转介认证机制具有传递性,这是个有趣的问题。PGP的作者Phil Zimmermann

说过一句话:

“ 信赖不具有传递性;我有个我相信决不撒谎的朋友。可是他是个认定总统
决不撒谎的傻瓜,可很显然我并不认为总统决不撒谎。”

关于公匙的安全性问题是PGP安全的核心,我在这里就不细说了。和传统单密匙

体系一样,私匙的保密也是决定性的。相对公匙而言,私匙不存在被篡改的问题,

但存在泄露的问题。RSA的私匙是很长的一个数字,用户不可能将它记住,PGP的办法

是让用户为随机生成的RSA私匙指定一个口令(pass phase)。只有通过给出口令才能

将私匙释放出来使用,用口令加密私匙的方法保密程度和PGP本身是一样的。所以私

匙的安全性问题实际上首先是对用户口令的保密。当然私匙文件本身失密也很危险,

因为破译者所需要的只是用穷举法试探出你的口令了,虽说很困难但毕竟是损失了一

层安全性。在这里只用简单地记住一点,要像任何隐私一样保藏你的私匙,不要让

任何人有机会接触到它,最好只在大脑中保存它,不要写在纸上。

PGP在安全性问题上的审慎考虑体现在PGP的各个环节。比如每次加密的实际密匙

是个随机数,大家都知道计算机是无法产生真正的随机数的。PGP程序对随机数的产

生是很审慎的,关键的随机数像RSA密匙的产生是从用户敲键盘的时间间隔上取得随机

数种子的。对于磁盘上的 randseed.bin 文件是采用和邮件同样强度的加密的。这有

效地防止了他人从你的randseed.bin文件中分析出你的加密实际密匙的规律来。

在这里我提一下PGP的加密前预压缩处理,PGP内核使用PKZIP算法来压缩加密前

的明文。一方面对电子邮件而言,压缩后加密再经过7bits编码密文有可能比明文更

短,这就节省了网络传输的时间。另一方面,明文经过压缩,实际上相当于经过一次

变换,信息更加杂乱无章,对明文攻击的抵御能力更强。PGP中使用的PKZIP算法是经

过原作者同意的。PKZIP算法是一个公认的压缩率和压缩速度都相当好的压缩算法。

在PGP中使用的是PKZIP 2.0版本兼容的算法。

好了,关于PGP安全性的问题我会在《PGP的安全性》一文中专门介绍。我上面讲

了这么多只是为了让大家知道PGP会是非常安全的,只要你自己遵循正确的使用方法。

关于PGP的安装和使用请参考《PGP 2.6.3i的安装与使用》一文。如果在看英文文档时

有些不太明白的词汇,请试试能不能从《PGP名词解释》一文中找到线索。PGP 2.6.3i

是我推荐大家使用的PGP版本,有关这个版本的详细问题请参见《PGPi 问答集》一文。

在今天的Internet上随处可见用PGP签名的文章,PGP的版本也在飞快地更新,据说

PGP 3.0 再有几个月就要推出了。世界上越来越多的人们在使用PGP,我们中国人也应

该重视保护自己合法的私密权。我翻译整理这几篇文章就是为了在国内宣传推广PGP的

使用。尽管它还是个新生事物,可是我们要看到在网际空间(CyberSpace)中它肯定能

迅速成长起来,中国虽然起步晚,但比美国也差不太多,我们应该迎头赶上。

热点内容
cbs加密 发布:2024-05-19 06:29:56 浏览:200
ssis存储过程 发布:2024-05-19 06:21:31 浏览:630
怎样删除小视频文件夹 发布:2024-05-19 05:49:29 浏览:589
开启php短标签 发布:2024-05-19 05:44:12 浏览:473
android各国语言 发布:2024-05-19 05:42:54 浏览:247
微信什么资料都没怎么找回密码 发布:2024-05-19 05:35:34 浏览:907
填志愿密码是什么 发布:2024-05-19 05:30:23 浏览:318
城堡争霸自动掠夺脚本 发布:2024-05-19 05:22:06 浏览:204
asp编程工具 发布:2024-05-19 05:20:36 浏览:143
insertpython 发布:2024-05-19 05:12:26 浏览:244