Kratos:智能家居多用户访问控制

Kratos:面向智能家居的多用户多设备感知访问控制系统

摘要

在智能家居系统中,多个用户通常通过安装在移动设备上的专用应用访问多个设备。传统的访问控制机制假定存在一个唯一的可信用户来控制对设备的访问。然而,多用户多设备的智能家居环境给传统单用户系统带来了根本性的挑战。例如,在多用户环境中,用户对多个设备存在冲突、复杂且动态变化的需求,而传统访问控制技术无法处理这些问题。为应对这些挑战,本文提出了Kratos,一种新颖的多用户多设备感知的访问控制机制,使智能家居用户能够灵活地指定其访问控制需求。

Kratos包含三个主要组件:用户交互模块、后端服务器和策略管理器。用户可通过交互模块指定所需的访问控制设置,这些设置将在后端服务器中被转换为访问控制策略。策略管理器分析这些策略,并在用户之间发起协商以解决冲突需求,并生成最终策略。我们实现了Kratos,并在包含多用户场景的真实智能家居部署上对其性能进行了评估,测试配置丰富(共309种不同策略,包括213个需求冲突和24项限制性策略)。这些配置涵盖了与访问控制机制相关的五种不同威胁。广泛的评估结果表明,Kratos在以最小开销解决冲突的访问控制需求方面非常有效,并且对各种攻击具有较强的鲁棒性。

CCS 概念

  • 安全与隐私 → 访问控制

关键词

智能家居安全、访问控制、物联网

1 引言

网络空间正随着新型智能家居技术的引入而迅速扩展,这些技术致力于使我们的家居实现自动化和智能化[28, 35]。这一趋势将持续发展,到本十年末,数十亿台智能设备将主导我们的日常生活[27, 32]。智能家居系统(SHS)允许多个设备连接,以自动化日常活动并提高家居整体效率。从简单的灯泡到复杂的空调系统等设备均可连接,并对多个用户开放。用户通过智能家居供应商提供的移动宿主应用安装的各种智能家居应用与这些设备进行交互。传统为计算机和智能手机等个人设备设计的访问控制机制主要针对单用户场景。然而,在智能家居系统中,多个用户通常通过一个通用控制器应用(例如 SmartThings App)访问同一台智能设备,这可能导致设备设置上的冲突。例如,房主可能希望在午夜锁定智能门锁,而临时访客则可能希望在午夜之后访问该锁。此外,当前的智能家居平台不允许用户明确表达彼此冲突的需求。最后,现有智能家居平台中的访问控制机制提供的是粗粒度解决方案,可能会引发安全问题[2, 4, 16]。例如,智能家居平台通常会自动给予每个添加到智能家居系统的用户完全访问权限[25]。拥有完全访问权限后,新用户可以轻易添加未授权用户、删除现有用户或重新配置连接的设备[10, 36]。这种看似良性的操作,却可能带来一系列不期望的安全隐患[5, 20, 33]。在这些真实生活场景中,当前的智能家居平台无法满足用户复杂、非对称且相互冲突的需求,因为它们仅能处理具有静态配置的基础性和宽泛性控制。

本文中,我们介绍了Kratos,一种面向智能家庭系统的多用户多设备感知的访问控制系统。Kratos引入了一种形式化策略语言,允许用户为智能家居设备定义不同的策略,以明确其需求。它还实现了一种策略协商算法,通过利用用户角色和优先级,自动解决并优化来自多个用户的策略请求冲突。最后,Kratos管理不同用户的不同策略,审查策略协商结果,并在智能家居设备和应用程序上执行协商结果。我们在一个包含17种不同传感器和执行器的真实多用户多设备智能家庭系统中实现了Kratos。我们进一步在219项不同策略上评估了Kratos的性能,其中包括146项需求冲突和33项限制性策略。

示意图0

贡献

本工作的主要贡献如下:
- 我们提出了 Kratos,一种面向智能家居系统的多用户多设备感知的访问控制系统。Kratos 提供了基于策略的灵活用户控制,用于定义用户角色并理解用户对智能家居的需求,一种形式化策略语言以表达用户的愿望,以及一种策略协商机制,可自动解决和优化多用户智能家居系统中的冲突需求和限制。
- 我们在一个真实的智能家居系统上实现了 Kratos,使用了17种不同的智能家居设备和传感器。此外,我们通过真实用户提供的309种不同策略对其性能进行了评估。我们的评估结果表明,Kratos 能够以最小开销有效解决冲突需求。
- 我们针对因访问控制系统不足而产生的五种不同威胁对 Kratos 进行了测试。我们的评估结果显示,Kratos 能以100%的成功率检测到各种威胁。

2 动机与定义

2.1 智能家居中的访问控制需求

多用户智能家居系统中的访问控制在设备共享和冲突解决方面带来了独特的挑战。在同一环境中共享智能设备的人们可能具有不同的需求和使用模式,这可能导致冲突场景[39]。然而,现有的智能家居平台大多提供二元控制模式,即用户要么拥有全部控制权,要么完全没有控制权。例如,三星 SmartThings向用户提供对所有连接设备的完全访问权限。不幸的是,这种全包式的访问允许任何授权用户控制智能设备,从而可能导致冲突需求、隐私侵犯以及非预期的应用安装[9]。

为了保护智能设备免受未经授权的应用安装和设备设置的影响,一些智能家居平台(例如,苹果HomeKit)提供了两种设备访问选项:远程访问和编辑。在远程访问中,新用户仅获得对连接设备的访问权限;在编辑选项中,新用户则被授予在系统中添加或移除任何应用、设备或用户的权限。此外,某些智能家居设备(例如,August智能锁、Kwikset Kevo智能锁等)提供临时用户访问或访客访问功能,以在过期时间后限制非预期访问[18, 23]。然而,这些解决方案是厂商和设备特定的,因此无法直接适用于多设备多用户的智能家居系统。总之,当前智能家居技术中的访问控制机制未能满足多设备多用户环境下的多样化和复杂的用户需求。

