放心用吧!浅谈DuerOS的安全性

简介: 放心用吧!浅谈DuerOS的安全性


“我们每个人都是安全工作者”(参见关于软件开发,都应该知道的10个常识), 这绝不是一句戏言。在人工智能智能领域,安全同样是一个重要的话题。AI操作系统要保证系统的安全性,那么基于AI操作系统的开放平台同样要保证安全性。

基于DuerOS 的小度系列音箱是否安全?基于DuerOS开发的技能服务是否安全呢?

小度系列音箱的安全性

很多朋友问我,“使用小度音箱是否安全呢?它是不是总在监听我说话呢?”。

智能音箱场景下的性能优化》一文中描述了智能音箱的工作原理,音箱的唤醒和语音识别是两个部分。当用户说“小度小度”唤醒词的时候, 这部分的语音识别是在音箱本地进行的,也就是音箱自身的AI部分, 当唤醒完成之后,用户的语音才会传到DuerOS的云端,完成语音识别,自然语言处理等等。举个例子, 大家在一个屋子里聊天, 很多声音你可以充耳不闻,当我说“小明,小明”,小明才会意识到我要和他说话,对我接下来的对话进行响应。

因此,智能音箱并没有将用户的语音都进行云存储,只有在用户要求音箱响应的时候才做出来,是相对安全的。

至于智能音箱其他方面的安全性都是要遵守各种国家规范的,就小度系列音箱而言, 有着严格的准入准出机制,包括显式/隐式接口,存储芯片,加密等级,固件更新等,基本上可以做到比手机的安全性更好。

DuerOS的安全体系

DuerOS系统的安全性构建在百度整个的安全体系之上,安全体系一般包括六个方面:

  • 物理与环境安全
  • 安全流程管理及相关审计
  • 灾难恢复和业务连续性
  • 云平台安全技术
  • 云客户云安全服务
  • 数据安全

安全架构的核心包括百度智能网关、入侵检测和防御系统,流量清洗系统和漏洞检测系统等,可有效实现防DDoS以及各类网络4、7层攻击等。

百度发布了公司层面的《数据安全策略》,所有数据进行分级保护。所有用户敏感信息,将以最高安全等级“机密”级别进行管理。在处理机密数据资产时,必须遵守机密数据管理流程与技术标准要求。主要包括:

  • 所有的数据有明确的数据owner和管理者,明确数据访问/使用范围,遵循数据访问权限最小化原则。并通过技术手段和相关流程对数据进行安全管理,推动保护措施的实施。
  • 发布明确的制度对机密数据的访问、获取进行管理,包括第三方需求的管理。建立明确的访问授权审批要求且所有审批记录线上化。
  • 各系统或使用者知道明确的数据销毁处理流程,并采用合理的数据销毁技术。
  • 对机密数据管理执行定期审核。
  • 所有承载、存储机密数据的系统,必须具备4A基本要求(Account、Authentication、Authorization、Audit)。机密数据的访问必须细化到个人,必须有安全的登录机制,所有人的访问已授权且符合最小化原则,所有行为日志记录齐全且远程备份满足可审计。

因此, DuerOS系统自身的安全性是值得信赖的。

DBP技能开放平台的安全性

DBP(DuerOS Bot Platform)是对开发者开放的平台,以通信认证的方式保证DuerOS 系统与第三方服务的安全性。也就是说,在技能服务与DuerOS通信的过程中,双方都需要对接收到的请求信息进行认证,避免接收到恶意攻击者发来的请求,从而保证通信内容安全。

在传输层面,技能服务必须使用HTTPS进行通信,以保证通信内容的传输安全。应用服务层面的安全性采用的是双向认证。

双向认证——DBP请求第三方服务

当DuerOS向技能发送请求时,技能需要对发来的请求进行验证,验证过程如下:

  1. 从http head的signaturecerturl地址里面下载权威签名证书,然后从签名证书中获取公钥。
  2. 从http head中获取signature信息,并用base64解码signature得到str1。
  3. 通过公钥和str1解密得到sign1。如果解密成功,继续验证。如果解密失败则拒绝请求。
  4. 使用sha1计算消息body的内容得到sign2,并与sign1进行比较,如果一致则继续验证,如果不一致,则拒绝请求。
  5. 比较request请求消息中的timestamp字段与系统当前的时间,如果两者差值小于180秒,则认为当前请求合法,对请求进行处理。如果两者差值大于等于180秒,则拒绝请求。

验证过程中的2-4步可以使用rsa_verify函数代替。下图展示了DuerOS生成签名过程和技能验证签名的过程。

双向认证——第三方服务请求DBP服务

