支持多种数字通证的区块链在线授信系统

2018-02-22 07:39尚维斯高睿
网络空间安全 2018年11期
关键词:私钥钱包内存

尚维斯,高睿

[1.上海二秒科技有限公司,上海200050;

2.赛迪(青岛)区块链研究院,山东青岛266000]

1 引言

区块链技术问世不久,便在很短的时间内风靡全球。2017年起,这项万众瞩目的新技术受到诸多风险投资的青睐。

以“中国知网”数据库文献为例,以“区块链”为关键词进行篇名检索,共能获得区块链相关文献高达1881篇的检索量。然而,以“区块链”和“安全”为关键词进行篇名检索,获得的相关文献却仅有65篇。

事实上,随着区块链的不断发展,数字通证被盗的案件也与日俱增。

2 0 1 4 年2 月2 4 日,M t.G o x(俗 称“门 头沟”)其交易平台85万个比特币被盗;2015年2月18日,比特币存钱罐3000个比特币被盗;2016年8月3日,Bitfinex被盗取119756枚比特币;2017年7月17日coindash被盗取4万个以太币。

互联网时代的到来,使人们的生活水平得到了极大提升。电子信息技术的发展,加快了日常的生活节奏。伴随而来的就是电子信息安全出现各种安全问题[1],这样的情况同样发生在区块链行业中。市场上正在有越来越多的投资机构、企业和创业团队进入到区块链这个领域,他们持有的各类数字通证规模也在快速扩大。在过去的几年中,区块链领域的一些团队也曾尝试过或正在尝试利用各种技术增强数字通证钱包的安全性,但是目前针对企业级别的数字通证管理系统十分缺乏,也没有完整的多人共同管理通证的有效手段。这种情况与企业传统的资产管理流程存在巨大差别。客观地说,中国在人类第五活动空间的生活当前还处于劣势[2]。

2 授信系统设计要点简述

2.1 授信系统概念

科技的快速发展推动了计算机技术的进步,其被运用于社会生活的多个方面。但由于其自身特点与缺陷,加之其它因素的影响,使得人们也逐渐开始关注计算机网络信息的安全,并采取积极防御措施[3]。

类比计算机技术,区块链的发展同样离不开安全的城池。而支持多通证的区块链在线授信数字系统的诞生,实实在在弥补了这个新行业的一大漏洞。授信系统是一套企业自主拥有的数字通证管理系统。针对企业程式化、自动化使用做了完备的工作。它没有使用花哨的技术,而是使用区块链公理性技术,通过授信系统统一管理企业所拥有的各类数字通证,例如BTC、ETH、USDT、EOS等主流通证。在信息传递上使用了独创的公钥交换协议来保障员工间信息流转互信;在通信上,使用了迪菲-赫尔曼密钥交换(Diffie-hellman Key Exchange)安全协议,来确保通信安全以及确保通信前向安全。前向安全能够保护过去进行的通讯不受密码或密钥在未来暴露的威胁。如果系统具有前向安全性,就可以保证密码或密钥在某个时刻不慎泄露,过去已经进行的通讯依然是安全的;通过将私钥运行时驻留内存中的方式让其永不暴露,通过企业自主拥有的私有区块链网络保证操作指令和资产数据的存证和验真,通过顺序性私钥签名方式构建企业订制化资产管理业务流,同时授信系统具有入侵锁死、系统重置等安全机制,以此保证企业数字通证的高安全性。

2.1.1 系统总体设计

授信系统是一整套企业数字通证解决方案。如图1所示,其从整体架构上分为授权层、私链层、接入层和客户端。

授权层负责两件事情:接受私钥管理者的指令,启动或停止签名服务;对输入的数据进行校验,校验通过则根据业务流转信息内的指令向公链发起转移数字通证动作。

私链层负责对来往信息数据存证和验真。私链由以太坊构建,伴生程序是私链和其它层之间交互的桥梁。

接入层负责与企业用户之间业务交互。

2.1.2 角色

授信系统角色分为两种:最高权限管理者和普通员工。最高权限管理者拥有对授信系统数字通证账户的私钥管理权限和审核模版设置的权限,普通员工拥有发起数字通证转移申请、审批的权限。最高权限管理者持有私钥APP,普通员工持有员工APP。最高权限管理者持有者推荐最少人数为2n+1人,普通员工没有人数限制。

2.1.3 初始化工作

