:::: MENU ::::

TalkingData's Blog

现在开始,用数据说话。

Monthly Archives / 十月 2017

  • 十 31 / 2017
  • 0
Ideas, Tech

锐眼发现 | 后ICO时代:理性看待金融区块链的应用场景与监管底线

作者:史广龙

转载自:腾讯研究院金融研究中心

 

电子货币伴随区块链技术的快速发展,引发了各国监管者对于数字货币的关注,同时,随着区块链技术在金融行业的迅速推广,监管层面如何应对这一态势也成为各方关注的热点问题。

一、监管与治理:电子现金系统的发展瓶颈与区块链应用场景的嬗变与创新

(一)数字加密货币背后的电子现金系统陷入瓶颈

数字加密货币形成的点对点电子现金系统扩张步伐,在经历野蛮扩张之后,近期逐步陷入停滞。从根本上说,这是因为数字加密货币的发展与中央银行功能的发挥发生冲突,触及了金融监管的底线。 具体而言主要集中在以下三个方面:

一是影响物价稳定。数字加密货币的不断增长,实质上增加了货币供应的数量,将影响货币周转速度、现金的使用以及调节货币流动总量机制,可能对实体经济产生一定的替代效应。

二是影响金融稳定。数字加密货币游离在银行系统之外,它只有交换价值,没有使用价值。数字加密货币没有最后贷款人的支持,它的影响力取决于活跃使用者的数量与愿意接受的商家数量,网络规模决定货币价值。随着数字加密货币与现实世界联系的增强,可能成为潜在的不稳定因素。

三是影响支付系统稳定。数字加密货币面临信用风险、流动性风险、经营风险、法律风险,可能冲击现有支付系统的稳定。

有鉴于此,主要国家的中央银行均对非法定数字加密货币采取了相对谨慎的态度,纷纷否定其法币地位,甚至采取一定的限制措施。监管的介入直接导致非法定数字加密货币使用规模的扩张进入瓶颈期。

同时,各国中央银行开始探讨甚至实施法定数字加密货币的发展计划。 2015年厄瓜多尔率先推出法定数字加密货币,希冀能减少发行成本及增加便利性,让偏远地区无法拥有银行资源的民众也能通过数字化平台,获得金融服务。突尼斯也根据区块链的技术发行法定数字加密货币,除了让国民通过数字货币买卖商品,还能缴付水电费账单等,结合区块链分布式账本的特性,将交易纪录记载于区块链中,方便管理。在部分主权国家范围内,出现了法定加密数字货币逐步替代比特币的趋势。

(二)区块链在跨境支付结算领域可能形成突破

当前跨境支付结算格局的形成与中央银行的权力边界密切相关。中央银行只能在主权国家的范围内行使权力。跨境支付至少涉及两个以上的主权国家,除非基于主权国家间的协议,中央银行对于支付结算系统的规划,难以延展至境外。由于支付结算系统涉及主权国家的金融安全,全球范围内的公约始终无法订立。跨境支付结算企业只能基于各国碎片化的监管规则,在各国中央银行等金融监管机构容许的范围内开展业务。 这导致当前跨国支付结算机制存在以下明显缺陷:

一是操作成本和费用高昂。 跨国支付结算依赖于各国银行的广泛参与,价值链条上涉及的节点多,导致多次收费。同时,在这一价值链条上,各国银行彼此之间不存在直接竞争,造成跨境支付结算费用高昂。

二是安全性和便利性差。 跨境支付清算依赖各国当地银行的参与,支付方必须准确无误的填写银行账户和汇款路径代码,并且只有在银行工作时间才能实际处理交易,严重影响了金融机构的客户体验。

三是结算流程缓慢而效率低。 支付结算流程涉及包括各国参与银行在内的多个主体,整个链条上任何一方的拖延,都可能降低支付结算效率,导致在途资金占用量大,影响金融机构客户的资金使用效率。

将区块链技术应用于跨境支付结算,通过智能合约直接连通付款方银行与接收方银行,就能够绕过中转银行,减少中转费用支出,不但可以实现全天候支付、实时到账,而且带来了提现简便,消灭了大量隐性成本,有助于降低跨境支付结算风险及满足跨境对跨境支付结算服务及时性、便捷性的需求。根据麦肯锡的测算,从全球范围看,区块链技术在B2B跨境支付与结算业务中的应用将可使每笔交易成本从约26美元下降到15美元。

(三)金融行业应用区块链技术的场景创新

各国监管者虽然对非法定加密数字货币持非常明确的保留或者负面态度,但是并没有限制区块链技术在支付和其它金融领域的应用。这为传统支付机构运用区块链技术进一步提高竞争力,以及金融科技企业在支付领域的崛起创造了制度环境。

一是内部场景 : 传统支付机构的变革。虽然各支付机构采取的策略不同,但是纷纷加大力度尝试将区块链技术应用于自身网络的完善之中,以此扩大市场份额,提高市场竞争力。

2015年11月,Visa欧洲联合实验室(Visa Europe Collab)与Epiphyte开始合作尝试将比特币区块链应用于跨境汇款,资金通过比特币区块链进行跨境流转,最终由Visa的网络设施收取。2016年7月,Visa欧洲联合实验室测试将初创公司SatoshiPay的技术运用于Visa银行卡支付网络,允许客户的Visa账户向SatoshiPay钱包进行自动小额付款。2016年9月,Visa欧洲联合实验室与BTL Group的合作项目已经开始测试通过智能合同提升银行间的境内和跨境支付活动效率。

