日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常见密码学算法

發布時間:2023/12/31 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见密码学算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記

分類


密碼學用于解決信息安全中的保密性,完整性,認證和不可否認性等問題。最初主要用于解決保密性。隨著密碼學技術的發展,逐漸應用到其它領域。
常見密碼學算法:DES,AES; RSA, ECC; Hash; Signature等。

分類

  • 對稱密碼
    • 流密碼
    • 分組密碼
  • 非對稱密碼

不同階段
古典/經典密碼(凱撒密碼),(1949 Shannon)近代密碼(DES/AES),(1976 Diffie-Hellman, 1977 RSA)現代密碼(RSA),(展望:量子密碼等)

參考:
Ref https://mp.weixin.qq.com/s/wiblmEu14iB1yx6g6sTCnw
Ref Wikipedia
Ref 密碼學發展史(https://github.com/guoshijiang/Cryptography_anyone_can_understand/blob/master/history/README.md)

各類算法


經典密碼

凱撒密碼

對稱密碼

加密和解密使用相同的秘鑰。優點是加密解密效率高,缺點是秘鑰的分發需要在隱秘通道進行。安全性取決于根據密文無法推出明文和秘鑰。

  • 基于異或的一次性密碼。(多個密文可以解密出秘鑰)(一次一密密碼被證明是絕對安全的密碼。1949 Shannon)

    • 秘鑰大于等于原消息,具備很好的安全性
    • 問題是秘鑰長度很大不易分配和管理
  • 流密碼。使用偽隨機生成器,根據初始秘鑰來生成一次性秘鑰。安全性取決于與初始秘鑰的保密性和偽隨機生成器的隨機性(不可預測性)。保密性較一次性密碼弱,但秘鑰容易分配和管理。
    使用流密碼要考慮安全性,例如同一個key不能使用兩次:

Stream ciphers, where plaintext bits are combined with a cipher bit stream by an exclusive-or operation (xor), can be very secure if used properly[citation needed]. However, they are vulnerable to attacks if certain precautions are not followed:
keys must never be used twice
valid decryption should never be relied on to indicate authenticity
From https://en.wikipedia.org/wiki/Stream_cipher_attacks

  • 分組密碼:加密的明文和輸出的密文長度相同,秘鑰決定了輸入明文和輸出密文的映射關系,且是1對1映射。為了加密任意長度的明文,引入了電子密碼本模式(Electronic codebook, ECB)和分組鏈接模式(Cipher block chaining, CBC)等。例如DES,AES

非對稱密碼

加密和解密使用不同的秘鑰。優點是秘鑰分發和管理更方便,且可以支持簽名等功能。缺點是加密和解密效率低。安全性取決于根據密文和公鑰無法推出明文和私鑰。

RSA系列

  • RSA
  • Diffe-Hellman Key exchange
  • DSA

ECC系列

  • ECIES
  • ECDH
  • ECDSA

各種算法


RSA

RSA 原理、構建、加解密和大數分解的安全假設
Ref http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
Ref http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
Ref wikipedia https://en.wikipedia.org/wiki/RSA_Security https://en.wikipedia.org/wiki/RSA

數學基礎

歐拉函數

歐拉定理

模逆元

如果ab對n模1

  • 則有ab = h*n + 1
  • 進一步有 m^ab = m^(hn+1) = m^(hn) * m

RSA構建

  • 取兩 個質數p,q,求得n=p*q, 歐拉函數phi(n)=phi§phi(q)=(p-1)(q-1)
    • 取兩個質數方便求解歐拉函數phi(n)
  • 取一個與n互質的數e,求解d使得e*d模phi(n)為1
    • ed模phi(n)為1,則有 m^(ed) = m^(hphi(n) + 1) = m^(h*phi(n)) * m 模n的值為m
  • (n,e)為公鑰,(n,d)為私鑰,其它數據如phi(n), q, p不公開
    • RSA的安全性保障在于大整數因式分解是個難題,已知(n,e)很難求解d使得 e*d模phi(n)的值為1
      • 求解d需要phi(n)
      • 而求解phi(n)需要p,q
      • 而從n求解p,q是個大整數因式分解問題

RSA加解密

  • 密文為m^d mod n
  • 明文為m^(d*e) mod n = m^(phi(n)+1) mod n = m ^ phi(n) * m mod n
    • 如果m和n互質,則明顯明文解密后為m
    • 如果m和不互質,也可證明明文解密后為m
      RSA上的算法有加解密,簽名,秘鑰交換等
      RSA的秘鑰長度應該在1024以上,重要場景需要2048

RSA乘法同態

  • A =Enc(a, pk_dn) = a ^d mod n
  • B = Enc(b, pk_dn) = b ^d mod n
  • A*B = Enc(ab, pk_dn) = (ab)^d mod n = a ^d * b ^d mod n

Diffie-Hellman key exchange

Diffie-Hellman密鑰交換算法
基于離散對數難問題
p為素數,假定g是生成器,基于x (1,2,…,p-1),有n使得x=g^n mod p

  • p和g公開
  • A: g^a mod p
  • B: g^b mod p
  • 則A*B = (ga)b mod p = (gb)a mod p
  • A + B = g^a + g^b mod p = g^(a+b) mod p

加法同態

  • A = g^a
  • B = g^b
  • A + B = g^a * g^b = g ^ (a + b)

ECC橢圓曲線密碼學

定義在橢圓曲線上的加法群,其中無窮遠點是單位元O。

  • 然后可定義逆元,加法運算,結合律,交換律。
  • 幾何定義可參見上面的鏈接。加法的代數計算見上面鏈接。
  • 如何在有限橢圓曲線上構造參數見上面鏈接

應用:
ECDH, ECDSA

Ref:
https://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introduction/
https://www.jianshu.com/p/3b810faff3ba

ElGamal 加密算法

基于Diffie-Hellman算法,基于離散對數難問題
https://zh.wikipedia.org/wiki/ElGamal%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95

  • Diffie-hellman版本
  • ECC版本

算法

  • Alice的公鑰和私鑰(a,g^a)
  • Bob的公鑰和私鑰(b,g^b)
  • Bob對數據m的加密數據為: 將m映射到曲線上一點,如(m,m_y),則加密為(g^b, m_y*((g^a)^b))

Difference of pedersen and elgamal

https://crypto.stackexchange.com/questions/11923/difference-between-pedersen-commitment-and-commitment-based-on-elgamal

  • Pedersen: gm*hr. No one know the y such that h=g^y.
  • Elgamal: g^r, gm*hr. receiver knows the y such that h=g^y.
  • If receiver knows the y such as h=g^y, then receiver can get g^m.
    ○ The main difference is that Pedersen commitments are unconditionally hiding. It will becomes to be computing hiding if
  • If sender knows the y such as h=g^y, then there is a trapdoor commitment in elgamal.

各種安全假設


http://blog.sciencenet.cn/blog-1362128-1095141.html
- 整數分解假設
- RSA假設
- 離散對數假設

數學基礎


集合論基礎

  • 非空集合,滿足封閉性,是廣群;再滿足結合律,是群;有單位元,是幺半群;有逆元是群;再滿足交換律,是阿貝爾群。
  • 群。<R,+>表示一個擁有滿足封閉性、滿足結合律、有單位元、有逆元的二元運算的代數結構,包括阿貝爾群、同態和共軛類。
    • 滿足交換律,則是阿貝爾群
  • 環。<R,+,*)表示一個環。單位元不同。
    • 在+上是一個阿貝爾群
    • 在*上滿足結合律,是一個半群
    • 對+和*滿足分配律
  • 域。設<R,+,* >是環,如果<R,+>和<R-{0},>都是交換群(“0”為<R,+>的單位元)且滿足分配律,則稱<R,+,>是域。比如:有限整數環<R,+,*>是域。

循環群是—種很重要的群,也是已被完全解決了的—類群。其定義為若—個群G的每—個元都是G的某—個固定元a的乘方,則稱G為循環群,記作G=(a),a稱為G的—個生成元。循環群有無階循環群和有階循環群兩種類型。
From https://baike.baidu.com/item/循環群

Next


  • Comparation of ECDH and DH
  • Comparation of ECDSA and DSA
  • 其它體系https://blog.csdn.net/jingzi123456789/article/details/104761739/
    • ElGamal
      • 加密數據具備乘法同態
    • Paillier
      • 加密數據具備加法同態

總結

以上是生活随笔為你收集整理的常见密码学算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。