当整个系统初始化时,由最高权限管理者共同创建新的数字通证账户。账户对应的操控私钥将会在初始化结束之前以加密二维码的形式备份下来。有多少个最高权限管理者,就有多少张二维码,每人各持一张,只有所有人的二维码全部解密之后组合才能还原出私钥。备份的私钥最终以法律+实体约束的形式保管。

2.1.4 信息流转

授信系统内信息流转的内容为数字通证转移申请以及对其审批消息。在发起数字通证转移申请之前需要最高权限管理者建立一批申请模版。申请模版中定义了审批层级有几层,每层审批需要多少人,谁有审批权,单次转移的通证数量。这些申请模版由全体最高权限管理者全票通过后方可被使用。投票通过后的申请模版将通过授权层的服务保存到区块链上存证,为后续验真时提供依据。申请人挑选合适的申请模版发起申请,经过模版中指定的人审批通过后,最终由授权层的服务验证有效性。验证通过后即自动地向公链发起合法的数字通证转移动作。

图1 系统逻辑设计图

2.2 授信系统的价值

2.2.1 实时在线,自动处理

在区块链世界里,按照对数字通证存放方式划分,“钱包”可分为“冷钱包”和“热钱包”。“冷钱包”通常是指硬件,这一类的硬件有一套完整的交互协议,它可以存储加密过后的私钥。例如,Ledger Nano S硬件钱包。私钥对应一个账户,而账户内拥有数字通证。私钥是钥匙,是数字通证归属权的证明。区块链是一个巨大的分布式账本,所有在其之上的账户内所拥有的数字通证,每一笔转移记录都统统记录在册。“冷钱包”并非真正地把数字通证留存在硬件中,但可以近乎永久地保存操控数字通证的私钥。因此,需要长期保存的数字通证适合保存在“冷钱包”中。

与“冷钱包”相对的是“热钱包”。“热钱包”内的数字通证较“冷钱包”会经常流动,像各大公链配套出品的钱包就可以属于“热钱包”。这种划分方式之间最大的区别就在于“热钱包”是实时在线的,而“冷钱包”只有在使用时才会接触网络。或者更高级一点的硬件设备做冷钱包时可以支持离线签名。授信系统就属于“热钱包”,它最大的好处就在于实时在线,使用便捷,不受制于地理条件,有配套完善的APP,使用方便。

同时,授信系统提供了自动化处理审批通过的申请,实现自动化转移数字通证,这是所有“冷钱包”不具备的。自动化带来的好处就是降低了人工干预,为通证的流转提供了更多的可能性。

2.2.2 多种数字通证一站式管理

目前,市面上有许多区块链网络,不同的网络之间并不互通。比特币有比特币配套的钱包,以太坊有以太坊的配套钱包,相互之间并无适配。如果没有一站式管理,需要记忆一大堆的区块链账户名称,甚至为其设置不同的私钥密码。授信系统允许接入所有支持离线签名的区块链网络,高度抽象统一各个区块链账户模型,仅用一把私钥一站式管理不同区块链网络账户。这大大减轻记忆难度,也为管理不同数字通证提供了便捷的方式。

图2 信息流转方式

2.2.3 多人共同管理最高权限

授信系统采用了一种伪随机算法计算得出私钥,伪随机算法除必要的真随机数,还由最高管理权限持有者的口令计算得出,其单个持有者无法独自推导出私钥,也就无法单独动用账户内的数字通证,这使得数字通证归属于企业,而非个人。

2.2.4 企业审核流程

自动化转账的安全有两个重要部分,其一是私钥本身的安全,其二是使用权的安全。授信系统有完善的企业审核流程,允许设定企业财务审批流程,降低人为操作失误的可能。一个合法的审批流需要经过私链存证、私钥APP授权和公链确认。由于私钥APP是由N位最高权限管理者掌控,因此审批流是否有效是由N位最高权限管理者共同确认,并且写进公链私链,该审批流有效性无法被篡改。

数字通证转移的有效性分为两个部分,其一是本身签名的有效性,其二是其对应的审批流的有效性。由于授信系统采用的是嵌套签名的方法,因此只需要按照顺序依次验证签名,即可知道签名本身是否有效。数字通证转移本身是对应一个审批流程,需要提取对应的申请模版,并在账户中验证该审批流程是否有效。如果两个条件均满足,证明该次数字通证转移是有效审批流程指定的,并且无法被篡改。

2.2.5 完备的安全机制

授信系统的安全分为三个层面:私钥的安全、信息的安全和通信安全。私钥安全是为了数字通证不被窃取;信息的安全是为了系统内流转的数据不被篡改,进而保障数字通证不被窃取;通信的安全是为了敏感信息不被第三方截获,即使截获也不会影响后续的通信。从这三个维度出发,保障企业在使用授信系统时数字通证的安全。

