當前位置:首頁 » 操作系統 » pgp演算法

pgp演算法

發布時間: 2023-03-27 22:58:39

㈠ pgp以及gnupg中使用了哪些加密演算法,以及此加密軟體的特點

這個我不清楚。

加密軟體,我使用的是文件夾加密超級大師。

文件夾加密超級大師支持所有windows系磨沒拿瞎搭統,可以加密文件夾,加密文件,保護磁碟和數據粉碎,使用察弊起來非常方便。

㈡ 網路加密的演算法是什麼

由於網路所帶來的諸多不安全因素使得網路使用者不得不採取相應的網路安全對策。為了堵塞安全漏洞和提供安全的通信服務,必須運用一定的技術來對網路進行安全建設,這已為廣大網路開發商和網路用戶所共識。

現今主要的網路安全技術有以下幾種:

一、加密路由器(Encrypting Router)技術

加密路由器把通過路由器的內容進行加密和壓縮,然後讓它們通過不安全的網路進行傳輸,並在目的端進行解壓和解密。

二、安全內核(Secured Kernel)技術

人們開始在操作系統的層次上考慮安全性,嘗試把系統內核中可能引起安全性問題的部分從內核中剔除出去,從而使系統更安全。如S olaris操作系統把靜態的口令放在一個隱含文件中, 使系統的安全性增強。

三、網路地址轉換器(Network Address Translater)

網路地址轉換器也稱為地址共享器(Address Sharer)或地址映射器,初衷是為了解決IP 地址不足,現多用於網路安全。內部主機向外部主機連接時,使用同一個IP地址;相反地,外部主機要向內部主機連接時,必須通過網關映射到內部主機上。它使外部網路看不到內部網路, 從而隱藏內部網路,達到保密作用。

數據加密(Data Encryption)技術

所謂加密(Encryption)是指將一個信息(或稱明文--plaintext) 經過加密鑰匙(Encrypt ionkey)及加密函數轉換,變成無意義的密文( ciphertext),而接收方則將此密文經過解密函數、解密鑰匙(Decryti on key)還原成明文。加密技術是網路安全技術的基石。

數據加密技術要求只有在指定的用戶或網路下,才能解除密碼而獲得原來的數據,這就需要給數據發送方和接受方以一些特殊的信息用於加解密,這就是所謂的密鑰。其密鑰的值是從大量的隨機數中選取的。按加密演算法分為專用密鑰和公開密鑰兩種。

專用密鑰,又稱為對稱密鑰或單密鑰,加密時使用同一個密鑰,即同一個演算法。如DES和MIT的Kerberos演算法。單密鑰是最簡單方式,通信雙方必須交換彼此密鑰,當需給對方發信息時,用自己的加密密鑰進行加密,而在接收方收到數據後,用對方所給的密鑰進行解密。這種方式在與多方通信時因為需要保存很多密鑰而變得很復雜,而且密鑰本身的安全就是一個問題。

DES是一種數據分組的加密演算法,它將數據分成長度為6 4位的數據塊,其中8位用作奇偶校驗,剩餘的56位作為密碼的長度。第一步將原文進行置換,得到6 4位的雜亂無章的數據組;第二步將其分成均等兩段 ;第三步用加密函數進行變換,並在給定的密鑰參數條件下,進行多次迭代而得到加密密文。

公開密鑰,又稱非對稱密鑰,加密時使用不同的密鑰,即不同的演算法,有一把公用的加密密鑰,有多把解密密鑰,如RSA演算法。

在計算機網路中,加密可分為"通信加密"(即傳輸過程中的數據加密)和"文件加密"(即存儲數據加密)。通信加密又有節點加密、鏈路加密和端--端加密3種。

①節點加密,從時間坐標來講,它在信息被傳入實際通信連接點 (Physical communication link)之前進行;從OSI 7層參考模型的坐標 (邏輯空間)來講,它在第一層、第二層之間進行; 從實施對象來講,是對相鄰兩節點之間傳輸的數據進行加密,不過它僅對報文加密,而不對報頭加密,以便於傳輸路由的選擇。

②鏈路加密(Link Encryption),它在數據鏈路層進行,是對相鄰節點之間的鏈路上所傳輸的數據進行加密,不僅對數據加密還對報頭加密。

③端--端加密(End-to-End Encryption),它在第六層或第七層進行 ,是為用戶之間傳送數據而提供的連續的保護。在始發節點上實施加密,在中介節點以密文形式傳輸,最後到達目的節點時才進行解密,這對防止拷貝網路軟體和軟體泄漏也很有效。

在OSI參考模型中,除會話層不能實施加密外,其他各層都可以實施一定的加密措施。但通常是在最高層上加密,即應用層上的每個應用都被密碼編碼進行修改,因此能對每個應用起到保密的作用,從而保護在應用層上的投資。假如在下面某一層上實施加密,如TCP層上,就只能對這層起到保護作用。

值得注意的是,能否切實有效地發揮加密機制的作用,關鍵的問題在於密鑰的管理,包括密鑰的生存、分發、安裝、保管、使用以及作廢全過程。

(1)數字簽名

公開密鑰的加密機制雖提供了良好的保密性,但難以鑒別發送者, 即任何得到公開密鑰的人都可以生成和發送報文。數字簽名機制提供了一種鑒別方法,以解決偽造、抵賴、冒充和篡改等問題。

數字簽名一般採用不對稱加密技術(如RSA),通過對整個明文進行某種變換,得到一個值,作為核實簽名。接收者使用發送者的公開密鑰對簽名進行解密運算,如其結果為明文,則簽名有效,證明對方的身份是真實的。當然,簽名也可以採用多種方式,例如,將簽名附在明文之後。數字簽名普遍用於銀行、電子貿易等。

數字簽名不同於手寫簽字:數字簽名隨文本的變化而變化,手寫簽字反映某個人個性特徵, 是不變的;數字簽名與文本信息是不可分割的,而手寫簽字是附加在文本之後的,與文本信息是分離的。

(2)Kerberos系統

Kerberos系統是美國麻省理工學院為Athena工程而設計的,為分布式計算環境提供一種對用戶雙方進行驗證的認證方法。

它的安全機制在於首先對發出請求的用戶進行身份驗證,確認其是否是合法的用戶;如是合法的用戶,再審核該用戶是否有權對他所請求的服務或主機進行訪問。從加密演算法上來講,其驗證是建立在對稱加密的基礎上的。

