1. 程式人生 > >3.04 賬戶體系與安全設計

3.04 賬戶體系與安全設計

  • EOS賬戶依賴於ECC加密演算法
  • 虛擬機器管理智慧合約與EOS賬戶體系有交叉

1.賬戶、許可權管理
在這裡插入圖片描述

  • EOS許可權管理
    在這裡插入圖片描述

2.錢包(Wallet)

  • 儲存金鑰
  • Lock和Unlock狀態,需要密碼去解鎖
  • 簽名授權,轉賬時實際上就是做一個簽名

3.賬戶(Account)

  • 可讀名字(12字元),被個人或組織(多人)擁有
  • 多許可權管理、支援多簽名、支援自定義許可權
  • 可定義Action和Handler

4.Action和Handler

  • Action和Handler的區別
    在這裡插入圖片描述

5.許可權管理舉例

  • 預設賬戶配置
  • 單一簽名:有一個key,就擁有所有許可權,是不安全的
    在這裡插入圖片描述
  • 多簽名和自定義許可權控制
  • Owner有兩個賬戶,權重都是1,加入想用Owner去變更資料,bob賬戶自己是做不了的,他權重是1,但Owner要求閾值為2,也就是大於等於2才可以
    在這裡插入圖片描述

6.被盜賬戶恢復

  • 賬戶A預先指定一個恢復賬戶B
  • 若賬戶A私鑰被盜,賬戶A最近30天活躍的任何一個owner key與賬戶B一起,可以重置賬戶A的owner key,恢復對賬戶A的控制權

7.EOS虛擬機器環境介紹

  • EOS虛擬機器類似以太坊的EVM,是一個沙盒的環境,與本機是隔離的、安全的執行環境,是EOS中執行智慧合約的容器,從設計上與EOS.IO是分離的
  • LLVM是一系列分模組、可重用的編譯工具鏈,提供了一種程式碼編寫良好的中間表示,可以作為多種語言的後端,還可以提供與變成語言無關的優化和針對多種cpu的程式碼生成功能
  • 傳統的靜態編譯器(如gcc)通常將編譯為三個階段,分別由三個元件來完成具體工作,分別為前端、優化器和後端,如圖
  • 前端接收原始碼,後端產生機器程式碼,也就是可執行檔案,比如C語言編譯過程如圖下面
    在這裡插入圖片描述
  • LLVM架構的主要組成部分,與gcc類似,也分3個階段,不過比gcc複雜的多
  • 前端:獲取原始碼,可選擇不同的編譯器來作為LLVM的前端,如gcc,clang
  • 優化器:優化程式碼
  • 後端:生成實際的機器碼
    在這裡插入圖片描述

    在這裡插入圖片描述

8.WebAssembly

  • 是一個虛擬化的組合語言
  • 也就是WASM最終執行的形式
  • 它允許用諸如C、C++這種程式語言編寫執行在web瀏覽器中的程式
  • demo網址:https://webassembly.org/demo/
  • 最終編譯為.wasm檔案,WebAssembly支援最好的編譯器工具鏈是LLVM,當前端語言變為LLVM IR,也就是中間程式碼時,說明LLVM已經理解了程式碼,它會對程式碼自動做一些優化
  • WebAssembly格式最終會產生兩種檔案,wasm和wast
  • wasm是二進位制格式
  • wast是可讀的文字格式
  • C++寫的智慧合約會生成wasm檔案
  • eos的虛擬機器環境:WAVM(WebAssembly Virtual Machine)支援wasm和wast

9.ECC加密演算法

  • 橢圓曲線加密演算法(ECC)的應用很廣泛,TLS、PGP、SSH都在使用它,包括比特幣、以太坊和EOS
  • ECC應用了離散數學中的有限迴圈群,構成了一個單向函式Q=nP,構成了一對金鑰
    在這裡插入圖片描述

10.ECDH演算法

  • EC是elliptic curves的意思,DH是Diffie-Hellman的意思,是金鑰協商演算法,不是加解密演算法
  • 應用場景:兩端(Alice和Bob)想要安全交換資訊,並且第三方不能獲取到資訊,需要約定一個對稱加密金鑰

11.ECC與RSA對比

  • ECC演算法單位安全強度高於RSA演算法,ECC更難被破解
  • ECC演算法計算速度更快