密碼技術(shù)

密碼算法的特性
1针肥、是否需要事先配送私鑰:對稱密碼需要考慮
2勘究、是否會遭到中間人攻擊:非對稱密碼分發(fā)公鑰時需要考慮
3抒倚、不可抵賴(可被雙方 和 第三方 用原理證明):非對稱密碼分發(fā)公鑰時需要考慮
4躬充、能否保證消息的機密性:即不可破譯
5、能否保證消息的完整性(一致性):即不可篡改
6脾歧、不可冒充(偽造)

總結(jié):對稱密碼(解決456)--非對稱密碼之單向通信--> 混合密碼(解決1) --非對稱密碼之?dāng)?shù)字簽名--> 公鑰證書(解決23)

概念
密碼算法:加密算法 + 密鑰 + 解密算法指蚜,簡稱密碼
密鑰空間:密鑰的所有取值
隱蔽式安全性:以密碼算法不為人所知,來保證機密性
分組密碼:對明文進行分組加密涨椒,而非以全文作為輸入
流密碼:不分組,整體加密

破解密文的方法
1绽媒、竊聽 + 破譯
2蚕冬、社會工程學(xué)
破解密鑰的方法
1、暴力破解(密鑰窮舉)是辕,例如破譯凱撒密碼
2囤热、頻率分析,例如破譯簡單替換密碼
3获三、選擇明文攻擊(對分組進行明文窮舉)

加密系統(tǒng)的可選技術(shù)
隱寫術(shù):將消息藏在更大的數(shù)據(jù)中旁蔼,例如藏頭詩
偽隨機數(shù)生成器
散列值(摘要,哈希值疙教,指紋):原文經(jīng)過散列函數(shù)(摘要函數(shù)棺聊,哈希函數(shù),雜湊函數(shù)贞谓,單向加密)計算出來的值
對稱密碼(共享密鑰密碼):加密和解密用同一個私鑰
非對稱密碼(公鑰密碼):公鑰加密限佩,私鑰解密
消息認證碼
數(shù)字簽名
公鑰證書

散列函數(shù)

碰撞:兩個消息的散列值相同
弱抗碰撞性:給定一條消息,很難找到另一條消息與其散列值相同。防止以下情形祟同,Bob持有一個消息A作喘,計算其摘要;Alice找到與A散列值相同的另一條消息B晕城,用B將A調(diào)包泞坦;由于摘要不變,不被Bob發(fā)覺
強抗碰撞性:很難找到兩條散列值相同的消息砖顷。防止以下情形贰锁,Alice拿兩個摘要相同的消息A和B,將A發(fā)給Bob择吊;Bob計算其摘要李根;Alice再用B將A調(diào)包;由于摘要不變几睛,不被Bob發(fā)覺
MD5(Message Digest 5)
歷史:1991年Ronald Rivest 設(shè)計出MD5
現(xiàn)狀:2004年王小云提出了MD5碰撞攻擊算法
SHA
歷史:1993年NIST發(fā)布SHA房轿,1995年發(fā)布SHA-1,2002年發(fā)布SHA-2
現(xiàn)狀:2004年王小云提出了SHA-0的碰撞攻擊算法所森;2005年王小云提出了SHA-1的碰撞攻擊算法
SHA-3
歷史:2007年NIST發(fā)起選拔SHA-3囱持,2012年Joan Daemen等人設(shè)計的Keccak算法被選定為SHA-3

隨機數(shù)

弱偽隨機數(shù):隨機性
強偽隨機數(shù):不可預(yù)測性
真隨機數(shù):不可重現(xiàn)性

隨機數(shù)生成器:硬件可以通過熱噪聲實現(xiàn)真隨機數(shù)
偽隨機數(shù)生成器:軟件只能生成偽隨機數(shù),需要一種子seed來初始化

偽隨機數(shù)算法:線性同余法焕济、散列法纷妆、密碼法等

對稱密碼

好的對稱密碼解決:不可破譯
缺點:需要事先配送密鑰
凱撒密碼
加密算法:字母平移
密鑰:平移位數(shù)
解密算法:逆向平移
破解密鑰:窮舉可能的密鑰
簡單替換密碼
加密算法:一個字母替換成另一個字母
密鑰:替換表
解密算法:逆向替換
破解密鑰:對密文的字母 和 字母組合進行頻率分析,與通用頻率表對比晴弃;用破譯出來的明文字母掩幢,代入密文,循環(huán)分析
Enigma密碼
發(fā)明者:德國人Arthur Sherbius
加密算法:雙重加密上鞠,每日密鑰作為密鑰1际邻,想一個密鑰2;用密鑰1加密密鑰2芍阎,得到密鑰2密文世曾;用密鑰2加密消息;將密鑰2密文和消息密文一起發(fā)出
密鑰:密鑰冊子記錄的每天不同的密鑰
解密算法:用每日密鑰解密密鑰2密文谴咸,得到密鑰2轮听;用密鑰2解密消息密文
破譯者:Alan Turing 圖靈