Kerberos系統在分布式計算環境中得到了廣泛的應用(如在Notes 中),這是因為它具有如下的特點:

①安全性高,Kerberos系統對用戶的口令進行加密後作為用戶的私鑰,從而避免了用戶的口令在網路上顯示傳輸,使得竊聽者難以在網路上取得相應的口令信息;

②透明性高,用戶在使用過程中,僅在登錄時要求輸入口令,與平常的操作完全一樣,Ker beros的存在對於合法用戶來說是透明的;

③可擴展性好,Kerberos為每一個服務提供認證,確保應用的安全。

Kerberos系統和看電影的過程有些相似,不同的是只有事先在Ker beros系統中登錄的客戶才可以申請服務,並且Kerberos要求申請到入場券的客戶就是到TGS(入場券分配伺服器)去要求得到最終服務的客戶。
Kerberos的認證協議過程如圖二所示。

Kerberos有其優點,同時也有其缺點,主要如下:

①、Kerberos伺服器與用戶共享的秘密是用戶的口令字,伺服器在回應時不驗證用戶的真實性,假設只有合法用戶擁有口令字。如攻擊者記錄申請回答報文,就易形成代碼本攻擊。

②、Kerberos伺服器與用戶共享的秘密是用戶的口令字,伺服器在回應時不驗證用戶的真實性,假設只有合法用戶擁有口令字。如攻擊者記錄申請回答報文,就易形成代碼本攻擊。

③、AS和TGS是集中式管理,容易形成瓶頸,系統的性能和安全也嚴重依賴於AS和TGS的性能和安全。在AS和TGS前應該有訪問控制,以增強AS和TGS的安全。

④、隨用戶數增加,密鑰管理較復雜。Kerberos擁有每個用戶的口令字的散列值,AS與TGS 負責戶間通信密鑰的分配。當N個用戶想同時通信時,仍需要N*(N-1)/2個密鑰

( 3 )、PGP演算法

PGP(Pretty Good Privacy)是作者hil Zimmermann提出的方案, 從80年代中期開始編寫的。公開密鑰和分組密鑰在同一個系統中,公開密鑰採用RSA加密演算法,實施對密鑰的管理;分組密鑰採用了IDEA演算法,實施對信息的加密。

PGP應用程序的第一個特點是它的速度快,效率高;另一個顯著特點就是它的可移植性出色,它可以在多種操作平台上運行。PGP主要具有加密文件、發送和接收加密的E-mail、數字簽名等。

(4)、PEM演算法

保密增強郵件(Private Enhanced Mail,PEM),是美國RSA實驗室基於RSA和DES演算法而開發的產品,其目的是為了增強個人的隱私功能, 目前在Internet網上得到了廣泛的應用,專為E-mail用戶提供如下兩類安全服務:

對所有報文都提供諸如:驗證、完整性、防抵 賴等安全服務功能; 提供可選的安全服務功能,如保密性等。

PEM對報文的處理經過如下過程:

第一步,作規范化處理:為了使PEM與MTA(報文傳輸代理)兼容,按S MTP協議對報文進行規范化處理;

第二步,MIC(Message Integrity Code)計算;

第三步,把處理過的報文轉化為適於SMTP系統傳輸的格式。

身份驗證技術

身份識別(Identification)是指定用戶向系統出示自己的身份證明過程。身份認證(Authertication)是系統查核用戶的身份證明的過程。人們常把這兩項工作統稱為身份驗證(或身份鑒別),是判明和確認通信雙方真實身份的兩個重要環節。

Web網上採用的安全技術

在Web網上實現網路安全一般有SHTTP/HTTP和SSL兩種方式。

(一)、SHTTP/HTTP

SHTTP/HTTP可以採用多種方式對信息進行封裝。封裝的內容包括加密、簽名和基於MAC 的認證。並且一個消息可以被反復封裝加密。此外,SHTTP還定義了包頭信息來進行密鑰傳輸、認證傳輸和相似的管理功能。SHTTP可以支持多種加密協議,還為程序員提供了靈活的編程環境。

SHTTP並不依賴於特定的密鑰證明系統,它目前支持RSA、帶內和帶外以及Kerberos密鑰交換。

(二)、SSL(安全套層) 安全套接層是一種利用公開密鑰技術的工業標准。SSL廣泛應用於Intranet和Internet 網,其產品包括由Netscape、Microsoft、IBM 、Open Market等公司提供的支持SSL的客戶機和伺服器,以及諸如Apa che-SSL等產品。

SSL提供三種基本的安全服務,它們都使用公開密鑰技術。

①信息私密,通過使用公開密鑰和對稱密鑰技術以達到信息私密。SSL客戶機和SSL伺服器之間的所有業務使用在SSL握手過程中建立的密鑰和演算法進行加密。這樣就防止了某些用戶通過使用IP packet sniffer工具非法竊聽。盡管packet sniffer仍能捕捉到通信的內容, 但卻無法破譯。 ②信息完整性,確保SSL業務全部達到目的。如果Internet成為可行的電子商業平台,應確保伺服器和客戶機之間的信息內容免受破壞。SSL利用機密共享和hash函數組提供信息完整性服務。③相互認證,是客戶機和伺服器相互識別的過程。它們的識別號用公開密鑰編碼,並在SSL握手時交換各自的識別號。為了驗證證明持有者是其合法用戶(而不是冒名用戶),SSL要求證明持有者在握手時對交換數據進行數字式標識。證明持有者對包括證明的所有信息數據進行標識以說明自己是證明的合法擁有者。這樣就防止了其他用戶冒名使用證明。證明本身並不提供認證,只有證明和密鑰一起才起作用。 ④SSL的安全性服務對終端用戶來講做到盡可能透明。一般情況下,用戶只需單擊桌面上的一個按鈕或聯接就可以與SSL的主機相連。與標準的HTTP連接申請不同,一台支持SSL的典型網路主機接受SSL連接的默認埠是443而不是80。

當客戶機連接該埠時,首先初始化握手協議,以建立一個SSL對話時段。握手結束後,將對通信加密,並檢查信息完整性,直到這個對話時段結束為止。每個SSL對話時段只發生一次握手。相比之下,HTTP 的每一次連接都要執行一次握手,導致通信效率降低。一次SSL握手將發生以下事件:

