如何在区块链上确保二次验证2FA安全

SMS消息是最流行的两因素身份验证(2FA)方法。银行,电子和数字货币包,邮箱和各种服务都使用它。此方法的用户数接近100%

我不喜欢这样,因为通过SMS方法的2FA是不安全的。从移动时代开始,就将号码从一张SIM卡重新分配给了另一张。用于在SIM卡丢失时恢复号码。“数字货币断奶专家”意识到,此“覆盖SIM卡”选项可用于欺诈性计划。毕竟,控制SIM卡的人可以管理其他人的网上银行,电子钱包,甚至是加密货币。而且,您可以使用欺诈或伪造文件贿赂电信员工,从而超越他人的电话号码。

0h92GNGhVvfxe0CfP-1

数以千计的SIM卡交易所事件已被揭露-这就是所谓的欺诈方案。灾难的严重性表明,世界很快将通过SMS放弃2FA。但这并没有发生- 研究表明选择2FA方法的不是用户,而是服务所有者。

我们建议使用安全的2FA方法,通过区块链传递一次性代码,这是将其应用于服务的方法。

百万票据

根据伦敦警方的数据,2019年,SIM卡掉期欺诈增加了63%,攻击者的“平均支票”为4,000英镑。

SIM卡交易所用于窃取流行的Twitter,Instagram,Facebook,VK帐户,银行帐户,以及最近使用的加密货币。据《泰晤士报》报道,因黑客而失去电话号码的人数正以惊人的速度增长。的确,一位比特币企业家乔布·周斯(Joby Weeks)表示,他在加密货币社区中认识的每个人都已经窃取了他们的号码。自2016年以来,大众媒体报道了备受瞩目的互换案件,而在2019年,此类案件的数量达到了顶峰。

早在5月,密歇根州的美国检察官办公室报告说,有6个人被控进行在线身份盗窃。据称,年龄在19至26岁的被告与一个名为“社区”的黑客组织有联系。据说他们进行了七次攻击,导致价值240万美元的加密货币被盗。另一个众所周知的SIM骗局交易所案是Joel Ortiz,他被控在线盗窃超过750万美元的加密货币,并被判处10年徒刑。

0tPtRQqOSBBxRb3uP-1

乔尔·奥尔蒂斯(Joel Ortiz)在大学新闻发布会上。两年后,他将因网络欺诈而被拘留。

三步欺诈使您像乔布斯的火鸡一样贫穷

SIM骗局交易所者利用运营商的能力将电话号码移植到新的SIM卡上,这样,他们就可以盗用受害者的号码并用它来重置PIN。典型的SIM卡交易所过程分为三个步骤:

  1. 偷窥。欺诈者掌握个人信息,例如名字和姓氏以及电话号码。他们有时会如此轻松地进行操作并不奇怪,因为该信息可以在社交媒体上找到或从同谋(例如客户服务代表)那里获取。
  2. 阻塞。例如,欺诈者打电话给移动网络运营商,并通过说手机丢失来阻止受害者的SIM卡。
  3. 猛扑 此步骤通常在帮凶或伪造正式文件的情况下执行。

如果罪犯设法获取受害者的电话号码和个人数据,他们可以从信用卡或数字货币包中窃取钱财。

真实生活更加严格。一旦罪犯找到受害者,他们就会每天跟踪手机的位置。它的成本出乎意料地少了一点钱-一个GP请求大约是1-2美分。罪犯被告知受害者在漫游区后,他们向通讯商店的经理索要新的SIM卡。它的成本仅为50美元,最坏的情况是经理将被解雇。

这样,犯罪分子将收到所有短信,而受害者(例如,他们在国外)将无能为力。此时,犯罪分子可以访问受害者的所有帐户,并尝试尽快更改密码。

时刻保持警惕

有时,银行与受害者合作并撤出资金。为此,即使从未找到罪犯,也可以退还法定货币。但是,对加密货币进行同样的操作并不容易,因为它通常是无法跟踪的。没有法律可以保护加密货币持有人免受SIM骗局交易所或其他欺诈方案的侵害,直到今天,还没有一个加密货币交易所能够成功补偿受害者的损失。

如果有人想打官司并取回他们的钱,他们通常会专注于提供者的故障。例如,SIM卡交易所受害者之一迈克尔·特平(Michael Terpin)损失了2.24亿美元。他现在正在起诉电信提供商AT&T。

正如我们之前所告诉的,没有现任政府能够通过法律途径保护加密货币持有者,为此,他们甚至无法确保其资金安全并获得赔偿。因此,有必要防止可能的SIM卡交易所骗局,以使人们不必面对后果。俗话说,安全胜于遗憾,为此,世界需要更强有力的保护手段。

通过短信问题,SIM卡交易所不是唯一的2FA

从技术角度来看,SMS确认代码也不安全。由于信令系统7(SS7)中存在致命漏洞,因此可以截获消息。SMS的2FA被正式确认为不安全(美国国家标准技术研究院在其数字身份指南中对此进行了声明)。

而且,2FA的出现通常会激发用户虚假的安全感,并且他选择了一个更简单的密码。因此,这种身份验证并不复杂,但是可以使攻击者更容易访问该帐户。

而且,SMS经常会延迟很长时间甚至根本不会延迟。

其他2FA方法

当然,除了智能手机和SMS之外,还有其他一些东西,还有其他2FA方法。例如,一次TAN编码:该方法是原始方法,但它可以工作-在某些银行中仍在使用。有些系统使用生物特征数据:指纹,视网膜扫描。在方便性,可靠性和价格方面,另一个似乎合理折衷的选择是2FA的特殊应用:RSA令牌,Google身份验证器。还有物理键和其他方法。