DES密碼(Data Encryption Standard)
歷史:1974年IBM公司的Horst Feistel開發(fā)出了Lucifer密碼,1977年被美國國家標準學(xué)會(American National Standards Institute岭佳,ANSI)確定為DES標準
加密算法:以64比特為一組血巍,進行16輪運算。在一輪中驼唱,把一組分為左側(cè)和右側(cè)藻茂,并從密鑰中提取子密鑰;輪函數(shù)用一側(cè)和子密鑰生成一個比特序列,用這個比特序列對另一側(cè)進行異或運算(XOR)
密鑰:長度56位
破譯:可在現(xiàn)實時間內(nèi)被暴力破解

三重DES密碼(triple-DES辨赐,TDEA优俘,3DES)
加密算法:將DES重復(fù)三次
密鑰:長度 56 * 3

AES密碼(Advanced Encryption Standard)
歷史:1997年,美國國家標準與技術(shù)研究院(National Institute of Standards and Technology掀序,NIST)公開募集AES帆焕,2000年比利時密碼學(xué)家Joan Daemen 和 Vincent Rijmen提交的Rijndael方案,被選為標準
加密算法:以128比特為一組不恭,進行多輪的替換叶雹、平移、矩陣運算
密鑰:有128,192,256三種長度

分組密碼的迭代模式
ECB模式:Electronic CodeBook mode换吧,電子密碼本模式折晦;明文分組 和 密文分組 順序?qū)?yīng)。主動攻擊者可以改變密文分組的順序沾瓦,復(fù)制 或 刪除密文分組满着,使得接受者解密后得到錯誤的明文
CBC模式:Cipher Block Chaining mode,密碼分組鏈接模式贯莺;將本組明文 和 上組密文 進行異或運算后风喇,在進行加密;如果被篡改缕探,則不能正常解密
CFB模式:Cipher Feedback mode魂莫,密文反饋模式;將本組明文 和 上組密文 進行異或運算后爹耗,就得到本組的密文
OFB模式:Output Feedback mode耙考,輸出反饋模式;用隨機比特序列作為初始化組(初始化向量)潭兽;用初始化組的密文和 明文分組 異或運算琳骡,得到密文分組;再次對初始化組密文進行加密運算讼溺,得到新的初始化組密文,跟下組明文進行異或運算最易,以此類推
CTR模式:CounTeR mode怒坯,計數(shù)器模式;用隨機比特序列作為計數(shù)器的初始值藻懒,加密后與明文分組進行異或操作剔猿,得到密文分組;計數(shù)器加一嬉荆,對下組明文進行加密

消息認證碼(Message Authentication Code归敬,MAC)(對稱加密 + 散列函數(shù))

對稱密碼中,發(fā)送方發(fā)送密文時,帶上消息的MAC值A(chǔ)汪茧;接收方用相同方法計算出MAC值B椅亚;對比A和B,確保消息不被篡改
Encrypt-then-MAC:MAC值為消息密文的散列值
Encrypt-and-MAC:MAC值為消息明文的散列值
MAC-then-Encrypt:MAC值為明文散列值的密文

重放攻擊:攻擊者竊聽到Alice給Bob發(fā)送的消息后舱污,重復(fù)給Bob發(fā)送呀舔,Bob以為都是Alice發(fā)的
預(yù)防重放攻擊:消息里帶有一個id

比對稱密碼:不可篡改、不可偽造
缺點:需要實現(xiàn)配送私鑰

基于口令的密碼

基于口令的密碼:Password Based Encryption扩灯,PBE
解決:密鑰(會話密鑰)保存問題
CEK:會話密鑰
KEK:用來加密CEK的密鑰
方案
1媚赖、隨機數(shù)作為鹽salt,口令 + 鹽 的散列值作為KEK
2珠插、用KEK加密CEK惧磺,得到CEK密文
3、只保存鹽和CEK密文捻撑,人腦記住口令磨隘,丟棄KEK

字典攻擊:如果沒有鹽參與生成KEK,那么口令決定了KEK布讹,常用的口令對應(yīng)一個常用KEK字典琳拭,攻擊者直接拿常用KEK去解密CEK密文
鹽的作用:KEK由鹽參與形成,不可能有KEK字典包含這樣的KEK

