没有谁不讨厌记密码——我、您本人、甚至FACEBOOK的老板马克·扎克伯格,肯定都非常讨厌去记各种场合的密码,人们经常会把密码忘掉,据德勤(Deloitte)公司统计,至少有37%的用户登陆网站的时候会忘记密码,从而使用“找回密码”的功能。(参见多账户使用密码为“dadada”)
我们经常在不同网站使用最简单的数字加字母组合,以便于不易忘记密码。据百利(Experian)公司统计,一位普通用户使用5个不同的密码登陆26个网站,但10000个最常用的密码组合就可以登陆98%的账户。
推特有3300万账户,LinkedIn有1.65亿账户,Tumblr有650万账户,VK.com有1.71亿账户,Badoo有1.27亿账户,MySpace有3.6亿账户。
如今有超过10亿的个人账户被破解,并在网络上公开销售。在这个密码易于被盗的时代,低难度的密码获得非常容易,甚至比钓鱼网站、恶意软件和漏洞利用还要容易得多。“密码确认”工具现在随时可以找到匹配重复使用密码的网站。
这就是为什么攻击者正是通过密码筛选或偷窃的手段来破解用户账户的原因。在2013年有76%的账户遭遇过攻击,而截至到2015年,该数据更达到了95%(选自Verizon的数据失窃调查报告)。黑客只需选择最脆弱的地方——简单的密码,就可开展攻击。企业花费了大量的成本,并创建了高品质和高安全的系统,但所有的努力都因为其客户使用了简单的诸如“12345”这样的密码而功亏于溃!
也许这就是为什么每位用户的系统安全成本在201美元,以及在2019年由于网络犯罪的亏损额将高达21亿美元的原因(是2015年的4倍多——数据来自于Juniper Research公司)。
不管安全专家如何努力地讲述如何按要求创建账户密码,都不能打败人性的弱点,那就是使用简单易记的密码。
尽管现在有众多的方式和手段,可用于解决密码被破解的问题,如1Password和LastPass这样的密码存储服务商,为客户提供密码记忆和创建一个主密码等,但他们都只是做了小小的常规方式改善,并没有解决这个问题的本质。很多程序(如浏览器等)通常要求“记住密码”,以便于下次自动登录,这都是不安全的。当有人接近您的计算机,即可获得您的自动登录信息,因此密码亦会被窃。
最大的问题在于,记录用户登录名和密码的数据库是中心化结构的,所有信息都存储于中心化的服务器,所有登陆验证的基础是记录于该服务器的用户名和密码。当然一些如网站管理员的用户使用的密码比常规用户的密码要复杂得多,这将导致黑客对这些复杂密码的账户更有诱惑力,这也是黑客为什么要黑进密码服务器要使用更多的手段和原因,黑客甚至需要找到带密码的文件,或是写有密码的纸张才可以登录。
其结果就是,人们发明了另外的安全系统以保护最重要的账户——“二次验证
”(2FA),该验证方式基于物理设备和人的记忆力。
例如,众所周知的谷歌身份验证——用户必须将手机上的二次验证码输入到电脑才可登录,而这些验证码会在短时间内改变。再次申明一下,这样的方式依然是不安全的(用户在输入二次验证码之前,其电脑已被置于黑客的控制之下)。而且就便利性而言,用户也懒得每次都输入二次验证码,除非是非常重要或很少登陆的账户。
另一个大家熟知的二次验证方式就是通过手机短信的信息获得验证码。这就产生了另一个问题,发送类似短信的成本价格。除此之外,俄罗斯等专制政府的情报部门对短信拦截的历史由来已久。
我想提及一下“Clef”——它提供了缓解之前提到的安全问题的服务,但不能用于移动设备。
使用如U盾或其他设备的硬件令牌,可以方便地在公司里使用,但对于使用数量大,并拥有智能手机的用户来说是超级不方便的。
以上是现状的描述,而我想表达的观点是:尽管现在所需的软硬条件都满足了,但依然没有一种既方便,又易于使用,还足够安全的解决方案用于身份验证。
但幸运的是,我们拥有区块链!
分布式、去中心化的数据库解决了中心化服务器容易被入侵的问题,此外它还适用于不对称加密的256位长度的秘钥,该秘钥可视为超级安全的密码。当然这么长的密码(秘钥)普通人很难记住,但根本不需要记住这段长密码——秘钥可在移动钱包生成,就是说,秘钥可被移动设备存储。
我们还用SSL证书保护类似于“中间人攻击”的通道。解决的办法是生成的匹配客户电子邮件和电话号码的SSL证书,同时写入证书哈希(Hash)到区块链进行校验。
工作详情:
当客户访问网站,浏览器会提示用户需要显示证书。
网站服务器收到证书,首先检查其签名。
服务器生成随机数后,通过包含在证书中的公钥对其进行加密,并发送到客户的浏览器,即一次性连接密码。
拥有证书文件和秘钥的浏览器提取秘钥,然后将加密的密码发送到服务器。
服务器通过区块链检查证书信息,以确认客户拥有正确的秘钥,为此,服务器检查了证书序列号,并在该序列号中搜索,在服务器核对收到的证书校验码后,确认该证书的序列号与注册时使用的证书一致。
如果攻击者产生了同客户序列号相同的证书,他讲无法导入校验码到区块链,因为该证书已被客户使用。如果攻击者创建了一个其它序列号的证书,这个证书只能拥有另外的ID,服务器将为其创建一个新的账户。
现在,必须让用户感到使用起来很方便,为此,我们要求用户只输入电子邮件地址和电话号码(无需密码!!),在本地生成包含该数据的证书,并且让用户安装到浏览器中。
之后,要求用户从确认邮件链接中激活账户,并以电话号码的形式确认并发送信息到客户服务机器人。再次提醒下,这个方式和发送手机短信验证码不同,确认的形式给了移动电话二次验证的独立通信通道,排除了黑客感染计算机信道的机会。
这样,我们既没有使用密码、中心化服务器和公共数据库进行登陆,又为客户提供了足够的方便。在日常中,我们并不需要使用二次验证信息(2FA),对于大多数服务器而言,浏览器证书足够安全——就像当前经常使用的“保存密码”以自动登陆一样方便,但又免于中心化服务器被黑的风险,也没有用户密码泄露的担忧,更不会使用“忘记密码/找回密码”功能。对于敏感的数据服务,建议使用二次验证(2FA),但即使使用二次验证,也会很便捷易用——仅需在信息中输入“Yes”即可!
证书可安装在移动设备上(SDK),操作系统会建议安装其他保护措施:生物识别、PIN码、图形锁,这些措施供客户自行选择,但最重要的是,即使最简单的其他保护措施也比现在的要安全。同时允许客户从任何设备上访问,这就为未来的大事件做好了准备,那就是——物联网应用!生物统计学和密码因为是根据现有的令牌硬件和U盾,因此无法使用我们的设备,但我们可以使其比现在更安全。
因此,主要特点如下:
- 用于安全连接和易于部署的SSL证书
- 可使用到任何设备:台式机、移动设备、汽车、无人机等
- 电子邮件和手机号码用于注册:无需钱包、无需节点、无需密码
- 方便和安全的二次验证:使用独立的信道同本地机器人进行信息交互
- 没有中心服务器:无攻击薄弱点
- 一个账户即可在多个网站使用
- 便于管理的多账户
问与答
如果你丢失了一台设备会发生什么?
你的账户与手机号码及电子邮件相关联,因此您才能够在恢复手机号码之前,通过邮箱暂停对账户的访问。在那之后,才有可能重新颁发证书。服务器使用的系统象银行一样,为了使在最复杂的情况下恢复账户,有可能会收集其他数据,如文件副本、客户照片。随着时间的推移,我希望能在区块链上存储完整的的身份信息,在这种情况下,物理形式的证书将不再需要。
有已经发行的例子吗?
通过SSL证书身份验证已在崛起币(Emercoin)中实现。我们用这个概念为MVP加入第二验证,利用安装的钱包自动生成一个证书而不需要服务器部署。我们还计划将这一技术部署在比特币的侧链上,以便于更廉价的转账,如果我们看到有这方面需求的话。
需要花费的成本是多少?
对用户来说是免费的。所需的费用是由第三方服务机构(如银行、交易所等)支付,因为他们想要降低安全费用,以及改善和缓解客户对其服务的评价。可能有些情况下,该服务的费用会要顾客来承担。例如,比特币交易所拥有数量庞大的客户,但收入却非常小,在此情况下,客户支付1美元/年的费用应该是可以接受的。
选择客服支付模式的一个原因,就是在区块链上创建一个帐户时需要完成一笔交易。另外,由于设备损坏等原因,还需要定期地重新颁发证书。
我很乐意听到公众对此具有便利性解决方案的意见:比如,对于无经验的用户来说,下载证书会很难吗?(它的下载和安装类似于任何程序),你看到了什么漏洞吗?作为一种服务机构或者作为一个用户,你会使用这样的技术吗?
引用的相关资源
- https://news.ycombinator.com/item?id=11845346
- https://www.bellingcat.com/news/2016/04/30/russia-telegram-hack/
- https://getclef.com/
- http://emercoin.com/EMCSSL