3 授信系统安全核心技术

3.1 私钥安全

3.1.1 私钥的生成

授信系统控制数字通证的私钥只有一把, 并采用了伪随机算法, 为防止私钥的生成被模拟, 采用RFC 6979的变形形式:key=sha 256(rando m() + sha256(password1) + sha256(password2) ... + sha256(passwordN))。其中,random()为真随机数生成函数,sha256(passwordN)为最高权限管理者输入的口令。真随机数与口令首尾相接构成新的字符串再做一次哈希运算得出私钥。

保 留 在 系 统 中 的 值 有hash=sha256(sha256(key))和random()结果值。每次重启系统如果最高权限管理者输入的口令有误,是无法推导出Hash值的,也无法根据Hash逆向推导Key。

3.1.2 私钥的保护

私钥生成后,将驻留在系统内存中,由内存守护页保护。在内存中创建的守卫页面,并告诉操作系统内核禁止第一个和最后一个页面的所有读写操作,所以如果任何操作尝试读写这些守护页的话,操作系统就会抛出一个Sigsegv访问冲突信号,并且服务所在进程发生混乱,服务被停止。在停止前,服务驻留在内存中的私钥地址将被清空。这样可以立即检测到缓冲区溢出,其他进程几乎不可能定位和访问数据。(在内存分配操作期间分配额外的不可访问的内存是用于减轻堆缓冲区溢出的技术。这些保护页面是放置在一页或更大页面的所有内存分配之间的未映射页面。保护页面在任何访问时都会导致分段错误。)

夹在守护页之间的页面也被保护(避免Swap)。当系统内存耗尽时,操作系统内核会将非活动进程的内存复制到磁盘上,这是想要避免的。

最后一点是金丝雀:在私钥之前放置一个随机值。如果它发生了变化,知道出了什么问题——可能是缓冲区下溢。当程序第一次运行时,为金丝雀生成了一个全局值。

图3 私钥的保护

3.1.3 系统的保护

随授信系统启动的还有它的防护程序。防护程序会设置系统关闭所有非必要通信端口,仅留出系统内相互通信端口。同时防护程序启动后会监控系统登录情况和进程。如果出现异常进程或者账户登录了私钥所在的操作系统,防护程序会立即清空私钥所在内存,并立即停止服务。

3.2 信息安全

信息安全包含两部分:信息源头是否可信和信息本身是否可信。

3.2.1 组织架构

在授信系统中,有组织架构体系,员工与员工之间存在上下级关系。上级员工与下级员工之间建立关系,通过手机端员工APP扫描二维码的方式来确定。每个员工APP都对应一个用于识别身份的通信密钥对,下级员工要加入到授信系统中需要扫描上级员工的二维码来确权。

约定n 代表随机值,R 代表密码,P 代表公钥,K代表私钥,c代表密文,s代表签名,d代表信息摘要,ID代表身份识别串。假设层级关系如图4所示。推演扫码过程:

图4 层级关系假设

(1)E是C的下属,E扫描C的二维码获一个加密密码R;

(2)E 生成一个固定的随机值E n,用于参与保存到服务器的公钥进行信息摘要计算;

(3)E用R加密自己的公钥Ep和随机值En,Ec = encrypt(Ep,En,R),并通过服务器发送给C;

(4)C用R解密密文,EP,En = decrypt(Ec,R),将做三件事:

1)用C 的 私 钥K,记为Ck。用Ck 签名E的公钥Ep,Es = sign(Ck,Ep),签名的结果发送给A;

2)用C的固定随机值Cn,计算EP的信息摘要,Ed= hash(Cn,Ep),连同Ep发送给服务器保存,保存结果类似一行记录[EIDEd,EPCID];

3)向E确认结果。

当B移除C时,由于B持有C的固定随机值Cn,B只需交验Ep,Ed= hash(Cn, Ep),校验通过即可认为E为C的下属。

接入层中的服务来负责手机端信息传递与交互。假定授信系统接入层中数据可能不可信,一些中间结果保留在接入层为防止人为篡改,需要对保留的信息作信息摘要。参与信息摘要的部分信息来自于手机客户端,这样一来,就把风险分散在多个点上,大大降低系统性风险。

3.2.2 申请模版