除此之外,万事达、西联与SWIFT(环球同业银行金融电讯协会)也都在尝试通过区块链技术完善现有的商业网络。其中,万事达与西联都是DIGital Currency Group的投资者。

二是外部场景: 金融科技企业的崛起。区块链技术带来的变革为金融科技企业跨界提供支付服务创造了机遇,并开始挑战传统支付机构的行业地位。

成立于美国的Ripple为一家利用类区块链概念发展跨境结算的金融科技公司,它并没有采取与支付机构合作的模式,而是构建了一个没有中央节点的分布式支付网络,主要吸收商业银行加入合作,希望提供一个能取代SWIFT网络的跨境支付清算平台,打造全球统一网络金融传输协议。目前来看,Ripple的商业模式定位基本决定了它将逐渐演变为双方结算过程中可信赖的第三方,最终可能形成中心化而非去中心化的商业模式。如果Ripple真的向这个方向发展,那么它在商业模式上与SWIFT已经没有本质的区别,两者仅仅是技术手段层面的分别。

但是,金融科技企业毕竟开始利用区块链技术带来的便利蚕食传统支付机构的跨境交易市场份额。为了应对Ripple等金融科技企业的挑战,SWIFT召集占据全球75%跨境支付份额的73家大型银行探讨如何显著提高跨境支付的效率和透明度等客户体验。

二、底线与竞争:加密数字货币和区块链技术在金融行业应用的国际监管经验

(一)各国普 遍不认可非法 定加密数字货币的法币地位

美联储 主席耶伦在向美国参议院银行委员会提交的报告中指出,比特币作为创新性的支付工具,游离于银行体系之外,并不属于美联储的监管对象,变相否定了比特币的法币地位。

根据美国《商品交易法》数字加密货币应属于“商品”,由此美国商品期货交易委员认为比特币在法律上应该被视为“商品”。美国联邦税务局(Internal Revenue Service)也认为比特币并非是货币而是财产,其挖矿、买卖和使用行为均应进行纳税申报。

2014年 6 月 29 日,加利福尼亚州州长签署《数字货币合法化法案》(简称“AB-129法案”),新法案规定:“虚拟货币不是法定货币,没有政府的信用背书,其账户和价值不受美国联邦存款保险公司(FDIC)和证券投资者保护公司(SIPC)的保护。”加拿大政府政府财政部官员也指出加拿大不认可比特币的法币地位,加拿大政府将密切关注加密数字货币的发展。

类似的, 欧洲央行认为,比特币等加密数字货币不符合经济或者法律中对于“货币”的定义,它没有同时满足货币作为交换媒介、价值储存、记账单位这三个条件。但是,加密数字货币可能会对中央银行功能的发挥产生影响。因此,欧洲央行认为其有义务设立机构监管加密数字货币,评估风险,审慎监管,保持金融系统完整性,防范其被用于非法用途。

德国联邦金融监管局(BaFin)与德国联邦财政部均认为比特币等加密数字货币属于记账单位,可归入德国银行业法中的金融工具种类。由于加密数字货币可以基于双方之间的合同成为多方结算的手段,因此它可能替代法定货币。为了避免歧义,德国联邦金融局明确指出加密数字货币并非德国支付服务监管法意义上的法定货币。

法国中央银行(Banque de France)也申明加密数字货币并非该国法律承认的法定货币,不可以作为支付手段,它本身存在重大风险,已经成为市场投机、洗钱或者其他非法活动的工具。

丹麦金融监管机构(Finanstilsynet)认为比特币不属于法币,比特币相关交易也不属于严格意义上的金融活动,比特币系统可以视为某种应纳税的电子服务。丹麦央行进一步指出,与黄金和白银相比,比特币并没有交易价值,比特币不受存款保险等本国法律机制的保障。

俄罗斯法律明确规定卢比为该国唯一法定货币,俄罗斯境内的一切金融交易必须采用卢比定价。据此,比特币不具有法定货币地位,如果双方在特定交易中使用加密数字货币而非卢比进行交易,无论是视其为外币或者外部担保手段都属于违法行为,并可能因此承担法律责任。日本金融服务厅(FSA)将比特币定义于“资产”或者“财产”,与美国联邦税务局的分类一致。

(二)监管机构不断加强非法定加密数字货币的监管

美国联邦政府相关职能部门通过澄清非法定加密数字货币的本质,解决了法律适用问题,借用现有的法律框架监管虚拟货币产生的犯罪风险,防止虚拟货币的非法使用。相比之下,州政府的监管目的不局限于防范反洗钱风险,更加倾向于保护消费者与保障网络安全。这就要求通过完善监管规则,保障监管机构的执法权。

例如,2014年6月,加州通过了《数字货币合法化法案》(简称“AB-129法案”),该法案明确规定现行法律禁止在美国发行或流通所有不合法的货币,但并不禁止加密数字货币的发行和使用,其立法目的在于修改现行法律,以确保使用各种形式的替代货币购买商品和服务或汇款时不触犯法律。