非對稱密碼 之 單向通信(公鑰加密描验,私鑰解密)

非對稱密碼單向通信白嘁,不能單獨用于通信,只用在混合密碼中
方案:Alice 給 Bob 分發(fā)加密密鑰(公鑰)膘流;Bob用公鑰加密消息絮缅,發(fā)送給Alice;Alice用解密密鑰(私鑰)解密
總結(jié):消息接收者是密鑰對主人呼股,即私鑰持有人耕魄;公鑰用于加密,私鑰用于解密

RSA密碼
歷史:1978年彭谁,Ron Rivest吸奴、Adi Shamir、Reonard Adleman共同發(fā)表了RSA
加密算法:密文 = 明文E mode N
公鑰:E 和 N的組合
解密算法:明文 = 密文D mode N
私鑰:D 和 N的組合

生成密鑰對
生成質(zhì)數(shù):用偽隨機數(shù)生成隨機數(shù)缠局,通過Miller-Rabin測試法測試它是不是質(zhì)數(shù)则奥,直到得到質(zhì)數(shù)
求最大公約數(shù):歐幾里得的輾轉(zhuǎn)相除法
1、求N
生成兩個512位的質(zhì)數(shù)p和q狭园,N = p * q
2读处、求L
L是p-1 和 q-1 的最小公倍數(shù)
3、求E
用偽隨機數(shù)生成(1,L)范圍內(nèi)的隨機數(shù)唱矛,直到滿足E和L的最大公約數(shù)為1
4罚舱、求D
用偽隨機數(shù)生成(1,L)范圍內(nèi)的隨機數(shù)井辜,直到滿足(E * D) mod L = 1

破解:對N進行質(zhì)因數(shù)分解,得到p和q管闷,從而求出D粥脚。但是對大數(shù)的質(zhì)因數(shù)分解,未有快速有效的方法

混合密碼(消息認證碼 + 非對稱密碼)

首次通信為混合密碼渐北,后續(xù)通信為對稱密碼
比消息認證碼:無需事先配送私鑰
總體思路:Bob 用會話密鑰加密消息阿逃,用Alice的公鑰加密會話密鑰,一起發(fā)給Alice赃蛛;Alice用私鑰解密會話密鑰恃锉,用會話密鑰解密消息
會話密鑰:用來加密消息的 對稱密碼的密鑰
1、Alice 給 Bob 發(fā)送公鑰
2呕臂、Bob隨機生成會話密鑰破托,用會話密鑰加密消息,得到消息密文
3歧蒋、Bob用公鑰加密會話密鑰土砂,得到會話密鑰密文
4、Bob將會話密鑰密文和消息密文一起發(fā)給Alice
5谜洽、Alice用私鑰解密會話密鑰萝映,再用會話密鑰解密消息
6、雙方都有了會話密鑰阐虚,從此以后序臂,可以用對稱密碼通信了,帶上消息認證碼

缺點:分發(fā)公鑰時,可能遭受中間人攻擊;Alice可能對給Bob發(fā)送公鑰這件事進行抵賴
中間人攻擊:中間人從一開始Alice向Bob發(fā)放公鑰時鳖宾,就攔截了消息,得到Alice的公鑰雅镊;然后偽裝成Alice,向Bob發(fā)送自己的公鑰;從而Bob打算發(fā)給Alice的消息,能被中間人解密

非對稱密碼 之 數(shù)字簽名(私鑰加密悼瘾,公鑰解密)(非對稱加密 + 摘要)

不能單獨用于通信,只用在公鑰證書中
明文簽名:Alice用簽名密鑰(私鑰)加密消息的摘要审胸,把摘要密文和消息明文一起發(fā)給Bob分尸;Bob解密摘要密文,得到摘要A歹嘹;算出明文摘要B,對比A和B
總結(jié):私鑰用于加密孔庭,公鑰用于解密尺上,與 非對稱加密之單向通信材蛛,剛好反過來

公鑰證書(混合密碼 + 數(shù)字簽名)

公鑰證書:Public-Key Certificate,PKC怎抛,簡稱證書
認證機構(gòu):Certification Authority卑吭,CA
證書標準:國際電信聯(lián)盟ITU 和 國際標準化組織ISO指定的X.509標準
流程:
1、Alice在CA登記
2马绝、CA生成Alice的證書明文豆赏,包含Alice登記的信息、Alice的公鑰富稻、CA信息
3掷邦、CA用自己的私鑰加密證書明文部分,得到數(shù)字簽名
4椭赋、證書明文部分 和 數(shù)字簽名 組成PKC抚岗,頒發(fā)給Alice
5、Bob向Alice獲取這個PKC哪怔,拿本地已有的CA公鑰去驗證證書宣蔚,就得到了可信的Alice的公鑰
6、從此Alice 和 Bob之間可以進行混合密碼通信

