中心化錢包安全方案

先來看獨立的密鑰安全技術

1 自建或單租戶 CloudHSM

優點:密鑰永不出硬件,無法導出,只能對外提供公鑰。
交易時,外部應用把消息哈希傳進去簽名,再把簽好名的結果拿出來用。
這種方式安全性拉滿,但成本高、容量有限,適合交易所熱錢包和高凈值用戶托管錢包。
AWS CloudHSM是FIPS 140-2 3 級驗證的硬件,是在您自己VPC下的專屬單租戶。
AWS 單租戶cloudHSM(在aws 上自建cloudHSM集群)很貴 每小時1-3美金。筆者自建一個集群且只有一個可用區,開了有兩三天,帳單干到了100多美金,差不多人民幣1000多塊。。嚇得測試結束趕緊關掉了
在這里插入圖片描述

2 AWS KMS

其實KMS也是使用的HSM硬件(FIPS 140-3級別) 但是是多租戶的。
在這里插入圖片描述
當然KMS支持自定義密鑰存儲,您可以與您的單租戶CloudHSM結合使用:在這里插入圖片描述

3 TEE環境

芯片級別的安全技術,像AWS的 AWS Nitro Enclave、Intel SGX、ARM TrustZone。

AWS Nitro Enclaves 是亞馬遜云科技提供的 TEE 解決方案,可同時兼容 Intel,AMD x86 處理器以及 Graviton arm 架構處理器,并支持 EC2 實例和 Amazon EKS(Kubernetes)計算服務。

Amazon Nitro Enclaves,旨在提供安全且高度隔離的計算環境,用于處理敏感數據和執行安全計算任務。它使用的 Amazon Nitro System 技術,可以通過硬件隔離技術將計算實例內的部分資源保護在一個受信任的硬件隔離區域中。Nitro Enclaves 采用 Nitro Hypervisor 技術,在 EC2 實例內部,允許您創建一個 CPU 和內存隔離的計算環境。它沒有持久存儲、交互式訪問或外部網絡,僅支持與其父實例通過 vsock 的方式進行安全通信。用戶無法通過 SSH 進入 enclave,并且父主機實例的進程、應用程序或用戶無法訪問 enclave 內的數據和應用程序。
在這里插入圖片描述

4. Wallet.data本地加密存儲

錢包生成密鑰對后,用AES算法把私鑰加密,存到數據庫或文件里,要用的時候再解密。
這種方式簡單便宜,但安全系數最低,容易被攻擊,適合低價值交易、測試錢包等。

有些人喜歡把上述單獨列出就作為解決方案來講解了 其實不然,實際生產中面對不同情況各種方案是要組合起來來使用的。同時我們不能脫離需求,而中心化交易所最常見的錢包需求就是生成錢包和保管私鑰,我們以此為標的,來列舉可能的方案:

目標🎯:生成ECDSA secp256k1公私鑰。(aws 區塊鏈領域加密算法僅支持secp256k1)

No.1

** A 方式一:TEE環境+自定義HSM密鑰存儲(自定義單租戶aws cloudhsm)**,【即 在 Nitro Enclaves 環境中運行 CloudHSM 的客戶端應用】。

舉例:在 Amazon Nitro Enclaves 中運行 Amazon CloudHSM 應用。

在某些需要使用 CloudHSM 的合規場景下,如果只是單單在 EC2 示例中運行- CloudHSM 應用,在主機被攻陷的情況下,有可能造成 CloudHSM 中密鑰被竊取,或者加解密,身份驗證、授權等被利用。針對這種情況,我們可以通過將 CloudHSM 應用運行在 Nitro Enclaves 隔離環境中,來進一步增強數據的安全性和完整性。
說白了就是在 Nitro Enclaves 環境中運行 CloudHSM 的客戶端應用。 私鑰的生成,簽名 等操作都是在HSM里執行的。
AWS提供的CloudHSM SDK只是CloudHSM集群管理的API, 并不是針對hsm中key操作(生成,簽名等操作)的API,
因為CloudHSM是硬件層面的安全硬件模塊,有自己的接口方案,所以它不支持“想當然式的API直接”調用,而是必須使用一套基于密碼學的接口方案和客戶端,例如:PKCS #11, OpenSSL Dynamic Engine,JCE provider。 具體可以參考AWS CloudHSM 使用指南

