亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

軟件中的加密算法

 

這個雖然是閑扯淡的,但是看的時候請抓牢:

  • 我們一切以業務方案為目的,
  • 一些關鍵名詞和概念還是很認真。

加密簽名

一個故事

這是從別人那邊聽來的故事,作為安全知識的入門非常有意義。

  1. 一個國王英年早逝,留下年幼的王子,國王的弟弟就做了攝政王。
  2. 王子快18歲的時候,他叔叔派他做信使,給另外一個國王送信,還讓侍衛長跟著。
  3. 王子晚上趁著侍衛長睡著了,偷偷打開信件,看見里面的內容是: 請您殺了這個信使
  4. 王子于是把信件修改了一下:請把您的女兒嫁給信使
  5. 王子然后做了那個國家的駙馬。過幾年后,岳父也死了,他就做了國王,帶兵殺回去報仇。

叔叔的反思和改進

暫時不討論善惡,我們站在叔叔的立場上,看他哪些事情沒做好?

  • 數據的隱秘:他的信件內容被別人看到了。
  • 數據的篡改:他的郵件被人冒充了。

所以從技術層面上,我們可以給他一個有效建議,跟別的國王約定:

  • 針對第一個情況:他寫的信,每個字母向后偏移10個位置——數據被加密了
  • 針對第二個情況:商量了一個算式,每個信件,把全部字母的數字加起來,通過這個算式算出來一個新的數字,寫在信件最后,這樣除了他倆,沒誰能偽造信——數據被簽名了

PKI里的加密和簽名

在事實上,信息傳輸的物理通道是不安全的,【信使】作為信息的傳遞人,可以輕易的偷窺別人的信息,甚至“代表”別人發言。老外的思路是認可這個現狀,然后從數理邏輯上來應對這個問題。

Public Key Infrastructure,公開密鑰體系,就是針對這個情況的。 
這個體系的特點是,算法思路和實現都可以是公開的,只要保證Key的安全就可以。

這個章節里面,我們只要講到加密和簽名就可以了。

加密

加密根據密鑰可以粗略的分倆類

對稱加密

對稱加密,就是加密和解密的過程里面,用的key都是一個——我們稱為SecretKey。

  • AES:一般記得這個就可以了,因為現在好像也就它是最好用的
  • DES、3Des:我經常在代碼里面能看見的。
  • 其它

業務跟進:在前面我們給王叔的建議,很明顯是一個比較土的對稱加密方案。

非對稱加密

非對稱加密,加密和解密的密鑰不同,用于加密的稱為公鑰(PublicKey),用于解密的稱為私鑰(PrivateKey)。

業務跟進:我們的建議,國王們各自有一套公鑰+私鑰,私鑰自己保留好,公鑰發布給大家。誰想給某人寫信了,就用這個人的公鑰加密,信件半路上被人截胡了,也無法解密內容。

  • RSA:最出名的,在以前非對稱加密就是區分為RSA和其它,
  • ECC:當前最牛的規范,rsa也變成其它了
  • 其它:

對稱和非對稱的優劣對比

  • 對稱加密在技術上有優勢,同樣的安全級別下,加密解密的速度快很多
  • 對稱加密同時也兼具簽名功能
  • 但是在多用戶業務場景,有無法解決的問題:
  • 倆個人玩,一套SecretKey就夠了
  • 三個人玩,3套
  • 四個人玩,12套,
  • …… N的組合數量。
  • 結論:后面討論各自適合場景。

簽名和驗簽

業務跟進:我們的建議,國王們各自有一套自己的公鑰+私鑰,私鑰自己保留好,公鑰發布給大家。誰想發郵件,用私鑰對內容進行“簽名”,簽名的結果寫在信封上;收到郵件的人,用【發件人的公鑰】+【內容】+【簽名】進行驗簽,以確保這個郵件就是那個國王發的

JAVA偽碼表示如下

  • 簽名:byte[] sign(byte[] content, PrivateKey prvKey)
  • 驗簽:boolean verify(byte[] result, byte[] content, PublicKey pubKey)

