自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

公鑰密碼學(xué)簡介

安全 數(shù)據(jù)安全
在本文中,我試圖介紹非對稱加密背后的基本概念,盡管只是從頭開始討論了這樣一個復(fù)雜的話題。

如果您從事軟件開發(fā),則可能已經(jīng)以一種或另一種方式向您介紹了加密技術(shù)。 簽名消息,加密有效載荷,驗(yàn)證簽名以及使用證書; 這些都是我們每天都使用的功能,即使我們不知道也是如此。

公鑰密碼學(xué)或非對稱密碼學(xué)是70年代中期開始的廣泛科學(xué)研究的主題,也是當(dāng)今眾多書籍和研究論文的目標(biāo)。

這絕不是試圖以任何水平的科學(xué)或?qū)W術(shù)細(xì)節(jié)介紹密碼技術(shù)。

相反,我將嘗試展示非對稱密碼技術(shù)背后的關(guān)鍵功能概念,并提供示例說明如何使用它(同時盡量避免使用專業(yè)術(shù)語)。

[[326755]]

在以下各節(jié)中,我們將討論:

  • 對稱加密與非對稱加密。
  • 密鑰生成。
  • 非對稱加密,或如何發(fā)送加密的消息。
  • 簽署有效載荷。
  • 證書。

一、對稱加密與非對稱加密

對稱加密與非對稱加密的區(qū)別在于使用密鑰來交付基礎(chǔ)加密功能的方式:

在對稱加密中,同一密鑰既用于加密又用于解密。 密鑰成為參與者之間共享的共享秘密。

顯然,隨著參與者數(shù)量的增加,泄露密鑰的風(fēng)險也隨之增加。

在上圖中,如果 史蒂夫(Steve)的PC受到了威脅,任何獲得密鑰的人都可以解密發(fā)送給愛麗絲(Alice),約翰(John)和伊麗莎白(Elizabeth)的所有消息。

因此,一旦共享秘密在任何單個位置受到破壞,整個系統(tǒng)的安全性就會受到損害。 對稱加密的主要缺點(diǎn)是使用單個共享密鑰以及找到安全的傳播方式的要求。

對稱加密是直到70年代中期之前使用的主要加密機(jī)制,當(dāng)時研究人員開始建議使用另一種方法來創(chuàng)建和傳播密鑰,更重要的是。

這是非對稱加密誕生的時候:

公鑰密碼學(xué)簡介

在非對稱加密中,每一方都是一對密鑰(公共密鑰和私有密鑰)的所有者。

最大的突破是,公開密鑰不是一個共享的秘密,應(yīng)該由兩個或多個參與者小心地隱藏起來。 相反,參與者可以通過不受信任的網(wǎng)絡(luò)交換公用密鑰,甚至可以與其他任何人共享公用密鑰。

對稱加密徹底改變了密碼學(xué)領(lǐng)域,如今它已成為大多數(shù)大規(guī)模加密方案的基礎(chǔ)。 例如,互聯(lián)網(wǎng)。

二、密鑰生成

非對稱加密中公鑰和私鑰的創(chuàng)建取決于數(shù)學(xué)問題,尤其是單向函數(shù)。

單向函數(shù)的特征在于易于以一種方式解決(即生成密鑰),但是反計算(即在具有加密的有效載荷時找到密鑰)在計算上非常昂貴。

就像我在本文開頭所承諾的那樣,我不會不必要地使用與密碼學(xué)有關(guān)的技術(shù)術(shù)語。 但是,請記住這一點(diǎn):并非所有鍵都是相同的。

密鑰的質(zhì)量和強(qiáng)度取決于生成密鑰的算法以及密鑰的位數(shù)。

當(dāng)前使用Diffie-Hellman算法生成的密鑰的密鑰大小建議為2048位或更大,約為使用橢圓曲線算法生成的密鑰的1/10。

因此,是時候使用瑞士的加密工具LibreSSL(v2.8.3,如果您使用的是OpenSSL,下面的大多數(shù)命令也應(yīng)如此)來創(chuàng)建我們的第一個非對稱加密密鑰對。

1. 創(chuàng)建一個加密的私鑰

  1. openssl genrsa -des3 -out alice-privatekey.pem 2048openssl genrsa -des3 -out bob-privatekey.pem 2048 

您現(xiàn)在已經(jīng)成功為Alice和Bob生成了私鑰。 LibreSSL和OpenSSL中都有指定密鑰屬性的其他選項(xiàng),包括在生成過程中使用橢圓曲線算法。

私鑰應(yīng)該保持,好…私密,切勿與其他任何人共享。