由于多用户智能家居系统中的冲突场景取决于用户关系、社会规范和个人偏好,因此在设计细粒度访问控制系统之前理解这些动态非常重要。例如,父母可能希望限制儿童的智能电视访问权限,合租公寓中的室友可能希望卧室门锁具有隐私保护,或者房主可能希望为Airbnb房客提供临时访问权限。因此,一个细粒度访问控制系统应满足多用户 - 用户多设备智能家居生态系统。一些前期工作通过考虑用户偏好和需求 - 在智能家居用户中开展用户研究 [13, 40, 41]。这些前期工作确立了智能家庭系统中访问控制系统的需求和设计要求。何等人对425名智能家居用户进行了用户研究,以了解用户之间的关系如何影响智能家庭系统中的访问控制需求 [13]。在最近的一项工作中,曾等人开发了一个访问控制系统的早期原型,并在 8个家庭中进行了一项可用性研究,以识别真实生活中的智能家居系统中的访问控制需求 [41]。这些用户研究报告了智能家居用户在访问控制方面的以下偏好和需求。
- 大多数用户表示在智能家庭系统中需要一个细粒度访问控制系统。
- 用户建议在家庭环境中采用基于角色的访问控制(RBAC)来限制对设备和应用程序的访问。
- 在共享环境中,用户同意为私人房间的每台设备设置角色。
- 在共享环境中,对于临时用户,用户建议采用基于位置和基于时间的访问控制。
- 对于冲突场景,用户表示需要自动化规则来解决冲突需求,并将设备配置到最佳运行值。

在我们的工作中,我们考虑了前期工作中报告的用户需求和建议,以设计适用于多用户多设备智能家庭系统的细粒度访问控制系统。

2.2 术语

我们定义了本文中使用的一些重要术语。

策略 。我们将策略视为用户在多用户智能环境中为控制设备使用而提出的一组请求。根据请求的性质,策略分为三种类型。
1. 需求策略 。我们将需求策略视为用户发出的一组请求,用于定义智能家居系统中特定设备或设备组的控制规则。需求策略可以是通用的(即由管理员创建并应用于系统中的所有用户),也可以是针对特定用户的。如果一个需求策略适用于所有用户,我们将其定义为通用策略。
2. 限制性策略 。我们将限制性策略定义为一组规则,用于管理用户或用户组在智能家居系统中对特定设备或设备组的可访问性和控制级别。限制性策略规定了:(1) 用户可访问的设备;(2) 用户被授权使用/控制设备的时间范围;以及 (3) 控制设置限制。
3. 基于位置的策略 我们将基于位置的策略定义为用户设定的一组自动化规则,这些规则仅在用户连接到系统网络时生效。位置特定的策略规定了(1)用户对哪些设备具有远程访问权限,以及(2)当特定用户不在智能家居网络中时,其控制设置的限制。

优先级 。我们将优先级称为用户的相对重要程度,该级别可用于在添加新用户、施加限制时,为较高优先级的用户建立相对于较低优先级用户的偏好。

需求协商过程 。在第4节中,我们详细说明了本研究中考虑的不同优先级。

冲突 。在本研究中,冲突 被定义为由于两个或多个需求策略根据具体请求相互干扰或矛盾而产生的争议过程。根据需求与限制策略的性质,可能发生三种类型的冲突。
1. 硬冲突 。当由两个不同用户针对特定设备实施的需求策略之间不存在任何重叠的设备条件时,会发生硬冲突。
2. 软冲突 。当不同用户针对特定设备实施的需求策略之间存在重叠的设备条件时,会发生软冲突。
3. 限制冲突 。当受限用户对某设备的限制策略提出争议时,会发生限制冲突。

设备条件 。我们将设备条件视为用户为智能家庭系统中的设备分配的一组规则,用于执行特定任务。例如,如果用户将智能灯设置为在日落时分开启,则指定的时间即被视为设备条件。

3 问题与威胁模型

3.1 问题定义

我们假设一个类似于图1所示的智能家庭系统(S)。在该系统中,四位不同的用户——鲍勃(父亲)、爱丽丝(母亲)、凯尔(孩子)和加里(客人)与智能设备进行交互。鲍勃和爱丽丝是所有者,这四位用户均通过控制器应用来控制设备。此处,术语对智能家庭系统的访问指的是控制设备、配置系统(添加/删除设备)以及添加新用户的能力。我们假设用户执行以下冲突活动:(1)鲍勃和爱丽丝同时将智能恒温器设置为不同的重叠值(软冲突);(2)爱丽丝希望在午夜之后限制对智能锁的访问,而加里则希望拥有访问权限(硬冲突);(3)爱丽丝希望仅在凯尔在场时允许其访问智能灯,并限制其对其他设备的访问(限制冲突和位置访问)。为解决这些问题,我们提出了Kratos,这是一种面向智能家居的细粒度访问控制系统,可允许用户自动解决冲突的访问控制请求、添加新用户、选择特定设备进行共享、限制特定用户的访问权限,并基于系统中的用户位置防止不希望的用户访问。

3.2 威胁模型

Kratos考虑了现有粗粒度解决方案可能导致的非预期访问控制决策。例如,新用户会自动获得对系统的完全访问权限(即过度特权控制),这可能导致不希望的设备访问。此外,Kratos还考虑了合法的智能家居用户在未经授权的情况下尝试更改系统设置(例如通过安装新应用覆盖现有系统)的行为,这可能导致不希望的设备操作,如安装未知应用程序和覆盖设备条件(即权限滥用),甚至从系统中删除设备所有者(即权限提升)。此外,Kratos还考虑了由于对多用户多设备智能家居的访问控制不足、不准确或疏忽所引发的威胁(即传递性权限)。事实上,授权用户(非房主)向未知方授予智能家庭系统访问权限,可能会升级为额外的威胁(即未经授权的设备访问),Kratos也将此类行为视为恶意活动。此外,如果临时访客未被授权用户及时移除,可能会导致敏感信息泄露等恶意活动。

我们不考虑由于系统中安装了恶意应用程序而导致的未经授权用户访问的情况。我们还假设智能家庭系统未被破坏,这意味着在系统安装时不会自动添加恶意用户,因为这些问题与 Kratos的贡献无关。

4 克拉托斯设计

在本部分中,我们介绍了 Kratos 的架构及其主要组件。

Kratos 是一个面向多用户智能家居系统的综合性访问控制系统,用户可以通过策略表达各自的冲突需求、愿望和限制。Kratos 允许授权用户添加新用户,并根据用户需求和环境情况对智能设备实施不同的策略。Kratos 会综合所有授权用户所执行的策略,并包含一种策略协商算法,以优化并解决用户之间的冲突。在设计 Kratos 框架时,我们考虑了以下设计特性与目标。