2015年3月,在AB-129法案的基础上,加利福尼亚州州长签署了AB-1326法案,AB-1326法案在加州金融法下新增一个章节(Financial Code第11章),专门规范加密数字货币企业,明确了加密数字货币业务的基本监管框架:除非是银行法上的特许机构或者与买卖商品和服务有关,任何机构接受加密数字货币用于划拨或者划拨该货币,获取、存储、替人代管加密数字货币,从事加密数字货币零售兑换服务,以及控制和管理加密数字货币均需要获得许可证。

被许可人应该向消费者揭示加密数字货币风险,如币值波动、资产不保值等,并让消费者知悉向监管部门投诉的程序。每个获得许可的企业都必须建立并维护相关政策和程序,保障消费者投诉获得公平和及时的解决。

法案要求被许可人建立稳定高效的运营系统,采取技术保障措施,定期对系统进行压力测试。为了确保业务在法律法规框架内有序进行,法案要求被许可人应配合合规检查。如果发现被许可人有违法违规行为,检查专员可以要求其改正,确保合法合规,或要求其停止不安全或者危害的作为,在特定情况下甚至可以暂停、撤销许可证,或将破产的被许可人交由破产管理。

德国 联邦金融监管局明确,单纯或偶尔从事比特币挖矿、支付活动并不需要取得监管部门的许可。但是如果从事为他人交易比特币提供服务的商业活动,则应该根据德国银行业法取得许可。此原则亦适用于具有商业性质的大规模比特币挖矿活动。

质言之,德国联邦金融监管局认为商业性的比特币服务行业应受到金融监管,在具体方式上监管部门对不同的业态采取不同的方式:

一是比特币交易经纪业务。根据德国法如果以自己名义为他人购买和销售比特币,则构成典型的经纪业务,需要取得德国联邦金融监管局的许可证。该种模式下,经纪业务背后的客户并不了解对手的真实身份。比特币经纪人根据客户指示的数量和价格购买或者出售比特币。

二是比特币平台业务。 如果比特币交易根据平台设计的规则重复进行,促成交易各方可以在价格达成一致意见时完成比特币交易,监管部门就认为该平台具有面向大众的多边交易功能,并且此类比特币平台业务需要根据德国银行业法取得许可证。

三是比特币信息中介业务。 如果企业不直接参与比特币交易,而仅仅是提供信息平台,供交易双方了解对方拟交易的比特币数量或者价格,则经营比特币信息中介业务的企业应取得从事比特币居间商业务的许可证。四是自营交易。企业用可支配的资金以自己名义进行比特币交易,属于从事比特币自营交易的盈利活动,根据德国银行业法从业者亦应取得相应的许可证。此外,需要注意的是,取得上述各类许可证从事比特币业务的企业在经营过程中,需要履行有关反洗钱和反恐怖融资的合规义务。

法国 中央银行认为从事比特币与法定货币之间进行兑换的业务属于支付服务,此类业务必须获得审慎监管机构的授权并取得许可证。这一方面有利于降低比特币交易中的欺诈风险,同时也有助于督促经营主体履行反洗钱和反恐怖融资方面的合规要求。

日本 2016年5月通过了一项监管国内加密数字货币交易所的法案,要求加密数字货币交易所运营商在日本金融服务厅进行注册,并要求将法定货币、数字货币基金监管和管理分开,同时严格实施反洗钱法条例,落实了解你的客户规则。

俄罗斯 中央银行明确,俄罗斯境内的个人或者企业,无论是自己从事还是协助他人或者别的企业从事以比特币交易商品、服务、或者法定货币的行为,都被视为与洗钱或者恐怖融资相关的可疑活动,因此建议俄罗斯个人或者企业远离比特币交易。2017年10月中旬,俄罗斯总统普京宣布将发布法定数字货币加密卢布“CryptoRuble”。

(三) 区块链监管的跨州跨国监管竞争加剧

尽管主要国家在非法定加密数字货币的监管态度上达成了最基本的共识,但是在具体操作上,觊觎金融领域应用区块链技术的潜在商业价值,各国纷纷结合本土情况,采取不同的监管策略。在金融行业应用区块链技术领域,监管竞争最为激烈的当属美国联邦各州之间,以及放松管制著称的各国际金融中心之间。

一是州际竞争。 在支付行业应用区块链技术的监管方面,美国各州之间存在一定差异,监管制度最终与各州金融产业政策结合,形成独具特色的竞争格局。例如,在加密数字货币的监管方面,加州法案构建了虚拟货币业务领域的审批体系,寻求在消费者保护与促进产业发展之间的平衡,一方面为消费者提供必要的保障,另一方面为初创企业提供健康的成长环境。

此外,立法者还设计了临时许可证制度,使得初创企业和服务少量消费者的小企业享有更低的门槛,具体表现为企业满足比较低的申请要求就可以从业,企业可以根据风险评估标准自行证明合规性等。

相反,纽约州作为大型金融机构的聚集地,监管政策就比较严苛,无论是监管范围、资质审核,还是获得执照后应持续满足的监管规定,对任何一个想要申请数字货币执照的企业来说,都需要消耗大量资源满足监管要求。上述规定比较符合纽约州大型金融机构的利益诉求。一些小规模的初创企业在起步阶段如果选择在纽约州开展业务会遇到较大的困难。

