當前位置:首頁 » 電腦故障 » 現有電腦密碼技術總結

現有電腦密碼技術總結

發布時間: 2023-08-29 01:07:53

㈠ 電腦設置密碼問題

一、BIOS密碼

BIOS(Basic Input Output System)即基本輸入/輸出系統,它實際上是被固化到計算機主板上的ROM晶元中的一組程序,為計算機提供最低級的、最直接的硬體控制。和其它程序不同的是,BIOS是儲存在BIOS晶元中的,而不是儲存在磁碟中,由於它屬於主板的一部分,因此大家有時就稱呼它一個既不同於軟體也不同於硬體的名字「Firmware」(固件),它主要用於存放自診斷測試程序(POST程序)、系統自舉裝入程序、系統設置程序和主要I/O設備的I/O驅動程序及中斷服務程序。
如果你不希望別人用自己的電腦,可設置BIOS的密碼功能給電腦加一把「鎖」。

二、用戶密碼

關於用戶密碼,很多人都存在一個誤區,即認為用戶密碼就是開機密碼。事實上Windows在默認的情況下,是沒有開機密碼的。那麼用戶密碼是用來干什麼的呢?是用來保護「個性」的!系統允許設置多個用戶,其目的並不是為了保護用戶的隱私。而是為每一個用戶保存了一組系統外觀的配置,以適應不同用戶不同的使用習慣,就像目前流行的「皮膚」一樣,只不過要輸入密碼而已。所以這個密碼根本起不到保密的作用,只是個擺設罷了。
用戶密碼可以在控制面板的「密碼」或「用戶」工具中設置:在控制面板中,雙擊「用戶」圖標,點擊「新建」按鈕,會出現「添加用戶」窗口,點擊「下一步」按鈕,輸入新添加的用戶名,然後再點擊「下一步」,在出現的窗口中輸入新用戶密碼,接著點擊「下一步」按鈕,會出現「個性化設置」窗口,選擇你需要的項目(不選也可以),然後再次點擊「下一步」按鈕,就可以為本機添加一個新用戶。用同樣的方法給每個可以使用此機器的用戶建立一個用戶名,然後你就可以輸入密碼了,當然也可以留到用戶登錄後自己修改密碼。

三、屏保密碼

接下來再說說屏保密碼。它的作用主要是在你暫時離開計算機,不想關機,又怕此時有人趁機在你的電腦中看到你在干什麼或亂動你的機子,此時屏保密碼可以起到一定的保護作用,而且它比用戶密碼的口碑要比用戶密碼稍微好那麼一點點。如果密碼不對,是很難通過的。
我們先來看看屏保密碼如何設置。首先在桌面空白處右擊滑鼠,從快捷菜單中選擇「屬性」命令,就會打開「顯示屬性」對話框,該對話框中有「背景」、「屏幕保護程序」、「外觀」、「效果」、「Web」、「設置」六個標簽項。點擊「屏幕保護程序標簽」就會打開「顯示屬性」,在該窗口的「屏幕保護程序」下拉列表框中有Windows附帶的各種屏幕保護程序,當我們從中選擇了某種屏幕保護程序後,點擊「預覽」就會出現屏幕保護程序的效果,單擊「預覽」還可以全屏顯示(點擊滑鼠就會還原)。「設置」按鈕可以對屏幕保護程序的顯示效果進行設置,在「等待」微調框中可以輸入或調整啟動屏幕保護程序的時間。更誘人的是,屏幕保護程序還有一定的保密功能呢!如果你希望在自己在離開時他人無法使用計算機,那麼最簡單的一個方法就是啟用屏幕保護程序的密碼功能,勾選中「密碼保護」框,單擊「更改」按鈕將出現一個「更改密碼」對話框,然後把密碼輸入兩次並確認就可以了。
總結:各個密碼都有它自己的功能但最重要的還是能保護自己的系統·維護系統的安全·,保證自己的隱私不被泄露!

