去年,在工做中接觸了一些新的技術名詞:
數字簽名
、數字證書
、Oauth2認證
、SSL/TLS
、XOR異或加密
、RSA算法
、單鑰加密
、公鑰加密
、三方認證
等。這些名詞單獨來看就是一個個技術點,相關技術文檔也看了不少,但一直沒法作到了然於心,運用自如的地步。直到閱讀了《圖解密碼技術》這本圖書,發現原來這些東東都屬於密碼學的範疇,理清關係以後並無想象中的那麼繁瑣。 本文打算從三個部分捋一捋這些關係:第一部分介紹信息傳遞過程當中存在的問題,凡事都是先拋出問題,再談解決方案;第二部分就介紹解決這些問題的方法了,就像學習數學同樣,公式啊、定理啊啥的前人已經幫咱們作了,咱們要作的只是瞭解它,認識它,因此這部分並不會很難;第三部分爲探索階段,那些 hacker 們是怎麼攔截消息的,如何篡改消息內容,又是如何假裝它人身份,這些我很感興趣,但因爲底子薄,探索週期可能會有點長,權當自娛自樂吧.............算法
目錄: 1、消息傳遞的特性 —— 存在哪些安全問題 1. 機密性 —— 不想讓竊聽者知道消息的內容,因此就進行加密 2. 完整性 —— 消息傳遞過程當中有沒有被修改過內容 3. 認證 —— 是不是不懷好意的人假裝你的朋友發送的郵件 4. 不能否認性 —— 借了錢要打欠條防止抵賴,信息如何防止抵賴 2、密碼學工具箱 —— 解決消息傳遞過程存在的問題 1. 對稱加密 2. 公鑰加密 3. 單向散列函數 4. 消息認證碼 5. 數字簽名 6. 數字證書 7. 隨機數生成器 3、探索階段 1. 怎麼攔截 http 請求內容 2. 怎麼篡改 http 內容 3. 怎麼假裝身份獲取權限
讀書的時候喜歡在課堂和好朋友上遞小紙條,這過程存在被老師發現的可能性,若是小紙條的內容涉及到說老師的壞話,那被發現少不了一頓批評教育。假若能對小紙條的內容進行 加密
,只有你和你的朋友知道如何 解密
獲得正確的內容,這樣即便被老師發現,也能夠胡鄒一些可有可無的話糊弄過去。安全
你能夠和小夥伴提早商量好 加密
方式,好比:先將漢字寫成拼音,再將每一個字母日後平移三個字母,像下面這樣。微信
明文:老師今天好醜
;網絡
明文轉拼音:lao shi jin tian hao chou
;函數
拼音轉密文(每一個字母日後平移三個字母):dor vkl mlq wldq kdr fkrx
;工具
這樣即使老師發現了大家的小紙條也不知道大家在說啥,你的朋友在接收到小紙條時先往前平移 3 個字母再將拼音轉換爲漢字便可獲得明文信息。學習
並非全部的消息都須要加密,若是你不想你的「祕密」被別人知道,那就加密消息吧。加密
在下載一些免費軟件的時候,咱們很難保證咱們下載的軟件與做者發佈的軟件是如出一轍的,這中間會不會被一些不懷好意的人植入了病毒,等着咱們掉進陷阱。這裏被植入病毒就改變了軟件的完整性,而這個過程一般是 病毒做者 在 軟件做者 (消息發佈者) 和 下載軟件的用戶(消息接受者) 絕不知情的狀況下進行的篡改。code
軟件做者發佈軟件比如發送消息,用戶下載軟件比如接受消息,病毒做者對軟件植入病毒就比如在消息傳輸過程修改了消息的本來內容。文檔
咱們想要的是消息保持完整性,現實生活中能夠給朋友打個電話詢問收到的信件內容是否完整,但在網絡世界或其它不少場景是沒法作到這種詢問的,這須要特定的技術來保證這一點。
不知道大家會不會收到許久不聯繫的老同窗發來的短信:「老同窗,借兩千塊錢」。
我每次收到這種消息,第一反應老是會想 這是否是他本人 ,接着問一些只有我和他才知道的祕密來驗證他的身份,或者直接打個電話進行確認,畢竟在當今這個社會,社交帳號被盜取是很正常的一件事情。
花道相約晴子妹子出來玩,無奈人晴子只中意阿楓,花道不得已就假裝成阿楓的語氣給晴子寫信,晴子一看這是 「阿楓」 的信就會立馬出來,而後才發現本身被騙了...........
因而可知,消息也存在 僞造發送人身份 這一特性,而 認證 就是一種特殊的手段來判別發送人究竟是 本人 仍是 不懷好意 的人。
朋友剛來上海這邊身無分文,找我借了 ¥5000.00 租房子,由於他和我離得比較遠,沒辦法直接給我寫借條,就想着經過電子郵件給我來電一封,記錄借款事項。
幾個月過去了,我想着他也有了錢能夠還我了就去找他要錢,結果他狗日的給我耍賴,說本身並無給我寫過信,頓時感受古人的偉大,知道寫完欠條要按個指紋,想賴帳還能夠根據指紋判斷確實你這我的寫的。(其實一直有個疑惑,古人沒有指紋鑑別儀器,是怎麼根據指紋判斷人的惟一性??)
消息的傳遞存在 詆譭,不認可 的特性,尤爲是在互聯網上,文字都是印刷版的冷冰冰的。若是須要簽定合同都是打印出紙質版本,蓋上公司章再郵寄給他人。
不能否認性 又是經過特定手段將消息發送者的身份和消息綁定在必定,現實生活中很方便,好比簽字、按指紋、蓋章等,網絡中出現此問題,也衍生了對應的解決方案。
消息的特性:
這些特性在平常生活中也會出現,但有時咱們並不在意它。
咱們與他人的平常交流就不須要時時刻刻加密對話內容;咱們收到朋友發的微信也不必打個電話詢問內容是否完整;和朋友之間週轉個千兒八百的也沒打欠條的習慣。
這是由於這些事兒的重要性都不夠高,即使存在這些安全性問題也不會對咱們形成太大的損失。可是像一些大型公司、銀行,若是不注重信息的安全性,就會讓那些不會好意的人有隙可乘,結果也許會很糟糕。
未完待續.................
下一篇介紹密碼工具箱,即解決本文提出的四個消息傳遞存在的問題。