密碼學I:什麼是密碼學

本文章原為Markdown所寫,請訪問作者博客以獲得更佳閱讀體驗。

課程地址請見Coursera。

密碼學的核心

  • 安全密鑰的構造
    • 在協議結束時,兩方均能獲得一個只有通信雙方知道的密鑰k
    • 通信雙方均能確信自己是在和對方通信。(而不是和其它什麼人通信)
  • 安全通信
    • 使用k密鑰加密的信息是絕對安全且可信的。
      • 個人理解:即 密鑰安全 ≡ 信息安全 ,密鑰可信完整 ≡ 信息可信完整

關鍵:密碼學應保證信息的安全性完整性

但是密碼學還能做到更多

  • 數字簽名
    • 關鍵:基於內容的簽署函數
      • 個人理解:即內容(文本)不同或密鑰(特徵)不同,得到的簽名都不同。
  • 匿名通信
    • Mixnet:通過多重代理實現通信雙方的互相不可知單方可知
      • 即 發信人不知道收信人,收信人也不知道發信人,代理伺服器不知道「發信人在和收信人通信」。
      • 或 發信人知道收信人,但 收信人不知道發信人,代理伺服器不知道「發信人在和收信人通信」。
  • 匿名電子貨幣
    • 收款人不知道付款人(付款人匿名)
    • 阻止付款人將 一單位貨幣 非法拷貝多次以得到 N單位貨幣

    • 關鍵:當一單位電子貨幣被消費一次,則付款人匿名;但若一單位電子貨幣被消費多次(出現了非法拷貝),則付款人信息被公開。

協議

安全多方計算

  • 保證「外界只知道輸出的結果,而不知道用戶的輸入(因為可能包含不應透露的信息)」?
    • 通常情況下,這是對alpha=f(x1, x2, x3, ... ,xn)進行計算,公布alpha 的計算結果且保證x1, x2, x3, ... ,xn不被泄露。
    • 「一種較呆板、不安全的方法」:找到一個「可信機構」,將輸入交給可信機構,由可信機構計算並輸出結果。但你需確保可信機構是可信。(因為可信機構能夠掌握這些 「不應被泄露」 的輸入)
    • 密碼學中非常中心的理論:如果任何計算能通過將該計算交給「可信機構」計算來完成,那麼該計算不依賴「可信機構」也一定能完成。

      • 可信機構一定不必須。

關鍵:各個參與者之間互相建立通信,通過某種協議,使得在計算結束後,每個參與者只知道自己的信息和計算結果。

密碼學的「魔法」

私密外包計算

  • 搜索

    • 通信發起方將加密後的信息傳送給接收方,接收方可以依據已經加密後的信息進行搜索運算並返回搜索結果,但接收方不知道信息的實際內容(只知道加密後的內容)
      • 接收方能對加密後的信息進行特定運算,但接收方不知道信息本身。

零知識證明

通信發起方能夠向接收方證明「我擁有A」,並且接收方能夠確信「發起方擁有A」,但是接收方不知道A是什麼

一門嚴謹的科學

三個步驟

  • 給出一個「威脅模型」
    • 攻擊者會對數字簽名的「可靠性(不可偽造)」發起攻擊
  • 證明「任何需要通過方案去破解系統的攻擊者都能解決難題B
    • 任何攻擊者要攻擊數字簽名的可靠性必須能夠解決因子整數分解
  • 證明難題B是「不可解決」的
    • 因子整數分解是普遍認為不可解的
  • 最終證明:該威脅模型下沒有一種方法能夠攻破體系
    • 該體系在該威脅模型下是安全的

本節完

推薦閱讀:

實用密碼學工具——Digital Signature
在讀密碼學英文文獻的時候,總是會遇到一些專業辭彙或短語搭配,但是上網查找又查不到,有什麼好辦法呢?
Don't Panic! KRACK 沒你想像的那麼糟
軍事級加密演算法有哪些?
【科普】白盒密碼技術

TAG:密码学 | 信息安全和密码学 | 信息安全 |