小結

其實對稱加密可以忽略,我們就記得非對稱加密和簽名比較重要

  • 私鑰放在自己手里,用來解密和簽名,這倆個事情都明顯是個人的私密行為,因此私鑰
  • 公鑰發布出去,用來加密和驗簽,這倆個事情明顯是個人對外的公開行為,因此公鑰

我們的“完美”方案

到這里,我們就可以給王叔和其他的國王們一個比較完美的RSA方案

  • 每個國王自己做一套公鑰私鑰
  • 把自己的私鑰保存好,把公鑰送給其他的每個國王,
  • 同時也保存好其他國王送過來的公鑰,名稱不能搞亂了,更不能讓別人替換了
  • 發郵件的過程如下:
  • 把郵件的正文用自己的私鑰簽名,附在郵件最后
  • 用接受者的公鑰加密郵件的正文和簽名
  • 把信送過去
  • 收郵件的過程如下:
  • 用自己的私鑰解密,獲得郵件正文和簽名
  • 拿著發送者的公鑰,對正文和簽名進行驗簽

把自己的公鑰送到別人那邊,要包裝一下,那個就是公證書 
自己的私鑰也要好好的包裝一下,這個就是私證書

證書和證書鏈

證書的煩惱

假設國王們已經建立了證書體系,這個時候,某個國王英年早逝,他的弟弟扶持?/挾持?年幼的侄子攝政。很不幸的是,暴斃的國王把象征權力的個人私證書和其他國王的公證書都付之一炬。

于是攝政王需要自己做一套公鑰私鑰,然后派信使去見每個國王,送去自己的公鑰,拿回來對方的公鑰。這是一個痛苦的折磨,對于所有涉及到的人:

  • 對方國王怎么相信你? 
    突然證書說換就換,我是不是要跑一趟去求證一下?
  • 信使會不會有問題? 
    信使是很樂意用自己的公證書來代表國王的公證書。他做倆個證書,左手的代表國王A把公證書給國王B,右手的代表國王B把公證書給國王A,用不著第三個代表證書,他就可以作為中間人來偷看+篡改來回的信件了。

就實際情況來說,最安全的方式是,其他的國王親自過去,驗證新王,交換證書。

但是很明顯這個是一個成本很巨大的工作,而且很危險。說不定回家的半路上,哪個國王頭疼腦熱的,也英年早逝了,然后大家又要重新跑一趟,包括那個寶座還沒坐熱的攝政王。

注意:即使有了internet,這樣的場景下證書交換是不能通過網絡的,因為信任沒能解決,只能親自跑。

證書的本質就是信任

好在國王們都相信一個人——代表了神的意志的教皇。教皇說:你們也別這樣跑,來回折騰。我給你們的公證書上面加上主的簽名——當然也就是我代表主的簽名,以后大家就只要如此如此:

  • 保存一個公證書,那就是主的證書,只要相信他就可以了,這個是一切證書之根;
  • 你們所有人的公證書,都要經過主的簽名
  • 你發給別人帶有簽名的信件的時候,也要把你的公證書帶上——記得哦,是主給你簽名的公證書
  • 當別人收到你的信件、簽名、公證書時候,
  • 他首先要根據主留給他的公證書來驗簽你的公證書是不是經過主認證的,
  • 再用你的證書來驗證信件的簽名

更完美的方案

用一個證書給別的證書做簽名背書,產生了證書鏈,就解決了證書的 N*N 問題。

BTW:當某個國王派出軍隊出去征服新世界的時候,教皇一般也會派出一個大主教,授予他一個特殊的證書,這個證書是由教皇的證書簽名,但是它還可以給別的證書簽名。 
——這個就是多級授權。

其它

摘要MessageDigest不是加密

也不是所謂的“單向加密”,就是消息摘要

mac

message authentication code,一般不用。

分享到:
標簽:加密算法
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定