二是跨国竞争。 欧盟成员国大多采取了类似欧洲央行的态度,审慎推定并密切关注加密数字货币的发展,初步确定了最基本的监管规则。然而,英国作为欧洲最重要的金融服务业中心,对比特币等加密数字货币一直采取相对柔和的监管措施,并没有通过官方途径对于比特币的性质作出明确界定,也没有对数字货币的交易活动进行严格限制。英国这种“看看再说”的模式与欧洲大陆国家比较谨慎的态度形成鲜明对比,实际上体现了欧洲国家之间对于金融服务业的不同态度。

相对于以工业立国的德国和法国,英国有意识地希望成为欧洲范围内加密数字货币和应用区块链技术的中心,增强伦敦作为全球金融中心的竞争力。可以预见,在英国正式脱离欧盟之后,很可能采取更为宽松的监管态度。香港和新加坡作为亚洲地区效仿伦敦模式的国际金融中心,对于支付行业应用加密数字货币等区块链技术也采取了宽松模糊的监管策略,避免在金融服务业全球转移中处于监管竞争的劣势地位。

瑞士对加密数字货币以及其他区块链技术在支付领域的应用持完全开放的态度。加密数字货币的支付系统与瑞士私人银行一贯遵循的保密原则相吻合。瑞士的银行和证券等金融机构已经开始大规模地尝试应用区块链技术,甚至政府层面也直接介入。

例如,以投资环境好和税收显著低的优势吸引全球对冲基金、大宗商品交易商入驻的楚格州,正全力打造区块链产业的国际竞争优势,当地政府率先允许市民以一定数额的比特币(不超过两百瑞士法郎)缴纳赋税,创造应用场景,吸引初创企业,被外界形象的称为“加密谷 (Crypto Valley) ”。

三、秩序与创新:加密数字货币和区块链在金融行业应用的监管启示

(一)建立非法定数字货币的基本监管制度框架体系

2013年12月,中国人民银行等五部委联合发文(简称“五部委通知”),确定了比特币的监管框架:

一是明确加密数字货币性质。比特币是一种特定的虚拟商品,不具有法偿性与强制性等货币属性,并不是真正意义的货币,不具有与货币等同的法律地位,不能且不应作为货币在市场上流通使用。但是,比特币交易作为一种互联网上的商品买卖行为,普通民众在自担风险的前提下拥有参与的自由。

二是隔离正规金融服务。各金融机构和支付机构不得以比特币为产品或服务定价,不得买卖或作为中央对手买卖比特币,不得承保与比特币相关的保险业务或将比特币纳入保险责任范围,不得直接或间接为客户提供其他与比特币相关的服务。

三是加强平台监管。作为比特币主要交易平台的比特币互联网站,应当根据《中华人民共和国电信条例》和《互联网信息服务管理办法》的规定,依法在电信管理机构备案。同时,针对比特币具有较高的洗钱风险和被犯罪分子利用的风险,交易平台应切实履行反洗钱义务。

五部委通知将比特币定义为商品而非法定货币与其他主要国家一致,通过隔离正规金融机构,在一定程度上建立了比特币等非法定数字货币与正规金融活动之间的防火墙,降低了随后比特币价格大幅波动时对正规金融服务的冲击。但是,通过部门规章规范比特币交易的缺点也是显而易见的。

由于缺乏通过法律或者法规确定的准入门槛和与之配套的监管制度,导致具有商业性质的大规模比特币交易长期游离在监管之外。监管部门只能通过约谈、风险提示、发布公告(如《关于防范代币发行融资风险的公告》)等柔性方式规范与非法定数字货币相关的发行或者交易行为,难以通过强有力的处罚机制约束和限制平台或者个体违规。

为此,有必要系统研究制定针对非法定数字货币的基本监管制度,在扩大现有法律有关“证券”等概念范围,规范解决ICO问题的同时,明确界定非法定数字货币经纪业务、非法定数字货币平台业务、非法定数字货币信息中介业务和非法定数字货币自营业务,根据不同的业务类型设定准入门槛、业务规则并辅之以相应的监管和处罚制度,加强投资者保护,逐步建立非法定数字货币的基本监管制度体系。

(二)尽快完成法定数字货币的顶层设计与初步示范

有别于针对比特币等非法定数字货币采取的审慎态度,监管机构认为法定数字货币是历史发展的必然,央行必须推动发行数字货币,最大限度地提升支付交易的便利性和安全性。央行对法定数字货币的形态和运行框架等问题已形成了初步的研究成果,并将在此基础上进一步探讨技术细节,发展法定数字货币的发行和流通体系。

但是,考虑到法定数字货币可能对金融体系乃至国民经济产生的深远影响,监管机构必须审慎择时,并在推出中国版法定数字货币的同时,颁布与之配套的发行、流通、兑换和监管制度,形成完整的加密数字货币监管框架,积极防范金融风险,为在极端情况下采取应对措施做好前期准备,留足央行进行直接市场干预的技术、规则与法律空间。否则,一旦发生超出央行控制范围(例如,跨国交易或海外交易)与能力的风险事件,后果将不堪设想。

同时,为了防范法定数字货币可能对整个金融系统的负面影响,监管部门可以考虑与大型金融科技公司进行技术和渠道方面的合作,构建稳固的监管沙盒,将法定数字货币应用于特定地区的特定领域,包括在工商、税务、交通等公共管理领域和煤气、供电、供水等公共服务领域率先接受数字货币进行线上支付,形成小范围、小领域的可控闭环。待初步试验成功之后,再逐步向外围推广。