1.客戶機和伺服器交換X.509證明以便雙方相互確認。這個過程中可以交換全部的證明鏈,也可以選擇只交換一些底層的證明。證明的驗證包括:檢驗有效日期和驗證證明的簽名許可權。

2.客戶機隨機地產生一組密鑰,它們用於信息加密和MAC計算。這些密鑰要先通過伺服器的公開密鑰加密再送往伺服器。總共有四個密鑰分別用於伺服器到客戶機以及客戶機到伺服器的通信。

3.信息加密演算法(用於加密)和hash函數(用於確保信息完整性)是綜合在一起使用的。Netscape的SSL實現方案是:客戶機提供自己支持的所有演算法清單,伺服器選擇它認為最有效的密碼。伺服器管理者可以使用或禁止某些特定的密碼。

代理服務

在 Internet 中廣泛採用代理服務工作方式, 如域名系統(DNS), 同時也有許多人把代理服務看成是一種安全性能。

從技術上來講代理服務(Proxy Service)是一種網關功能,但它的邏輯位置是在OSI 7層協議的應用層之上。

代理(Proxy)使用一個客戶程序,與特定的中間結點鏈接,然後中間結點與期望的伺服器進行實際鏈接。與應用網關型防火牆所不同的是,使用這類防火牆時外部網路與內部網路之間不存在直接連接,因此 ,即使防火牆產生了問題,外部網路也無法與被保護的網路連接。

防火牆技術

(1)防火牆的概念

在計算機領域,把一種能使一個網路及其資源不受網路"牆"外"火災"影響的設備稱為"防火牆"。用更專業一點的話來講,防火牆(FireW all)就是一個或一組網路設備(計算機系統或路由器等),用來在兩個或多個網路間加強訪問控制,其目的是保護一個網路不受來自另一個網路的攻擊。可以這樣理解,相當於在網路周圍挖了一條護城河,在唯一的橋上設立了安全哨所,進出的行人都要接受安全檢查。

防火牆的組成可以這樣表示:防火牆=過濾器+安全策略(+網關)。

(2)防火牆的實現方式

①在邊界路由器上實現;
②在一台雙埠主機(al-homed host)上實現;
③在公共子網(該子網的作用相當於一台雙埠主機)上實現,在此子網上可建立含有停火區結構的防火牆。

(3)防火牆的網路結構

網路的拓撲結構和防火牆的合理配置與防火牆系統的性能密切相關,防火牆一般採用如下幾種結構。
①最簡單的防火牆結構
這種網路結構能夠達到使受保護的網路只能看到"橋頭堡主機"( 進出通信必經之主機), 同時,橋頭堡主機不轉發任何TCP/IP通信包, 網路中的所有服務都必須有橋頭堡主機的相應代理服務程序來支持。但它把整個網路的安全性能全部託付於其中的單個安全單元,而單個網路安全單元又是攻擊者首選的攻擊對象,防火牆一旦破壞,橋頭堡主機就變成了一台沒有尋徑功能的路由器,系統的安全性不可靠。

②單網端防火牆結構

其中屏蔽路由器的作用在於保護堡壘主機(應用網關或代理服務) 的安全而建立起一道屏障。在這種結構中可將堡壘主機看作是信息伺服器,它是內部網路對外發布信息的數據中心,但這種網路拓撲結構仍把網路的安全性大部分託付給屏蔽路由器。系統的安全性仍不十分可靠。

③增強型單網段防火牆的結構

為增強網段防火牆安全性,在內部網與子網之間增設一台屏蔽路由器,這樣整個子網與內外部網路的聯系就各受控於一個工作在網路級的路由器,內部網路與外部網路仍不能直接聯系,只能通過相應的路由器與堡壘主機通信。

④含"停火區"的防火牆結構

針對某些安全性特殊需要, 可建立如下的防火牆網路結構。 網路的整個安全特性分擔到多個安全單元, 在外停火區的子網上可聯接公共信息伺服器,作為內外網路進行信息交換的場所。

網路反病毒技術

由於在網路環境下,計算機病毒具有不可估量的威脅性和破壞力, 因此計算機病毒的防範也是網路安全性建設中重要的一環。網路反病毒技術也得到了相應的發展。

網路反病毒技術包括預防病毒、檢測病毒和消毒等3種技術。(1) 預防病毒技術,它通過自身常駐系統內存,優先獲得系統的控制權,監視和判斷系統中是否有病毒存在,進而阻止計算機病毒進入計算機系統和對系統進行破壞。這類技術是:加密可執行程序、引導區保護、系統監控與讀寫控制(如防病毒卡)等。(2)檢測病毒技術,它是通過對計算機病毒的特徵來進行判斷的技術,如自身校驗、關鍵字、文件長度的變化等。(3)消毒技術,它通過對計算機病毒的分析,開發出具有刪除病毒程序並恢復原文件的軟體。

網路反病毒技術的實施對象包括文件型病毒、引導型病毒和網路病毒。

網路反病毒技術的具體實現方法包括對網路伺服器中的文件進行頻繁地掃描和監測;在工作站上採用防病毒晶元和對網路目錄及文件設置訪問許可權等。

隨著網上應用不斷發展,網路技術不斷應用,網路不安全因素將會不斷產生,但互為依存的,網路安全技術也會迅速的發展,新的安全技術將會層出不窮,最終Internet網上的安全問題將不會阻擋我們前進的步伐

㈢ 什麼是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堵住這個漏洞。

㈣ 網路現代加密技術分幾種

1 數據加密原理

1.1數據加密

在計算機上實現的數據加密,其加密或解密變換是由密鑰控制實現的。密鑰(Keyword)是用戶按照一種密碼體制隨機選取,它通常是一隨機字元串,是控制明文和密文變換的唯一參數。
例:明文為字元串:
AS KINGFISHERS CATCH FIRE

(為簡便起見,假定所處理的數據字元僅為大寫字母和空格符)。
假定密鑰為字元串: ELIOT