当DuerOS收到技能发送的请求时,需要对技能发来的请求进行验证,验证步骤如下。

  1. 从http head中获取signature,并进行base64位解密获得str1。
  2. 从DBP平台上获取技能的公钥,并将公钥与str1通过解密获得sign1,如果解密失败则拒绝请求。
  3. 将body、botId、timestamp三个字符串按顺序连接成str2,并对str2生成摘要sign2,比较sign1与sign2是否相同,如果不同则决绝请求,如果相同,则继续验证。
  4. 比较请求消息中的timestamp字段与系统当前时间,如果两者差值小于180秒,则认为请求合法,对请求进行处理。如果两者差值大于等于180秒,则拒绝请求。

DuerOS验证签名过程中的2-3步可以使用rsa_verify函数代替。下图展示了技能生成签名过程和DuerOS验证签名的过程。

生成公私钥的RSA方法

RSA方法生成的公钥和私钥是成对出现的,在DuerOS与技能通信过程中起着重要的作用。可以采用OpenSSL来生成RSA的公私钥,私钥的生成示例如下:

genrsa -out rsa_private_key.pem 1024

根据私钥生成公钥的方式如下:

rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

没错, 和我们在其他环境中的应用没什么两样。

当然,如果采用了CFC的形式进行部署,DBP 平台已经完成了上述功能,无需开发者显示操作。

用户隐私与账户管理

安全性中的一个重要方面是用户隐私,在DuerOS中所有涉及用户隐私的操作都要用户的显式授权,例如位置信息,录音,支付等等。例如技能向用户推荐附近的美食时需要知道用户的地址信息,向用户邮箱推送用户关注的资讯时需要用户的邮箱信息。技能只有经过用户的授权才能使用用户的信息。

用户授权

技能可以通过向DuerOS发送Permission.AskForPermissionsConsent指令获取用户的权限。当收到用户响应时,DuerOS会向技能发送授权成功或授权失败事件。

Permission.AskForPermissionsConsent指令的协议格式如下:

{
    "type": "Permission.AskForPermissionsConsent",
    "permissions": [
        {
            "name": "{{ENUM}}"
        },
        ...
    ],
    "token": "{{STRING}}"
}

当技能申请用户授权成功时,DuerOS会向技能上报授权成功事件,消息格式如下:

{
    "type": "{{STRING}}",
    "requestId": "{{STRING}}",
    "timestamp": "{{STRING}}",
    "token": "{{STRING}}" 
}

如果技能需要用户授权的数据,必须在DBP 平台的技能描述进行显式选择。为了保护用户数据,技能在使用用户数据信息必须满足以下条件。如果发现技能违背了下面的原则,DuerOS有权下线技能,并通知开发者对技能进行修改。

  • 技能必须满足DuerOS隐私政策。
  • 技能只有在提供服务时才能使用用户信息。使用用户信息时,必须告知用户使用范围,在用户同意并且不违背用户隐私和法律的情况下使用。
  • 技能使用用户信息,包括用户的昵称、邮箱、电话、头像等,都必须通过向DuerOS发送请求消息来获取,不能将用户的信息本地存储。
  • 技能每次提供服务时,必须使用API接口请求用户最新的信息。

账户关联

另一类典型的授权需求是账户关联,需要将用户的DuerOS账号与已有应用系统的账户进行关联,以获取应用系统的信息。DuerOS支持技能将用户的DuerOS账户与用户的其他系统账号关联起来,使技能提供更多的服务。

目前,在DBP技能开放平台上,仅自定义技能和智能家居技能会涉及账户关联功能,内容播报等技能不涉及账户关联。例如,当用户使用一个关于微博内容分享的自定义技能时,如果用户说“小度小度,查看我的关注”,此时技能会为用户展现微博的关注信息。在这个过程中,技能首先需要获取用户在微博账户的授权,然后才能登录用户的微博,获取微博的关注信息并展现。

技能将用户的DuerOS账户与用户的第三方系统帐户关联时,需要第三方系统为该用户账户提供一个访问令牌,以便在第三方系统中唯一地标识用户。DuerOS保存访问令牌,并将令牌包含在发送给技能的请求中。技能使用访问令牌代表用户身份访问第三方系统,通过该系统的身份验证,进而获取到用户在该系统中的信息或者资源。

DuerOS 采用OAuth 2.0的授权码模式完成账户关联,过程如下:

  1. 当需要用户授权时,会在屏幕或app(无屏设备启用技能时)上显示第三方系统的登录页面(即开放平台的填写的授权地址)。技能请求该授权地址时会携带state(必选)、client_id(必选)、response_type(必选)、scope(可选)和redirect_uri(必选)等参数信息。
  2. 用户在第三方系统的登录界面填写账户信息并进行登录授权。
  3. 第三方系统对用户的身份进行验证。通过身份验证后第三方系统会重定向到redirect_uri地址,并附上授权码。
  4. 重定向地址redirect_uri使用授权码向认证服务器(在技能开放平台上填写的token地址)申请令牌。
  5. 认证服务器核对授权码和redirect_uri,确认无误后,向DuerOS发送access token和refresh token。
  6. DuerOS验证返回信息,保存access token和refresh token。