(三)加强监管机构在金融业应用区块链上的国际协调

除了数字货币之外,区块链技术在银行、证券、保险和支付领域仍然有非常广泛的发展空间。为此,主要国际金融机构通过组成投资团队与金融科技企业合作等方式(例如,囊括40多家大型国际银行与科技公司的R3 CEV开展区块链领域的深度合作),探索区块链技术在金融行业的商业应用,场景逐年递增,涉及跨境支付与结算、票据与供应链金融、证券发行与交易、客户征信与反欺诈等领域。

由于这些商业应用形式尚未大范围推广,在是否应出台针对性的监管措施以及如何监管区块链技术与金融业结合形成的新型商业模式方面,各国监管机构短时间内不会表态,该策略同样也适用于中国。

从根本上说,金融业应用区块链技术形成的新型交易结构是否能够取代以及在多大程度上替代当前中心化的商业模式仍然需要时间观察。伦敦、新加坡、香港、瑞士等主要金融中心为吸引国际金融资本转移可能进一步放松管制,这为区块链技术与金融业结合创造了监管新型商业模式的海外场景。

考虑到区块链技术对金融机构业务模式可能产生的深远影响,中国金融业可能在个别领域具有了初步挑战传统国际金融机构霸主地位的可能,监管部门可以尝试推动国有金融机构与大型金融科技公司合作将区块链技术应用于跨境支付等领域,或者在一些新兴领域进行尝试,并借助于大型互联网公司在大数据、云计算和人工智能等方面的技术储备,不断提高监管能力,积极推广监管科技(Regtech),降低金融机构应用区块链等新技术的合规成本,提升中国金融服务业和金融科技在全球的竞争力。

(四)重点打击违法犯罪行为

区块链技术在金融业的应用,可能导致监管机构在某些业态下无从获取相关交易信息,在一定范围内形成了监管真空,成为某些犯罪行为的孳生地。

近年来,与加密数字货币密切相关的黑市交易(例如,美国臭名昭著的“丝绸之路”)、洗钱和恐怖主义融资行为不断增加,犯罪分子利用区块链技术隐蔽性高、难以察觉的特点,在监管的灰色地带,大规模从事违法犯罪行为,已经成为各国乃至国际刑事司法力量重点打击的对象。同时,区块链技术本身的神秘性和复杂性,以及比特币等非法定数字货币交易价格在短短数年内的暴涨,也成为不法分子打着高科技和颠覆性的旗号,借助社交媒体进行非法集资和网络诈骗的新常态。

对此,金融监管部门可以考虑与公检法系统通力配合,并提供必要的技术与信息支持,合力打击洗钱、恐怖融资、集资诈骗、非法或变相吸收公众存款等违法犯罪行为,坚决维护金融市场秩序。

  • 十 31 / 2017
  • 0
Tech

锐眼发现 | 用100元的支票骗到100万:看看对抗性攻击是怎么为非作歹的

作者:Roman Trusov

原文:How Adversarial Attacks Work

转载自:微信公众号「大数据文摘」

编译:元元、桑桑、徐凌霄、钱天培、高宁、余志文

 

Google brain最近的研究表明,任何机器学习的分类器都可以被误导,然后给出错误的预测。甚至,只需要利用一些小技巧,你就可以让分类器输出几乎任何你想要的结果。

机器学习可能会被“误导”的这一现象,正变得越发令人担忧。考虑到越来越多的系统正在使用AI技术,而且很多系统对保障我们舒适而安全的生活至关重要,比如说,银行、监控系统、自动取款机(ATM)、笔记本电脑上的人脸识别系统,以及研发中的自动驾驶汽车。关于人工智能的安全问题,近期的关注点主要围绕道德层面,今天我们将讨论一些更紧迫更现实的问题。

什么是对抗性攻击(Adversarial Attacks)

机器学习算法的输入形式为数值型向量(numeric vectors)。通过设计一种特别的输入以使模型输出错误的结果,这便被称为对抗性攻击。

这怎么可能呢?没有一种机器学习算法是完美的,正如人类会犯错误一样,机器智能自然也会出错——虽然这很罕见。然而,机器学习模型由一系列特定的变换组成的,大多数变换对输入的轻微变化都非常敏感。利用这种敏感性可以改变算法的运行结果,这是人工智能安全安全的一个重要问题。

本文中,我们将展示攻击的几种主要类型及实例,解释攻击易于实施的原因,并讨论这个技术所引起的安全隐患。

对抗性攻击的类型

下面是我们将要重点分析的主要攻击类型:

1.无目标的对抗性攻击: 这是最普遍的攻击类型,其目标是使分类器输出错误的结果

2.有目标的对抗性攻击: 这种攻击稍微困难一些,其目标是使分类器针对你的输入输出一个特定的类。

Inception v3 分类器

我们来看看针对Google Inception V3 ImageNet分类器的非目标性对抗攻击是如何完成的:

0-HGjC6UtRr5ekN4Te
图片注释:Inception v3 构架,来自于Google

一个经训练的神经网络本质上代表一个高维的决策边界。我们可以把决策边界想象为一组单元格,同一个单元格中的每一个点(在这个例子中是指每一张图片)都属于同一个类别。当然,边界不是完美的,甚至可以说,这些“单元格”的分类过于粗糙且为线性。这就是该模型的主要漏洞。

