非對稱加密及其應用

非對稱加密及其應用


怎麼證實你是你?

  • 去銀行開戶html

    • 難點:KYC (Know Your Customer)
    • 目的:可證實 + 不可抵賴
    • 方法:人臉識別 + 身份證

怎麼證實你的服務/應用是你的?

  • 產商驗證快應用git

    • 難點:怎麼證實你的快應用是你的
    • 目的:可證實、完整性、不可抵賴
  • https算法

    • 難點:經過不可信的網絡,創建可信任的鏈接
    • 目的:可證實、完整性

方法是什麼?


數學

  • RSA 加密算法瀏覽器

    • 互質數相乘容易 5 * 9 = 45
    • 互質數因數分解很難 45: 1,5,3,9,15,和 45
    • 越大的數越難

  • 橢圓曲線加密算法服務器

    • 從起始點作切線,找到切線與曲線相交點很容易
    • 從相交點,找到起始點很是難
    • 傳言常規的橢圓曲線加密算法,被美國埋下了漏洞


密碼學

  • 非對稱加密須要兩把鑰匙
  • 用於其中一把進行加密,只能用另外一把進行解密
  • 留給本身的叫作私鑰,暴露給外界的叫公鑰


演示

  • 使用 openssl 生成 keys
  • 公鑰加密,私鑰解密 Demo
  • 私鑰加密,公鑰解密 Demo

非對稱加密


方案:怎麼證實你的快應用是你的?

  1. 快應用: 數學 (生成)=> 私鑰 + 公鑰
  2. 快應用: 私鑰 + 程序 (非對稱加密)=> 加密的快應用
  3. 廠商:加密的快應用 + 公鑰 (非對稱解密)=> 快應用網絡

    • 若是公鑰私鑰不匹配,解密出來的是亂碼

解決的問題

  • 可證實: 你有辦法證實,快應用是你的
  • 完整性:快應用沒有被第三方修改過
  • 不可抵賴:快應用被查水錶的,產商找你對帳,你否定不了

方案:怎麼證實瀏覽器請求的服務器返回的消息是服務器的?

  1. 服務器:數學 (生成)=> 私鑰 + 公鑰
  2. 瀏覽器:公鑰 + 臨時通信密碼 (非對稱加密)=> 加密的密碼
  3. 服務端: 私鑰 + 加密的密碼 (非對稱解密)=> 臨時通信密碼
  4. 服務端:臨時通信密碼 + 信息 (對稱加密)=> 加密的信息
  5. 瀏覽器: 臨時通信密碼 + 加密的信息 (對稱解密) => 信息

解決的問題

  • 可證實 服務器有辦法證實,response 是他發送的
  • 完整性 response 被人修改後,能夠查出來

非對稱加密表達式

  • Aliceapp

    1. hash: x = hash(data)
    2. send: c(x) and data
  • Bobgitlab

    1. receive: c(x) and data
    2. verify: d(c(x)) = x = hash(data)

非對稱加密完整流程


問題

  • 產商怎麼知道你的快應用公鑰是你的?
  • 瀏覽器怎麼知道你的服務器的公鑰是你的?

誰能證實?


Alice 和 Bob 找一個第三方來證實


  • Certificate Authority 數字證書認證機構擔任可信的第三方角色
  • 對比:電信服務商 擔任不可信的第三方角色


數字簽名獲取實現(我的推理未驗證)

  1. Alice: 數學 (生成)=> 公鑰 + 私鑰
  2. Alice : 公鑰 (發送)=> CA
  3. CA: 公鑰 + 信息 (非對稱加密)=> 加密的信息1
  4. Alice: 私鑰 + 加密的信息1 (非對稱解密)=> 信息
  5. Alice: 私鑰 + 信息 (非對稱加密) => 加密的信息2
  6. CA: 公鑰 + 加密的信息2 (非對稱解密) => 信息
  7. CA: 數學 (生成)=> 公鑰2 + 私鑰2
  8. CA: 公鑰2 + 信息(公鑰、過時時間等) (非對稱加密)=> 數字證書

簡化版獲取證書

  1. 快應用獲取證書
  2. CA 的生成算法是公開的,Alice 能夠驗證 CA 不會保留本身的私鑰
  3. Alice 的公鑰和私鑰由 CA 生成,而不是 Alice 本身生成
  4. CA 只需給將證書和私鑰給 Alice 便可

思考: CA 如何證實本身是 CA?


再找個可信的第三方來證實

...


最後的可信的第三方是操做系統的 CA


Https 流程


個人一些錯誤操做

  • 我把快應用的私鑰和證書傳到了 gitlab 上了
  • 兩次打包過程當中,使用了兩個不一樣的私鑰和證書
相關文章
相關標籤/搜索