2. 從私鑰中提取公鑰

  1. openssl rsa -in alice-privatekey.pem -outform PEM -pubout -out alice-publickey.pemopenssl rsa -in bob-privatekey.pem -outform PEM -pubout -out bob-publickey.pem 

現(xiàn)在,由于沒有嵌入任何敏感信息,因此可以提取Alice和Bob的公鑰并將其發(fā)送給任何感興趣的方。

三、非對稱加密,或如何發(fā)送加密的消息

非對稱加密適用于公鑰和私鑰。 要發(fā)送加密的消息,在加密過程中使用接收者的公鑰,在解密過程中使用接收者的私鑰,如下所示:

以下是上述場景中涉及的步驟,其中Alice希望將加密的消息發(fā)送給Bob:

  • 愛麗絲獲得鮑勃的公鑰。
  • 愛麗絲存儲鮑勃的公鑰以備將來使用。
  • 愛麗絲將鮑勃的公鑰與有效載荷一起使用,然后將其通過她的加密軟件進(jìn)行加密。
  • 加密的有效負(fù)載將發(fā)送到Bob。
  • 鮑勃將自己的私鑰和愛麗絲發(fā)送給他的解密軟件的加密消息傳遞。
  • Bob獲得了Alice發(fā)送的原始有效負(fù)載。

因此,讓我們進(jìn)入實(shí)際部分,并使用Bob的公鑰向他發(fā)送加密文件。 哦,等等…我們不能!

1. 混合加密

上面介紹的理論部分沒有任何問題,因?yàn)樗墓ぷ髟砼c廣告宣傳完全一樣。 但是,有一個不對稱加密的"陷阱":要加密的有效負(fù)載的大小必須(幾乎)與用于加密的公鑰的大小匹配。

因此,要向Bob發(fā)送大約1MB的照片,您需要Bob擁有至少800萬比特的公共密鑰。 那是八百萬個1和0,一個接一個。 生成這樣的密鑰可能不太實(shí)際-即使可以實(shí)現(xiàn)。

盡管您可以創(chuàng)建一種結(jié)構(gòu),在該結(jié)構(gòu)中以塊模式使用非對稱加密來加密大型有效負(fù)載,但是通過以接近可用公共密鑰大小的較小比特來加密有效負(fù)載,實(shí)際上,這是沒人在使用的東西。 就所用空間而言,效率低下,而且速度將非常緩慢。

為了減輕非對稱加密的密鑰大小限制,當(dāng)前的做法是使用混合加密:

公鑰密碼學(xué)簡介

在混合加密中,將創(chuàng)建一個隨機(jī)對稱密鑰來加密有效負(fù)載,并使用公共密鑰來加密隨機(jī)對稱密鑰。 讓我們看看它是如何工作的:

  • 鮑勃將他的公鑰發(fā)送給愛麗絲。
  • 愛麗絲生成共享的對稱密鑰。
  • 愛麗絲用鮑勃的公鑰加密對稱密鑰。
  • 愛麗絲使用(2)中創(chuàng)建的共享密鑰對消息進(jìn)行加密。
  • 愛麗絲將加密的消息和加密的共享密鑰發(fā)送給鮑勃。
  • 鮑勃使用他的私鑰解密共享密鑰。
  • 鮑勃使用共享密鑰解密加密的消息。

如果手動執(zhí)行,上述情況將是冗長而乏味的。 但是,有完善的工具和標(biāo)準(zhǔn)可以自動安全地交換消息和文件,例如OpenPGP及其在PGP和GPG中的化身。

2. 使用GPG加密(GNU Privacy Guard)

GnuPG是RFC4880(也稱為PGP)定義的OpenPGP標(biāo)準(zhǔn)的完整和免費(fèi)實(shí)現(xiàn)。

GnuPG允許您對數(shù)據(jù)和通信進(jìn)行加密和簽名,并具有通用的密鑰管理系統(tǒng)以及用于各種公鑰目錄的訪問模塊。

現(xiàn)在,讓我們嘗試使用GPG將加密的文件從愛麗絲發(fā)送到鮑勃:

  • 愛麗絲和鮑勃都需要創(chuàng)建GPG密鑰對:gpg –gen-key
  • 鮑勃應(yīng)導(dǎo)出其公鑰并將其發(fā)送給Alice:gpg –output bob.gpg –export bob@bob.com
  • 愛麗絲收到鮑勃的公鑰后,應(yīng)將其導(dǎo)入到本地密鑰數(shù)據(jù)庫中:gpg –import bob.gpg
  • 愛麗絲創(chuàng)建未加密的消息:echo" Hello Bob"> bob.msg
  • 愛麗絲對郵件進(jìn)行加密,然后將加密的郵件與加密的共享密鑰一起發(fā)送到Bob:gpg-輸出bob.msg.gpg –encrypt-收件人bob@bob.com bob.msg
  • 鮑勃(Bob)接收加密的消息,并通過解密共享密鑰并解密加密的消息來解密它:gpg –output bob.msg –decrypt bob.msg.pgp