㈡ 密碼技術(十一)之密鑰

  ——秘密的精華

 在使用對稱密碼、公鑰密碼、消息認證碼、數字簽嘩櫻名等密碼技術使用,都需要一個稱為 密鑰 的巨大數字。然而,數字本身的大小並不重要,重要的是 密鑰空間的大小 ,也就是可能出現的密鑰的總數量,因為密鑰空間越大,進行暴力破解就越困難。密鑰空間的大小是由 密鑰長度 決定的。

 對稱密碼DES的密鑰的實質長度為56比特(7個位元組)。
例如,
一個DES密鑰用二進制可以表示為:
01010001 11101100 01001011 00010010 00111101 01000010 00000011
用十六進制則可以表示為:
51 EC 4B 12 3D 42 03
而用十進制則可以表示為:
2305928028626269955

 在對稱密碼三重DES中,包括使用兩個DES密鑰的DES-EDE2和使用三個DES密鑰的DES-EDE3這兩種方式。
DES-EDE2的密鑰長度實質長度為112比特(14位元組),比如:
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F
DES-EDE3的密鑰的實質長度為168比特(21位元組),比如:
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96

 對稱密碼AES的密鑰長度可以從128、192和256比特中進行選擇,當密鑰長度為256比特時,比如:
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96
B9 42 DC FD A0 AE F4 5D 60 51 F1

