推荐原文:
https://wizardry.liberty.me/how-to-build-a-bitcoin-exchange-part-1-design-goals-risk-management/
安全部分章节翻译摘抄如下:
4:安全性,安全性和完整性
大多数人都认为黑客试图窃取或破坏交换,这是加密货币交换所面临的众多威胁之一。然而更严重的威胁是财务风险:由于有缺陷的算法而接受合法订单导致交易所失去其所有资产,甚至最终导致客户欠款。大多数黑客和崩溃都可以从中恢复,但是有缺陷的交易算法中的隐藏错误会导致交易所欠客户数亿美元,并导致交易所破产。这样一个错误导致Knight Capital Group在2012年损失了4.4亿美元并且公司破产了。
威胁可分为:安全攻击,安全缺陷和完整性:
1、安全攻击威胁:恶意代理造成的危害 - 试图窃取资产或干扰正常运营的外部或内部参与者
2、安全缺陷风险:正常运营期间产生的成本,会产生财务或声誉成本。例如,无意中以低于市场价格的价格出售币,从而使交易亏损。
3、完整性风险:由于系统故障而导致的成本 - 崩溃,硬件损坏,过载等。例如,丢失加密钱包的访问密钥,因为它们没有正确备份,磁盘存储它们崩溃了。
以下类别总结了我们试图减轻的风险类别。详细说明仅供专门的帖子使用 - 如果您对特定风险的详细信息感兴趣,请询问我们。
A:财务风险
这是交易所将执行无利可图的交易(例如,低于市场价格的卖出)的风险。如果客户能够通过其他交易所有效地执行套利,则交易所的储备可能会迅速耗尽,并且变为负值。有很多方法可以解决财务风险 - 这里我们将介绍三个方面:
一、市场交易:如果市场价格没有反映实际的订单,高波动期可以与其他交易所套利,导致法定货币或加密货币的快速耗尽。如果以固定利率处理大订单并且交易量会导致价格大幅上涨,则交易所可能会产生重大损失。
缓解方法:(1)市场价格接近实时。 (2)订单的处理价格与实际或虚拟(参见市场标记)的出价和报价相匹配。 (3)当账户余额变动较大时,警报通知(4)增加存款/取款费用,旨在消除价格差异并使套利无利可图。
二、杠杆账户:见上文“杠杆”。如果筛选过程和技术措施失败,交易所必须通知账户持有人并使用任何可用的方法来收回负余额。专用服务监控负帐户余额,并通知管理员进行跟进。
三、做市商:见下方“做市商”。做市商参与自动交易以提供交易量。它是一个高利润的交易系统。它是一个非常有竞争力的交易系统。我们通过随时向管理员开放的实时管理仪表板来降低风险,并在帐户余额超过设定限制时设置警报。
B:客户身份盗窃
这是恶意用户冒充合法用户的风险 - 窃取凭据,绕过安全控制,内部威胁等。例如,恶意员工可以更改帐户中的提款地址并重定向。
交易所通过以下方式控制身份盗窃:
1、使用最佳实践库进行用户帐户控制 - MicrosoftASP.Net成员资格提供程序。
2、对于使用SMS身份验证的所有提款,需要双因素身份验证
3、需要真实身份验证才能使交易者超过X金额。
4、超过$ X的存款和取款需要管理员批准。
C:安全风险
绕过安全措施并能够执行未授权操作的代理。这些行动必须是技术性的。恶意员工可以复制私钥以进行正常操作,然后将其传输到系统,而无需访问系统。在许多情况下很难确定泄漏源。
安全措施考虑了五种安全风险:
1、应用程序权限升级
2、服务器/云服务妥协
3、管理帐户妥协
4、内部威胁 - 恶意员工和开发人员
5、外部账户(银行账户,第三方链接交易所)妥协
稍后将详细讨论每种风险。让我们考虑用于缓解它们的一般安全原则:
内部威胁缓解
1、最小权限原则:每个管理帐户只能访问操作它所需的模块。
2、角色分离:每个管理功能都是管理控制台中的单独页面。角色分离用于防止任何人失去一系列不受欢迎的行为
3、多个签名:某些操作,例如批准从冷钱包,银行转帐等转移
4、环境凭证隔离:开发人员使用生产系统中的独立环境。部署是自动化的,只有主要架构师在业务操作员的监督下进行。将生产数据克隆到开发中时,将擦除所有客户数据。根据具体情况监督生产中的问题调试。
外部威胁缓解
1、组件隔离:(参见上面的“组件隔离”)每个系统组件(网站,服务,钱包)
2、断路器/警报系统:当达到某些阈值(低余额,高交易等)时,会向管理员发送电子邮件/短信警报
3、实时可视化:报告平台显示订单簿,做市商和钱包活动的视觉颜色编码显示。
4、DDOS保护:主动防火墙(Cloudfare业务)用于混淆原始Web服务器。源服务器是来自事务服务器的独立AWS EC2安全组,它与钱包服务器是分开的。仅允许指定的IP /端口号。
物理安全措施(加密货币/菲亚特资产保护)
1、气隙:冷藏(使用Trezor设备)用于存储交易所的储备。钱包存放在只有管理人员才能访问的保险箱中。
2、访问“预留”冷藏钱包需要多个签名。一个单独的冷钱包用于存储营业利润。
3、所有云服务器都已加密。
4、需要物理(纸质)日志和签名来授权冷藏和大型取款操作
D:系统/数据完整性
这是由于某些软件或硬件故障导致的风险,将导致不一致或损坏的状态。例如,如果客户在同一时刻从钱包中提取资金,他的购买金额大于剩余的余额,则两笔交易都可以通过。
1、原子事务:每个市场操作都包含在数据库事务中。在系统计算更改时,除非所有更改都已完成,否则更改是暂定的。如果事务失败,则锁定操作。
2、完整性检查:市场操作(订单)和转移操作(提取/存入货币)使用多个健全性检查。例如,当购买BTC时,系统通过存储界面层,在匹配出价和要约时以及在交易本身中检查足够的余额。在提取时,在接口层和转移服务级别检查要转移的金额。
3、完整性检查:维护服务定期验证系统完整性。例如,客户的账户余额应与其借方和贷方的总额相匹配。
4、备份自动化:从备份恢复是最后的手段,但帐户和订单簿使用SQL Server事务日志,并且每晚都进行点备份。
5、人为升级:如果交易超出范围(或设定金额)或经营钱包低于某个最低限额,或者汇率偏离第三方参考太远,则会通知管理员。
6、审计:可搜索的审计日志(使用来自交易系统的单独数据存储)记录系统所做的一切。管理员可以快速过滤客户的审核日志,以查看他的所有活动。