資訊安全-密碼


Posted by tzutzu858 on 2020-09-10

很多網站你忘記密碼他叫你重整密碼,那為什麼他不直接記密碼給你,因為他也不知道你密碼是什麼

延伸閱讀:

  1. [資訊安全] 密碼存明碼,怎麼不直接去裸奔算了?淺談 Hash , 用雜湊保護密碼
  2. 一次搞懂密碼學中的三兄弟 — Encode、Encrypt 跟 Hash

密碼學

1.編碼(Encoding): 沒有安全性可言,就只是換個方式來表達資料

2.加密(Encrypt) :

對稱加密 VS 非對稱加密
對稱加密 : AES(Advanced Encryption Standard),加密解密都是用同一個 key
以凱薩加密法來說,他加密的方式就是把每個英文字母加上一個偏移量 a -> t 之類的
所以只要知道 key 的人就可以 t -> a
非對稱加密 : RSA ,由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)在1977年一起提出的。當時他們三人都在麻省理工學院工作。RSA 就是他們三人姓氏開頭字母拼在一起組成的。

3.雜湊(Hashing) :

把各個 欄位/字元 丟進去某個公式計算的方式就叫做雜湊(Hash)

特性

  1. 不可逆
  2. 輸入同樣的值,一定會得到同樣的值
  3. 不一樣的長度輸入,可以得到固定長度的 hash 碼
  4. 不同輸入可能得到相同的 hash 碼(但機率極低)
  5. 輸入只差一點點,但輸出可能天差地遠

因此駭客即使知道了hash 碼,也難以輕易解碼。如果是本人要登入的話,主機只要對輸入的密碼做雜湊,去比對是不是符合儲存的雜湊值就可以了。

Hash (雜湊)演算法

SHA-0
SHA-1 ( 已經被證明不夠安全。 2017年荷蘭密碼學研究小組 CWI 和Google 正式宣布攻破了SHA-1)
SHA-256
MD-5 (已經被證明不夠安全。 1996年後被證實存在弱點,可以被加以破解 ;2004年,證實 MD5 演算法無法防止碰撞)
RIPEMD-160

使用內建 hash 函式

password_hash

$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

密碼就會轉成看不懂的 hash 碼


而在登入頁面只要驗證密碼是否和 hash 碼是否匹配,用 password_verify 會回傳 true 或 false

password_verify ( string $password , string $hash ) : bool

verify 證明、證實、校驗










Related Posts

Python Table Manners - 測試 (一)

Python Table Manners - 測試 (一)

下拉選單內容 Dropdown Menu

下拉選單內容 Dropdown Menu

[Week4] JS 實作串接 API(一)

[Week4] JS 實作串接 API(一)


Comments