密鑰和明文是等價的 。假設明文具有100萬的價值,那麼用來加密這段明文的密鑰也就是具有100萬元的價值;如果明文值1億元,密鑰也就值1億元;如果明文的內容是生死攸關的,那麼密鑰也同樣是生死攸關的。

 在對稱密碼中,加密和解密使用同一個密鑰。由於發送者和接收者需要共享密鑰,因此對稱密碼又稱為共享密鑰密碼。對稱密碼中所使用的密鑰必須對發送者和接收者以外的人保密,否則第三方就能夠解密了。

 在消息認證碼中,發送者和接收者使用共享的密鑰來進行認證。消息認證碼只能由持有合法密鑰的人計算出來。將消息認證碼附加在通信報文後面,就可以識別通信內容是否被篡改或偽裝,由於「持有合法的密鑰」就是發送者和接收者合法身份的證明,因此消息認證碼的密鑰必須對發送者以外的人保密,否則就會產生篡改和偽裝的風險。

 在數字簽名中,簽名生成和驗證使用不同的密鑰,只有持有私鑰的本人才能夠生成簽名,但由於驗證簽名使用的是公鑰,因此任何人都能夠驗證簽名。

 對稱密碼和公鑰密碼的密鑰都是用於確保機密性的密鑰。如果不知道用於解密的合法密鑰,就無法得知明文的內容。
 相對地,消息認證碼和數字簽名所使用的密鑰,則是用於認證的密鑰。如果不知道合法的密鑰,就無法篡改數據,也無法偽裝本人的身份。

 當我們訪問以https://開頭的網頁時,Web伺服器和瀏覽器之間會進行基於SSL/TLS的加密通信。在這樣的通信中所使用的密鑰是僅限於本次通信的一次密鑰,下次通信時就不能使用了,想這樣每次通信只能使用一次的密鑰稱為 會話密鑰
 由於會話密鑰只在本次通信中有效,萬一竊聽者獲取了本次通信的會話密鑰,也只能破譯本次通信的內容。
 雖然每次亂轎叢通信都會更換會話密鑰,但如果用來生成密鑰的偽隨機數生成器品質不好,竊聽帆納者就有可能預測出下次生成會話密鑰,這樣就會產生通信內容被破譯的風險。
 相對於每次通信更換的會話密鑰,一直被重復使用的密鑰稱為 主密鑰

 一般來說,加密的對象是用戶直接使用的信息,這樣的情況下所使用的密鑰稱為CEK(Contents Encryting Key,內容加密密鑰);相對地,用於加密密鑰的密鑰則稱為KEK(Key Encryting Key,密鑰加密密鑰)。

 在很多情況下,之前提到的會話密鑰都是被作為CEK使用的,而主密鑰則是被作為KEK使用的。

 生成密鑰的最好方法就是使用隨機數,因為米喲啊需要具備不易被他人推測的性質。在可能的情況下最好使用能夠生成密碼學上的隨機數的硬體設備,但一般我們都是使用偽隨機數生成器這一專門為密碼學用途設計的軟體。
 在生成密鑰時,不能自己隨便寫出一些像「3F 23 52 28 E3....」這樣的數字。因為盡管你想生成的是隨機的數字,但無論如何都無法避免人為偏差,而這就會成為攻擊者的目標。
 盡管生成偽隨機數的演算法有很多種,但密碼學用途偽隨機生成器必須是專門針對密碼學用途而設計的。例如,有一些偽隨機數生成器可以用於游戲和模擬演算法,盡管這些偽隨機數生成器所生成的數列看起也是隨機的,但只要不是專門為密碼學用途設計的,就不能用來生成密鑰,因為這些偽隨機數生成器不具備不可預測性這一性質。

 有時候我們也會使用人類的可以記住的口令(pasword或passphrase)來生成密鑰。口令指的是一種由多個單片語成的較長的password。
 嚴格來說,我們很少直接使用口令來作為密鑰使用,一般都是將口令輸入單向散列函數,然後將得到的散列值作為密鑰使用。
 在使用口令生成密鑰時,為了防止字典攻擊,需要在口令上附加一串稱為鹽(salt)的隨機數,然後在將其輸入單向散列函數。這種方法稱為「基於口令的密碼(Password Based Encryption,PBE)」。

 在使用對稱密碼時,如何在發送者和接收者之間共享密鑰是一個重要的問題,要解決密鑰配送問題,可以採用事先共享密鑰,使用密鑰分配中心,使用公鑰密碼等方法,除了上述方法,之前還提到一種解決密鑰配送的問題的方法稱為Diffie-Hellman密鑰交換。

 有一種提供通信機密性的技術稱為 密鑰更新 (key updating),這種方法就是在使用共享密鑰進行通信的過程中,定期更改密鑰。當然,發送者和接收者必須同時用同樣的方法來改變密鑰才行。
 在更新密鑰時,發送者和接收者使用單向散列函數計算當前密鑰的散列值,並將這個散列值用作新的密鑰。簡單說,就是 用當前密鑰散列值作為下一個密鑰
 我們假設在通信過程中的某個時間點上,密鑰被竊聽者獲取了,那麼竊聽者就可以用這個密鑰將之後的通信內容全部解密。但是,竊聽者卻無法解密更新密鑰這個時間點之前的內容,因為這需要用單向散列函數的輸出反算出單向散列函數的輸入。由於單向散列函數具有單向性,因此就保證了這樣的反算是非常困難的。
 這種防止破譯過去的通信內容機制,稱為 後向安全 (backward security)。

 由於會話密鑰在通信過程中僅限於一次,因此我們不需要保存這種秘密。然而,當密鑰需要重復使用時,就必須要考慮保存密鑰的問題了。

 人類是 無法記住具有實用長度的密鑰 的。例如,像下面這樣一個AES的128比特的密鑰,一般人是很難記住的。
