HTTPS 是建立在密碼學(xué)基礎(chǔ)之上的一種安全通信協(xié)議,嚴(yán)格來說是基于 HTTP 協(xié)議和 SSL/TLS 的組合。理解 HTTPS 之前有必要弄清楚一些密碼學(xué)的相關(guān)基礎(chǔ)概念,比如:明文、密文、密碼、密鑰、對(duì)稱加密、非對(duì)稱加密、信息摘要、數(shù)字簽名、數(shù)字證書。接下來我會(huì)逐個(gè)解釋這些術(shù)語(yǔ),文章里面提到的『數(shù)據(jù)』、『消息』都是同一個(gè)概念,表示用戶之間通信的內(nèi)容載體,此外文章中提到了以下幾個(gè)角色:
Alice:消息發(fā)送者
Bob:消息接收者
Attacker:中間攻擊者
Trent:第三方認(rèn)證機(jī)構(gòu)
密碼
密碼學(xué)中的“密碼”術(shù)語(yǔ)與網(wǎng)站登錄時(shí)用的密碼(password)是不一樣的概念,password 翻譯過來其實(shí)是“口令”,它是用于認(rèn)證用途的一組文本字符串。
而密碼學(xué)中的密碼(cipher)是一套算法(algorithm),這套算法用于對(duì)消息進(jìn)行加密和解密,從明文到密文的過程稱之為加密,密文反過來生成明文稱之為解密,加密算法與解密算法合在一起稱為密碼算法。
密鑰
密鑰(key)是在使用密碼算法過程中輸入的一段參數(shù)。同一個(gè)明文在相同的密碼算法和不同的密鑰計(jì)算下會(huì)產(chǎn)生不同的密文。很多知名的密碼算法都是公開的,密鑰才是決定密文是否安全的重要參數(shù),通常密鑰越長(zhǎng),破解的難度越大,比如一個(gè)8位的密鑰最多有256種情況,使用窮舉法,能非常輕易的破解。根據(jù)密鑰的使用方法,密碼可分為對(duì)稱加密和公鑰加密。