當前位置:首頁 » 密碼管理 » 乘法加密

乘法加密

發布時間: 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)中它肯定能

迅速成長起來,中國雖然起步晚,但比美國也差不太多,我們應該迎頭趕上。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:944
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:741
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:372