51 EC 4B 12 3D 42 03 30 04 DB 98 95 93 3F 24 9F
就算勉強記住了,也只過不是記住一個密鑰而已。但如果要記住多個像這樣的密鑰並且保證不忘記,實際上是非常困難的。

 我們記不住密鑰,但如果將密鑰保存下來又可能會被竊取。這真是一個頭疼的問題。這個問題很難得到徹底解決,但我們可以考慮一些合理的解決方法。
 將密鑰保存生文件,並將這個文件保存在保險櫃等安全地方。但是放在保險櫃里的話,出門就無法使用了。這種情況,出門時就需要隨身攜帶密鑰。而如果將密鑰放在存儲卡隨身攜帶的話,就會產生存儲卡丟失、被盜等風險。
 萬一密鑰被盜,為了能夠讓攻擊者花更多的時間才能真正使用這個密鑰,我們可以使用將密鑰加密後保存的方法,當然,要將密鑰加密,必須需要另一個密鑰。像這樣用於密碼加密的密鑰,一般稱為KEK。
 對密鑰進行加密的方法雖然沒有完全解決機密性的問題,但在現實中卻是一個非常有效地方法,因為這樣做可以減少需要保管密鑰的數量。
 假設計算機上有100萬個文件,分別使用不同的密鑰進行加密生成100萬個密文,結果我們手上就產生了100萬個密鑰,而要保管100萬個密鑰是很困難的。
 於是,我們用一個密鑰(KEK)將這100萬個密鑰進行加密,那麼現在我們只要保管者一個KEK就可以了,這一個KEK的價值相當於簽名的100萬個密鑰的價值的總和。
 用1個密鑰來代替多個密鑰進行保管的方法,和認證機構的層級化非常相似。在後者中,我們不需要信任多個認證機構,而只需要信任一個根CA就可以了。同樣的,我們也不需要確保多個密鑰的機密性,而只需要確保一個KEK的機密性就可以了。

 密鑰的作廢和生成是同等重要的,這是因為密鑰和明文是等價的。

 假設Alice向Bob發送了一封加密郵件。Bob在解密之後閱讀了郵件的內容,這時本次通信所使用的密鑰對於Alice和Bob來說就不需要了。不在需要的密鑰必須妥善刪除,因為如果被竊聽者Eve獲取,之前發送的加密郵件就會被解密。

 如果密鑰是計算機上的一個文件,那麼僅僅刪除這個文件是不足以刪除密鑰的,因為有一些技術能夠讓刪除的文件「恢復」。此外,很多情況下文件的內容還會殘留在計算機的內存中,因此必須將這些痕跡完全抹去。簡而言之,要完全刪除密鑰,不但要用到密碼軟體,還需要在設計計算機系統時對信息安全進行充分的考慮

 如果包含密鑰的文件被誤刪或者保管密鑰的筆記本電腦損壞了,會怎麼樣?
 如果丟失了對稱密鑰密碼的共享密鑰,就無法解密密文了。如果丟失了消息認證碼的密鑰,就無法向通信對象證明自己的身份了。
 公鑰密碼中,一般不太會發送丟失公鑰的情況,因為公鑰是完全公開的,很有可能在其他電腦上存在副本。
 最大的問題是丟失公鑰密碼的私鑰。如果丟失了公鑰密碼的私鑰,就無法解密用公鑰密碼加密的密文了。此外,如果丟失了數字簽名的私鑰,就無法生成數字簽名了。

 Diffie-Hellman密鑰交換(Diffie-Hellman key exchange)是1976年由Whitfield Diffie和Martin Hellman共同發明的一種演算法。使用這種演算法,通信雙方僅通過交換一些可以公開的信息就能夠生成共享秘密數字,而這一秘密數字就可以被用作對稱密碼的密鑰。IPsec 中就使用了經過改良的Diffie-Hellman密鑰交換。

2 Alice 生成一個隨機數A
 A是一個1 ~ P-2之間的整數。這個數是一個只有Alice知道的密碼數字,沒有必要告訴Bob,也不能讓Eve知道。

Alice計算出的密鑰=Bob計算出的密鑰

  在步驟1-7中,雙方交換數字一共有4個,P、G、G A mod P 和 G B mod P。根據這4個數字計算出Alice和Bob的共享密鑰是非常困難的。
 如果Eve能歐知道A和B的任意一個數,那麼計算G A*B 就很容易了,然而僅僅根據上面的4個數字很難求出A和B的。
 根據G A mod P 計算出A的有效演算法到現在還沒有出現,這問題成為有限域(finite field) 的 離散對數問題

 Diffie-Hellman密鑰交換是利用了「離散對數問題」的復雜度來實現密鑰的安全交換的,如果將「離散對數問題」改為「橢圓曲線上離散對數問題」,這樣的演算法就稱為 橢圓曲線Diffie-Hellman 密鑰交換。
 橢圓曲線Diffie-Hellman密鑰交換在總體流程上是不變的,只是所利用的數學問題不同而已。橢圓曲線Diffie-Hellman密鑰交換能夠用較短的密鑰長度實現較高的安全性。

 基於口令密碼(password based encryption,PBE)就是一種根據口令生成密鑰並用該密鑰進行加密的方法。其中加密和解密使用同一個密鑰。
 PBE有很多種實現方法。例如RFC2898和RFC7292 等規范中所描述的PBE就通過Java的javax.crypto包等進行了實現。此外,在通過密碼軟體PGP保存密鑰時,也會使用PBE。