理想情况下,一个好的对抗性攻击是,提供一个与原始图片数据视觉上无法区分的输入,却让分类器输出完全不同的预测结果。该攻击的主要思想是为每一类图片找到一组能够把表示向量从原单元格“拖向”另一个单元格轻微的扰动。。本文中,我们将原始图片称为“源”(source),把我们加入的扰动称为“噪声”(noise)。虽然这并不是一个真正的噪声,但我们会看到,它其实包含着多重复杂的结构。

所以,现在我们需要知道的只是一个移动方向,使其从初始点(source)移动到临近的其他单元格, 或者在目标性攻击的情况下,移至目标类的某个特定单元格。

逐步分析

最简单但也最有效的方法是快速梯度逐步算法(Fast Gradient Step Method ,FGSM)。这个方法的核心思想是在每一步优化的过程中加入少量噪声,让预测结果朝目标类别偏移, 或者如你所愿远离正确的类别。有时候我们需要限制噪声的振幅以使得攻击更加隐蔽, 比如说防止某人调查我们的诡计。在我们的例子中,噪声的振幅意味着像素通道的强度——限制振幅可以确保噪声几乎无法察觉,而在最极端的情况下,图片看起来也只是像一个过度压缩的jpeg文件.

这是一个纯粹的最优化问题——但是在这个例子中,我们优化噪声的强度来使错误最大化。在这个案例中,因为你可以获取神经网络的原始输出信息, 所以你可以直接测量误差以及计算梯度。

你一定会说, 很不错, 但是如果我们没有完整的原始输出信息怎么办, ——比如只有一个分类结果? 如果我们不知道模型的架构怎么办? 

好,让我们假设一个最现实的例子。如果我们要攻击一个完全的“黑箱”, 即接受一张图片作为输入,然后输出该图片的类别。仅此而已。你该怎么办呢?

你可以从相同的方向入手. 首先你需要生成噪音并加到图片上, 然后将图片输入分类器, 并不断重复这个过程直到机器出错。不管你是否限制噪声强度的大小,重复到某个时刻,你都不会再看到正确的分类结果。此时你需要做的事就是找到能得到相同错误结果的最弱噪声,用一个简单的二分搜索就可以做到.

让我们来看看为什么这个方法可行。我们来考虑图片空间中的不同横截面,如果你开始向某个方向移动, 你会停在哪儿呢?根据FGSM的定义(沿梯度方向逐步移动),FGSM会使你移动到真实类别和某个错误类别的边界上, 如下图所示:

0-H410JjBlEmEccB9d

图片标题:对抗方向和随机方向的横截面图集
横坐标:快速梯度方向(对抗方向)
纵坐标:垂直梯度方向的随机值(随机方向)
与David Warde-Farley和Nicolas Papernot合作完成图片

“真”和“假”之间的边界几乎是线性的。我们可以从中得到两个有趣的结论。首先,如果你沿着梯度的方向进行计算, 一旦碰到了预测的类别改变的区域, 就可以确认攻击成功了。另一方面,它表明了,决策函数的结构远比大多数研究者想象的容易。

这个方法很简单而高效。如果没有防护措施,这个方法几乎可以“玩弄”所有的机器学习算法。

让我们来执行一个无目标性攻击

0-yxhhS1TMXa2UNXjb

成功案例:非目标性攻击让你的跑车秒变烤面包机

在本实验中,我们将使用PyTorch和torchvision包中的预训练分类器Inception_v3模型。

让我们逐步分解攻击的思路。首先,我们需要选择一组图像,将它转化为对抗样本。为了简单方便起见,我将使用NIPS 2017对抗攻击挑战赛中的数据集(development set)。

你可以在这里下载所有的脚本:

https://github.com/tensorflow/cleverhans/tree/master/examples/nips17_adversarial_competition/dataset

mport torch
from torch import nn
from torch.autograd import Variable
from torch.autograd.gradcheck import zero_gradients
import torchvision.transforms as T
from torchvision.models.inception import inception_v3
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

定义主要的设置,并初始化神经网络:

classes = eval(open('classes.txt').read())
trans = T.Compose([T.ToTensor(), T.Lambda(lambda t: t.unsqueeze(0))])
reverse_trans = lambda x: np.asarray(T.ToPILImage()(x))

在这里,我们需要一个可以将PIL(Python Imaging Library)图片转换为Torch张量的转化,同时我们还需要一个可以输出numpy矩阵的反向转换,让我们可以将其重新转化为一张图片。

eps = 2 * 8 / 225.
steps = 40
norm = float('inf')
step_alpha = 0.0001
model = inception_v3(pretrained=True, transform_input=True).cuda()
loss = nn.CrossEntropyLoss()
model.eval();

这是一个可以拿来就用的预训练神经网络。这篇教程中的所有操作都是在GPU上运行的,如果你不想使用GPU,只需要将代码中所有的“.cuda()”调用和“.cpu()”调用删除即可。

我们也定义了一个损失函数,之后会在此基础上进行梯度下降。关于“step_alpha”参数,我们稍后会进行进一步讨论。

为了使攻击更加细微,我们需要为所增加的噪音施加约束。一个很好的方法是将噪声的L-无限范数(即绝对值)限制在一定值,通过这种方法,图像就不会显得过亮或过暗。这种方法也很容易理解——像素点数值的绝对值正代表了图片在某一RBG通道的亮度。

