互联网计算机用一种更先进安全的加密认证方法取代了用户名和密码。
要理解身份和认证在互联网计算机的背景下意味着什么,我们必须首先其在当今的网络中是如何使用的。
当登录一个网站时,用户名通常是电子邮件地址或一串字母和数字,它是你唯一的标识符,可以将服务器上的相关数据与你的身份联系起来。密码则是认证手段,从理论上讲,只有你自己才知道密码,而服务器则将你的密码解释为其与你交流的证明。然而事实是,密码实际上并不是一个好的远程认证机制。
当你在一个网站上输入密码时,你的电脑会将密码发送到服务器上,并与密码数据库进行核对。不幸的是,黑客可以获得这些密码数据库的访问权。在最恶劣的情况下,密码是以明文形式存储在服务器上的,非常不安全。即使密码是加密的,破解它们也只是黑客是否愿意为了获得访问权而投入计算和金钱资源的问题。
互联网计算机是一个以网络速度运行的区块链计算网络,可以无限制地增加其容量。其设计是通过在多个数据中心之间复制数据和计算来提供安全,以防止个别计算供应商的恶意行为。要注意的是,复制虽然可以保护数据的完整性,但并不能防止信息的泄漏;在互联网计算机上使用密码仍然会受到与传统网络上相同的安全问题的影响。因此,在互联网计算机上,我们用适当的加密认证取代了密码。
马斯克:推特将分享来自个人资料页面浏览量的广告收入:金色财经报道,马斯克在推特发文称,推特将“很快”分享来自个人资料页面浏览量的广告收入,这将使支出翻倍。马斯克提醒,只有来自认证用户的浏览次数才会被计算在内。[2023/7/16 10:58:02]
我们在互联网计算机上用于认证的主要加密机制是数字签名方案。数字签名是一个相当标准的概念,发明于20世纪70年代末,从90年代中期开始被广泛使用。
通常由以下三种算法组成:
密钥生成:密钥生成可以看作是选择密码。通常,密钥的产生会创造一对钥匙:1)一个是像密码一样必须保密的私钥,2)另一个是可以公开的从私钥衍生的公钥。签名:签名需要信息和私钥产生。当我们使用数字签名进行用户认证时,该算法是在持有私钥的用户端运行的。验证:算法接收信息、签名和公钥,并验证签名是否与信息和公钥相符。这里的关键属性是,与检查密码不同的是,密码需要存储在服务器上,而在这种情况下,签名的验证可以仅根据公共信息进行,因为服务器存储了公钥列表,每个用户都有一个,且公钥和签名都不需要保密。互联网计算机上的应用是基于通过传递信息进行交互的容器实现的。更详细地说,交互模型是基于请求的,类似于远程过程调用。当容器A调用容器B时,容器A便指定了目标容器,所要调用的函数的名称,以及该函数的参数。当指定的函数在容器B上被评估时,该容器也知道该函数是由容器A调用的。评估完成后,容器A将获得该函数的返回值以作为响应。而当用户与容器互动时,同样的远程过程调用模型也一样适用。当用户调用一个容器时,用户会向目标容器发送一个请求。这个请求也会指定一个带有参数的函数,用户也可以获得返回值以作为响应。在请求的变化过程中,容器也会了解到调用它的用户的身份。
马斯克回复Dogecoin设计师:要花费3 Doge来参观飞船发射:金色财经报道,Dogecoin UX/UI设计师“DogeDesigner”在社交媒体上向马斯克询问,下个月我将前往美国见证星际飞船发射,也很想参观推特总部。我和团队里的人谈过,他们说,我需要你的许可才能访问。
对此,马斯克回复称,可以,但是你要花费3Doge。[2023/3/23 13:22:18]
注:在ICP平台上,Canister是最基本的组成元素,可以理解为容器,类似于以太坊等区块链公链平台上的智能合约。这些容器可以复制、可以分叉,更方便自组织。
上图是用户发送请求的示意图。中间的浅灰色区域显示了核心请求,包括目标容器ID,函数名称,参数,以及调用者的身份或主体。而深灰色区域显示的则是包含认证信息、签名和公钥的封套。如图左侧所示,调用者的主体是通过散列法从公钥中得出的。这种技术在区块链领域被广泛使用,例如比特币或以太坊地址就是如此。此外,图中右侧部分显示了作为数字签名方案中的消息的请求内容是如何通过签名与公钥绑定的。当互联网计算机收到这样的请求时,它既要检查签名在指定的公钥下是否有效,也要检查公钥和调用者主体之间的关系。
彭博社:赵长鹏仍将支持马斯克对Twitter的收购:金色财经报道,Binance首席执行官赵长鹏计划履行他对埃隆-马斯克收购Twitter的财务承诺,即使这一潜在的交易面临来自华盛顿的潜在挑战。周二在沙特阿拉伯举行的会议上,当被问及他是否会坚持下去时,赵长鹏回答说,\"我想是的。\"据彭博社上周报道,拜登政府的官员正在考虑是否将推特的交易与马斯克的一些其他企业一起接受国家安全审查。
今年5月,推特提交给美国证券交易委员会(SEC)的一份文件显示,马斯克又获得了71.39亿美元的融资承诺,用于收购推特。其中甲骨文联合创始人拉里·埃里森通过LawrenceJ.EllisonRevocableTrust信托投资了10亿美元,红杉资本投资8亿美元,币安投资5亿美元。(the block)[2022/10/26 16:38:47]
为了确保信息确实是由信息中指定的调用者发送的,容器不必理会这些技术细节。如果一切都检查完毕,互联网计算机会评估容器上的指定功能,但如果其中一项检查失败,请求就会被放弃。
以下是关于我们使用的身份格式的一些细节。我们从DER格式的公钥开始,用SHA-224对其进行散列,从而得到一个28字节的字符串。我们会添加一个字节,用于区分来自公钥的身份主体和我们在互联网计算机中其他地方使用的身份主体,例如容器。这29个字节是以用户委托书的内部二进制表示的。当把一个委托人转换为其文本表示时,我们首先要预加一个CRC-32错误检测码。然后,使用Base32编码产生的字符串,最后建立每组5个字符的组,并用破折号隔开。我们选择这种格式是为了支持在有适当错误检测的情况下,可以轻松复制粘贴,同时仍然允许ASCII表示法中的字符少于64个,以便与互联网协议兼容。
马斯克对Twitter的用户数据不满意,Twitter将提供更多数据,或重新协商交易价格:金色财经消息,埃隆·马斯克发送律师信声称Twitter没有提供足够的数据来分析,早些时候,Twitter向马斯克提供了用户数据。内部人士认为,新数据表明马斯克可能会尽快与Twitter重新协商交易价格,称Twitter的价值已经随着新信息的变化而发生变化。
此外,推特同意本周向马斯克提供更多实时数据。
此前报道,Twitter向马斯克提供有关垃圾邮件,虚假账户的内部数据。[2022/6/24 1:29:33]
到目前为止,我们所看到的方案在结构上还是有点不灵活的。它们将用户的身份主体与单一的加密密钥进行绑定,但这种限制会使用户很难与来自不同设备的容器进行交互,因为需要在这些设备之间共享相同的加密密钥,既繁琐又不安全。相反,我们在不同的加密密钥之间使用了授权。如上图所示,你可以看到从黄色密钥到橙色密钥的委托。这种委托包括被委托的密钥,即橙色的钥匙;一些额外的参数,如过期或委托范围的限制;以及委托密钥的签名,即黄色密钥。
当用橙色密钥签署请求时,用户可以使用来自黄色密钥的委托,以便使用来自黄色密钥的身份。此外,委托的强大之处在于,可组合性。例如,橙色密钥可以将授权扩展到紫色密钥。这种结构与公钥基础设施和X.509非常类似,但这并不是巧合,我们向其进行了借鉴,并使用了更轻量级的数据结构。
委托的一个具体应用与网络认证有关。网络认证是万维网联盟的一个最新标准,主要针对网络应用的双因素认证。该标准的动机是,如前所述,密码有严重的安全缺陷。它们经常在钓鱼邮件、恶意软件以及黑客攻击发生时,成为网络犯罪分子的猎物。
双因素认证意味着除了密码之外,登录网络应用还需要一个额外的安全因素,通常是用户拥有的安全设备。在现实中,这可能是一个安全的USB钥匙或是一个内置在用户终端设备中并通过生物识别技术激活的安全芯片,由安全芯片存储加密密钥。由于加密密钥从未离开过安全芯片,所以即使用户的电脑或手机被恶意软件感染,它们仍然是安全的。
当网络认证被用作网络应用中的第二因素时,协议流程如下:在用户通过提供用户名和密码启动登录过程后,网络服务器将生成一个随机挑战并将其发送给用户的浏览器。然后,浏览器将挑战发送给安全设备,安全设备在签署挑战之前需要与用户互动。然后,签署的挑战书被送回服务器,服务器根据用户注册的公钥验证挑战书上的签名。这确保了登录网络应用程序时,除了密码外还需要持有安全设备。
公认的事实是,网络认证是一个开放的标准,使用数字签名进行认证,且已经被广泛的设备所支持。然而,当把它改编为互联网计算机时,我们必须克服一些障碍。网络认证假定了传统网络中面向会话的客户服务器模型,用户在登录应用程序时进行一次认证,并在同一会话中发送后续信息。相比之下,互联网计算机实现了一个模型,且每个请求都是单独认证的。特别是,由于浏览器和互联网计算机之间不存在有状态的会话,所以没有服务器可以生成挑战,并由安全设备签署。然而,回顾一下,在典型的网络认证流程中,安全设备需要对服务器发送的挑战提供数字签名。
为了使用相同的协议实现请求认证,我们需要使用请求本身作为挑战,并由安全设备签署,类似于我们的一般请求认证方案。我们必须克服的另一个问题是,网络认证需要用户对每个签名进行交互。在互联网计算机提供的典型前端中,一个页面的加载可能对应着多个请求。由于我们不想要求用户明确确认每个请求,所以我们使用了上述的委托机制。当使用网络认证与一个容器进行交互时,我们会首先生成一个短期的会话密钥。然后,使用网络认证来签署一个面向该会话密钥的委托,这样,单个用户的互动就可以触发对互联网计算机的多个请求。
虽然网络认证对安全存储加密密钥很有帮助,但它不仅将这些密钥绑定在设备上,而且还将其绑定在了一个特定的容器上。其原因是浏览器的安全模型,该模型严格地将在同一网络浏览器中运行的不同应用程序所能访问的状态按其来源分开。在网络上,你可以认为一个原点大致上对应于一个网站。在互联网计算机上,每个原点则对应于一个容器。这种严格的状态分离对安全至关重要,但它也使得诸如密钥备份或支持从多个设备无缝访问同一容器的功能变得繁琐,因为所有这些操作都必须为每个容器单独执行。我们通过使用互联网身份服务来解决这个问题,即身份提供者,类似于你在网络上熟悉的"用谷歌或Facebook登录"功能。
当用户第一次加载一个特定容器的前端时,该前端会呈现一个"用IC登录"的按钮。当用户点击该按钮时,浏览器会打开一个弹出窗口,显示互联网身份服务,这是一个允许用户管理钥匙和身份的特定应用程序。然后,用户可以决定是否允许容器前端使用用户身份。如果用户同意,浏览器就会被重定向到容器前端,并能以用户的身份访问容器。这个机制将再次触发会话密钥和委托机制。届时,容器前端会生成一个会话密钥对,并将公钥传输给互联网身份认证。如果用户确认,互联网身份认证产生授权,并将其返回给信息库前端。作为通过大技术提供商签署的额外好处,身份提供商的完整认证流程发生在用户端,所以对用户私人行为的暴露要少得多,从而减少身份跟踪。(互联网身份服务常见问题)
谈到用户追踪,互联网身份认证将为用户登录的每一个容器前端提供一个不同的身份,这对安全和隐私非常有利。如果不是这样,互联网身份认证将允许每一个前端在用户的单一主体下登录。如果该用户与不相关的服务互动,例如留言板和购物网站,这些服务就可以在背后关联用户在这些网站上的行为。更糟糕的是,留言板的前端可以恶意调用购物网站的容器,并以用户的名义下订单。因此,互联网身份识别服务为用户登录的每一个前端生成一个不同的身份,并以主机名进行区分。这样一来,用户在不同服务上的行为就不那么容易被追踪了。虽然前端仍然能够使用用户的身份来调用互联网计算机上的任何容器,但它永远只是与执行调用的前端有关的身份。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。