从理论上讲,一切看起来都是逻辑可靠的。但是实际上,现代2FA解决方案存在问题,并且由于这些问题,现实与期望有所不同。

根据该研究,使用2FA原则上是一种不便,通过SMS进行2FA的普及可以通过“与其他方法相比不那么麻烦”来解释-接收一次性代码对于用户而言是可以理解的。

许多用户将2FA与担心失去访问权限联系起来。物理密钥或TAN密码列表可能会丢失或被盗。我个人使用Google Authenticator的经历很消极。我使用该应用的第一部智能手机坏了;恢复帐户访问的工作量很大。另一个问题是过渡到新设备。出于安全考虑,Google Authenticator没有任何导出功能(如果可以导出密钥,则显然没有安全性)。我曾经手动转移了密钥,然后决定将旧的智能手机放在架子上的盒子里比较容易。

2FA方法应为:

我们认为区块链是合适的解决方案。

通过区块链使用2FA

从用户的角度来看,区块链2FA看起来与通过SMS接收一次性代码相同。唯一的区别是交付渠道。获取2FA代码的方式取决于区块链提供的内容。在ADAMANT中,方法是Web应用程序,Tor,iOS,Android,Linux,Windows,MacOS。

该服务生成一次性代码并将其发送到区块链Messenger。此外,一切照常进行:用户输入收到的代码并登录。

0l5oOGpwqALJTmoAB-2

在我的《去中心化区块链信使的工作原理》一文中,我写道,区块链可确保消息传递的安全性和私密性。关于发送2FA代码的主题,我将重点介绍:

这是其他2FA方法的比较表:

0PRX5MHtuLTHUtAVr-3

用户可以在ADAMANT区块链Messenger中快速获得一个帐户来接收代码-仅使用密码登录。因此,应用方法可以不同:您可以使用一个帐户来获取所有服务的代码,也可以创建每个服务都有一个单独的帐户。

还有一个不便之处-一个帐户必须至少进行一次交易。为了接收包含代码的加密货币消息,您需要知道用户的公钥,该公钥仅在第一次交易时才出现在区块链中。我们通过以下方式避免了这种情况:实现了在钱包中获取免费代币的机会。但是,更正确的解决方案是使用公用密钥命名帐户。(为了进行比较,帐户是U1467838112172792705,它是公用密钥cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada的派生产品。对于Messenger来说,这更方便易读,但对于2FA代码发送系统而言,这是一个限制)。我认为将来会有人将这种解决方案的“便利性和可访问性”转移到绿色区域。

发送2FA代码的成本确实很低-0.001 ADM(当前约为0.00001 USD)。同样,您可以使用自己的规则制作区块链并将价格设为零。

如何通过区块链将2FA连接到您的服务

我希望我能够引起一些读者的兴趣,以将区块链授权添加到他们的服务中。

我将以ADAMANT Messenger为例来告诉您如何执行此操作,以此类推,您可以使用另一个区块链(如果存在支持发送2FA代码的任何区块链)或基于ADAMANT运行自己的区块链

2FA演示应用程序中,我们使用postgresql10来存储帐户信息。

连接步骤:

  1. 创建一个用于发送2FA代码的帐户。您将收到一个密码短语,该密码短语用作加密货币消息签名交易的私钥。
  2. 将脚本添加到服务器以生成2FA代码。如果您已经将其他2FA方法与一次性密码传递一起使用,则您已经完成了此步骤。
  3. 将脚本添加到服务器以将代码发送给区块链Messenger中的用户。
  4. 创建一些用于发送和输入2FA代码的用户界面。如果您已经将其他2FA方法与一次性密码传递一起使用,则您已经完成了此步骤。

步骤1:建立帐户

在ADAMANT中,您可以创建帐户以手动从Web应用程序中发送代码。在大多数情况下,这对用户也更方便:他们知道该服务从特定帐户发送2FA代码并可以对其进行命名。

0DJya3MApOVMIw1rz-3

如果要以编程方式生成帐户,请使用ADAMANT节点API,控制台或JS API:https ://adamant.im/devs/ 。

通常,在区块链中创建帐户是生成私钥,公钥以及从中派生的帐户地址。

0Wjbii6Tc0Qtwvpom-3

首先,生成BIP39密码,使用该密码计算SHA-256哈希。散列用于生成“ ks”(私钥)和“ kp”(公钥)。再次使用具有公钥倒置的SHA-256,我们获得了区块链地址。

步骤2:2FA代码生成

需要为每个用户登录生成2FA代码。我们使用speakeasy库,但您可以选择其他任何库。

const hotp = talkeasy.hotp({   counter,  secret:account.seSecretAscii,});

用户输入的2FA代码验证:

se2faVerified = talkeasy.hotp.verify({   计数器:this.seCounter,  机密:this.seSecretAscii,  令牌:hotp,});

步骤3:发送2FA代码

您可以使用ADAMANT区块链节点API发送2FA代码以及JS API库或控制台。在此示例中,我们使用控制台 -这是命令行界面,该实用程序可简化与区块链的交互。要发送带有2FA代码的消息,您需要执行该send message命令。

const util = require('util'); const exec = util.promisify(require('child_process')。exec); const command =`adm send message ${adamantAddress}“ 2FA code:${hotp}”“; let {error,stdout,stderr} =等待exec(command);

发送消息的另一种方法是使用JS API库 send方法。

步骤4:使用者介面

用户需要输入2FA代码的可能性,这可以通过多种方式完成,具体取决于应用程序的平台。我们在示例中使用Vue。

0uvflQYJ6WAvXcmSl-3

可以在GitHub上查看区块链2FA授权演示应用程序的源代码:https : //github.com/Adamant-im/adamant-2fa。请参阅自述文件以获取实时演示链接。

提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