1. 程式人生 > >【數字_ID】公鑰密碼體制簡介

【數字_ID】公鑰密碼體制簡介

公鑰密碼體制簡介

  • 製作:數字_ID
  • 時間:2018年05月28日

1. 公鑰密碼體制概述

  • 公鑰之前,所有的密碼都是基於代換置換
  • 公鑰密碼演算法的基本工具是數學函式
  • 非對稱的形式使用兩個金鑰,對保密性金鑰分配認證等都有著深刻的意義
  • 在產生公鑰密碼體制之前,先來談談對稱密碼的侷限性

對稱密碼的侷限性

  • 金鑰分發問題:必須保證傳輸金鑰的通道足夠安全
  • 金鑰量問題:每兩人都需要一對金鑰,金鑰量太大
  • 數字簽名問題:接收方可以偽造簽名,傳送方可以否認傳送過的訊息
  • 無法解決陌生人之間的身份認證和交易資訊認證問題
  • 由於以上種種,我們的主角公鑰密碼就要登場了!

公鑰密碼提出

  • 1976年,W.Diffie和M.Hellman提出公鑰密碼體制
  • 公鑰發放,私鑰保留,公鑰加密,私鑰解密,私鑰簽名,公鑰驗證
    常見:公鑰+對稱組合使用

公鑰密碼體制的應用

  • 加密、解密
  • 數字簽名
  • 金鑰交換:兩方合作以便交換會話金鑰

公鑰密碼體制的特點

  • 金鑰分發簡單:公鑰不需保密分發
  • 金鑰量大大減少:n個使用者只需n對金鑰
  • 可以實現數字簽名/身份認證
  • 可滿足不相識的人之間的保密通訊

公鑰密碼演算法應滿足的要求

  • 計算容易
  • 分析不可行
  • 加密變換和解密變換可以互換順序:D(E(m))=E(D(m))

公鑰密碼演算法的設計思想

  • 單向陷門函式

    f是一個函式,tf有關的一個引數,對於任意給定的x,計算y,使得y=f(x)是容易的。當不知道引數t時,計算f的逆向函式是難解的,當知道t時,則是容易的,引數t稱為陷門

  • 在公鑰加密演算法中,加密變換就是一個單項陷門函式

公鑰密碼演算法的分類

  • 基於大整數因子分解的公鑰密碼(RSA)
  • 基於有限域乘法群上的離散對數問題的公鑰密碼(ElGamal)
  • 基於橢圓曲線上的離散對數問題的公鑰密碼(ECC)
  • 以上三個是本篇部落格主要介紹的三種公鑰密碼體制,當然還有很多,比如:
  • 基於揹包問題的公鑰密碼
  • 基於概率的平方剩餘問題的公鑰密碼
  • 基於格的短向量問題的公鑰密碼
  • 基於餘代數編碼中的線性編碼問題的公鑰密碼
  • ……

2. 若干數論問題

  • 公鑰密碼體制的數學原理和數論有密切關係,可以說數論是基礎,不是一篇文章能講得清的,在這裡先講兩個會用到的數學難題

離散對數問題

  • 令素數p滿足p1含有另一大質數qq整除p1),及一整數g,1<g<p1
  • 若給定整數x,求y=gxmodp是簡單的
  • 若給定p,g,y,求x,則為DLP問題,是困難的

因數分解問題

  • 給定大素數p,q,求n=p×q,只要一次乘法
  • 對於給定n,求pq,即為因數分解問題FAC,是困難的

接下來開始主要介紹三個公鑰密碼體制

3. RSA公鑰密碼

  • RSA演算法是1978年由Rivest,Shamir和Adieman提出

RSA演算法描述

  1. 公鑰:選擇兩個互異的大素數pq,使n=p×qφ(n)=(p1)(q1)φ(n)是尤拉函式,選擇一個正數e,使其滿足gcd(e,φ(n))=1φ(n)>1,則將KU=(n,e)作為公鑰
  2. 私鑰:求出正整數d,使其滿足ed1modφ(n),φ(n)>1,則將KR=(d,p,q)作為私鑰
  3. 加密變換C=EKU(M)=Memodn
  4. 解密變換M=DKR(C)=Cdmodn

RSA解密證明過程

  • 關於解密,將d代入易證,單要注意證明過程中的兩種情況,gcd(M,n)=1