区块链安全100问 | 第三篇:数字钱包面临的安全风险

零时科技

    零时科技区块链安全100问正式上线,以通俗易懂的语言形式为大家讲解区块链行业知识,以及区块链生态应用存在的安全问题,让更多人了解区块链及区块链安全。
    前言
    当前区块链技术和应用尚处于快速发展的初级阶段,面临的安全风险种类繁多,从区块链生态应用的安全,到智能合约安全,共识机制安全和底层基础组件安全,安全问题分布广泛且危险性高,对生态体系,安全审计,技术架构,隐私数据保护和基础设施的全局发展提出了全新的考验。
    1-数字钱包是什么?
    区块链数字钱包是存储和管理、使用数字货币的工具,在区块链领域有举足轻重的地位,是用户接触数字货币的入口。
    钱包在形态上,可以划分成为软件钱包和硬件钱包。软件钱包就是一个APP,装在我们的手机上,硬件钱包就是专门有一个设备来存储这个私钥。
    按照私钥和签名这个动作是否永远离线来区分,可分为热钱包和冷钱包。
    根据私钥的存储和签名发起方式区分,可以分为中心化钱包和去中心化钱包,基于区块链的加密数字资产的使用,大多都是用去中心化钱包。
    2-数字钱包面临的安全风险有哪些?
    区块链数字钱包存在多种形式,面临的安全风险也是多样性的,主要面临的安全风险包括但不限于如下几方面:
    1、运行环境的安全风险
    加密数字货币钱包最核心的文件——私钥/助记词是存储在终端设备上的,无论是PC端还是移动端,终端设备如果出现不安全的现象,对于私钥/助记词来说是有非常高的安全风险。
    一个安全的数字钱包,在设计之初就应该避免因为运行环境而导致的私钥/助记词存在被盗可能。终端上运行环境的安全问题主要包括病毒软件、操作系统漏洞和硬件漏洞等。
    2、网络传输的安全风险
    网络传输的安全性更多地体现在是否有良好的对抗中间人攻击的能力上。中间人攻击是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。
    安全的数字钱包需要能够对终端里面全部的数字证书的合法性进行扫描、对网络传输过程中的代理设置进行检查并能够保障基础的网络通讯环境的安全性。
    在数字钱包的开发中,在网络传输层面是否使用双向校验的方式进行通讯验证也是衡量一个数字钱包应用安全性的重要评判标准。
    3、文件存储方式的安全风险
    对于数字钱包的私钥/助记词,终端设备的存储方式也是需要在安全性设计上加以注意的。私钥/助记词文件存放目录的访问权限、私钥/助记词存储的形式和加密算法设计都需要通过严密设计。
    在对多款主流数字钱包进行安全性分析时,我们发现即使是知名的数字钱包,在私钥/助记词的存储上也是比较随意的。既有明文存储,也有加密存储,但是解密的密钥却是在代码里面固定写死的,起不到任何的安全防御作用。
    4、应用自身的安全风险
    应用自身的安全风险主要集中在应用安装包自身的安全防御上。
    应用安装包是否具备抗篡改能力。另外,应用运行过程中的内存安全、反调试、私钥/助记词使用的生命周期管理、调试日志的安全性、开发流程的安全等方面也是需要去设计增强的。
    5、数据备份的安全风险
    如果移动应用能够被备份出来,就可以使用计算性能更加强大的机器对私钥/助记词进行暴力破解。举例来说,如果终端设备上允许数据备份,那么就可以利用系统的备份机制对应用的数据文件进行备份,而加密数字货币的私钥/助记词也就被备份到外部介质了,这就从另外一个方向打破了操作系统的安全边界设计。
    对于广大用户来说,数字钱包的安全也意味着财富的安全,所以我们在选择数字钱包时一定要慎重对待,不可掉以轻心。
    3-数字钱包该如何进行安全审计?
    无论是中心化还是去中心化钱包, 软件钱包还是硬件钱包在安全性方面必须有充分的安全测试,针对数字钱包的安全审计包括但不限于如下测试项:
    1、网络和通信安全测试
    
  • 网络节点应达到及时发现和抵抗网络攻击的功能;

    2、钱包运行环境安全
    
  • 钱包能够对操作系统进行已知重大漏洞进行检测,虚拟机检测,完整性检测;
  • 数字钱包需具有第三方程序劫持检测功能,防止第三方程序劫持钱包盗取相关用户信息。

    3、钱包认证安全
    
  • 钱包认证过程中必须设置钱包解锁密码用于解锁钱包,防止设备丢失后钱包信息被窃取;
  • 使用钱包进行交易签名必须设置支付密码,防止解锁后解密的私钥被窃取;
  • 使用钱包日志功能必须设置日志密码,防止钱包密码丢失后攻击者直接清除钱包操作日志;
  • 交易密码需使用多因素认证,例如:指纹、面部识别、OTP令牌、短信验证码等,防止密码泄露导致私钥丢失。

    4、钱包交易安全
    
  • 钱包发出的所有交易必须进行签名,签名时必须通过输入支付密码解密私钥,交易签名生成后必须清除内存中解密后的私钥,防止内存中的私钥被窃取而泄漏等。

    5、钱包日志安全
    
  • 为了方便用户进行审计钱包操作行为,防止异常操作和未授权的操作,需记录钱包的操作日志,同时钱包日志必须通过脱敏处理,不得含有机密信息。

    6、节点安全审计
    
  • 钱包节点应能记录用户的连接记录、交易记录,能够保存审计记录的过程和结果,便于管理员进行查询;
  • 必须对节点服务器进行安全设计和安全加固。

    7、节点接口安全审计
    
  • 接口需要对数据进行签名,防止黑客对数据被篡改;
  • 接口访问需要添加token认证机制,防止黑客进行重放攻击;
  • 节点接口需要对用户连接速率进行限制,防止黑客模拟用户操作进行CC攻击。

    8、数据存储安全
    
  • 钱包生成的私钥必须通过加密算法加密后才能进行存储,同时钱包的本地静态文件不得含有明文的敏感信息。

    9、数据的备份与回复
    
  • 钱包生成的私钥或者助记词,必须在确保安全的情况下进行备份处理,避免私钥意外丢失导致资金无法找回。
  • 如果移动应用能够被备份出来,就可以使用计算性能更加强大的机器对私钥/助记词进行暴力破解。

    10、静态代码安全审计
    
  • 钱包APP必须进行正规的代码审计,以确保钱包不会有额外功能权限用来收集用户私钥,保证APP本身的安全性。

    
  • 区块链安全100问正在持续更新,欢迎大家后台发送自己的观点,如有对区块链行业及应用有独到见解或者疑问的朋友直接评论区留言哦!我们会把相关问题统计整理,为大家解答哦!

    ?