GPG和PGP都已被廣泛使用,并且已經(jīng)包含在我們?nèi)粘J褂玫脑S多產(chǎn)品中,例如電子郵件客戶端,因此您幾乎不必手動執(zhí)行上述順序。

四、簽署有效載荷

有時,不一定需要加密消息的內(nèi)容,但是,我們可能仍要確保發(fā)送者的身份。 其他時候,內(nèi)容需要加密,發(fā)件人的身份也需要驗(yàn)證。 在兩種情況下,這都是我們使用數(shù)字簽名的地方。

在我們看到如何生成數(shù)字簽名以及如何對內(nèi)容進(jìn)行驗(yàn)證以及驗(yàn)證發(fā)件人的身份之前,讓我們在這里進(jìn)行重要的區(qū)分-我經(jīng)??吹饺藗兛梢曰Q使用:數(shù)字簽名不是電子簽名 。

1. 數(shù)字簽名

數(shù)字簽名只是用于驗(yàn)證數(shù)字消息真實(shí)性的數(shù)學(xué)證明。

它使郵件的接收者具有很高的確定性,可以相信特定的郵件是由已知的發(fā)件人創(chuàng)建的,并且該郵件在傳輸過程中沒有被更改。

2. 電子簽名

電子簽名帶有物理簽名的意圖,通常使用數(shù)字簽名來實(shí)現(xiàn)。

在許多國家/地區(qū),電子簽名只要符合其所依據(jù)的特定法規(guī)的要求,就可以提供與手寫簽名相同的法律地位。

發(fā)送者使用私鑰產(chǎn)生數(shù)字簽名,接收者使用發(fā)送者的公鑰驗(yàn)證數(shù)字簽名:

公鑰密碼學(xué)簡介
  • 愛麗絲將她的公鑰發(fā)送給鮑勃。
  • 愛麗絲創(chuàng)建一條消息,并使用她的公鑰產(chǎn)生數(shù)字簽名。 通常,在消息的計算出的哈希值上,例如在所得的SHA-256上,產(chǎn)生數(shù)字簽名。
  • Bob收到了原始的未加密消息以及該消息的Alice的數(shù)字簽名。
  • Bob使用Alice的公鑰重新計算了原始未加密郵件的數(shù)字簽名,并將其與Alice發(fā)送的簽名進(jìn)行了比較。
  • 如果兩個簽名都匹配,則鮑勃知道是愛麗絲發(fā)送了原始郵件,并且郵件的內(nèi)容沒有更改。

接下來,讓我們看看如何創(chuàng)建數(shù)字簽名以及收件人如何驗(yàn)證收到的郵件是否未被篡改。

3. 簽發(fā)簽名

  1. openssl dgst -sha256 -sign alice-privatekey.pem -out bob.msg.sign bob.msg 

上面的命令使用Alice的私鑰在bob.msg文件的SHA-256輸出上計算數(shù)字簽名。 然后,愛麗絲將bob.msg以及bob.msg.sign文件發(fā)送給Bob。

4. 驗(yàn)證簽名

  1. openssl dgst -sha256 -verify alice-publickey.pem -signature bob.msg.sign bob.msg 

鮑勃從愛麗絲那里收到了兩個文件,然后繼續(xù)使用愛麗絲的公鑰來驗(yàn)證簽名。 上面的命令根據(jù)數(shù)字簽名驗(yàn)證結(jié)果返回" Verified OK"或" Verification Failure"。

五、證書

證書,也稱為數(shù)字證書,身份證書或公鑰證書,是證明公鑰所有權(quán)的電子文檔。

證書的最常見格式由X.509定義,從根本上講,它包含一個公共密鑰,該公共密鑰的數(shù)字簽名以及有關(guān)公共密鑰所有者身份的信息。

證書可用于多種目的,因此,存在不同的證書配置文件。

公鑰對應(yīng)于證書的所有者。 但是,要使其他任何人都能夠驗(yàn)證所有者的身份,則需要一個受信任的第三方實(shí)體。

這就是證書頒發(fā)機(jī)構(gòu)的用處。證書頒發(fā)機(jī)構(gòu)是負(fù)責(zé)簽署證書的一方,通常是受信任的知名公司或組織。