也就是说,当技能应用支持用户使用帐户关联功能时,开发者需要设计、编写登录页面。该页面需要验证用户在第三方系统的登录信息,并返回访问令牌。如用户在技能商店app中启用智能家居技能时,会跳转到技能提供的第三方系统的登录界面。用户登录第三方系统进行访问授权,该页面验证用户的信息是否正确,正确时返回访问令牌。登录页面需要满足以下要求:

  • 基于HTTPS访问。
  • 可以适配不同的设备,包括手机app、各种有屏设备端。
  • 不允许出现任何弹出窗口。
  • 必须接受用户的登录信息凭据,然后对用户进行身份验证。
  • 需要能生成一个授权码code,该code可以传递到技能的授权服务器并返回access token访问令牌。
  • 必须跟踪查询字符串中传递的state值,及原封不动的返回该state的值。
  • 完成用户登录信息验证时,需要重定向到redirect_uri地址,同时携带参数state和授权码code。

当用户禁用技能时,DuerOS将删除技能与该用户关联的访问令牌和刷新令牌,取消该用户的DuerOS账户与用户其他系统账户之间的连接。当用户再次启用技能时,需要重新将用户的DuerOS账户与提供服务的用户账户进行关联。

综上所述,在使用基于DuerOS的各种服务时,无论从设备端,还是AI操作系统,亦或第三方技能服务,都在安全性上提供一定的保证,一句话,放心用吧!

相关文章
|
7月前
|
存储 安全 算法
代码混淆和加固,保障应用程序的安全性
代码混淆和加固,保障应用程序的安全性
|
1月前
|
存储 安全 网络安全
远程工作的新常态:确保家庭网络的安全性
远程工作的新常态:确保家庭网络的安全性
33 3
|
6月前
|
数据安全/隐私保护 监控 数据库
在保护网站数据安全的同时,如何提高其可靠性?
【6月更文挑战第2天】在保护网站数据安全的同时,如何提高其可靠性?
53 5
|
7月前
|
BI UED
挑选售后服务管理系统:功能实用,安全可靠双重保障
2024年,ZohoDesk、Zendesk、Freshdesk和SalesforceServiceCloud是优秀的售后工单系统。这些系统提供多渠道集成、工单管理和报表分析,提升服务效率。企业应根据需求和预算选择合适系统。ZohoDesk具备全面客服功能,支持自动化流程,工单管理强大,界面友好。Zendesk以工单管理和多渠道集成见长,Freshdesk易用且功能丰富,SalesforceServiceCloud则是一站式客户关系管理解决方案。
65 3
|
存储 安全 数据安全/隐私保护
杜绝硬编码,为系统安全保驾护航
在如今复杂的IT环境中,多个脚本、流程和应用程序需要访问多平台资源,才能检索和存储敏感信息。此类应用程序被授权使用专用账户,通常允许无限制地访问企业最敏感的资产。因此,这些账户往往会成为许多针对性攻击的牺牲品。实际上,最近报告的许多复杂攻击均源自硬编码特权账号的盗用。
68 0
杜绝硬编码,为系统安全保驾护航
|
存储 安全 网络协议
如何维护自己的电脑的措施
如何维护自己的电脑的措施
275 0
|
存储 安全 数据安全/隐私保护
WordPress网站容易有安全问题的几个因素
WordPress网站容易有安全问题的几个因素 有几个因素会使您的 WordPress 网站更容易受到成功的攻击
|
监控 安全 Ubuntu
重视WordPress建站安全性,WordPress定制开发如何发挥其安全性不被攻击
WordPress网站上每分钟有超过90,978次攻击,尽管这个数字听起来很大,但如果您遵循基本的安全规则,则可以防止大多数潜在攻击并使您的网站免受攻击。或者至少让它很难闯入,以至于黑客宁愿瞄准数千个安全性差的人之一。这并不难做到,特别是如果您考虑到许多攻击是在自动漏洞扫描程序找到潜在途径后执行的。那么,如何飙升WordPress网站安全性?WordPress定制开发如何发挥其安全性不被攻击? 北京六翼信息技术有限公司的开发工程师给出以下是 6 个基本提示重视WordPress建站安全性的建议。
重视WordPress建站安全性,WordPress定制开发如何发挥其安全性不被攻击
|
存储 安全 网络安全
相亲软件开发,保证数据库安全的常用手段
相亲软件开发,保证数据库安全的常用手段
|
安全 数据库 数据安全/隐私保护