用户友好界面 。访问控制系统应具有用户友好界面,以便在智能家庭系统中添加或删除用户并分配策略。我们将 Kratos 集成到智能家居供应商提供的移动应用中,以提供单一的用户界面来管理用户并在连接的设备上分配策略。

多样用户角色/复杂关系 。在智能家庭系统中,用户具有不同的角色,访问控制系统需要定义这些角色。例如,具有家长角色的用户应能够对具有儿童角色的用户表达控制权限,而同一优先级类别的成年人应能够自动协商访问控制规则。为实现这一设计特性,Kratos在系统中引入了用户优先级以定义用户角色。

冲突解决 。如前所述,设备使用中的多样化需求会导致共享智能家庭系统中用户之间的冲突。智能家庭系统中访问控制系统的主要挑战是以合理的方式解决这些冲突。此外,多用户智能家居系统中的用户应认可访问控制系统提供的冲突解决结果。Kratos采用一种新颖的策略协商系统,以自动优化并解决用户之间的冲突需求,并制定反映所有用户需求的通用使用策略。

示意图1

策略过期 。在智能家庭系统中,客人或临时用户可能需要对不同智能设备的临时访问。为了自动化临时访问,Kratos为特定用户提供策略过期时间。Kratos在过期时间结束后自动从系统中删除设备访问权限和该用户,以避免系统中出现非预期访问。

基于位置的访问 。智能家庭系统提供远程访问,用户可以控制智能家居中的设备。Kratos利用用户位置来触发设备策略,以限制设备使用并满足用户的多样化需求。例如,父母可能希望限制儿童对特定设备的远程访问。Kratos仅允许用户在连接到家庭网络时访问受位置限制的设备。

表达式控制 。在智能家庭系统中,用户应能够轻松地表达所需设备设置。访问控制系统应为用户提供一种简单的方法,以表达他们多样化的需求。Kratos引入了一种统一策略语言,涵盖智能家庭系统中的不同控制参数(例如,角色、环境、时间、设备、位置特定表达式),以理解用户需求并相应地控制设备。

统一策略执行 。所有发往设备的用户命令 [3] 都应通过一个访问控制执行 层,以在智能家庭系统中实现细粒度访问控制。Kratos 使用一个执行模块,在智能家庭系统中执行用户命令之前检查所有已执行策略。

图2展示了Kratos系统的架构。Kratos包含三个主要模块:(1)用户交互模块,(2)后端模块,以及(3)策略管理器。首先,用户交互模块提供用户界面,用于添加新用户并根据用户角色分配优先级。该模块还收集用户为智能家居设备定义的设备策略。这些设备策略和优先级分配数据通过智能家居中心转发至后端模块。后端模块接收这些数据,并为用户创建用户优先级和设备策略列表。最后,策略管理器模块从生成的列表中获取用户优先级和设备策略,并触发策略生成和协商过程。

以下各部分详细介绍了Kratos中的每个模块,并解释了 Kratos如何启动策略生成和协商过程。

4.1 用户交互模块

用户交互模块从用户处收集优先级分配数据和设备策略。它包含两个子模块:优先级分配和策略输入。

优先级分配模块 。优先级分配模块作为用户界面,用于添加新用户和分配优先级。Kratos引入了一种正式格式来指定新用户,如下所示:Ua=[Aid, Nid, P, D, T],其中,Aid是发起命令的用户的唯一ID,Nid是添加到系统中的新用户ID,P是新用户的优先级,D是向系统中添加或移除设备的权限,T是系统中新用户的时间。用户优先级在策略生成模块中用于解决冲突需求。在添加新用户和分配优先级时,我们考虑以下规则以避免优先级分配中的冲突。
- 每位用户都有权限添加新用户并分配优先级。
- SHS所有者在系统中拥有最高优先级。
- 系统中的优先级以数值表示,用户的优先级数值越低,其优先级别越高。例如,中心枢纽的房主优先级为“0”。
- 每个用户只能为新用户分配相同或更高的优先级,例如,优先级为“1”的用户只能为新用户分配“1”或更高的优先级。
- 如果两个现有用户以不同的优先级添加同一个新用户,则具有更高优先级的用户获得添加该新用户的权限。
- 如果两位具有相同优先级的现有用户为新用户分配了不同的优先级,系统将通知这些现有用户,要求他们为新用户确定一个统一的优先级。
- 如果发起命令的用户具有相同的权限,则每个用户都可以为新用户分配添加或删除设备的权限。

Kratos的优先级分配也可以配置以定义用户的角色。例如,在图1的智能家庭系统中,爱丽丝和鲍勃(父母)可以被分配到优先级0,加里(客人)可以被分配到优先级2,凯尔(孩子)可以被分配到优先级3。我们在本文中使用此优先级列表来说明Kratos的功能。Kratos中,管理员或房主拥有在系统中定义优先级-角色映射的权限。Kratos还允许用户通过指定系统中用户的有效期(T)来添加临时用户。在指定的有效期过后,Kratos会自动将该用户从系统中移除,从而防止临时访客的未经授权访问。

策略输入模块和访问策略语言 。策略输入模块为用户提供了在智能家居设备上分配策略的接口。所有授权用户都可以选择任何已安装的设备,并通过此模块创建设备策略。为了定义设备策略,Kratos引入了一种用于智能家庭系统(SHS)的形式化访问控制策略语言,该语言利用现有的开源智能家居生态系统(例如三星SmartThings),表达复杂的用户偏好(例如用户需求、愿望和限制)。每位用户为其每个智能设备定义关于其偏好的策略,以及对他人访问的任何限制。例如,在图1所示的四位用户的智能家居中,每位用户针对恒温器、灯泡、锁和咖啡机等设备,为其他用户定义其要求,这些示例策略如图 3所示。本小节将使用用户定义的标准来构建他们的策略。

示意图2

策略结构 。Kratos将策略表示为子句的集合。这些子句允许每个用户为其自身及其他用户的需求声明独立的策略。子句具有以下结构:用户 : 设备 : 条件 : 动作。策略的第一部分是用户,其中包含策略分配者和被指定者的信息。第二部分设备指明本条语句中包含的一个或多个设备。Kratos使用智能家庭系统(SHS)分配的设备ID,在多设备环境中区分特定设备的策略。第三部分条件是一组设备条件,根据智能设备的功能定义不同的控制参数(如基于时间的操作、数值等)。例如,用户可以定义一个条件,仅匹配预定义范围内的命令或特定的时间窗口。策略的最后一部分是动作,用于说明子句类型:请求、限制或位置。需要注意的是,Kratos的策略语言允许用户定义多个子句。例如,用户可以根据不同条件和不同用户,对智能家居设备的不同子集进行限制。图4展示了一个示例性的策略场景。