在编写攻击代码之前,让我们先添加这个可以进行可视化的函数:

def load_image(img_path):
    img = trans(Image.open(img_path).convert('RGB'))
    return img

首先,我们从磁盘读取图像,并将其转换为网络能接受的格式。

def get_class(img):
    x = Variable(img, volatile=True).cuda()
    cls = model(x).data.max(1)[1].cpu().numpy()[0]
    return classes[cls]

默认情况下,分类器只给我们一个类的数字id——该方法既能完成统计推断,也能给出最可能的分类结果。

def draw_result(img, noise, adv_img):
    fig, ax = plt.subplots(1, 3, figsize=(15, 10))
    orig_class, attack_class = get_class(img), get_class(adv_img)
    ax[0].imshow(reverse_trans(img[0]))
    ax[0].set_title('Original image: {}'.format(orig_class.split(',')[0]))
    ax[1].imshow(noise[0].cpu().numpy().transpose(1, 2, 0))
    ax[1].set_title('Attacking noise')
    ax[2].imshow(reverse_trans(adv_img[0]))
    ax[2].set_title('Adversarial example: {}'.format(attack_class))
    for i in range(3):
        ax[i].set_axis_off()
    plt.tight_layout()
    plt.show()

我们的FGSM攻击将取决于三个参数:

1.最大强度(这不应超过16)

2.梯度步数

3.步长

一系列试验后,我们将梯度步数确定在了10-20,将步长定为0.001。通常我们不会把步长设置的太大,以避免结果不稳定。这一步骤和普通梯度下降是一样的。

def non_targeted_attack(img):
    img = img.cuda()
    label = torch.zeros(1, 1).cuda()
    x, y = Variable(img, requires_grad=True), Variable(label)
    for step in range(steps):
        zero_gradients(x)
        out = model(x)
        y.data = out.data.max(1)[1]
        _loss = loss(out, y)
        _loss.backward()
        normed_grad = step_alpha * torch.sign(x.grad.data)
        step_adv = x.data + normed_grad
        adv = step_adv - img
        adv = torch.clamp(adv, -eps, eps)
        result = img + adv
        result = torch.clamp(result, 0.0, 1.0)
        x.data = result
    return result.cpu(), adv.cpu()

通过这样的修改,我们让分类器越错越离谱。我们可以完全控制该流程在两个“维度”中的细化程度:

1.我们用参数eps控制噪声的幅度:参数越小,输出图片的变动也就越小

2.我们通过参数step_alpha来控制攻击的稳定性:和在神经网络的普通训练过程中类似,如果把它设置得太高,我们很可能会找不到损失函数的极值点。

如果我们不限制攻击的幅度,结果则可能类似于目标类中的平均图像,权衡之后将如下所示:

0-TK7pjM6AWAXQGayq

在我所有的实验中,使用最小的eps也能带来不错的结果——很小的改动就能让分类器懵逼。为了更清楚地演示,在下面的示范中我将噪音调大了。

让我们来运行一下“攻击”,看看我们将得到什么:

img = load_image('input.png')
adv_img, noise = non_targeted_attack(img)
draw_result(img, noise, adv_img)

好,所以如果我们想要我们的神经网络输出某个特定的类别怎么办?这只需要对攻击代码做一些小调整就可以了:

def targeted_attack(img, label):
       img = img.cuda()
label = torch.Tensor([label]).long().cuda()
       x, y = Variable(img, requires_grad=True),
   Variable(label)
       for step in range(steps):
           zero_gradients(x)
           out = model(x)
           _loss = loss(out, y)
           _loss.backward()
           normed_grad = step_alpha * torch.sign(x.grad.data)
           step_adv = x.data - normed_grad
           adv = step_adv - img
           adv = torch.clamp(adv, -eps, eps)
           result = img + adv
           result = torch.clamp(result, 0.0, 1.0)
           x.data = result
       return result.cpu(), adv.cpu()

这里最主要的改变是梯度符号的改变。在无目标性攻击的过程中,假设目标模型几乎总是正确的,我们的目标是增大偏差。与无目标攻击不同,我们现在的目标是使偏差最小化。

step_adv = x.data - normed_grad

让我们来尝试一些有趣的例子,试试针对Google的FaceNet进行对抗攻击。

本例中,FaceNet是一个拥有密集层(dense layer)的Inception_v3特征提取器,可以识别图片中的人最可能是谁。我们采用户外脸部检测数据集(Labeled Faces in the Wild,LFW)来进行测试,这是面部识别的一个基准。Inception_v3的扩展网络与另一个分类器结合一起,使用LFW数据集的500张最常见的人脸进行训练。

0-is_Eo34gqTzmTo2N

图片解释:LFW 数据库范例

攻击的目标是使数据集中每一个人都被分到“Keanu Reeves”这一类

因为我们有很多张图片,我们可以选择性地在代码中加入一个攻击成功就停止运行的条件。在对数损失小于0.001时就停止攻击是很合理的;实践中,该停止攻击方法可以显著提高运行速度,如下图所示:

0-ey8FbF8nQLSaRNH5

图片标题:目标性攻击过程中,分类损失函数值逐渐减小
横坐标:梯度下降步数
纵坐标:损失