加密演算法為:
(1)將明文劃分成多個密鑰字元串長度大小的塊(空格符以″+″表示)
AS+KI NGFIS HERS+ CATCH +FIRE
(2)用00~26范圍的整數取代明文的每個字元,空格符=00,A=01,...,Z=26:
0119001109 1407060919 0805181900 0301200308 0006091805
(3) 與步驟2一樣對密鑰的每個字元進行取代:
0512091520
(4) 對明文的每個塊,將其每個字元用對應的整數編碼與密鑰中相應位置的字元的整數編碼的和模27後的值取代:
(5) 將步驟4的結果中的整數編碼再用其等價字元替換:
FDIZB SSOXL MQ+GT HMBRA ERRFY

理想的情況是採用的加密模式使得攻擊者為了破解所付出的代價應遠遠超過其所獲得的利益。實際上,該目的適用於所有的安全性措施。這種加密模式的可接受的最終目標是:即使是該模式的發明者也無法通過相匹配的明文和密文獲得密鑰,從而也無法破解密文。

1.2數字簽名

密碼技術除了提供信息的加密解密外,還提供對信息來源的鑒別、保證信息的完整和不可否認等功能,而這三種功能都是通過數字簽名實現。

數字簽名是涉及簽名信息和簽名人私匙的計算結果。首先,簽名人的軟體對發送信息進行散列函數運算後,生成信息摘要(message digest)--這段信息所特有的長度固定的信息表示,然後,軟體使用簽名人的私匙對摘要進行解密,將結果連同信息和簽名人的數字證書一同傳送給預定的接收者。而接收者的軟體會對收到的信息生成信息摘要(使用同樣的散列函數),並使用簽名人的公匙對簽名人生成的摘要進行解密。接收者的軟體也可以加以配置,驗證簽名人證書的真偽,確保證書是由可信賴的CA頒發,而且沒有被CA吊銷。如兩個摘要一樣,就表明接收者成功核實了數字簽名。

2 加密體制及比較

根據密鑰類型不同將現代密碼技術分為兩類:一類是對稱加密(秘密鑰匙加密)系統,另一類是公開密鑰加密(非對稱加密)系統。

2.1對稱密碼加密系統

對稱鑰匙加密系統是加密和解密均採用同一把秘密鑰匙,而且通信雙方都必須獲得這把鑰匙,保持鑰匙的秘密。

對稱密碼系統的安全性依賴於以下兩個因素。第一,加密演算法必須是足夠強的,僅僅基於密文本身去解密信息在實踐上是不可能的;第二,加密方法的安全性依賴於密鑰的秘密性,而不是演算法的秘密性。因為演算法不需要保密,所以製造商可以開發出低成本的晶元以實現數據加密。這些晶元有著廣泛的應用,適合於大規模生產。

對稱加密系統最大的問題是密鑰的分發和管理非常復雜、代價高昂。比如對於具有n個用戶的網路,需要n(n-1)/2個密鑰,在用戶群不是很大的情況下,對稱加密系統是有效的。但是對於大型網路,當用戶群很大,分布很廣時,密鑰的分配和保存就成了大問題。對稱加密演算法另一個缺點是不能實現數字簽名。

對稱加密系統最著名的是美國數據加密標准DES、AES(高級加密標准)和歐洲數據加密標准IDEA。1977年美國國家標准局正式公布實施了美國的數據加密標准DES,公開它的加密演算法,並批准用於非機密單位和商業上的保密通信。DES成為全世界使用最廣泛的加密標准。

但是,經過20多年的使用,已經發現DES很多不足之處,對DES的破解方法也日趨有效。AES將會替代DES成為新一代加密標准。DES具有這樣的特性,其解密演算法與加密演算法相同,除了密鑰Key的施加順序相反以外。

2.2 公鑰密碼加密系統

公開密鑰加密系統採用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。由於加密鑰匙是公開的,密鑰的分配和管理就很簡單,比如對於具有n個用戶的網路,僅需要2n個密鑰。公開密鑰加密系統還能夠很容易地實現數字簽名。因此,最適合於電子商務應用需要。在實際應用中,公開密鑰加密系統並沒有完全取代對稱密鑰加密系統,這是因為公開密鑰加密系統是基於尖端的數學難題,計算非常復雜,它的安全性更高,但它實現速度卻遠趕不上對稱密鑰加密系統。在實際應用中可利用二者的各自優點,採用對稱加密系統加密文件,採用公開密鑰加密系統加密″加密文件″的密鑰(會話密鑰),這就是混合加密系統,它較好地解決了運算速度問題和密鑰分配管理問題。

根據所基於的數學難題來分類,有以下三類系統目前被認為是安全和有效的:大整數因子分解系統(代表性的有RSA)、橢圓曲線離散對數系統(ECC)和離散對數系統(代表性的有DSA)。

當前最著名、應用最廣泛的公鑰系統RSA是由Rivet、Shamir、Adelman提出的(簡稱為RSA系統),它加密演算法使用了兩個非常大的素數來產生公鑰和私鑰。現實中加密演算法都基於RSA加密演算法。pgp演算法(以及大多數基於RSA演算法的加密方法)使用公鑰來加密一個對稱加密演算法的密鑰,然後再利用一個快速的對稱加密演算法來加密數據。這個對稱演算法的密鑰是隨機產生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。

RSA方法的優點主要在於原理簡單,易於使用。隨著分解大整數方法的進步及完善、計算機速度的提高以及計算機網路的發展(可以使用成千上萬台機器同時進行大整數分解),作為RSA加解密安全保障的大整數要求越來越大。為了保證RSA使用的安全性,其密鑰的位數一直在增加,比如,目前一般認為RSA需要1024位以上的字長才有安全保障。但是,密鑰長度的增加導致了其加解密的速度大為降低,硬體實現也變得越來越難以忍受,這對使用RSA的應用帶來了很重的負擔,對進行大量安全交易的電子商務更是如此,從而使得其應用范圍越來越受到制約。

DSA(DataSignatureAlgorithm)是基於離散對數問題的數字簽名標准,它僅提供數字簽名,不提供數據加密功能。它也是一個″非確定性的″數字簽名演算法,對於一個報文M,它的簽名依賴於隨機數r ?熏 這樣,相同的報文就可能會具有不同的簽名。另外,在使用相同的模數時,DSA比RSA更慢(兩者產生簽名的速度相同,但驗證簽名時DSA比RSA慢10到40倍)。
2.3 橢圓曲線加密演算法ECC技術優勢

安全性更高、演算法實現性能更好的公鑰系統橢圓曲線加密演算法ECC(EllipticCurveCryptography)基於離散對數的計算困難性。