示意图3

4.2 后端模块

用户交互模块收集使用访问策略语言生成的用户凭证和设备策略。然后将其转发到后端模块,这些数据将在后端模块中存储并格式化,用于策略生成和协商。后端模块具有两个功能:(1)生成用户优先级列表,(2)生成设备策略列表。

用户优先级列表 。后端模块收集凭证数组,并为授权用户及其分配的优先级创建数据库。所有凭证数组都会根据优先级分配规则(在第4.1节中说明)进行检查,并被分类为有效和无效的优先级分配。对于每个无效的优先级分配,后端模块会通知发起该优先级分配的用户。后端模块还会根据凭证数组中指定的时间检查用户优先级列表中添加的用户的有效期。后端模块会自动移除具有过期有效性的用户,并更新用户优先级表。

设备策略列表 。后端模块汇总所有用户分配的策略,并基于设备ID创建数据库。如第4.1节所述,访问策略语言为每个设备分配设备ID以确定相应的设备策略。每当用户生成新策略时,该列表都会更新。

4.3 策略管理模块

策略管理模块从后端模块收集用户优先级列表和设备策略列表,并比较不同用户策略。该模块由两个子模块(策略协商模块和策略生成模块)组成,用于启动策略协商和生成过程。

策略协商模块与协商算法 。策略协商模块会比较所有用户定义的策略,并基于用户优先级和请求检测不同类型的冲突。类似于传统RBAC,Kratos利用分配的用户角色和优先级来理解智能家居层级中的用户需求。然而,智能家居环境需要比 RBAC更细粒度的方法,以根据用户关系、社会规范和个人偏好来应对冲突场景。为满足这些多样化的需求,Kratos采用自动策略协商模块来解决多用户智能家居环境中的冲突。该策略协商模块基于用户角色和优先级识别冲突类型,根据已实施策略对冲突进行分类,自动决定是否执行某项策略,通过通知方式在发生冲突的用户之间启动协商机制,并在双方同意的基础上为双方选择一个最佳操作点。在策略协商方面,Kratos考虑了两个关键的研究问题:(1)Kratos如何处理具有相同和不同优先级的用户之间的策略冲突?(2)Kratos如何在不影响智能家居操作的前提下处理限制性策略?接下来,我们将针对这些问题进行阐述。

Kratos的策略协商算法通过将用户权限(类别、角色)建模为多层列表,处理所有策略并计算协商结果。用户权限被划分为有序类别。第0类具有最高优先级,类别编号越高表示优先级越低。每个类别可能包含一个用户列表(或角色,因为角色只是一组用户)。同一优先级类别的用户具有相同的优先级。Kratos在用户被分类到权限后,考虑用户策略之间的三种冲突类型(硬性、软性和限制冲突)。

当两个不同的策略包含针对同一设备的同一用户访问的子句时,这些子句之间可能会产生干扰。任何此类可能的干扰将进一步被检查以揭示潜在的冲突。其中,当两个相互干扰的子句在某些重叠情况下降出不同动作,或在从不重叠的情况下规定相同动作时,可能发生硬冲突。换句话说,当策略之间没有任何合作或妥协的可能性时,Kratos会检测到硬冲突。然而,如果存在相同动作且具有部分共同重叠,而相反动作从不同时发生,则此类干扰属于软冲突。此外,硬冲突和软冲突会根据策略所有者的优先级进一步分为优先级冲突或竞争冲突。当冲突发生在具有不同优先级类别的用户策略之间时,Kratos定义为硬优先级冲突或软优先级冲突。而如果用户具有相同优先级,则发生硬竞争冲突或软竞争冲突。对于硬优先级冲突,Kratos强制执行由更高优先级用户定义的策略。在硬竞争冲突中,Kratos在基于两个策略计算出的平均操作条件基础上,启动用户之间的协商过程。如果用户共同同意该平均操作条件,Kratos将为目标设备创建新策略。若未能达成共同的操作条件,Kratos将通知高优先级用户/管理员通过共同策略解决争议。

在软优先级冲突和软竞争冲突两种情况下,Kratos的协商过程结果均为一个新的具有相同条件集的子句。如果由于两个不同策略中请求的动作性质而导致干扰,Kratos会检测到系统中的限制冲突。通过结合硬性、软性和限制冲突,Kratos总共实现了五种不同的冲突类型(详见附录A和B)。

策略生成模块 。策略生成模块的目标是基于用户交互模块中生成的设备策略,构建反映所有授权用户的需求和限制的有效策略。生成的策略被传递到后端模块并存储在数据库中。随后,这些策略将在智能设备中实施。通过策略协商算法计算出的协商后策略子句Ψ={P,U, D, C,A}采用五元组格式,非常适用于现有的基于属性的访问控制(ABAC)系统。因此,Kratos对最终生成的规则采用类似ABAC的执行方式。其中,策略B是一组协商后的设备策略的{操作, 主体, 资源, 约束}元组。通过转换函数将示例策略映射为ABAC规则的过程可说明如下:

ABAC(Ψi) B{B| action(B)= Ai ∧ subject(B)= Ui ∧resources(B)= Di ∧ constraints(B)= TCi} (1)