為了有效地執(zhí)行此角色,證書頒發(fā)機(jī)構(gòu)需要擁有自己的根證書,該證書由盡可能多的用戶信任。 但是,證書頒發(fā)機(jī)構(gòu)也可以提供交叉簽名,從而對其他證書頒發(fā)機(jī)構(gòu)的根證書進(jìn)行簽名。

剛開始時聽起來可能會令人困惑,所以讓我們嘗試通過一個示例進(jìn)行說明:

公鑰密碼學(xué)簡介
  • 在上面的示例中,鮑勃連接到愛麗絲的網(wǎng)站,并希望驗(yàn)證是由愛麗絲經(jīng)營的。
  • Bob在訪問愛麗絲的網(wǎng)站時獲得了證書。 該證書包含Alice的公鑰以及來自證書頒發(fā)機(jī)構(gòu)CA1的數(shù)字簽名。
  • 由于Bob不了解也不信任CA1,因此他檢查了嵌入證書中的證書鏈。
  • 通過追溯可用的交叉簽名,Bob到達(dá)了他信任的證書頒發(fā)機(jī)構(gòu)CA3。 現(xiàn)在,他知道愛麗絲的網(wǎng)站可以信任由愛麗絲運(yùn)營。

當(dāng)然,所有這些過程都是由Internet瀏覽器在幕后在HTTPS協(xié)議的傳輸層安全性(TLS)下進(jìn)行的。

證書身份驗(yàn)證是基于共同受信任的父證書頒發(fā)機(jī)構(gòu)的事實(shí),這也是對證書的主要批評之一。

如果該父證書頒發(fā)機(jī)構(gòu)被破壞或流氓怎么辦?

盡管證書主要用于網(wǎng)站隱私,標(biāo)識和內(nèi)容可靠性,但它們也可以用于客戶端標(biāo)識。

如果您對自己的證書頒發(fā)機(jī)構(gòu)感興趣,可以嘗試使用各種可用的開源實(shí)現(xiàn)之一,例如OpenCA,EJBCA或OpenXKPI。

公鑰密碼學(xué)簡介

當(dāng)然,請考慮到由于您自己的證書頒發(fā)機(jī)構(gòu)的根證書不會被您的Internet瀏覽器或其他任何人信任,因此您需要按照操作系統(tǒng)的說明將其手動插入到受信任的證書存儲中。

使用您自己的證書頒發(fā)機(jī)構(gòu)頒發(fā)的證書的所有用戶的計算機(jī)也是如此。

不,不是一種選擇是讓一個知名的大型根證書頒發(fā)機(jī)構(gòu)對您自己的證書頒發(fā)機(jī)構(gòu)的根證書進(jìn)行交叉簽名。

結(jié)論

公鑰密碼術(shù)或非對稱加密是一種基于密鑰對,公鑰和私鑰的密碼系統(tǒng)。 非對稱加密的主要用例是加密通信,提供消息驗(yàn)證和真實(shí)性。

在本文中,我試圖介紹非對稱加密背后的基本概念,盡管只是從頭開始討論了這樣一個復(fù)雜的話題。 密碼學(xué)是一個引人入勝的領(lǐng)域,迄今為止,它一直在進(jìn)行積極的研究,并為好奇的人們提供了大量的信息。

離開之前,如果您需要在項(xiàng)目中進(jìn)行加密,請牢記加密的黃金法則:不要投放自己的加密貨幣。

那里有許多庫以及已經(jīng)實(shí)施的強(qiáng)大,安全,經(jīng)過考驗(yàn)的算法。 做研究并選擇已經(jīng)滿足項(xiàng)目需求的研究。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2017-06-01 09:03:51

2017-12-14 16:02:43

2018-11-26 09:21:56

2013-04-17 15:11:08

2020-12-19 10:38:22

量子計算密碼學(xué)加密

2020-08-13 18:19:24

OpenSSL密碼學(xué)Linux

2015-10-08 15:07:32

2021-02-04 10:10:48

網(wǎng)絡(luò)安全公鑰密碼密碼技術(shù)

2020-10-07 16:44:27

量子計算

2011-07-19 13:55:38

2022-06-16 14:04:14

密碼學(xué)加密后量子密碼學(xué)

2018-12-07 08:15:03

2011-07-19 13:59:59

2010-10-11 10:43:58

RSA公鑰密碼體制

2017-01-03 16:03:56

2018-03-09 17:36:27

2022-06-09 08:00:00

量子密碼學(xué)安全量子計算機(jī)

2019-11-13 09:27:55

Web密碼學(xué)數(shù)據(jù)

2019-11-14 16:17:04

區(qū)塊鏈信息安全

2021-03-26 14:46:52

私鑰比特幣貨幣
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號