絕密秘密私密加密
前些日子,有同學在飯桌上問我微信錢包,是不是會被人偷走。我真不知道怎麼準確回復,一則我只是應用級老菜鳥,水平有限。二則這是系統問題,不是三言兩語可以講清楚。只能這樣簡單回復:莫亂點鏈接,莫亂下載文件,支付密碼是絕密,只有在確定是官網情況下才輸入。平時密碼管理要設置成三個不同密碼,絕密的支付密碼,保密的登陸密碼,隨意的通用密碼。高安全等級系統入侵往往不是系統本身問題,而是密碼管理沒有分級,不法分子竊取低等級密碼,直接入侵高級系統。比方:註冊一個遊戲網站,密碼和微信支付密碼相同,攻破低級別密碼後,直接就可以使用了。信用卡小額支付可以設置為免密碼,我起初不明白這是為什麼,其實就是方便使用,同時也是對密碼的保護。
有些東西要自己多少會一點,明白底層邏輯才能夠對事物有所了解。看《暗戰》時碰巧看到了有關加密問題的普及版本書籍,內容比較淺,對加密有一些了解,覺得一點味道,分享給朋友。
RSA演算法加密,是最典型的加密方式。RSA的安全基於大數分解的難度。其公鑰和私鑰是一對大素數(100到200位十進位數或更大)的函數。從一個公鑰和密文恢復出明文的難度,等價於分解兩個大素數之積(這是公認的數學難題)。
RSA的公鑰、私鑰的組成,以及加密、解密的公式可見於下表:
看這個有點頭大了吧!其實就是我們小學初中學習的內容,先複習一下:
一、 什麼是「素數」也稱為「質數」?
素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。例如,15=3*5,所以15不是素數;又如,12=6*2=4*3,所以12也不是素數。另一方面,13除了等於13*1以外,不能表示為其它任何兩個整數的乘積,所以13是一個素數。素數也稱為「質數」。
二、什麼是「互素數」(或「互質數」)?
小學數學教材對互質數是這樣定義的:「公約數只有1的兩個數,叫做互質數。」這裡所說的「兩個數」是指自然數。
三、什麼是模指數運算?
指數運算誰都懂,不必說了,先說說模運算。模運算是整數運算,有一個整數m,以n為模做模運算,即m mod n。怎樣做呢?讓m去被n整除,只取所得的餘數作為結果,就叫做模運算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。
模指數運算就是先做指數運算,取其結果再做模運算。
好,現在開始正式講解RSA加密演算法。
演算法描述:
(1)選擇一對不同的、足夠大的素數p,q。
(2)計算n=pq。
(3)計算f(n)=(p-1)(q-1),同時對p, q嚴加保密,不讓任何人知道。
(4)找一個與f(n)互質的數e,且1
(5)計算d,使得de≡1 mod f(n)。這個公式也可以表達為d ≡e-1 mod f(n)
這裡要解釋一下,≡是數論中表示同餘的符號。公式中,≡符號的左邊必須和符號右邊同餘,也就是兩邊模運算結果相同。顯而易見,不管f(n)取什麼值,符號右邊1 mod f(n)的結果都等於1;符號的左邊d與e的乘積做模運算後的結果也必須等於1。這就需要計算出d的值,讓這個同餘等式能夠成立。
(6)公鑰KU=(e,n),私鑰KR=(d,n)。
(7)加密時,先將明文變換成0至n-1的一個整數M。若明文較長,可先分割成適當的組,然後再進行交換。設密文為C,則加密過程為:。
(8)解密過程為:。
當然,實際運用要比這複雜得多,由於RSA演算法的公鑰私鑰的長度(模長度)要到1024位甚至2048位才能保證安全,因此,p、q、e的選取、公鑰私鑰的生成,加密解密模指數運算都有一定的計算程序,需要仰仗計算機高速完成。這樣的密碼想暴力解密,資料表明用最快的計算機也需要幾十年。
沒有基礎的同學一點燒腦吧,呵呵,我也是,自己動手做一次體會就不一樣了,搞明白後,你會覺得蠻有意思。有幸是我接觸加密比較早在1994年編寫資料庫是就有個需要加密的問題,用戶的登陸密碼,當時寫這個程序的是同事小金,當時就只是簡單的加密,用戶初設密碼通過一個函數改變面貌存資料庫,登陸時也是通過函數轉化進行比較。這樣即使有人看到了密碼資料庫的內容也一下子不知道登陸密碼,對超級用戶也做了防範,只能刪除修改密碼,沒有辦法查看用戶密碼。
安全問題其實是全方位的,講件讓老菜鳥深感無奈的事,我市XXX管理政務軟體(領導相當重視的工作)並且映射到公網(互聯網)上了,分配下來的用戶名和密碼,用戶居然不給修改密碼許可權,用戶名還是有規律命名,系統管理也太外行了吧,我知道基層用戶名密碼後,秒破該系統,稍用腦就成功入侵所謂高大上政務系統,無言!所以關於系統安全的事,是典型的系統問題,單方面做得再強大,聰明或者幸運的攻擊者肯定會找最薄弱點攻擊,單方面努力是做無用功。
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:海鄰 |