人人都應該懂點密碼學

你能夠從別人那裏汲取某些思想,但必須用你本身的方式加以思考,在你的模子裏鑄成你思想的砂型。——蘭姆linux

本文已經收錄至個人GitHub,歡迎你們踊躍star 和 issues。git

https://github.com/midou-tech/articles

點關注,不迷路!!!

 上次say&see了密碼學的DES算法,接下來就有人私信說是一開始就直接講算法有點難理解,想讓我給打打底,這麼說固然沒問題,那之後咱們就每週一篇,從最基礎的東西講起,下面我還會附上一張基礎的知識框架圖,感興趣的盆友來看一看,跟着我帶你學習密碼學。程序員

 剛開始接觸密碼學的時候,我也是一頭霧水😳,每次看到加密和解密,各類類似又不一樣的算法在個人大腦裏轉圈,我真的是太南了,可是隨着學習的深刻,好像慢慢了解了其中奧祕,這件事情就再也不那麼難了,因而我把本身的學習方法總結出來,和你們共同分享。github

 個人全部寫做內容會更多的照顧到初學者和進階的大佬,每個大綱中的知識點都會從簡單到複雜,不會一上來就講些太難的,也不會只分享一些簡單易學的、沒有養分的內容。你們在看博文的過程當中遇到任何問題或者生活工做上遇到問題私聊我,點擊聯繫做者加我微信,or發e-mail至:2507367760@qq.com 或者 longyueshier@163.com 或者 longyueshier@gmail.com 。算法

密碼學基礎框架
密碼學基礎框架
數學基礎:

 關於在密碼學中的數學基礎(數學+密碼學=……雖然有點難,我仍是得說給你聽,困難的事情簡單的道理),主要講到羣、環、域這三個基礎的數學模型,聽起來覺着複雜,但其實用起來簡單,這個時候咱們已經不只僅知足於對單純的數字進行普通的運算了,它們所描述的就是將數與運算結合起來的一種運算集合。安全

 舉個簡單例子,我簡單解釋一下什麼是,羣就是在一個非空集合上定義一個新的運算,使這個運算存在交換律、結合律、單位元(e·a=a)、逆元(a·a的逆元=e)就可稱之爲一個羣。環和域和羣相似,相比會增多其中的元數個數,以及自定義運算個數。關於代數的內容,推薦你們能夠參考楊子胥的《近世代數》,裏邊關於密碼學中所要用到的數學知識都有詳細的介紹,看完書可謂是受益不淺。微信

基本概念 :

 講完數學基礎,接下來,我對後邊要講的知識的大概框架描述一下下,首先給你們講講在密碼學中的一些基本概念,明文(可不是wang zhe rong yao銘文嗷~ ~)、密文、密鑰等等這些詞彙都是能夠經過字面意思理解的,後邊再遇到難以理解的詞彙我在給你們解釋,首先咱們要接觸的第一個知識就是通訊保密系統,當咱們理解了這個系統的總體流程,咱們就能夠知道,當消息泄露時候,咱們從哪裏入手排查。網絡

保密通訊系統框圖
保密通訊系統框圖

 在框圖中咱們能夠看出,加解密的過程當中都須要使用到密鑰,而密鑰的不一樣使用方法就將密碼體制分爲單鑰體制(加密解密使用同一密鑰)和雙鑰體制(使用不一樣密鑰進行加密和解密),而對於不一樣的加密結果,都存在多種密碼攻擊方式,至於這裏的具體內容,下次咱們來詳細解釋。app

流密碼:

 瞭解完這些基礎,咱們就算是正式進軍密碼學了,開門見山的說,一來你遇到的第一個問題就是流密碼,這算是密碼學裏第一個難懂的專業詞彙,流密碼主要就是指利用一個密鑰流生成器產生一個密鑰流,而後用這個密鑰流來對明文消息進行加密和解密,所謂同步流密碼和自同步流密碼就是取決於其輸入的明文是否會影響加密器中的記憶元件的存儲狀態。密鑰流的產生依賴於密鑰流生成器,這個東西主要由一個驅動系統和一個非線性系統,二者相互配合完成任務,目前所用最多的就是利用一個或者多個LFSR構成其驅動部分,這樣看來線性反饋移位寄存器可謂是功不可沒。流密碼的安全性取決於密鑰流的安全性,要求密鑰流序列有好的隨機性,,以使竊聽者對它沒法預測。也就是說,即便截獲其中一段,也沒法推測後面是什麼。若是密鑰流是週期的,要徹底作到隨機性是困難的。嚴格地說,這樣的序列不可能作到隨機,只能要求截獲比周期短的一段密鑰流時不會泄露更多信息,這樣的序僞隨機序列。框架

