一
前言
在《林海雪原》里,楊子榮為了能夠假裝胡彪,打入虎穴,學習了些黑話,題記里楊子榮正跟土匪對著暗號,驗明自己身份的合法性。這是在提到洋氣的A和B之前,能想到密碼學里身份校驗的故事,當然前提是山寨里的人都沒見過胡彪,只是有所耳聞,故事里土匪一直在想法設法試探楊子榮的身份,感興趣大家可以看看《智取威虎山》中的電影片段。
話說回來,土匪和楊子榮的對話并不涉及加解密的過程,只是憑著行話,核驗身份,與我們正常輸入登錄賬號密碼一樣,那最多稱之為口令,那什么是密碼學呢?我們簡單看下維基百科的定義。
Cryptography is about constructing and analyzing protocols that prevent third parties or the public from reading private messages. (密碼學是關于構建和分析防止第三方或公眾讀取私人消息的方法體系)。
二
信息安全的屬性
在密碼學世界里有兩個虛擬的人物Alice和Bob以擬人化A和B,假如Alice和Bob是同班同學且互有好感,有一天Alice終于鼓起勇氣要以情書的形式向Bob表白,正常來講他會有些擔心,最理想的情況下,是情書安全的送到了Bob那里,萬一情書被人發現,也沒有關系,只有Bob能看懂,同時要確保Bob收到情書之后,還得確定是Bob發來的,不然搞錯了對象也會很尷尬。
Alice確實是個心思縝密的人,他的擔心涉及到了信息傳遞的幾個安全屬性。
機密性: 自己的真實意圖只能讓Bob知道,不能讓公眾曉得,他可以把情書放到密碼箱里,把鑰匙給到Bob,或者也不怕別人看到,對于情書內容進行加密,也只有Bob知道密鑰。
完整性: 情書中途被人掉包,或者內容被篡改,明明是表白I love you 結果換成 I hate you那就壞了好事了。
真實性: Bob收到情書之后,得知道是Alice寫的,當然寫匿名情書搞暗戀又另說了。此時就需要Alice簽字,或者做個人的特殊標記,比如加上自己的俄語一段話,因為班上只有Alice會俄語。
Alice的想法也是人之常情,不僅要有勇氣將重要的信息傳遞出去,同時也要有足夠的智慧保證信息的傳遞準確到位。其實在密碼學在這里就可以派上用場了。
三
加密與解密
Alice可以將情書放到有密碼鎖的筆記本里,然后將本子和鑰匙一起送給Bob,這也是一種方式,鑰匙上鎖和解鎖的過程,暫且換上專業的說法,加密和解密,同時發送者和接受者用的同一把鑰匙,也就是我們說的對稱加密,當然密鑰只有Alice和Bob知道,同時消息和密鑰要同時發給對方。其邏輯如下:
在介紹加解密之前,簡單普及下基礎的概念,在現代的計算機和依賴計算機的設備里都用到了二進制,每個數字稱為一個比特(bit),一個字節由8個比特構成,儲存的數值范圍為0-255。
既然二進制是計算機的語言,那么消息都必須得轉化為二進制才能進行計算,很多問題就變成了數學問題,此時密碼學就成功成了數學家的天地,這也是我們普通大眾對密碼學望而卻步的原因。(順便提一句,目前國內在密碼學造詣最深的是山東大學數學系出身的王小云院士。)
再回到Alice和Bob的小秘密,經過仔細考慮,情書的關鍵信息如下:
I LOVE YOU
現在為了確保消息只有Bob看得懂,而別人看不懂,暫且假設只有Alice和Bob知道密鑰,此時正常來說他三種操作方式。
首先是字母替換,每個字母按照制定規則逐一替換,此時Bob收到加密消息的同時,還會收到的字符關系表,逐個解密得出明文消息。正經的說,也就是利用預先設計的固定代替規則,對明文逐個進行替換,這個代替規則又稱為代替函數,代替表或者代替函數,所以相同的明文字符組一定會產生相同的密文字符,此時可以采用頻率分析基本可以得到找到對應關系。
然后是行移位,I LOVE YOU 按照26個字母順序依次向后移一位,那么變化如下:
I LOVE YOU-》 J MPWF ZPV
如此解密時,J MPWF ZPV 各字母向前移動一位就解決問題,得到答案里。
最后就是加減密碼,將明文逐個字符或逐字符組與亂數相加或相減的密碼,在這里就不贅述了。
四
對稱密鑰
Alice和Bob的小秘密大部分情況下要通過密碼技術來保證,順著Alice面對安全威脅的擔憂,接下來我們還是有必要整體介紹,密碼學的常用要點。
在之前,其實我們簡要介紹過了對稱密鑰,也就是加密和解密用的是同一套密鑰。關于具體的對稱密鑰算法,還是有必要介紹AES, 一般會將明文分成128bit的明文塊,密鑰長度有128,192,256bit三種選擇,對于128而言,加密輪數為10輪。分別用到了XOR運算,字母替換,行移位,列混淆一套組合拳,然后經過10輪加密計算得到密文。
聽起來挺復雜的,其實邏輯很簡單,通過一堆騷操作之后,讓你看不懂密文,除非拿到密鑰解密得到消息。但對于Alice想跟Bob表白這件事情來說,也最好不要這樣,除非你確定Bob對密碼學很感興趣。即使Bob拿到了密鑰,你手把手教他解密,把最后的I LOVE YOU的信息給解出來也不是件容易的事。
五
非對稱密鑰
對稱密鑰有個問題,情書發送的時候,要順帶把鑰匙也給對方,不然對方是解不開的,此時不僅要保護情書不落入情敵手中,同時也要確保密鑰的安全。也就是說對稱密鑰存在密鑰配送的問題。
1976年,美國學者Dime和Henman為解決信息公開傳送和密鑰管理問題,提出一種新的密鑰交換協議,允許在不安全的媒體上的通訊雙方交換信息,安全地達成一致的密鑰,這就是“公開密鑰系統”。
也就是我們經常提到的非對稱加密,咋個理解法?在《圖解密碼技術》里面提了個非常有意思的說法解釋公鑰和私鑰的關系。
假如Alice到超市購物要存包,先投一枚硬幣,此后空箱子彈開,你放上你的私人物品后,合上寄存柜的門,然后自動彈出一個小紙條,那個小紙條你得拿好,上面的條形碼是唯一的,到時拿著紙條對著掃碼機掃一下,解鎖后寄存柜打開,然后完成這個過程。
這樣一套自動化系統成功的解決存包管理的問題,同時將寄存柜變成了公共設施,同時還能收一筆使用費用。其中硬幣相當于公鑰,誰都可以有,你有了一塊錢就可以鎖上柜子,然后你的柜子只有你自己的紙條能打開,相當于私鑰。
也就是說公鑰加密,私鑰解密。非對稱加密盡管增加了一套密鑰分發系統,但是相對于對稱加密每次都要隨帶密鑰,不僅提高了安全性,還省了內存。
關于非對稱密碼的算法實現,不得不提到RSA,其邏輯如下:
密文=明文^E mod N, 密文等于明文的E次方,然后除以N的余數。
E和N構成公鑰,D和N構成私鑰,中間的數學算法在此就不細展開了,如果大家感興趣查閱相關的資料。
不管是對稱加密,還是非對稱加密,解決的核心問題還是機密性,不希望別人看到個人的隱私信息,密鑰本身也同等重要,比如利用隨機數加密數據,也就是一次性密碼,只是長度與明文一樣長,保護明文與密鑰成本相同,那就脫離加密本身的初衷,但那也是唯一無法破解的密碼,不過沒有實用的價值,此時說世界上沒有絕對的安全,一點也不為過。
六
單向散列函數
如果加密和解密的渠道都是正常進行的,萬一有人篡改了消息的內容,又該如何保證 呢?
每次發來的文件消息數據量巨大,不可能挨個原文比對驗證完整性,那工作量太大了。此時單向散列函數就出現了。
單向散列函數,首先是單向不可逆的,你無法通過散列值計算出明文,另外是壓縮數據,不管多大的數據,都可以計算出固定長度的散列值。最后就是消息不同,散列值也不同,消息稍微有點變化,散列值本身就會有很大的變化。
如果說消息傳遞時空間的有效性,你可以通過安全傳輸協議來保證其安全,如果消息時間的有效性,你可以通過前后對比計算散列值得到結果,針對昨天和今天的校驗值,你如何校驗呢?此時計算消息的散列值,然后對比,這問題就可以解決了,其邏輯步驟如下:
七
消息認證碼
Bob怎么確定發送者是Alice呢? 這就要驗證消息的合法性,剛才只是按照消 息原文計算了散列值,比對內容是否有篡改,主要應用的是昨天跟今天消息的對比,不涉及到消息傳輸。 今天Bob收到情書了,想確定是Alice發來的,此時就要考慮密鑰問題了。
其實消息認證碼就是一種與密鑰相關聯的單向散列函數,有了共享密鑰的參與就可以驗證消息來源的合法性了,共享密鑰只有發送者和接收者知道,Alice和Bob的小秘密才足以捍衛。其工作流程如下:
八
數字簽名
通過消息認證碼可以識別消息是否被篡改或者發送者身份是否被偽裝,也就可以校驗 消息的完整性,還可以對消息進行認證。 如果Alice向Bob借了1000塊錢,借錢過程都是合理合法,萬一有天Alice否認沒有找Bob借 過錢呢?
對稱加密里面,密鑰是雙方都知曉,非對稱里面公鑰是公開大家都知道的,私鑰只有Bob知道,真正屬于Alice的個人信息并沒有,也就是內容沒毛病,就是沒有簽字畫押,對了抗抵賴性,此時數字簽名就派上了用場。
在非對稱密鑰里面,公鑰加密,私鑰解密。
在數字簽名里面,私鑰簽名,公鑰驗簽,對于初學者來說容易弄混,但是從邏輯上可以這么理解,簽名是具有個人屬性獨一無二的,當然得用Alice得私鑰簽名,而驗簽則是任何需要驗簽得人都可以持有。
驗證簽名就是檢查該消息的簽名是否真的屬于Alice,驗證的結果可以是成功或者失敗,成功則以為著這個簽名是屬于Alice的,失敗則意味著這個簽名不是屬于Alice的。
九
總結
密碼學真是為了保護Alice 和Bob的小秘密操碎心,對稱密鑰只有一個密鑰,加解密便 捷快速,但密鑰同消息一起傳輸又不太安全,非對稱密鑰解決了密鑰管理的問題,可又擔心別人篡改了Alice情書的內容,費盡心思設計單向散列函數實現了數據比對的輕量化,Bob擔心Alice借錢不承認,特意設置了數字簽名,真的是太難了。
安全的本質就是信任,當你不信任對方時,會千方百計的校驗對方的身份,設置各種密 碼措施,如果不表白似乎就沒這么多事了,但為了人類的繁衍的,科技的進步,你總歸是要走下去的。
責任編輯:haq
-
信息安全
+關注
關注
5文章
675瀏覽量
39559 -
數字簽名
+關注
關注
2文章
76瀏覽量
13996 -
函數
+關注
關注
3文章
4367瀏覽量
64136
發布評論請先 登錄
如何在MBDT中使用S32k344進行加密?
年前再補課!國產 ARM 平臺上演加密解密秀教學!

加密芯片的一種破解方法和對應加密方案改進設計
【RA-Eco-RA4E2-64PIN-V1.0開發板試用】RA4E2使用之AES128加密和解密
淺談加密芯片的一種破解方法和對應加密方案改進設計
淺談加密芯片的一種破解方法和加密方案改進設計
加密算法的選擇對于加密安全有多重要?
對稱加密技術有哪些常見的安全漏洞?
socket 加密通信的實現方式
UID加密安全啟動原理分析

評論