早在網絡時代來臨之前,甚至現(xiàn)代工業(yè)萌芽之前铛铁,信息的加密就已經成為某些人和機構的剛需了。
說起來舌镶,信息安全其實無處不在炕舵,要實現(xiàn)信息安全,最為直接的辦法莫過于用手捂著小聲說話菇怀,又或者是把字條揉成紙團丟給對方夷家,但要真正談的上加密(encryption),大概要到古希臘的密碼棒(scytale)敏释,麻匪的哨子這一級別才行了库快。
Rex覺得,曾經風靡一時的火星文也能算得上是一種加密钥顽,只是它的密鑰已經提前放在部分人的腦子里了~?
火星文加密:ゞ灬牜油惈坷以萇得哽迏╰→?
在數(shù)字加密普及之前义屏,一種簡單粗暴的辦法也被大量使用過,那就是只用移動存儲設備存放敏感信息蜂大,這包括磁帶闽铐,軟盤,和之后的移動硬盤等等奶浦,這種純物理式的保護安全系數(shù)很高兄墅,只有在需要時才進行讀取,但是對遠程的信息傳輸就完全不適用了澳叉。
密碼加密
還是在古希臘隙咸,這里出現(xiàn)了最早的一批密碼使用者沐悦,通過一個特定的規(guī)則,把原本的文字變化成雜亂無章的信息五督,只有知道這一規(guī)則的人才能推測出原文藏否,這就是加密和解密的過程。
我們曾經創(chuàng)造出了無數(shù)種加密的規(guī)則,簡單的諸如把每個字母往后移動若干位(凱撒大帝曾使用過的方法)基矮,復雜的可能會用各種符號的組合來代替原始的字母等等淆储,但是這種人工完成的規(guī)則無論多么復雜,在擁有強大算力的電腦面前都變得蒼白無力了家浇。有了電腦的運算速度遏考,只需要大致判斷規(guī)則的類型,就可以用基于窮舉法的暴力破解來輕松破譯蓝谨。
另外灌具,基于字母頻率,我們也可以根據加密片段里不同字母(符號)的出現(xiàn)頻率來找到些蛛絲馬跡譬巫。比如咖楣,一段文字里有兩到三種符號出現(xiàn)得很多,那它們很可能就是字母e芦昔、t诱贿、a變換之后得來的。類似地我們可以猜測咕缎,如果原文是由中文字符變化而來珠十,出現(xiàn)最多的部分是不是應該對應“的”這個字呢?
無論如何凭豪,隨著電腦的普及和我們對文字加密的不斷研究焙蹭,加密和破解的斗爭開始從人與人之間的博弈上升到了電腦與電腦的較量。
使用密鑰
要用電腦代替人腦嫂伞,加密的規(guī)則也必須變成電腦可以“讀懂”的規(guī)則孔厉,這時加密算法就誕生了,而與加密對應的破解辦法被稱為蜜月密鑰帖努,它就是還原加密信息的鑰匙撰豺。
對稱密鑰加密(Symmetric Key Encryption)和不對稱密鑰加密(Asymmetric-key Encryption)或者叫私鑰和公鑰加密,是兩種不同的加密解密策略拼余。前者的原理和我們自己手工加密一樣污桦,原來我們寫密信的時候會把唯一的解密方法告訴對方,而對其他人保密匙监,同樣地凡橱,唯一的密鑰也只安裝在要相互交流的電腦上小作。
當然,在對稱密鑰加密里梭纹,幾個人之間需要分發(fā)躲惰、保管同一副鑰匙致份,被人偷走的概率也比較大变抽,黑客只用挑里面的軟柿子下手,偷到一把鑰匙就可以為所欲為了氮块。
為了解決這個問題绍载,1976年11月一聲炮響,IEEE上發(fā)表的一篇論文提出了新的加密思路滔蝉,公鑰加密出現(xiàn)了击儡。這次,要打開密碼鎖你需要兩把鑰匙蝠引,一把私鑰只保存在你的電腦上阳谍,另一把公鑰則是由你向大家公開發(fā)放的,誰想和你互通下有無螃概,你就發(fā)給他一把公鑰矫夯,讓他用公鑰把信息上鎖,收到信息后吊洼,你掏出自己發(fā)放的公鑰和唯一一把私鑰训貌,微微一笑解開了密碼。
第一代對稱密鑰在1970年左右投入使用冒窍,這種基于DES(DataEncryption Standard)標準的密鑰長度只有56個比特递沪,對應的可能組合數(shù)量是7*10^16種。后來計算機的速度大幅提高综液,這么多種可能的組合也能被很快窮舉出來款慨,于是更大更長的密鑰標準出現(xiàn)了,那就是AESAdvanced Encryption Standard)標準谬莹,密鑰長度最高達到了256比特樱调。
再往后,越來越大的密鑰和公鑰加密的廣泛應用不斷提高著我們網上沖浪時的信息安全指數(shù)届良。
加密算法里的數(shù)論
現(xiàn)在的加密算法中最為核心的一點莫過于對大質數(shù)的運用笆凌。我們都知道,大質數(shù)的檢驗和分解是一個極其耗時的過程士葫,而我們已經證明了質數(shù)的無限性乞而,即存在無限個質數(shù),所以我們可以用來加密的大質數(shù)可以說是取之不盡用之不竭的慢显!
然而欠啤,選擇質數(shù)作為產生密鑰的基礎,是因為質數(shù)本身具有的神奇性質屋灌。這需要我們從“元”開始說起洁段,對于整數(shù)加法而言,單位元是0共郭,它是加法運算里的標尺祠丝,是一個最小單位的存在,0+5=5,0+10=10,而一個數(shù)的逆元e意味著e+x=0除嘹,這就是相反數(shù)的概念写半;對于乘法,顯然地尉咕,單位元是1叠蝇,因為1*5=5,?1*10=10,通過這個單位元我們還產生了倒數(shù)的概念年缎,即e*x=1悔捶。
放到計算機里,我們希望找到一個運算单芜,可以在大量計算之后得到的結果還在一個比較小的范圍內蜕该,不然程序不斷運行,結果也越來越大缓溅,這顯然有違我們可持續(xù)發(fā)展的治國理念蛇损。所以加法和乘法都不能滿足要求,于是我們找到了取余數(shù)(取模)這個運算坛怪。
說了這么多淤齐,最后把取模和質數(shù)聯(lián)系起來的,正是單位元袜匿。因為1%5=5,?1%10=10更啄,(%是取模運算,就是算前面一個數(shù)除以后面一個數(shù)的余數(shù))居灯,所以1也能看作取模運算的單位元祭务!而質數(shù)則保證了我們在取模的時候總能得到單位元,程序運行時可以正常使用四則運算怪嫌,同時還不擴大所用的數(shù)的集合义锥。
質數(shù)對于加密算法的重要性還包括很多很多,牽扯到抽象代數(shù)和離散數(shù)學的內容Rex也只了解到皮毛岩灭,當我想深入咨詢計算機專業(yè)的小伙伴時拌倍,卻得到了如下的回答,畢竟學海無涯嘛,大家共勉~
如果跳過繁瑣的數(shù)論柱恤,我們也可以從簡單的例子里看到其中的精髓数初。在之前的當談論區(qū)塊鏈時我們在談些什么一文中,我們曾提到過哈希(Hash)算法梗顺,我們的公鑰其實也是基于這一算法泡孩,他最大的特點就是:極難破解,極易驗證寺谤,舉個栗子:
當我們輸入質數(shù)2333仑鸥,哈希算法可能會這樣處理:2333*1777,輸出結果=4145741
雖然是質數(shù)相乘矗漾,但如果我們只知道輸出的結果锈候,要反推輸入的數(shù)是極難的薄料。要是其中一個因子1777被作為密碼提交敞贡,又可以馬上驗證它的正確性,同時知道原始的輸入值是2333摄职,這就是這類算法的保密功能所在誊役。
現(xiàn)在的網絡世界,早已離不開數(shù)論的支撐谷市,而數(shù)學領域上的每一次突破都有可能給我們的網絡生活再次帶來顛覆性的改變蛔垢,所以下一次當看到我們在純數(shù)學領域投入巨大資源的時候,應該知道迫悠,它們身上背負了人們怎樣的希望鹏漆。
##由于這兩周Hulk實驗工作繁忙,我也進入了最后的準畢業(yè)階段创泄,牛油果的文章產出比以前更慢了= = 但還是有越來越多的小伙伴找到并關注了我們艺玲,感謝大家支持的同時,也希望有興趣的小伙伴聯(lián)系我們投稿合作鞠抑,牛油果會越來越好的饭聚!##
來源參考
https://computer.howstuffworks.com/encryption4.htm
https://www.techworld.com/security/what-is-encryption-3659671/
https://blog.csdn.net/dog250/article/details/38958637