B 方式二:TEE+KMS:即 在 Nitro Enclaves 環境中運行【自定義程序】調用 AWS KMS。使用kms來幫助我們直接管理密鑰的生成,簽名等操作。這些都可以直接通過kms的api調用實現, 而無需像方式一那樣處理硬件模塊接口。

在這里插入圖片描述
注意,這里KMS的密鑰存儲理論上可以分為默認存儲和自定義存儲(自定義單租戶cloudHSM集群),但是我們的業務是生成錢包,是基于 非對稱 橢圓加密曲線secp256k1的,但aws kms的自定義密鑰存儲不能和非對稱加密一起使用,所以這里只能使用KMS的默認hsm存儲,即直接使用KMS服務。
在這里插入圖片描述

No.2

如上文提到的場景,( C ) 即單單在 EC2 實例中運行CloudHSM 應用。
或者 ( D ) 使用自定義程序在EC2 實例中進行KMS調用。

No.3

(E) 使用KMS+S3存儲
或者 (F) KMS+本地存儲

在這里插入圖片描述

4 不安全

不使用KMS,純本地存儲或自建存儲。

方案選擇

現在我們回歸實際業務,從

  1. 操作難易程度
  2. 業務方向
  3. 成本控制

三個角度考慮最優方案。

首先,很明顯,KMS的操作難易程度要遠遠小于自定義CloudHSM,且能提供幾乎相當的安全性,并且可以與aws 其他服務 高度集成,所有 KMS 密鑰使用請求都會記錄在 CloudTrail 中,方便審計。
所以在必須用HSM存儲密鑰的角度上來講,選擇直接集成KMS的優勢明顯。
其次,業務角度,交易所錢包一般分為用戶錢包和歸集錢包,其中歸集錢包又分為熱歸集錢包和冷歸集錢包。
用戶錢包顧名思義,就是每個用戶充值的時候都會分配對應網絡的一個錢包地址,一般來講這個是固定的。所以用戶錢包的生成量會非常的大。而歸集錢包地址數則相對來說小了很多,只要交易所根據自身業務量維持在一個合理范圍值即可。

這里就不得不考慮密鑰存儲的成本問題。

其次,自定義CloudHSM存儲密鑰的成本實在是太高了,單個密鑰單個小時就要1-3美刀,根本不適合用來做用戶錢包,哪怕是歸集冷錢包地址累積下來也是一筆不小的開銷。(同時歸集冷錢包的另一種普適方案是使用智能合約多簽錢包或MPC錢包。)
所以無論從哪個角度看,使用自定義cloudHSM都不是一個好的選擇,除非你自有安全硬件,機房和工程師,當然土大款人傻錢多也可以任性梭哈aws 自定義cloudHSM。
而如果歸集錢包使用kms,成本則會下降很多,也保證了相當的安全性。所以針對歸集錢包,使用TEE環境部署簽名機代碼,簽名機調用aws kms服務會是一個很好的選擇

歸集錢包: AWS Nitro Enclaves + AWS KMS(hsm)

對于用戶錢包,由于aws單個區域內的單個用戶的kms 密鑰容量
的限制10萬個,而對于有大體量用戶需求的場景(如:交易所),單個用戶密鑰存儲的限制顯然不符合需求, 而增加可用區和賬戶數的方式顯然會帶來系統實現上更高的復雜性、繁瑣度和不穩定性。

所以,我們不如轉變下思路,將用戶錢包密鑰生成后使用AES加密后再落地,將AES的密鑰存儲在KMS,這樣就解決了用戶體量持續擴展的問題,而用戶密鑰的存儲 理所當然的選擇為S3。當然這里的密鑰生成部分依然要放在Nitro Enclaves里做,只要是生產環境的密鑰生成就要放在TEE環境里,可以將安全提升至內存級別