㈤ 如何用PGP加密

PGP採用公匙加密體系,用加密演算法 生成兩個密匙,分別作為公匙和私匙。公匙用來加密,是公開的。私匙用來解密,自己保存。 下面介紹PGP的使用: 1 首先生成你的PGP密匙。在DOS命令行輸入: pgp-kg 2 程序會提示你一步步進行密匙生成工作: ①選擇密匙長度。建議用1024位,安全性相當有保障。 ②輸入用戶名。要盡量避免混淆。 ③選擇口令。和所有密碼一樣,盡量取得難猜一點。PGP是區分口令大小寫的,在生成過程中程序為了得到隨機數,會請你隨意地在鍵盤上敲一系列的鍵,注意盡量多敲些不同的鍵,時間間隔不要太短。 現在你就擁有自己的一對PGP密匙了。文件SECRING PGP是私匙,PUBRING PGP是公匙。 3 PGP的基本命令 ①加密命令: pgp-e[a]源文件收件人ID[其他收件人ID] 用公匙環中收件人的公匙加密源文件,得到密文。加上a參數後將得到7bits編碼的密文( asc後綴),否則是二進制形式密文( pgp後綴)。 ②解密命令: pgp[-d][-p]密文 -d參數用來保留密文(預設刪除密文),-p參數用來恢復源文件加密時的文件名。

㈥ PGP加密演算法的功能

PGP技術不但可以對電子郵件加密,防止非授權者閱讀信件;還能對電子郵件附加數字簽名,使收信人能明確了解發信人的真實身份;也可以在不需要通過任何保密渠道傳遞密鑰的情況下,使人們安全地進行保密通信。

PGP技術創造性地把RSA不對稱加密演算法的方便性和傳統加密體系結合起來,在數字簽名和密鑰認證管理機制方面採用了無縫結合的巧妙設計,使其幾乎成為最為流行的公鑰加密軟體包。

㈦ 加密解密字元串的演算法原理

我們經常需要一種措施來保護我們的數據,防止被一些懷有不良用心的人所看到或者破壞。在信息時代,信息可以幫助團體或個人,使他們受益,同樣,信息也可以用來對他們構成威脅,造成破壞。在競爭激烈的大公司中,工業間諜經常會獲取對方的情報。因此,在客觀上就需要一種強有力的安全措施來保護機密數據不被竊取或篡改。數據加密與解密從宏觀上講是非常簡單的,很容易理解。加密與解密的一些方法是非常直接的,很容易掌握,可以很方便的對機密數據進行加密和解密。

一:數據加密方法

在傳統上,我們有幾種方法來加密數據流。所有這些方法都可以用軟體很容易的實現,但是當我們只知道密文的時候,是不容易破譯這些加密演算法的(當同時有原文和密文時,破譯加密演算法雖然也不是很容易,但已經是可能的了)。最好的加密演算法對系統性能幾乎沒有影響,並且還可以帶來其他內在的優點。例如,大家都知道的pkzip,它既壓縮數據又加密數據。又如,dbms的一些軟體包總是包含一些加密方法以使復制文件這一功能對一些敏感數據是無效的,或者需要用戶的密碼。所有這些加密演算法都要有高效的加密和解密能力。

幸運的是,在所有的加密演算法中最簡單的一種就是「置換表」演算法,這種演算法也能很好達到加密的需要。每一個數據段(總是一個位元組)對應著「置換表」中的一個偏移量,偏移量所對應的值就輸出成為加密後的文件。加密程序和解密程序都需要一個這樣的「置換表」。事實上,80x86 cpu系列就有一個指令『xlat』在硬體級來完成這樣的工作。這種加密演算法比較簡單,加密解密速度都很快,但是一旦這個「置換表」被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密演算法對於黑客破譯來講是相當直接的,只要找到一個「置換表」就可以了。這種方法在計算機出現之前就已經被廣泛的使用。

對這種「置換表」方式的一個改進就是使用2個或者更多的「置換表」,這些表都是基於數據流中位元組的位置的,或者基於數據流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾次變換。通過使用更多的「置換表」,並且按偽隨機的方式使用每個表,這種改進的加密方法已經變的很難破譯。比如,我們可以對所有的偶數位置的數據使用a表,對所有的奇數位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。

與使用「置換表」相類似,「變換數據位置」也在計算機加密中使用。但是,這需要更多的執行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然後按這個順序再輸出。解密程序按相反的順序還原數據。這種方法總是和一些別的加密演算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換起字母的順序,slient 可以變為listen,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經變化了。

但是,還有一種更好的加密演算法,只有計算機可以做,就是字/位元組循環移位和xor操作。如果我們把一個字或位元組在一個數據流內做循環移位,使用多個或變化的方向(左移或右移),就可以迅速的產生一個加密的數據流。這種方法是很好的,破譯它就更加困難!而且,更進一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產生一系列的數字,我們可以使用fibbonaci數列。對數列所產生的數做模運算(例如模3),得到一個結果,然後循環移位這個結果的次數,將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數列這種偽隨機的方式所產生的密碼對我們的解密程序來講是非常容易的。

在一些情況下,我們想能夠知道數據是否已經被篡改了或被破壞了,這時就需要產生一些校驗碼,並且把這些校驗碼插入到數據流中。這樣做對數據的防偽與程序本身都是有好處的。但是感染計算機程序的病毒才不會在意這些數據或程序是否加過密,是否有數字簽名。所以,加密程序在每次load到內存要開始執行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應該保密的,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數據。因此,在一些反病毒或殺病毒軟體中一定要使用加密技術。

循環冗餘校驗是一種典型的校驗數據的方法。對於每一個數據塊,它使用位循環移位和xor操作來產生一個16位或32位的校驗和 ,這使得丟失一位或兩個位的錯誤一定會導致校驗和出錯。這種方式很久以來就應用於文件的傳輸,例如 xmodem-crc。 這是方法已經成為標准,而且有詳細的文檔。但是,基於標准crc演算法的一種修改演算法對於發現加密數據塊中的錯誤和文件是否被病毒感染是很有效的。

二.基於公鑰的加密演算法