其中TC B{c | c 满足映射属性到ABAC策略中C的相同条件。这里,ABAC(Ψi) 直接转换了动作、主体、资源和约束。我们开发了一个类似ABAC的规则生成器,用于在控制设备中强制执行规则。该生成器作为统一执行点集成到集线器设备中。

4.4 策略执行模块

策略执行模块负责实施通过策略协商过程生成的最终策略。智能家居设备可以通过手机控制器应用或在系统中安装不同的设备专用应用(例如三星 SmartThings)进行控制。策略执行过程会将生成的策略添加到智能手机控制器应用或已安装的智能家居应用中。为了添加这些策略,Kratos 会在应用源代码中加入条件语句以实施策略。当用户尝试更改设备状态时,应用会请求策略执行模块在策略生成器生成的策略表中进行检查。如果匹配到可接受的条件,策略执行引擎会将该策略返回给应用,并在条件分支中创建一个二元决策(接受策略为真,受限策略为假)。根据策略执行引擎所执行的决策,智能家居应用中的用户指令将被执行。

5 KRATOS实现

我们在消费级物联网中市场份额最大、支持最多现成的智能家居设备和开源应用程序的三星SmartThings平台中实现了Kratos [11]。实现与数据收集。我们搭建了一个智能家庭系统以测试 Kratos的有效性。我们使用了三星SmartThings中心枢纽,并将多个智能设备和传感器连接到该中心枢纽。我们的智能家庭系统中所用设备的完整列表见附录C。该设置包括四种不同类型的设备:智能灯、智能锁、智能恒温器和智能摄像头,这些是智能家庭系统中使用最广泛的常见智能家居设备[34]。我们还使用了三种不同类型的传感器:运动、温度和接触传感器,以实现自主控制。此外,我们收集了43位不同智能家居用户的使用数据。通过全机构范围的公开招募以及社区推广传单的方式选择了参与者。我们获得了必要的机构审查委员会批准,以从真实智能家居用户中收集数据。在选择研究参与者时,我们考虑了以下几个特征:(1)拥有一个以上的智能家居设备;(2)与多个用户(如父母、伴侣、朋友或室友)共享智能家居环境;(3)多样用户角色(在职成年人、家庭主妇、年轻人、学生等);(4)具备初级使用知识的智能家庭设备使用者。参与者被分为14个不同小组,并要求他们在智能家庭系统中选择自己的角色。首先,我们记录了用户经历的各种冲突场景,并让他们使用Kratos来分配设备策略。我们研究了若干多用户场景下的策略生成与协商过程,具体如下:

场景1:同一设备的多个策略 。我们选取了常见设备(如智能恒温器),并强制实施由多个用户设定的不同策略。用户在同一设备上为系统设置了需求与限制策略。我们共收集了44组策略(每组策略包含来自多个用户的至少两个策略),其中包括13个硬性冲突、17个软性冲突和8个限制冲突。

场景2:不同设备的多个策略 。我们使用了同一设备类别中的多个设备(例如智能灯、智能锁、智能恒温器),以对同类型的设备实施不同的策略。在此,我们从43名用户中收集了48组策略,导致了15个硬冲突、22个软冲突和5个限制冲突。

场景3:同一设备的多个应用程序 。在智能家庭系统中,我们允许用户安装不同的应用程序来控制同一设备(例如,智能灯)。例如,多个用户可以使用不同的应用程序,通过运动和门传感器来配置智能灯。我们选择了SmartThings应用市场中的三个不同的智能灯应用程序(分别通过运动传感器、门传感器和光照水平控制灯光),并要求用户安装其偏好的应用程序,并相应地分配设备策略。在此,我们收集了35组策略,其中包括8个硬性策略、18个软性策略和5个限制冲突。

场景4:一个应用控制多个设备 。我们考虑了一个应用在智能家庭系统中控制多个同类型设备的情况。我们选择了一个灯光控制应用来控制四个不同的灯,并要求用户通过一个单一的应用在不同设备上实施设备策略。在此场景中,我们收集了32组策略,其中包括12个硬性策略、15个软性策略和3个限制冲突。

场景5:系统中的临时用户 。我们考虑在系统中添加了一个临时用户,并尝试在该特定用户的访问已过期后访问智能灯和智能锁。在此场景下,我们收集了30组策略。

场景6:系统中的基于位置的访问 。在基于位置的访问控制中,我们允许多个用户为智能恒温器设置基于位置的策略。在此,用户可以定义基于位置的限制和需求策略。我们在该场景中收集了30组策略。

恶意场景 。我们还在我们的SHS中实现了五种真实威胁,以生成恶意数据并进一步评估Kratos的有效性(更多细节见第6节)。对于威胁1(权限过高控制),我们要求用户向智能恒温器添加限制条款,并要求受限用户更改温度。对于威胁2(特权滥用),我们要求新添加的较低优先级用户在智能家居中安装新应用并触发智能摄像头。威胁3(权限提升)通过一个场景体现:一名新用户更改了智能锁的锁码,并从环境中移除了该智能锁。对于威胁4(未授权访问),我们添加了一名具有有限优先级的临时授权用户,并要求用户在其允许的时间范围之外控制智能恒温器。对于威胁5(传递性特权),我们要求较低优先级的用户在系统中添加一名更高优先级的新用户。

用户界面 。我们构建了一个SmartThings应用,代表第4节中描述的用户交互模块。该应用包含两个模块:用户管理和策略管理。用户管理模块允许用户添加新用户并分配优先级。我们在 Kratos中定义了五种不同的角色和优先级(即:父亲/所有者 - 优先级0,母亲/所有者 - 优先级0,成人 - 优先级1,访客 - 优先级2,儿童 - 优先级3)。这些角色和优先级可由智能家居所有者或具有相同或更高优先级的授权用户进行分配。创建新角色/优先级后,相关信息将被发送并存储到后端服务器。在策略管理模块中,用户可以选择设备并创建新策略。Kratos提供选项,用于添加通用设备策略(适用于所有现有用户)或仅适用于特定用户的策略。Kratos允许用户使用不同的设备条件(基于操作、基于时间、基于数值等)来定义策略。由于我们的实现环境中的设备仅支持基于时间与基于数值的条件,我们将其策略分为三类:(1)基于时间的设备策略,(2)基于数值的设备策略,(3)时间-数值结合型策略。我们实现中不同设备的策略可用一个设备策略数组表示:设备策略 P ={U, D, C1, C2, R}。
- 用户ID(U) : 策略数组的第一个元素用于识别策略分配对象。在我们的实现中,使用用户邮箱作为个人标识符。
- 设备ID(D) : SmartThings 为每个已安装的设备分配一个唯一的设备 ID,该ID用于设备和策略。
- 时间条件(C1) :用户可以在策略中为任何设备操作指定开始时间和结束时间。例如,智能灯只能在日落时分到日出之间被访问。
- 数值条件(C2) :用户可设定最大值和最小值以指定控制设备的可接受范围功能。例如,用户可以将恒温器的运行范围设置为68◦F到70◦F。
- 受限用户(R) : 高优先级用户可以通过将用户ID添加到受限用户列表中,为特定的低优先级用户定义限制策略。用户也可以通过在此字段中分配“0”来为设备分配通用策略(第2.2节)。

图5显示了Kratos的用户界面。我们将Kratos实现为三星SmartThings平台上的一个自定义智能应用。我们在Groovy平台上构建了Kratos应用,并通过SmartThings网页界面安装该应用。由于三星允许每个用户通过网页界面在同一智能环境中安装自定义应用,因此Kratos应用可以轻松地安装在多用户智能环境中的每个用户的控制器设备上。每个用户都可以在控制器设备上使用官方SmartThings应用来运行Kratos应用,以分配新用户和设备策略。新用户和设备策略的信息将通过后端服务器转发给策略生成器,以生成最终设备策略。

策略执行 。实施过程中的最后一步是通过Kratos强制执行生成的策略。我们使用了10个不同的官方SmartThings应用程序,这些程序控制着17种不同的设备,并将它们安装在SHS中。我们安装了所有应用程序,并观察了策略生成模块中生成的用户特定策略。我们修改了这些应用程序,使其连接到后端服务器并从策略生成器捕获生成的策略。这些策略被附加到应用程序内部的条件语句中,以执行策略。附录D中给出了一个修改后的应用程序示例,以说明在SmartThings应用程序中强制执行策略的步骤。

6 性能评估

我们通过关注以下研究问题来评估Kratos:
- RQ1 Kratos在处理不同威胁模型的同时,在多用户场景中实施访问控制的有效性如何?(Sec6.1)
- RQ2 Kratos对SHS的正常操作引入了多少开销?(第6.2节)

6.1 有效性

在本小节中,我们展示了Kratos在不同多用户智能家居场景和威胁模型下强制执行访问控制的实验结果。我们首先考虑了一个用例场景,以解释Kratos在不同智能家居操作中的结果。然后,我们考虑了六种不同的使用场景(在第5节中说明),以评估 Kratos的有效性。

为了了解Kratos的性能,我们假设有两位用户爱丽丝和鲍勃使用同一台智能恒温器,并根据各自需求设置不同的策略。这种使用场景可能会导致冲突,此时Kratos会使用策略协商模块来解决这些冲突。例如,假设爱丽丝和鲍勃具有相同的优先级2,分别设置了温度范围60-70和75-80。Kratos将此视为一种严重的竞争性冲突,并以平均范围67-75启动协商过程。如果爱丽丝和鲍勃均同意该范围,Kratos将为恒温器生成一条新的策略,设定温度范围为67-75,并在设备上实施该策略。另一方面,如果爱丽丝和鲍勃无法达成一致,Kratos将通知更高级别的用户或管理员,通过为设备指定新策略来解决此冲突。

我们在评估Kratos时还考虑了临时用户场景:爱丽丝(优先级-1)在系统中添加了一位临时用户加里(优先级-4),有效期为2天。在有效期(2天)结束后,加里尝试访问智能家居设备。然而,Kratos会自动检测系统中用户的过期有效期,并限制临时用户访问系统。

冲突类型策略示例 Kratos 结果
爱丽丝(优先级-1)和鲍勃(优先级-2)设置温度范围60-70和75-80重新智能恒温器中 由于爱丽丝具有更高优先级,Kratos 设置将恒温器调至60-70并通知用户与决策
爱丽丝(优先级-1)和鲍勃(优先级-2)设置温度范围60-70和65-75分别在智能恒温器上。 由于爱丽丝具有更高优先级,Kratos 将恒温器设置为 60-70 并通知爱丽丝共同范围(65-70)。如果爱丽丝同意共同范围,Kratos 设置温度范围 65-70。
爱丽丝(优先级-2)和鲍勃(优先级-2)设置温度范围60-70和75-80重新分别在智能恒温器中。 • Kratos 启动协商以平均范围(67-75)以及相互用户的同意设定了范围。•如果用户未能达成一致,Kratos 不会通知高级用户/管理员来决定策略。
爱丽丝(优先级-2)和鲍勃(优先级-2)设置温度范围60-70和65-75分别在智能恒温器中。智能恒温器。 Kratos 设置温度范围65-70,并通知用户更新的策略。策略。
爱丽丝 (优先级-1) 设置了温度范围 60-70 并限制鲍勃 (优先级-2) 进行更改恒温器。鲍勃设置了温度范围 75-80。 Kratos 设置温度范围 60-70 并向鲍勃通知该限制。
爱丽丝(优先级-1)添加了加里(优先级-4)作为一个为期2天的临时用户。2天后,加里尝试解锁智能锁。 Kratos 会自动检测 ex- 智能家居访问的过期有效期从授权用户列表中删除加里以防止任何非预期访问。
爱丽丝 (优先级-1) 设置了温度范围 70-72 并限制凯尔 (优先级-3) 远程使用智能恒温器。凯尔设置了温度范围 74-76。 如果凯尔不在家庭网络中,Kratos 忽视了凯尔的访问策略。• Kratos 检查两者的位置凯尔和爱丽丝。如果只有凯尔在家中,Kratos 设置温度范围 74- 如果凯尔和爱丽丝都在家中,Kratos 设置温度范围 70-72。

表1:Kratos 的不同使用场景及结果

使用情况 场景 数量 策略 硬冲突数量 冲突 软数量 冲突 限制 策略 无冲突 平均时间(秒) 成功 速率(每 秒)
场景-1 44 13 17 8 6 0.68 100%
场景-2 48 15 22 5 6 1.2 100%
场景-3 35 8 18 5 4 0.86 100%
场景-4 32 12 15 3 2 0.48 100%
场景-5 30 - 12 6 12 0.2 100%
场景-6 30 10 8 8 4 0.32 100%

表2:Kratos在不同场景下的性能。

我们还评估了Kratos在防止SHS中不同威胁方面的有效性。我们考虑了第5节中提出的五种不同威胁。总共收集了五十次恶意事件的数据,以评估Kratos针对这些威胁的表现。表3总结了 Kratos在识别不同威胁时的性能。在每种情况下,Kratos均以 100%的准确率检测到策略违规,并通过推送通知有效地通知智能家居所有者/策略分配者。对于威胁-1,Kratos达到最低的平均检测和通知时间,分别为0.25秒和0.4秒。为了识别威胁-2和威胁-3,Kratos平均耗时分别为0.4秒和0.47秒,平均通知时间为0.6秒。对于威胁-4和威胁-5,平均检测时间分别为0.35秒和0.28秒。总之,Kratos能够以100%的准确率检测各种威胁,并以最小延迟通知用户。

威模胁型 发生次数 成功 rate 时间(秒) 时间(秒)
威胁-1 10 100% 0.25 0.4
威胁-2 10 100% 0.4 0.6
威胁-3 10 100% 0.47 0.6
威胁-4 10 100% 0.35 0.52
威胁-5 10 100% 0.28 0.45

Tab表3:Kratos针对不同威胁的性能 威胁。

6.2 性能开销

我们考虑了以下研究问题,以衡量Kratos的性能开销:
- RQ3 Kratos对智能家庭系统正常操作的影响是什么?(表4)
- RQ4 Kratos通过智能家居应用在智能家庭系统中执行用户指令时的影响是什么?(表5)
- RQ5 Kratos在智能家庭系统中不同参数下影响如何变化?(图6)

对于不同的多用户场景,我们考虑了四种不同的场景,如第5节所述。

Kratos引入的延迟 。Kratos在策略生成和协商过程中,基于用户优先级和策略类型考虑了三种不同类型的冲突(硬冲突、软冲突和限制策略)。这些策略生成和协商过程通常会在 SHS的正常操作以及智能应用分析给定策略和解决冲突时引入延迟。表4展示了Kratos处理策略冲突和协商时引入的延迟。我们注意到,对于所有类型的策略冲突,平均协商时间随着策略数量的增加而增加。对于硬冲突,当有十个策略时,平均协商时间为0.403秒,当策略数量增加到30个时,平均协商时间增加到1.21秒。由于硬冲突需要所有发生冲突的用户与系统进行交互以解决冲突,因此所需时间比软冲突和限制策略更长。对于软冲突,当有十个策略时,平均协商时间为0.27秒,当策略数量增加到30个时,平均协商时间增加到0.73秒。对于限制策略,只有当低优先级用户试图为高优先级用户分配策略时才会引入延迟。在这种情况下,当策略数量从10个增加到30个时,平均协商时间从0.102秒变化到0.25秒。

冲突类型 策略数量 平均协商时间(秒)
硬冲突 10 0.403
硬冲突 20 0.715
硬冲突 30 1.21
软冲突 10 0.27
软冲突 20 0.53
软冲突 30 0.73
限制策略 10 0.102
限制策略 20 0.117
限制策略 30 0.25

表4:Kratos在处理策略协商时的开销。

Kratos对执行用户命令的影响 。由于在通过控制器设备(例如智能手机和智能平板)安装的智能应用中实施了 Kratos中的策略,因此在安装应用程序和执行用户命令时会给控制器设备带来开销。表5描述了基于生成策略的Kratos对执行用户命令的影响。此处,我们使用了八个不同的应用程序来测量Kratos的性能开销。我们还考虑了策略上的三种约束类型:时间约束、值约束以及时间和值约束。时间约束指的是智能设备期望动作的特定时间范围(例如,日落时打开灯),而值约束指的是输入到智能设备的特定输入范围(例如,智能恒温器的温度)。在设备上未实施任何策略的情况下,安装应用程序和执行用户指令的平均时间为1.3秒,CPU和内存利用率分别为1.75%和1.6%。对于时间约束和值约束,平均时间分别为1.72秒和1.46秒。平均CPU和内存利用率在时间约束和值约束下几乎相似(分别为2.1-2.2%和2.25-2.6%)。对于同时存在时间和值约束的情况,平均执行时间增加至1.92秒,CPU和内存利用率分别增加至2.5%和2.82%。考虑到现代智能手机和平板电脑中可用的CPU和内存,Kratos引入的开销可以忽略不计[29–31]。

策略类型 平均时间(秒) 平均CPU使用率 平均内存使用率
无策略 1.3 1.75% 1.6%
时间约束 1.72 2.2% 2.6%
值约束 1.46 2.1% 2.25%
时间和值约束 1.92 2.5% 2.82%

表5:Kratos在策略执行中的开销。

不同参数对性能开销的影响 。Kratos考虑智能家庭系统中的不同参数,以定义和执行反映多样化用户需求的设备策略。在此,我们通过改变各种参数来观察Kratos的性能开销。由于策略生成和协商在后端服务器上执行,Kratos不会对计算参数(CPU和内存利用率)造成任何性能开销。唯一明显的变化是Kratos在智能家庭系统正常运行期间引入的延迟。在图6中,展示了Kratos根据策略数量、冲突数量、用户数量和设备数量所引入的延迟。从图6a可以看出,Kratos引入的延迟随着用户生成的策略数量增加而增加。Kratos在智能家庭系统中执行用户指令时,对于五条策略引入 90毫秒延迟,当策略数增至60条时,延迟增加至280毫秒延迟。延迟随系统中冲突数量和用户数量线性增加(图6b和图6c)。执行用户指令的最高延迟为368毫秒,发生在系统包含30个不同策略冲突时。Kratos在系统中存在六个不同用户时,执行指令需要310毫秒。该延迟是由于通知不同用户执行指令所带来的开销所致。对于设备数量,当在智能家庭系统中添加12个不同设备后,Kratos引入的延迟趋于稳定(图6d)。

7 益处与未来工作

7.1 Kratos的益处

考虑一位用户鲍勃,他自认为是一位技术娴熟且充满热情的企业家房主。鲍勃的家中配备了智能锁、恒温器和火灾报警器等设备。鲍勃是一家三口的家长,包括他的妻子爱丽丝和十几岁的儿子马特。最后,鲍勃还向Airbnb用户提供高质量的度假租赁服务。

高效的冲突解决 。由于家中所有成员(包括爱彼迎租客)共享多台设备,鲍勃认为迫切需要一种控制机制,来定义这些智能设备在不同用户之间的设置和管理方式。然而,尽管尝试了来自不同平台的设备和智能应用(例如三星SmartThings、谷歌Home等),鲍勃仍未能找到一种可行且用户友好的解决方案,能够兼顾不同用户的需求(例如,鲍勃和爱丽丝希望恒温器温度尽可能高,而马特则希望温度更凉爽一些)。Kratos为智能家庭系统提供了细粒度访问控制机制,使鲍勃能够根据用户的需求、请求和优先级进行访问控制。

多用户/多设备 。如前所述,鲍勃的设置包含多种设备,这些设备根据对用户生活质量的影响以及对家庭整体安全的贡献,具有不同的可用性级别。此外,用户可能基于鲍勃及家庭的最佳利益拥有不同级别的访问权限。基于这些场景,鲍勃期望一个能够管理多用户和多设备环境的智能家居访问控制系统。Kratos实现并提供了一个访问控制系统,其中管理员(即鲍勃)可以为不同设备和用户分配优先级。这使得控制机制能够考虑各个设备的重要性,同时也能够根据管理员预定义的优先级考虑用户的需求。

复杂用户需求的适用性 。用户需求有时可能非常复杂。例如,除了鲍勃、爱丽丝和马特的需求和利益外,如果鲍勃决定将部分控制权授予他的爱彼迎租客埃德,则可能会生成新的访问控制策略。在已配置的智能家庭系统中添加新用户和设备会因用户与设备策略之间出现的新冲突而增加复杂性。为解决这些问题,Kratos能够基于不同的用户和设备优先级,以优化方式通过协商主动分析并解决策略冲突。

固有安全性 。鲍勃有一些规则来保护他的智能家居生态系统。首先,安全相关设备(例如智能锁)具有最高优先级。其次,他希望对这些设备实现严格且唯一的控制,以便没有其他用户可以更改其设置或预期行为。最后,优先级最低的用户(例如埃德)不应能够添加新设备、更改智能家庭系统设置等。我们的框架旨在根据特定用户的需求提供固有安全性。具体而言,Kratos通过全面的策略协商和冲突解决,提供了实现复杂控制和请求的手段。

7.2 未来工作

用户与可用性研究 。为了了解智能家居环境中用户的访问控制需求,我们将开展一项详细的用户研究,考虑用户特征分析、设备使用模式、智能家居配置参考以及用户偏好。此外,由于 Kratos是一种以用户为中心的访问控制解决方案,因此需要在真实的生活智能家居环境中测试Kratos的可用性。我们将在智能家居用户中开展一项可用性研究,基于用户界面、使用的可接受性、可用性、用户友好性、通知系统和有效性等不同参数来测试Kratos。我们还将开发教程和详细用户指南,以帮助参与者(包括有经验与无经验的用户)在真实的智能家居环境中正确评估Kratos的可用性。

8 相关工作

与提供细粒度用户访问控制不同,大多数前期工作侧重于通过控制应用程序访问来限制恶意活动[7, 8]。此外,一些研究聚焦于单用户场景下物联网网络中的设备访问控制和认证 [1, 6, 14, 22, 24]。在最近的一项工作中,何等人展示了一项详细的智能家居用户研究,描述了多用户智能环境中用户对细粒度访问控制的担忧[13]。在此研究中,作者们对425名智能家居用户进行了用户研究,并基于用户的偏好、社会规范和相互关系概述了访问控制需求。曾等人讨论了他们在智能家居用户中发现的安全与隐私问题[39]。作者们选取了15名智能家居用户,概述了他们的安全与隐私问题,并总结了在安全受影响场景中的用户行为。在这两项研究中,智能家居用户均表达了对在智能家庭系统中实施访问控制机制的需求。此外,这些研究还总结了设计规范,以反映用户在访问控制机制中的需求。马修斯等人也指出了共享同一设备和账户的智能家居用户所面临的相关问题[19]。然而,这些研究中均未提出针对多用户访问的明确解决方案。

在其他研究中,研究人员探讨了多个用户共享单个物联网设备时的不同访问控制策略。刘等人提出了一种名为 xShare 的移动电话生态系统用户访问框架,该框架在文件级访问上提供策略执行 [17]。倪等人提出了 DiffUser,这是一种基于访问权限的 Android 环境下的用户访问控制模型 [21],,但仅对单个设备有效。塔亚吉等人讨论了在共享环境中实现多方访问控制所需的若干设计规范 [37]。除这些研究外,相关工作较少。

前期工作提出了针对多用户多设备智能家居系统的访问控制系统。古斯莫利等人建议在多设备环境中采用基于能力的访问控制来管理用户[12]。然而,该系统灵活性不足,无法充分表达用户的实际需求。张等人提出了一组基于多用户智能家居系统不同使用场景的访问控制机制设计规范[15]。施uster等人提出了在智能家居系统中考虑多种环境参数的基于情境的访问控制[26]。在此研究中,作者结合设备状态和用户位置来判断是否为有效访问请求。然而,这项工作未能解决多个用户的冲突需求。亚赫亚扎德等人提出了Expat,一种根据用户需求定义策略的策略语言[38]。在最近的一项工作中,曾等人构建了一个面向智能家居用户的、具备多种访问控制选项的访问控制原型[41]。该研究中,作者考虑了四种不同的访问控制机制,并在七户家庭中开展为期一个月的用户研究,以了解用户需求并优化设计。尽管作者构建了概念验证框架以进行详细的用户研究,并明确了智能家居中的访问控制需求,但他们并未将该框架应用于实际系统,也未考虑在多用户智能环境中运行时可能出现的用户冲突。

与现有工作的差异。Kratos基于先前的用户研究[13, 41]构建。Kratos提出了一种面向多设备多用户智能家居系统的访问控制系统,为用户提供细粒度访问控制,考虑了以下方面:(1) 带优先级的便捷新用户添加,(2) 针对特定用户的设备限制,(3) 冲突的自动策略协商,(4) 多用户的便捷策略分配,(5) 权限过高的用户引发的不同威胁,(6) 在智能家居平台上的实际实施,(7) 对真实用户的有效性评估,以及 (8) 实际部署中的最小开销。表6总结了Kratos与其他现有解决方案的差异。

之前 Work 领域 环境
A.C. 威模胁型 User 接口解冲决突开分销析 语言
xShare [17] 智能手机 DiffUser [21] 智能手机 基于能力的访问控制 [12]物联网网络 基于情境的访问控制[26]智能家居 Expat [38] 智能家居 曾等人 [41] 智能家居 Kratos 智能家居
多多设用备户 基于能力的访问控制

表6:Kratos与其他访问控制机制的比较(A.C.代表访问控制)。

9 结论

在智能家居系统中,多个用户可同时访问多个设备。在此类环境中,用户可能希望以不同的偏好来控制和配置设备,从而产生复杂且冲突的需求。本文中,我们提出了Kratos,一种用于共享多用户智能家居系统的访问控制系统,能够应对不同用户的多样化和冲突需求。Kratos实现了一种基于优先级的策略协商技术,以解决共享智能家居系统中的用户冲突请求。我们在真实环境下的多用户场景中实现了Kratos,并通过真实设备对其性能进行了评估。Kratos成功满足了用户需求,我们的广泛评估表明,Kr

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值