用戶錢包:AWS Nitro Enclaves + AES + AWS KMS(hsm) + S3 

這種方式還有個好處就是可以突破aws的密鑰算法限制。 不管CloudHSM還是KMS的加密算法支持在blockchain領域都是只有 ECDSA secp256k1 曲線的,而一些新興的鏈如 Solana Ton等是在使用EDDSA ed25519曲線,這也是一個趨勢,所以這種方式可以突破這種限制,實現多鏈支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87546.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87546.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87546.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 實現底部彈窗

文章目錄在 Android 中創建優雅的底部選項彈窗 (BottomSheetDialogFragment) 📱第一步:設計底部彈窗的布局 🎨第二步:創建 BottomSheetDialogFragment 類 ??第三步:觸發并顯示底部彈窗 🚀在 Android 中創…

LAN8720 寄存器概覽和STM32 HAL庫讀寫測試

目錄 寄存器0x00:Basic Control Register(BCR)0x01:Basic Status Register(BSR) 連接測試寄存器讀寫測試 補充 寄存器 // 0x00:Basic Control Register(BCR) BIT15:Soft Reset 寫1復位,寫1之…

滲透測試深度分析:空密碼Administrator賬戶引發的安全風暴

滲透測試深度分析:空密碼Administrator賬戶引發的安全風暴0x01 測試背景 在內網滲透測試中,對Windows主機 192.168.1.98 使用 enum4linux 進行枚舉: enum4linux -u Administrator -p -a 192.168.1.98關鍵發現:Administrator賬戶空…

OpenCV CUDA模塊設備層-----高效地計算兩個 uint 類型值的帶權重平均值

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 OpenCV 的 CUDA 模塊(cudev) 中的一個設備端內聯函數,用于高效地計算兩個 uint 類型值的帶權重平均值。 該函…

[學習記錄]Unity毛發渲染[URP]-Shell基礎版

毛發,無論是人類的頭發、動物的皮毛,還是奇幻生物的絨毛,都是構成生命感和真實感不可或缺的元素。它對光線的獨特散射、吸收和反射,賦予了物體柔軟、蓬松、有生命力的質感。它不僅僅是讓角色看起來更“毛茸茸”那么簡單&#xff0…

數字孿生技術引領UI前端設計潮流:增強現實(AR)的集成應用

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言:AR 與數字孿生融合的設計革新浪潮在體驗經濟與技術融合的雙重驅動下&…

碰一碰發視頻源碼搭建與定制化開發:支持OEM

在近場通信(NFC)技術與移動終端深度融合的背景下,“碰一碰發視頻” 功能憑借便捷的交互體驗,在商業推廣、信息傳遞等場景中快速落地。不同于標準化解決方案的黑盒模式,基于源碼的定制化開發能從底層優化傳輸效率、提升…

Ubuntu 24.04 安裝配置 Redis 7.0 開機自啟

下載源碼 wget https://download.redis.io/releases/redis-7.0.12.tar.gz安裝依賴 & 準備環境 sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential tcl curl解壓 tar xzf redis-7.0.12.tar.gz編譯安裝 cd redis-7.0.12 make -j$(nproc) …

【Linux 系統】基礎IO——Linux中對文件的理解