一個好的加密演算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,並用它來加密明文,不同的密碼或密鑰產生不同的密文。這又分為兩種方式:對稱密鑰演算法和非對稱密鑰演算法。所謂對稱密鑰演算法就是加密解密都使用相同的密鑰,非對稱密鑰演算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密演算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數學理論上講,幾乎沒有真正不可逆的演算法存在。例如,對於一個輸入『a』執行一個操作得到結果『b』,那麼我們可以基於『b』,做一個相對應的操作,導出輸入『a』。在一些情況下,對於每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數為0)。對於一個沒有定義的操作來講,基於加密演算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密演算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。

rsa加密演算法使用了兩個非常大的素數來產生公鑰和私鑰。即使從一個公鑰中通過因數分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至於在現實上是不可行的。加密演算法本身也是很慢的,這使得使用rsa演算法加密大量的數據變的有些不可行。這就使得一些現實中加密演算法都基於rsa加密演算法。pgp演算法(以及大多數基於rsa演算法的加密方法)使用公鑰來加密一個對稱加密演算法的密鑰,然後再利用一個快速的對稱加密演算法來加密數據。這個對稱演算法的密鑰是隨機產生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。

我們舉一個例子:假定現在要加密一些數據使用密鑰『12345』。利用rsa公鑰,使用rsa演算法加密這個密鑰『12345』,並把它放在要加密的數據的前面(可能後面跟著一個分割符或文件長度,以區分數據和密鑰),然後,使用對稱加密演算法加密正文,使用的密鑰就是『12345』。當對方收到時,解密程序找到加密過的密鑰,並利用rsa私鑰解密出來,然後再確定出數據的開始位置,利用密鑰『12345』來解密數據。這樣就使得一個可靠的經過高效加密的數據安全地傳輸和解密。

一些簡單的基於rsa演算法的加密演算法可在下面的站點找到:

ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa

三.一個嶄新的多步加密演算法

現在又出現了一種新的加密演算法,據說是幾乎不可能被破譯的。這個演算法在1998年6月1日才正式公布的。下面詳細的介紹這個演算法:

使用一系列的數字(比如說128位密鑰),來產生一個可重復的但高度隨機化的偽隨機的數字的序列。一次使用256個表項,使用隨機數序列來產生密碼轉表,如下所示:

把256個隨機數放在一個距陣中,然後對他們進行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產生一個表,隨意排序的表,表中的數字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的。現在,產生了一個具體的256位元組的表。讓這個隨機數產生器接著來產生這個表中的其餘的數,以至於每個表是不同的。下一步,使用"shotgun technique"技術來產生解碼表。基本上說,如果 a映射到b,那麼b一定可以映射到a,所以b[a[n]] = n.(n是一個在0到255之間的數)。在一個循環中賦值,使用一個256位元組的解碼表它對應於我們剛才在上一步產生的256位元組的加密表。

使用這個方法,已經可以產生這樣的一個表,表的順序是隨機,所以產生這256個位元組的隨機數使用的是二次偽隨機,使用了兩個額外的16位的密碼.現在,已經有了兩張轉換表,基本的加密解密是如下這樣工作的。前一個位元組密文是這個256位元組的表的索引。或者,為了提高加密效果,可以使用多餘8位的值,甚至使用校驗和或者crc演算法來產生索引位元組。假定這個表是256*256的數組,將會是下面的樣子:

crypto1 = a[crypto0][value]

變數'crypto1'是加密後的數據,'crypto0'是前一個加密數據(或著是前面幾個加密數據的一個函數值)。很自然的,第一個數據需要一個「種子」,這個「種子」 是我們必須記住的。如果使用256*256的表,這樣做將會增加密文的長度。或者,可以使用你產生出隨機數序列所用的密碼,也可能是它的crc校驗和。順便提及的是曾作過這樣一個測試: 使用16個位元組來產生表的索引,以128位的密鑰作為這16個位元組的初始的"種子"。然後,在產生出這些隨機數的表之後,就可以用來加密數據,速度達到每秒鍾100k個位元組。一定要保證在加密與解密時都使用加密的值作為表的索引,而且這兩次一定要匹配。

加密時所產生的偽隨機序列是很隨意的,可以設計成想要的任何序列。沒有關於這個隨機序列的詳細的信息,解密密文是不現實的。例如:一些ascii碼的序列,如「eeeeeeee"可能被轉化成一些隨機的沒有任何意義的亂碼,每一個位元組都依賴於其前一個位元組的密文,而不是實際的值。對於任一個單個的字元的這種變換來說,隱藏了加密數據的有效的真正的長度。

如果確實不理解如何來產生一個隨機數序列,就考慮fibbonacci數列,使用2個雙字(64位)的數作為產生隨機數的種子,再加上第三個雙字來做xor操作。 這個演算法產生了一系列的隨機數。演算法如下:

unsigned long dw1, dw2, dw3, dwmask;

int i1;

unsigned long arandom[256];