前面提到数字通证转移是有一套完整的审批流程。提交审批前先要有申请模版。申请模版也可看作是多重签名列表,里面指定了参与审批人的公钥,以及最少允许通过审批的人数。与多重签名不同的是,多重签名是有顺序的,而授信系统的申请模版不需要签名顺序,只需要每个参与的签名者签出的结果验证都为真。申请模版需要全体最高权限管理者投票通过方可生效,授信系统会对投票通过的申请模版作信息摘要,并对信息摘要上链保存。

员工申请转移数字通证时选择填写并提交申请模版,经由企业内部员工逐级审批,审批的过程即对申请签名。在通过全部审批后,本次申请被流转到授权层服务中被处理。授权层服务会作最终的校验,通过比对申请模版的信息摘要校验其申请模版的合法性,如果合法,则校验每一位签名者的签名结果是否有效。通过校验的申请由授权层服务调用驻留在内存中的私钥对数字通证转移进行签名,并发送到公链上实现自动转移。

3.3 通信安全

在通信方面,采用了迪菲-赫尔曼密钥交换(Diffie-hellman Key Exchange)安全协议,来确保通信安全以及确保通信前向安全。

通信用的交换密钥在内存中被切分成多份保存,保护密钥的方式同保护私钥,被切分的密钥会定时变化,但最终的密钥在提供服务阶段保持不变。我们利用异或的特性来完成这一整套逻辑,如图5所示。

图5 通信安全逻辑

3.4 授权安全

授权层中的签名服务是整个系统中的重中之重。它是数字通证的真正出口,也是信息验证的重要环节。私钥在系统运行过程中就存放在签名服务所在的内存中。签名服务可以部署在一台云端服务器,也可以是提供长期运行的安装有Mac OS 操作系统笔记本。同时签名服务配有守护程序,它会主动关闭所有操作系统端口,并实时监测操作系统运行情况,一旦发现有操作系统账户登陆系统或是异常的进程出现,它会第一时间停止签名服务,签名服务在停止前会立即清空内存中的敏感数据。签名服务主动连接系统中的其他服务,只接受系统内协议数据。

签名服务所在服务器相当于是一台堡垒机,它应由最高权限管理者共同管理。为防止最高权限管理者之间发生问题,故将动用私钥的权限分摊到每一个人之上,任何一个人都无法直接从服务器中直接拿取私钥。

4 防止入侵操作

世界上任何一个系统都不可能百分之百安全,但只要做好足够的防范措施,是可以预防入侵情况发生的。授信系统的安全核心技术虽然已经比较完备了,只要是人治的系统,一定存在人为或者程序漏洞,因此以下操作可以增加防范力度。

4.1 日志收集

(1)任何对外接口均在Nginx层面记录日志;

(2)配 置Nginx规则POST请求参数的记录(发现黑客入侵点);

(3)通过日志请求可以识别不同的用户,如记录请求中Cookie或者AuthToken;

(4)日志实时同步到专门收集日志的服务器(防止黑客入侵后清理痕迹)。

4.2 数据库安全

(1)使用非Root用户;

(2)对应项目程序仅仅拥有特定数据库权限;

(3)用户仅仅赋予“增、查、改”权限,所有数据都是基于状态的假删除(防止黑客操作数据库后直接删除数据)。

4.3 服务器安全

(1)SSH登录服务器通知;

(2)SSH证书登录;

(3)SSH证书加上密码;

(4)禁止核心服务器互相加SSH Key;

(5)禁止使用Root用户操作;

(6)服务器目录权限禁止777;

(7)所有操作通过堡垒机操作,堡垒机器会有登陆认证,多因子验证,会话管理,指令限制,录像管理;

(8)服务器进程白名单,任何未知进程启动直接杀死,通知提醒。

5 结束语

本文从区块链技术角度出发,旨在探究其在企业组织多人共同安全管理和使用通证的应用模式,这也是本文主要的出发点和创新点。

伴随着数字通证市场规模的快速增长,盗取通证事件发生得越来越频繁,这些事件不断被媒体爆光之后,使得企业对数字通证安全、使用便捷等问题产生严重担忧。这些问题已经制约了企业用户对数字通证的投资和管理,而好的一方面在于,因为大家的安全意识不断提高,区块链、数字通证的安全防护技术也在不断加强。

猜你喜欢
私钥钱包内存
比特币的安全性到底有多高
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
网上理财陷阱多 捂紧钱包别上当
程序员把7500枚比特币扔掉损失巨大
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
钱包
一种基于虚拟私钥的OpenSSL与CSP交互方案
我帮你拿来了
内存搭配DDR4、DDR3L还是DDR3?