這學期學了密碼學,雖然也是一門打水課,但是不記點什麼確實就真的是水過去了...好歹對稱金鑰演算法,公鑰演算法,數字簽名什麼的要簡單記述一下,別人問的時候至少要知道說些什麼。。。
對稱金鑰演算法:
對稱金鑰加密和解密時使用的金鑰是同乙個金鑰,其優點是加密速度快,缺點是不能作為身份驗證,金鑰發放困難。常見的對稱加密演算法有rc2,rc4,des,3des,idea,sdbi等。
當然,還會導致每一對通訊放都要儲存一對金鑰,導致金鑰管理困難。
公開金鑰演算法:
公開金鑰加密和解密使用的金鑰是不同的金鑰,分別稱為公鑰和私鑰,公鑰可以公開,私鑰則必須保密只能歸金鑰所有者擁有。其缺點是對大容量的資訊加密速度慢,優點是可以作為身份認證,而且金鑰傳送方式比較簡單安全。
關於公鑰與私鑰的加密與解密:私鑰加密公鑰可以解密;公鑰加密私鑰也可以解密。分別用於加密與簽名。
你只要想:既然是加密,那肯定是不希望別人知道我的訊息,所以只有我才能解密,所以可得出加密時公鑰負責加密,私鑰負責解密;同理,既然是簽名,那肯定是不希望有人冒充我發訊息,只有我才能發布這個簽名,所以可得出簽名時私鑰負責簽名,公鑰負責驗證。
其中,rsa演算法基於大整數因數分解的困難性,elgamal演算法基於有限域內求離散對數的困難性。
rsa演算法:
原文為m,公鑰為(e, n), 私鑰為(d, n),其中n = pq (兩個大質數乘積)
c = me mod n, (加密)
m = cd mod n = med mod n = m, (解密)
已知(e, n)如何計算d?
ed mod phi(n) = ed mod (p-1)(q-1) = 1
d與e在 (p-1)(q-1) 下互為逆元
已知e, p, q, 可以對數時間計算d
困難在於大質數乘積n的分解
零知識:a向b證明a掌握某事,但不想讓b知道這件事的內容。
feige-fiat-shamir身份驗證體制:仲裁人選擇乙個隨機數n為兩個大素數的乘積,分別產生公鑰與私鑰。甲有公鑰與私鑰,乙有公鑰,通過t次協議驗證甲有私鑰。
diffie-hellman:最早的公開金鑰演算法,用於分配金鑰,不能用於加密與解密。
甲選擇乙個數x,向乙傳送x = g^x mod n,
乙選擇乙個數y,向甲傳送y = g^y mod n;
甲計算k = y^x mod n,
乙計算k' = x^y mod n;
shamir的三次通過協議:甲乙雙方不用交換任何秘密金鑰或公開金鑰就可以安全通訊。
乙個可交換的對稱密碼: ea( eb(m) ) = eb( ea(m) ); (有點類似於diffie-hellman啊......)
學會了什麼呢。。。。學完後其實也就是鞏固了一下初等數論而已,明白了以前還不是很明白的一些知識... 囧
密碼學 密碼學基礎
密碼學是研究編制密碼和破譯密碼的技術科學。密碼學的安全目標至少包含三個方面 保密性 完整性 可用性。完整性 資源只有授權方以授權的方式進行修改,所有資源沒有授權則不能修改。可用性 資源只有在適當的時候被授權方訪問,並按需求使用。密碼系統由5部分組成 1 明文空間m 全體明文的集合 2 密文空間c 全...
密碼學 柵欄密碼
使用的時候通過設定解密的偏移量不一樣的話,會得出不同的解碼內容 一直設定不同的偏移位數 直到找到帶有cyberpeace 開頭的解碼內容 偏移量也就是分組的數字長度 一般就是flag了 有時候它也會全部的解碼都沒有flag的標誌,這時候一定仔細看題目給出的條件 還有的情況就是在題目裡面它會提示給你數...
密碼學 密碼學中幾種攻擊模式
本科畢業設計做完之後,一直覺得自己需要系統來學習一下密碼學,密碼學是乙個古老的學科,前人已經研究了太多太多,而伴隨著量子計算的逐漸發展,之前制定出來的密碼演算法都面臨著被淘汰的危險。今天記錄一下根據密碼分析者知道資訊的多少,密碼學中分為常見的幾種攻擊模式,以及它們主要用於什麼場合。在介紹攻擊模式之前...