分組密碼:

 分組密碼與流密碼最大的不一樣在於,流密碼的加密器中有一個記憶元件,而分組密碼不存在,在許多密碼系統中,分組密碼也是系統安全的一個重要組成部分,用分組密碼易於構造僞隨機數生成器、流密碼、消息認證碼(MAC)和雜湊函數等,還可進而成爲消息認證技術、數據完整性機制、實體認證協議以及單鑰數字簽字體制的核心組成部分。本部分主要介紹一下feistel結構,以及利用feistel結構構成的DES算法和AES算法,而且從一名學習者的角度介紹一下其安全性。

公鑰密碼:

 在公鑰密碼體制中,咱們首先須要掌握一些簡單的數論知識,例如,模運算,費爾瑪定理,歐拉定理,歐幾里得定理,中國剩餘定理等等,這些基礎數論知識在以後的學習中再和你們一一道來,掌握了數論知識之後,咱們主要學習公鑰加密體制以及RSA算法,以及基於橢圓曲線的密碼體制,這一部分就稍稍有些難以理解,公鑰密碼體制的概念是在解決單鑰密碼體制中最難解決的兩個問題時提出的,這兩個問題分別是密鑰分配和數字簽字。公鑰密碼算法的最大特色是採用兩個相關密鑰將加密和解密能力分開,一個密鑰是公開密鑰,用於加密;另外一個密鑰是祕密密鑰,用於解密。RSA算法是1978年由R.Rivest,A.Shamir和L.Adleman提出的一種用數論構造的、也是迄今爲止理論上最爲成熟完善的公鑰密碼體制,該體制已獲得普遍的應用。爲保證RSA算法的安全性,它的密鑰長度需一再增大,使得它的運算負擔愈來愈大。相比之下,橢圓曲線密碼體制ECC可用短得多的密鑰得到一樣的安全性,所以具備普遍的應用前景。ECC已被IEEE公鑰密碼標準P1363採用。

消息認證與雜湊算法:

 關於消息認證機制呢,簡單來講就是對所接受到的消息進行確認,保證其必定來自於發送方,且消息內容並未被篡改,在認證過程當中,需有產生認證符,這一基本功能又做爲認證協議的一個組成部分。認證符也就是用於認證消息的數值,主要由消息認證碼MAC(messageauthenticationcode)和雜湊函數(hashfunction)兩個途徑來產生認證符,因此在這個部分咱們就要主要講二者的區別和聯繫。在雜湊函數中主要涉及兩種算法,分別是MD系列以及SHA系列,二者類似又不一樣,具體詳情咱們之後慢慢說。

數字簽名:

 數字簽名的主要目的就是對消息進行簽字,確保其自己的身份,數字簽字由公鑰密碼發展而來,它在網絡安全,包括身份認證、數據完整性、不能否認性以及匿名性等方面有着重要應用。

以上就是密碼學的基礎框架圖,想必看到這裏你也理解了很多東西吧,固然這些都還只是基礎部分,想要學好還須要多下功夫多瞭解,關於後邊的具體內容呢,咱們下回詳解😉

歷史文章:

學習linux命令,看這篇2w多字的命令詳解就夠了

HTTP就是這麼簡單

Redis基礎

頂級程序員工具集

二十多個免費高清圖片素材網站送給你

求點贊👍 求關注❤️

「轉發」是明目張膽的喜歡,「在看」是偷偷摸摸的愛。

若是有人想發文章,我這裏提供有償徵文(具體細則微信聯繫),歡迎投稿或推薦你的項目。提供如下幾種投稿方式:

  • 去個人github提交 issue: https://github.com/midou-tech/articles

  • 發送到郵箱: 2507367760@qq.com 或者 longyueshier@163.com 或者 longyueshier@gmail.com

  • 微信發送: 掃描下面二維碼,公衆號裏面有做者微信號。

精選文章都同步在公衆號裏面,公衆號看起會更方便,隨時隨地想看就看。微信搜索龍躍十二或者掃碼便可訂閱。

相關文章
相關標籤/搜索