首次通信為從CA獲取PKC认境,后續(xù)通信為混合密碼
比混合密碼:防止了中間人攻擊胚委;CA不能抵賴自己的證書

SSL/TLS協(xié)議

歷史:1994年網(wǎng)景公司設(shè)計出SSL,2014年SSL 3.0被發(fā)現(xiàn)安全漏洞叉信,1999年IEIF發(fā)布TLS
TLS(Transport Layer Security)是SSL(Secure Socket Layer)的后續(xù)版本亩冬,在tcp和http之間加一層TLS,就是https
OpenSSL:OpenSSL是實現(xiàn)SSL/TLS協(xié)議的工具包
以https為例
0茉盏、瀏覽器安裝時鉴未,存有幾個CA公鑰;服務(wù)器在CA登記鸠姨,拿到證書
1铜秆、瀏覽器訪問一個https地址,服務(wù)器返回自己的證書
2讶迁、瀏覽器根據(jù)證書上的CA信息连茧,拿對應(yīng)的CA公鑰驗證證書,得到可信的服務(wù)器公鑰
3巍糯、瀏覽器生成對稱密碼的密鑰(會話密鑰)啸驯,用服務(wù)器公鑰加密后發(fā)給服務(wù)器
4、服務(wù)器解密后得到會話密鑰祟峦,從此用對稱密碼通信罚斗,帶上消息認證碼

生成證書 與 轉(zhuǎn)換證書

1、生成JKS證書:keytool -genkeypair -alias "別名" -keyalg "RSA" -keystore "D:\app.jks"
2宅楞、將JKS轉(zhuǎn)換成PKCS12:keytool -importkeystore -srckeystore D:\app.jks -destkeystore D:\app.p12 -deststoretype pkcs12
3针姿、將PKCS12轉(zhuǎn)成pem:openssl pkcs12 -in ./app.p12 -out app.pem
4袱吆、提取加密后的私鑰:將pem中 “—–BEGIN ENCRYPTED PRIVATE KEY—–” 至 “—–END ENCRYPTED PRIVATE KEY—–” 的內(nèi)容拷貝出來,保存為ciphertext.key
5距淫、將密文私鑰轉(zhuǎn)成明文私鑰:openssl rsa -in ciphertext.key -out plaintext.key

.jks(Java Key Storage):二進制格式绞绒,包含證書和私鑰,有密碼保護
.pfx 或 .p12(Predecessor of PKCS#12):二進制格式榕暇,包含證書和私鑰蓬衡,有密碼保護
.pem(Privacy Enhanced Mail):文本格式,包含證書彤枢,可包含私鑰狰晚,私鑰有密碼保護
.der 或 .cer:二進制格式,只包含證書
.crt(Certificate):可以是der格式堂污,也可以是pem格式家肯,只包含證書

阿里云

SSL證書:SSL證書必須綁定域名,不能綁定IP
加密服務(wù)盟猖、密鑰管理服務(wù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讨衣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子式镐,更是在濱河造成了極大的恐慌反镇,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娘汞,死亡現(xiàn)場離奇詭異歹茶,居然都是意外死亡,警方通過查閱死者的電腦和手機你弦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門惊豺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人禽作,你說我怎么就攤上這事尸昧。” “怎么了旷偿?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵烹俗,是天一觀的道長。 經(jīng)常有香客問我萍程,道長幢妄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任茫负,我火速辦了婚禮蕉鸳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘忍法。我一直安慰自己潮尝,他們只是感情好无虚,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衍锚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗤堰。 梳的紋絲不亂的頭發(fā)上戴质,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音踢匣,去河邊找鬼告匠。 笑死,一個胖子當(dāng)著我的面吹牛离唬,可吹牛的內(nèi)容都是我干的后专。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼输莺,長吁一口氣:“原來是場噩夢啊……” “哼戚哎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嫂用,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤型凳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嘱函,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甘畅,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年往弓,在試婚紗的時候發(fā)現(xiàn)自己被綠了疏唾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡函似,死狀恐怖槐脏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缴淋,我是刑警寧澤准给,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站重抖,受9級特大地震影響露氮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钟沛,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一畔规、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧恨统,春花似錦叁扫、人聲如沸三妈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畴蒲。三九已至,卻和暖如春对室,著一層夾襖步出監(jiān)牢的瞬間模燥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工掩宜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蔫骂,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓牺汤,卻偏偏與公主長得像辽旋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子檐迟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容