dw1 = {seed #1};

dw2 = {seed #2};

dwmask = {seed #3};

// this gives you 3 32-bit "seeds", or 96 bits total

for(i1=0; i1 < 256; i1++)

{

dw3 = (dw1 + dw2) ^ dwmask;

arandom[i1] = dw3;

dw1 = dw2;

dw2 = dw3;

}

如果想產生一系列的隨機數字,比如說,在0和列表中所有的隨機數之間的一些數,就可以使用下面的方法:

int __cdecl mysortproc(void *p1, void *p2)

{

unsigned long **pp1 = (unsigned long **)p1;

unsigned long **pp2 = (unsigned long **)p2;

if(**pp1 < **pp2)

return(-1);

else if(**pp1 > *pp2)

return(1);

return(0);

}

...

int i1;

unsigned long *aprandom[256];

unsigned long arandom[256]; // same array as before, in this case

int aresult[256]; // results go here

for(i1=0; i1 < 256; i1++)

{

aprandom[i1] = arandom + i1;

}

// now sort it

qsort(aprandom, 256, sizeof(*aprandom), mysortproc);

// final step - offsets for pointers are placed into output array

for(i1=0; i1 < 256; i1++)

{

aresult[i1] = (int)(aprandom[i1] - arandom);

}

...

變數'aresult'中的值應該是一個排過序的唯一的一系列的整數的數組,整數的值的范圍均在0到255之間。這樣一個數組是非常有用的,例如:對一個位元組對位元組的轉換表,就可以很容易並且非常可靠的來產生一個短的密鑰(經常作為一些隨機數的種子)。這樣一個表還有其他的用處,比如說:來產生一個隨機的字元,計算機游戲中一個物體的隨機的位置等等。上面的例子就其本身而言並沒有構成一個加密演算法,只是加密演算法一個組成部分。

作為一個測試,開發了一個應用程序來測試上面所描述的加密演算法。程序本身都經過了幾次的優化和修改,來提高隨機數的真正的隨機性和防止會產生一些短的可重復的用於加密的隨機數。用這個程序來加密一個文件,破解這個文件可能會需要非常巨大的時間以至於在現實上是不可能的。

四.結論:

由於在現實生活中,我們要確保一些敏感的數據只能被有相應許可權的人看到,要確保信息在傳輸的過程中不會被篡改,截取,這就需要很多的安全系統大量的應用於政府、大公司以及個人系統。數據加密是肯定可以被破解的,但我們所想要的是一個特定時期的安全,也就是說,密文的破解應該是足夠的困難,在現實上是不可能的,尤其是短時間內。

㈧ pgp軟體的加密演算法有哪些,各自的功能是什麼

關鍵,建立exceptions表,然後建立唯一約束,悄吵有重復的rowid信息自動啟手侍放入exceptions表裡,也就是42條重復記錄的row_id會放到exceptions 表裡
dingjun123@ORADB> create table exceptions(row_id rowid,
2 owner varchar2(30),
3 table_name varchar2(30),
4 constraint varchar2(30));

Table created.
Elapsed: 00:00:00.01

--可以加nologging,parallel提高效率,查找重復記錄非常薯高快
dingjun123@ORADB> alter table t add constraint uk_t unique(object_id,object_name,owner)
2 exceptions into EXCEPTIONS NOLOGGING PARALLEL 4 ;
alter table t add constraint uk_t unique(object_id,object_name,owner)
*
ERROR at line 1:
ORA-02299: cannot validate (DINGJUN123.UK_T) - plicate keys found

㈨ pgp主要基於什麼演算法來實現加密解密

點擊 解密 PGP信息 6) 輸入密碼後,點擊 確定 7) 郵件內容簽名被認證和被解密二結果備前分析 1 PGP主要基於什麼演算法來實現加密解密? PGP主要基於非對稱加密演算法 因為RSA演算法派賣計算量很大而且在速度上也不適合加密仿羨清大量數據,所以PGP實際上用來加密... 在使用上幾乎沒有什麼差別。但是事實上它們是完全不同的,主要體現在格式上

㈩ diffie-hellman 演算法和 RSA 演算法加密 各是啥,哪一種好

Diffie-Hellman:一種確保共享KEY安全穿越不安全網路的方法,它是OAKLEY的一個組成部分

Whitefield與Martin Hellman在1976年提出了一個奇妙的密鑰交換協議,稱為Diffie-Hellman密鑰交換協議/演算法(Diffie-Hellman Key Exchange/Agreement Algorithm).這個機制的巧妙在於需要安全通信升兄毀的雙方可以用這個方法確定對稱密鑰.然後可以用這個密鑰進行加密和解密.但是注意,這個密鑰交換協議/演算法只能用於密鑰的交換,而不能進行消息的加密和解密.雙方確定要用的密鑰後,要使用其他對稱密鑰操作加密演算法實際加密和解密消息.
(盡管Diffie-Hellman密鑰交換協議/演算法使用了數學原理,但是很容易理解.)
Diffie-Hellman
由Whitfield Diffie和Martin Hellman在1976年公布的一種密鑰一致性演算法。Diffie-Hellman是一種建立密鑰的方法,而不是加密方法。然而,它所產生的密鑰可用於加密、進一步的密鑰管理或任何其它的加密方式。 Diffie-Hellman密鑰交換演算法及其優化首次發表的公開密鑰演算法出現在Diffie和Hellman的論文中,這篇影響深遠的論文奠定了公開密鑰密碼編碼學.由於該演算法本身限於密鑰交換的用途,被許多商用產品用作密鑰交換技術,因此該演算法通常稱之為Diffie-Hellman密鑰交換.這種密鑰交換技術的目的在於使得兩個用戶安全地交換一個秘密密鑰以便用於以後的報文加密. Diffie-Hellman密鑰交換演算法的有效性依賴於計算離散對數的難度.簡言之,可以如下定義離散對數:首先定義一個素數p的原根,為其各次冪產生從1 到p-1的所有整數根,也就是說,如果a是素數p的一個原根,那麼數值 a mod p, a2 mod p, ..., ap-1 mod p 是各不相同的整數,並且以某種排列方式組成了從1到p-1的所有整數. 對於一個整數b和素數p的一個原根a,可以找到惟一的指數i,使得 b = ai mod p 其中0 ≤ i ≤ (p-1) 指數i稱為b的以a為基數的模p的離散對數或者指數.該值被記為inda ,p(b). 基於此背景知識,可以定義Diffie-Hellman密鑰交換演算法.該演算法描述如下: 1,有兩個全局公開的參數,一個素數q和一個整數a,a是q的一個原根. 2,假設用戶A和B希望交換一個密鑰,用戶A選擇一個作為私有密鑰的隨機數XA3,用戶A產生共享秘密密鑰的計算方式是K = (YB)XA mod q.同樣,用戶B產生共享秘密密鑰的計算是K = (YA)XB mod q.這兩個計算產生相同的結果: K = (YB)XA mod q = (aXB mod q)XA mod q = (aXB)XA mod q (根據取模運算規則得到) = aXBXA mod q = (aXA)XB mod q = (aXA mod q)XB mod q = (YA)XB mod q 因此相當於雙方已經交換了一個相同的秘密密鑰. 4,因為XA和XB是保密的,一個敵對方可以利用的參數只有q,a,YA和YB.因而敵對方被迫取離散對數來確定密鑰.例如,要獲取用戶B的秘吵備密塵鋒密鑰,敵對方必須先計算 XB = inda ,q(YB) 然後再使用用戶B採用的同樣方法計算其秘密密鑰K. Diffie-Hellman密鑰交換演算法的安全性依賴於這樣一個事實:雖然計算以一個素數為模的指數相對容易,但計算離散對數卻很困難.對於大的素數,計算出離散對數幾乎是不可能的. 下面給出例子.密鑰交換基於素數q = 97和97的一個原根a = 5.A和B分別選擇私有密鑰XA = 36和XB = 58.每人計算其公開密鑰 YA = 536 = 50 mod 97 YB = 558 = 44 mod 97 在他們相互獲取了公開密鑰之後,各自通過計算得到雙方共享的秘密密鑰如下: K = (YB)XA mod 97 = 4436 = 75 mod 97 K = (YA)XB mod 97 = 5058 = 75 mod 97 從|50,44|出發,攻擊者要計算出75很不容易. 下圖給出了一個利用Diffie-Hellman計算的簡單協議.
假設用戶A希望與用戶B建立一個連接,並用一個共享的秘密密鑰加密在該連接上傳輸的報文.用戶A產生一個一次性的私有密鑰XA,並計算出公開密鑰YA並將其發送給用戶B.用戶B產生一個私有密鑰XB,計算出公開密鑰YB並將它發送給用戶A作為響應.必要的公開數值q和a都需要提前知道.另一種方法是用戶A選擇q和a的值,並將這些數值包含在第一個報文中. 下面再舉一個使用Diffie-Hellman演算法的例子.假設有一組用戶(例如一個區域網上的所有用戶),每個人都產生一個長期的私有密鑰XA,並計算一個公開密鑰YA.這些公開密鑰數值,連同全局公開數值q和a都存儲在某個中央目錄中.在任何時刻,用戶B都可以訪問用戶A 的公開數值,計算一個秘密密鑰,並使用這個密鑰發送一個加密報文給A.如果中央目錄是可信任的,那麼這種形式的通信就提供了保密性和一定程度的鑒別功能.因為只有A和B可以確定這個密鑰,其它用戶都無法解讀報文(保密性).接收方A知道只有用戶B才能使用此密鑰生成這個報文(鑒別). Diffie-Hellman演算法具有兩個吸引力的特徵: 僅當需要時才生成密鑰,減小了將密鑰存儲很長一段時間而致使遭受攻擊的機會. 除對全局參數的約定外,密鑰交換不需要事先存在的基礎結構. 然而,該技術也存在許多不足: 沒有提供雙方身份的任何信息. 它是計算密集性的,因此容易遭受阻塞性攻擊,即對手請求大量的密鑰.受攻擊者花費了相對多的計算資源來求解無用的冪系數而不是在做真正的工作. 沒辦法防止重演攻擊. 容易遭受中間人的攻擊.第三方C在和A通信時扮演B;和B通信時扮演A.A和B都與C協商了一個密鑰,然後C就可以監聽和傳遞通信量.中間人的攻擊按如下進行: B在給A的報文中發送他的公開密鑰. C截獲並解析該報文.C將B的公開密鑰保存下來並給A發送報文,該報文具有B的用戶ID但使用C的公開密鑰YC,仍按照好像是來自B的樣子被發送出去.A收到C的報文後,將YC和B的用戶ID存儲在一塊.類似地,C使用YC向B發送好像來自A的報文. B基於私有密鑰XB和YC計算秘密密鑰K1.A基於私有密鑰XA和YC計算秘密密鑰K2.C使用私有密鑰XC和YB計算K1,並使用XC和YA計算K2. 從現在開始,C就可以轉發A發給B的報文或轉發B發給A的報文,在途中根據需要修改它們的密文.使得A和B都不知道他們在和C共享通信. Oakley演算法是對Diffie-Hellman密鑰交換演算法的優化,它保留了後者的優點,同時克服了其弱點. Oakley演算法具有五個重要特徵: 它採用稱為cookie程序的機制來對抗阻塞攻擊. 它使得雙方能夠協商一個全局參數集合. 它使用了現時來保證抵抗重演攻擊. 它能夠交換Diffie-Hellman公開密鑰. 它對Diffie-Hellman交換進行鑒別以對抗中間人的攻擊. Oakley可以使用三個不同的鑒別方法: 數字簽名:通過簽署一個相互可以獲得的散列代碼來對交換進行鑒別;每一方都使用自己的私鑰對散列代碼加密.散列代碼是在一些重要參數上生成的,如用戶ID和現時. 公開密鑰加密:通過使用發送者的私鑰對諸如ID和現時等參數進行加密來鑒別交換. 對稱密鑰加密:通過使用某種共享密鑰對交換參數進行對稱加密,實現交換的鑒別.

rsa加密演算法使用了兩個非常大的素數來產生公鑰和私鑰。即使從一個公鑰中通過因數分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至於在現實上是不可行的。加密演算法本身也是很慢的,這使得使用rsa演算法加密大量的數據變的有些不可行。這就使得一些現實中加密演算法都基於rsa加密演算法。pgp演算法(以及大多數基於rsa演算法的加密方法)使用公鑰來加密一個對稱加密演算法的密鑰,然後再利用一個快速的對稱加密演算法來加密數據。這個對稱演算法的密鑰是隨機產生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。
我們舉一個例子:假定現在要加密一些數據使用密鑰『12345』。利用rsa公鑰,使用rsa演算法加密這個密鑰『12345』,並把它放在要加密的數據的前面(可能後面跟著一個分割符或文件長度,以區分數據和密鑰),然後,使用對稱加密演算法加密正文,使用的密鑰就是『12345』。當對方收到時,解密程序找到加密過的密鑰,並利用rsa私鑰解密出來,然後再確定出數據的開始位置,利用密鑰『12345』來解密數據。這樣就使得一個可靠的經過高效加密的數據安全地傳輸和解密。

熱點內容
無人深空pc需要什麼配置 發布:2025-05-20 04:55:17 瀏覽:614
可編程式恆溫恆濕試驗箱 發布:2025-05-20 04:54:34 瀏覽:367
visibilityandroid 發布:2025-05-20 04:54:26 瀏覽:699
android磁場感測器 發布:2025-05-20 04:50:46 瀏覽:828
python經典編程題 發布:2025-05-20 04:42:33 瀏覽:782
xp電腦訪問win7 發布:2025-05-20 04:41:59 瀏覽:617
金融的配置是什麼 發布:2025-05-20 04:41:07 瀏覽:466
解壓擠耳朵 發布:2025-05-20 04:37:02 瀏覽:887
QP演算法包 發布:2025-05-20 04:31:54 瀏覽:969
ps3連ftp 發布:2025-05-20 04:19:11 瀏覽:818