图中有一个很长的平稳期,这意味着大多数时候你可以省很多计算时间。

在我们深入研究之前:仅仅根据收敛所需要的步数,我们可以对该网络的决策函数做些什么推断呢?决策函数的维度太高以至于难以高效检验么? 既然最优化问题这么容易解决,我们推断边界是个很简单的函数,很可能是线性函数。

这告诉我们什么呢?第一,神经网络中的类相距很近。第二,不太明显的是,如果你仅仅输入一些随机噪声,分类器仍会输出一些预测结果,这并不总是一件好事。这个在图像理解领域还是未解决的问题,最近用对抗性训练解决了这个问题。

一个成功的目标性攻击需要多少步?

如下图所示:

0-g2KNxn4vkSTFu8Sy

图片标题:目标性攻击的梯度下降步数

有目标攻击的结果就没有那么有趣了——振幅降低的噪声使得原图和修改后的图片用肉眼无法分辨。

0-RzLCmGv71pb4MzW3

图片标题:从左到右:Sylvester Stallone, 对抗噪声,Keanu Reeves

实际案例

接下来,让我们一起来看看几个对抗性攻击的实际案例。(请勿模仿哦!)

打印一个“布满躁点”的写着$100的ATM支票-而用它取现$1000000.

把一个路标换成一个稍微有干扰性的,将限速设为200——这在自动驾驶的世界中是相当危险的。

不要再等自动驾驶汽车了——重新画你的车辆牌照,摄像头永远不会认出你的车。

安全性和性能的担忧

现在我们已经知道如何成功执行一个攻击,那么让我们来问问自己为什么它们这么危险。是的,每个人都可以使用FGSM,但有没有防御措施呢?

这里我提两个防御策略:

被动型策略:训练其他的分类器来检测对抗输入并抵制他们。

主动型策略:实行对抗训练程序。

主动型策略不仅可以帮助防止过度拟合,让分类器的鲁棒性变强,还可以让你的模型加速收敛。但是根据最近的研究结果,这也不能消除所有对抗攻击带来的问题。

而且,增加一个分类器也会大大降低分类效率,实现这两个分类器也要求你具备更多GANs的经验。

有些人说既然GANs中的鉴别器能够被训练用来侦测对抗的案例(在不消除攻击本身的情况下),攻击的问题能够通过抵制这种被破坏的样本来解决。不论是从商业还是从科学角度来讲,这种解决方案都不是最优的。除了没有人愿意承担误报(false positive)的风险这一因素,还有一个和机器学习本身同样古老的论点:“人类能做的都可以教给一个机器做”。人类可以无障碍地正确解释对抗案例,所以一定有方法让这件事自动化。

最后,迁移学习也非常适合被应用到这种攻击中。即使攻击者没办法接触原模型, 针对一个足够好的分类器所生成的样例也能够骗过很多其他作用相同的模型。

研究方向

最后,我想提几个针对对抗性攻击未来研究的几个研究方向。解决其中的一个或许就能让你扬名立万哦。

我们如何在分类器上实行对抗训练呢?如果我们可以训练出一个不仅能预测标签,还能辨别你是不是在骗他的网络,那可就太棒了。

对于大多数的类别来讲,决策边界到底长什么样子呢?我们知道他们是几乎线性的。但到什么程度呢?类群边界的确切形式(或者换一个准确高端的术语“拓扑”)可以让我们深入了解最有效的攻击/防御。

我们可以如何检测出对抗案例的出现呢?当你看到一个受损的图片时,比如一只大象的图,你很可能通过图上的彩色噪点识别出来。但对于机器来说,它非常确信这就是一架飞机,而不是一张有噪点的大象图。

参考资料 

论文

Explaining and Harnessing Adversarial Examples:
解释并治理对抗案例:
https://research.google.com/pubs/pub43405.html
The Space of Transferable Adversarial Examples:
对抗案例的迁移空间:
https://research.google.com/pubs/pub46153.html
Adversarial Autoencoders:
对抗自编码:
https://research.google.com/pubs/pub44904.html
Adversarial examples in the physical world:
现实世界中国的对抗案例:
https://research.google.com/pubs/pub45471.html

教程

Tutorial by Ian Goodfellow:
Ian Goodfellow的教程:
http://www.iro.umontreal.ca/~memisevr/dlss2015/goodfellow_adv.pdf
Lecture from Stanford course:
斯坦福课程:
https://www.youtube.com/watch?v=CIfsB_EYsVI
OpenAI tutorial:
OpenAI的教程
https://blog.openai.com/adversarial-example-research/

资料库和工具

Cleverhans is a great TensorFlow-based library for adversarial attacks and defences:
Cleverhans是一个很好的基于TensorFlow的对抗攻击和防御的文库
https://github.com/tensoreow/cleverhans
FoolBox — another collection of attacks that you can use with a framework of your preference
FoolBox——另一个你可以结合你喜欢的的框架运用攻击的集合:
https://foolbox.readthedocs.io/en/latest/

比赛

Non-targeted attacks:
无目标攻击:
https://www.kaggle.com/c/nips-2017-non-targeted-adversarial-attack
Targeted attacks:
目标攻击:
https://www.kaggle.com/c/nips-2017-targeted-adversarial-attack
Defences:
防御:
https://www.kaggle.com/c/nips-2017-defense-against-adversarial-attack
随时欢迎您 联系我们