PBE的意義可以按照下面的邏輯來理解。

想確保重要消息的機制性。
  ↓
將消息直接保存到磁碟上的話,可能被別人看到。
  ↓
用密鑰(CEK)對消息進行加密吧。
  ↓
但是這次又需要確保密鑰(CEK)的機密性了。
  ↓
將密鑰(CEK)直接保存在磁碟上好像很危險。
  ↓
用另一個密鑰(KEK)對密鑰進行加密(CEK)吧。
  ↓
等等!這次又需要確保密鑰(KEK)的機密性了。進入死循環了。
  ↓
既然如此,那就用口令來生成密鑰(KEK)吧。
  ↓
但只用口令容易遭到字典攻擊
  ↓
那麼就用口令和鹽共同生成密鑰(KEK)吧。
  ↓
鹽可以和加密後的密鑰(CEK)一切保存在磁碟上,而密鑰(KEK)可以直接丟棄。
  ↓
口令就記在自己的腦子里吧。

PBE加密包括下列3個步驟:

  鹽是由偽隨機數生成器生成的隨機數,在生成密鑰(KEK)時會和口令一起被輸入單向散列函數。
 密鑰(KEK)是根據秘密的口令生成的,加鹽好像沒有什麼意義,那麼鹽到底起到什麼作用呢?
鹽是用來防禦字典攻擊的 。字典攻擊是一種事先進行計算並准備好候選密鑰列表的方法。
 我們假設在生成KEK的時候沒有加鹽。那麼主動攻擊者Mallory就可以根據字典數據事先生成大量的候選KEK。
 在這里,事先是很重要的一點。這意味著Mallory可以在竊取到加密會話的密鑰之前,就准備好了大量的候選KEK。當Mallory竊取加密的會話密鑰後,就需要嘗試將它解密,這是准備好了大量事先生成的候選KEK,就能夠大幅度縮短嘗試的時間,這就是 字典攻擊 (dictionary attack)。
 如果在生成KEK時加鹽,則鹽的長度越大,候選KEK的數量也會隨之增大,事先生成的的候選KEK就會變得非常困難。只要Mallory還沒有得到鹽,就無法生成候選KEK。這是因為加鹽之後,候選KEK的數量會變得非常巨大。

 具有充足長度的密鑰是無法用人腦記憶的。口令也是一樣,我們也無法記住具有充足比特數的口令。
 在PBE中,我們通過口令生成密鑰(KEK),在用這個密鑰來加密會話密鑰(CEK)。由於通過口令生成的密鑰(KEK)強度不如由偽隨機數生成器生成的會話密鑰(CEK),這就好像是將一個牢固的保險櫃的鑰匙放在了一個不怎麼牢固的保險櫃保管,因此在使用基於口令的密鑰時,需要將鹽和加密後的CEK通過物理方法進行保護。例如將鹽和加密後的CEK保存到存儲卡隨身攜帶。

 在生成KEK時,通過多次使用單向散列函數就可以提高安全性。例如,將鹽和口令輸入單向散列函數,進行1000次的散列函數所得到的散列值作為KEK來使用,是一個不錯的方法。
 像這樣將單向散列函數進行多次迭代的方法稱為 拉伸 (stretching)。

該系列的主要內容來自《圖解密碼技術第三版》
我只是知識的搬運工
文章中的插圖來源於原著