2021/3/15 imToken「如何安全玩转DApp」
活动主题
如何安全玩转 DApp?
活动时间
2020.3.15 周一 20:00 - 21:00
主持人:
Evelyn
嘉宾:
- Jason Wu
- Troy
主持人
让大家久等了,imToken 区块链 3.15 “如何安全玩转DApp” AMA活动现在开始~
大家平时会使用DApp参与区块链上的各种项目吗?我们参与的项目是否安全?相信大家在使用的过程中一定会产生许多疑问。所以大家一定不要错过今晚的 AMA 活动。
我是本次活动的主持人 Evelyn ,本次AMA活动将分为两部分:
1)嘉宾固定分享
2)互动问答环节
让我们以热烈的掌声,来欢迎参与本次「如何安全玩转DApp」话题讨论的两位嘉宾——DeFiner CEO Jason Wu 和 imToken 安全专家 Troy !
Q1 首先请两位嘉宾先自我介绍一下。
Jason Wu:
大家好,我是Jason Wu,是DeFiner 创始人及首席执行官。作为美国特许金融分析师协会(CFA)的现任成员,我在将区块链技术应用于金融创新领域具有丰富的知识和经验。作为区块链,智能合约技术和共享经济的热烈拥护者,2017年,我创立了DeFiner开放式金融平台及概念,致力于开放式金融推广及普惠金融的实现。我还同时担任多个金融科技和区块链技术公司的董事和顾问,曾服务于多家世界500强企业,作为新产品研发及投产的领军人物。美国俄亥俄州立大学工商硕士。
Troy:
大家好,我是Troy,从事网络安全行业多年,目前负责imToken安全工作,致力于区块链网络安全攻防研究学习。
Q2 两位最开始是因为什么样的契机进入到区块链行业的?
Jason Wu:
13 年开始关注了解BTC,17年开始慢慢入行,被去中心化的理念深深吸引,非常想使用一个去中心化的金融网络,来实现资产与财富的自由。但是当时市场上并没有这一类的产品,所以下定决心,来做一款帮助大家拥有管理自己财富的应用,这才开始了DeFiner的征程。
Troy:
我是2017年加入这个行业的,最初是在一家交易所,从事信息安全工作,后来发现交易所所做的工作大体还是传统互联网安全相关,恰好当时那家交易所由于一些因素,无法继续做下去,这时已经早有耳闻imToken,便没有犹豫就加入了。
Q3 许多用户可能还不太了解 DApp 与 App 的差异,Jason可以简单的给大家介绍一下吗?
Jason Wu:
去中心化应用程序(Dapp,dApp或DApp)的后端代码运行在去中心化网络上,这与在服务器上运行后端代码的常规应用程序形成对比。与传统的Web应用程序类似,DApp的前端使用众所周知的脚本语言(例如HTML,CSS和JavaScript)来呈现页面。DApp的前端代码和用户界面可以用任何语言编写,其功能类似于调用后端的应用程序。它的前端也可以托管在分散存储解决方案上,例如Swarm(SWARM-GUIDE,2018)或IPFS。DApp和App之间的主要区别在于,App使用API来连接数据库,而DApp使用智能合约来连接区块链并与之交互。DApps将充当主流用户和区块链之间的桥梁,在建立去中心化社会方面发挥关键作用。
Q4 有时 imToken 用户抱怨 imToken 浏览器中 DApp 少,有些还有风险提示,这是为什么,以及 imToken 在 DApp 使用安全上还做了什么?
Troy:
imToken 自身集成的是一个开放的浏览器,原则上是所有 Dapp 都能访问,所以如果说 imToken 浏览器中的 Dapp 少,这其实是有一些误解的。
实际上我理解有用户抱怨的原因,其实应该是 imToken 推荐的 Dapp 少,确实 imToken 推荐的 Dapp 不多,但是能出现在 imToken 推荐位的 Dapp,肯定是经过多方审核的,这是必须要做的基线,当然我们考量的因素除了市场合作的角度,更重要的是安全角度,如果不符合安全基线,是无法上架推荐的。
imToken 的风险提示有两个等级,即风险提示和拒绝访问。
所有 HTTP 协议的 Dapp 在 imToken 中访问都有风险提示,因为 HTTP 是明文传输,数据都是未加密的,安全性较差,而 HTTPS 数据传输过程是加密的,且使用 HTTPS 协议需要到数字证书认证机构申请证书,所有如果你在 Dapp 里输入的网址没有加上 HTTPS,很有可能就会遇到风险提示。
除此之外如果你还遇到了风险提示,那就说明你当前访问的 Dapp 存在风险,imToken 会不定期的对 Dapp 访问数据进行梳理,排查存在风险的 Dapp,并且对其进行标记提醒。
Q5 DApp,尤其近期 DeFi活动安全事件频发。DeFiner 作为一个 DeFi 借贷平台,如何看待 DeFi 相关的安全事件?
Jason Wu:
DeFi 安全流程的控制与能力,体现了技术团队的能力,也映射了产品对用户资金安全性的保护能力。安全性、预警性和资产保护机制都是DeFi产品的核心,但是为了让产品快速推向市场,产品开发中都很容易忽视这些关键。一个好的项目需要:
1、完善的安全测试流程。 通常来说,DeFi智能合约上线的国际行业标准,至少要经过内部测试、行业标准测试、测试网络测试、真实模拟网络环境测试、第三方审计和白帽黑客奖励等。只有经过了这些步骤,安全性才有一定保障,项目才可大规模商业化。
2、充分了解抵押物性质特点。 DeFi团队面临的一个很重要的问题,就是对抵押物种类和属性缺乏应有的了解。笔者认为,项目方不能在没有充分了解抵押物的各类、属性和特点的情况下,将DeFi产品急于上线市场,即使这和快速抢占市场的目标有所相悖。
笔者也在此给有关参与方提个建议:在选择DeFi产品的时候,一定要看一看项目方是否公布质量测试结果,是否有具体的提高测试结果的流程步骤。并且关注,项目本身的风控给流程,有没有有效的预警机制,有没有保险合约来规避风险等。
Q6 DApp 和 App 的一个不同是,每一次初始操作都需要进行授权。那么什么是授权,以及为什么要授权?
Troy:
授权顾名思义,Dapp 里就是将自己的权限赋予合约。授权本质上是一笔链上交易,比如你对 USDT 资产进行一次授权操作,目的是为了告诉 USDT 代币合约,目标智能合约拥有支配我钱包一定数量 USDT 资产的权限。
因为 ETH 作为以太坊网络原生资产,在向目标智能合约转账时,以太坊网络底层强制要求目标合约要有确定的接收方法,所以交易本身可以携带 ETH 资产到目标合约中;而 ERC20 Token 在向目标合约转账时,只是更改 ERC20 Token 合约本身的账本信息,目标合约不会收到任何通知。
授权的操作指通过签名将一定数量的某代币资产授权给第三方合约,让合约拥有转移自己资产的能力,以便在后续可以完成进一步操作。
准确来说,授权操作有 2 步:
第 1 步:授权交易本身。是为了告诉某 ERC20 Token 合约,将来可能会有目标智能合约地址来我的钱包账户取走一定数量的该 Token 资产;
第 2 步:交易执行本身。当目标合约中的逻辑执行需要进行该 Token 交易时,目标合约会去主动去触发 ERC20 Token 取走一定数量的该 Token 的转账交易;
反之,如果没有涉及到该 Token 的交易,即使已经授权了,也不会真实发生资产交易。
简而言之,授权操作之后,不一定会执行 Token 交易,只是对目标合约保留了这样一个资金操作权限。
Q7 前段时间 imToken 专门出过对 DApp 授权的声明,可以介绍下 imToken 在授权安全方面的处理吗?
Troy:
很多智能合约开发者为了避免用户反复进行授权操作,一般会默认设置授权最大数量的 Token 给到目标智能合约。很显然,这种处理方式是存在一定风险的,如果智能合约出现漏洞或合约管理员作恶,那么用户的 Token 资产将存在丢失的风险,这就是「过度授权」带来的问题。
imToken对此采取的策略:
1.当 DApp 要求用户代币授权时,imToken 也会给予明确的授权信息,以便用户清晰了解授权上下文,甚至进一步编辑授权数量,降低授权风险。
2.imToken 还在 DApp 浏览器中提供了代币授权管理的相关 DApp,打开 DApp 浏览器,在「工具」类目下找到「Approved Zone」,点击进入即可轻松管理已授权的第三方 DApp 权限,随时关闭不再使用的应用权限,保护自己的资产安全。
近期 imToken 除了以上的处理方案,也会针对授权管理问题进行更深入地优化。将通过支持批量签名功能,来鼓励 DApp 通过按需授权的方法调用合约。
关于批量签名,我们即将上线的 ETH 加油站就可以帮助用户通过一次「交易确认」完成授权和代币兑换,避免过度授权的问题。
在 imToken 2.5.5 版本中,我们针对授权做了以下优化:
增加代币授权预览,你可以更清晰了解授权详情
你可以按需编辑授权数量
提供「Approved Zone」和「代币授权查询」授权管理 DApp,你可以随时更改授权状态
Q8 相信两位平时也是 DeFi DApp 深度用户,你们平时是如何判断项目的安全性,并且如何管理自己的资产安全的呢?
Jason Wu:
对团队要了解:成立时间,创始人,投资机构,相关合作方
Troy:
一般来说,我判断一个项目的安全性我会从以下几个方面去看:
1.首先会去了解清楚这个项目的具体内容、设计规则等是否合理,比如风险指数有多高、项目是否可行、利益分配是否合理;
2.其次我会去了解项目团队,信息资料是否真实靠谱,曾经做过什么,是否有机构背书;
3.然后就是流通性、项目涉及的资产总值、参与的人数等也是比较重要的参考依据;
4.最后还会用专业技能去评估一下项目的安全性,如开发者是否遵循安全开发规范,项目是否存在常见漏洞,智能合约审计结果等。
资产管理这一块,我自己的话资产分配的比较散:
针对交易所,我的账号密码强度比较高,基本是大小写特殊字符混合的,长度15位以上,而且不同交易所平台不会使用相同的密码,除此之外,二次验证、白名单地址等,我都会启用,尽管用起来的时候会稍微麻烦一点,但是这很重要。
针对钱包,我深知私钥助记词的重要性,所以会比较谨慎,我会对比较重要核心的钱包,使用硬件钱包imKey来做离线签名,同时使用钢板助记词套件用来备份,并且会对助记词设计一套自己的加密算法,记载脑海中,在这里不得不提及一下备份助记词的重要性以及新手常见的误区:
首先备份助记词是非常重要的,在关键时刻,如设备损坏、丢失、误删APP等很多不确定因素发生的时候,能够坦然面对,不用担心,否则不管找谁也没有用了,其次备份助记词的方式也很重要,千万不要将助记词明文备份在网盘、备忘录、手机收藏夹等容易泄漏的位置,也不要复制黏贴,在安全的环境,用手抄写来,只相信自己一个人。
Q9 如何做到让黑客“无缝可叮”的安全对策是区块链产业最重要的问题,在安全方面大家对未来有什么样的展望?
Jason Wu:
随着,开发生态打的越来越完善,投入的资源越来越多,整个DeFi网络一定会变得越来越安全。
Troy:
其实我个人信仰是没有绝对的安全,能够被黑客“盯上”反而是一件好事,攻防是不断的演练进步的过程,就像智能合约刚出来的时候,历史上很多漏洞也是不断的被黑客利用之后暴出,随后修复公开,供大家审计的时候参考,这是一个正向反馈,区块链产业较传统互联网行业更加透明公开,会有更多双眼睛盯着我们,作为去中心化钱包的角色,我们在用户安全教育领域及加密算法领域,也会投入更多的资源去研究探索。