13.基礎IO(1) 文章目錄13.基礎IO(1)文件的基本概念:內容與屬性文件的打開機制:fopen 和 open被打開的文件與磁盤文件的區別文件的內核數據結構文件與進程的交互方式標準輸入/輸出/錯誤與文件流系統調用與文件描述符文件打開模式(r/w/a/a&…

Go調度器的搶占機制:從協作式到異步搶占的演進之路|Go語言進階(7)

想象一下這樣的場景:你在餐廳排隊等位,前面有個人點了餐卻一直霸占著座位玩手機,后面的人只能干等著。這就是Go早期版本面臨的問題——一個goroutine如果不主動讓出CPU,其他goroutine就只能餓著。 今天我們來聊聊Go調度器是如何解…

開源模型應用落地-讓AI更懂你的每一次交互-Mem0集成Qdrant、Neo4j與Streamlit的創新實踐(四)

一、前言 在人工智能迅速發展的今天,如何讓AI系統更懂“你”?答案或許藏在個性化的記憶管理之中。Mem0作為一個開源的記憶管理系統,正致力于為AI賦予長期記憶與個性化服務能力。通過結合高性能向量數據庫Qdrant、圖數據庫Neo4j的強大關系分析能力以及Streamlit的高效可視化交…

基于微信小程序的校園二手交易平臺、微信小程序校園二手商城源代碼+數據庫+使用說明,layui+微信小程序+Spring Boot

school-market 介紹 基于微信小程序的校園二手交易平臺 功能結構圖 軟件架構 系統分為三個端,分別是客戶端、管理端、服務端; 客戶端:使用原生微信小程序實現 管理端:使用Layui實現 服務端:使用Java SpringBoot…

IDEA與Gradle構建沖突,導致java重復類的解決方案

項目構建總是報錯:錯誤提示1:java:重復類或錯誤提示2:Internal error in the mapping processor: java.lang.RuntimeException: javax.annotation.processing.FilerException: Attempt to recreate a file排查發現build/generated/sources/an…

如何調節筆記本電腦亮度?其實有很多種方式可以調整亮度

長時間面對屏幕工作、學習或娛樂,很多人會感到眼睛干澀、疲勞,甚至出現視力下降等問題。其實,這些問題的背后,往往隱藏著一個看似簡單卻極易被忽視的設置—屏幕亮度。 合適的屏幕亮度不僅能提升視覺體驗,還能有效緩解…

國際數字影像產業園創作空間升級 打造更優質營商環境

國際數字影像產業園創作空間升級后表現顯著,聚焦設施數字化與用戶體驗優化。整體提升了創意生態系統的競爭力,有效吸引全球企業。 升級核心改進 基礎設施現代化:引入智能硬件如5G網絡和云渲染設備,支持高清影像處理,…

淺談 webshell 構造之如何獲取惡意函數

前言這篇文章主要是總結一下自己學習過的如何獲取惡意函數的篇章,重點是在如何獲取惡意函數get_defined_functions(PHP 4 > 4.0.4, PHP 5, PHP 7, PHP 8)get_defined_functions — 返回所有已定義函數的數組我們主要是可以通過這個獲取危險的函數比如比如當然還有…

Python 單例模式與魔法方法:深度解析與實踐應用

在 Python 編程領域,設計模式解決常見問題的通用方案,而魔法方法則是 Python 語言賦予類強大功能的特殊接口。單例模式和魔法方法看似獨立,實則緊密關聯,魔法方法常被用于實現單例模式。深入理解并熟練運用它們,能夠幫助開發者編寫出結構清晰、高效且具有高復用性的代碼。…

pybind11 導出 C++ map 在 Python 層 get 訪問慢的優化方案

pybind11 導出 C map 在 Python 層 get 訪問慢的優化方案 問題描述 通過 pybind11 導出 C 的 std::map 或 std::unordered_map,在 Python 代碼中頻繁使用 get 方法訪問 value 時,性能非常低下。其主要原因是: pybind11 的 map 綁定會導致每次…

RTC實時時鐘DS1339U-33國產替代FRTC1339M

FRTC1339M是一款實時時鐘(RTC)芯片,由NYFEA徠飛公司制造。 FRTC13399M串行實時時鐘是一種低功耗的時鐘日期設備,具有兩個可編程的每日時間警報和一個可編程的方波輸出。通過2線雙向總線進行串行地址和數據傳輸。時鐘/日期提供秒、…

網絡常用端口號歸納

ICMP端口號:1IGMP端口號:2TCP端口號:6UDP端口號:17FTP端口號:20(控制信息傳輸)、21(數據傳輸)SSH端口號:22Telnet端口號:23SMTP端口號:25IPV6端口號&#xff…