首页 文章 精选 留言 我的

精选列表

搜索[异步方法],共10000篇文章
优秀的个人博客,低调大师

解密指纹和面容认证的实现方法

科幻电影一直是人们津津乐道的话题,其中不乏一些经典场面,让观众为之震惊赞叹,例如《钢铁侠》中的悬浮虚拟触摸屏、《碟中谍》中的指纹虹膜识别等。如今,这些看似高大上的科技也走进了我们的日常生活,像指纹与面容识别,其应用已经极为普遍与广泛。 当今社会对个人隐私的保护越来越重视,对App的安全性也提出了更高的要求,具备私密性与独特性的指纹与面容识别,就成为了强有力的保障。当用户在解锁设备、支付、文件访问时,利用指纹或者面容认证,这在很大程度上减少了帐号盗取、信息泄露的风险。 华为线上快速身份验证服务(FIDO)提供了相关功能:开放基于WebAuthn标准的FIDO2客户端能力,提供本地指纹、面容认证开放能力,为应用提供安全可信的本地生物特征认证和安全便捷的线上快速身份验证能力。其优势在于通过系统完整性检测和密钥校验机制保证结果安全可信,通用的无密码用户身份验证方案,易与现有帐号基础设施集成。接下来,为大家说明如何集成指纹和面容认证能力。 主要的接入步骤如下: 1. 配置AppGallery Connect 2. 集成HMS Core SDK 3. 集成本地生物认证能力 步骤1、2可以参考超链接中的指导进行完成,这里不做赘述。 需要注意的是步骤2中提供了两种本地生物认证的SDK: Bioauthn-AndroidX implementation 'com.huawei.hms:fido-bioauthn-androidx:5.2.0.301' Bioauthn implementation 'com.huawei.hms:fido-bioauthn:5.2.0.301' 这两个SDK对外表现的能力略有不同。主要表现在BioAuthn-AndroidX SDK的指纹认证能力提供统一界面,不需要应用自己绘制指纹认证提示界面;BioAuthn SDK的指纹认证能力不提供统一界面,需要应用自己绘制指纹认证提示界面。 可以参考官网FAQ中的说明: 这次我们主要介绍Bioauthn-AndroidX的集成,Demo可以在这里下载 集成本地生物认证能力 注意:1. 请保证手机没有root过,不然无法使用指纹和面容能力2. 测试前请先保证手机中已经有相应的指纹和面容信息,否则会报相关的错误码。可以在设置-生物识别和密码-指纹/人脸识别中添加相关指纹和面容 指纹认证 使用指纹认证分为两步: 1. 初始化BioAuthnPrompt对象,代码如下: BioAuthnPrompt bioAuthnPrompt = new BioAuthnPrompt(this, ContextCompat.getMainExecutor(this), new BioAuthnCallback() { @Override public void onAuthError(int errMsgId, CharSequence errString) { showResult("指纹认证报错. errorCode=" + errMsgId + ",errorMessage=" + errString); } @Override public void onAuthSucceeded(BioAuthnResult result) { showResult("指纹认证成功. CryptoObject=" + result.getCryptoObject()); } @Override public void onAuthFailed() { showResult("指纹认证失败."); } }); 2. 创建提示信息,并进行认证。 // 自定义设置信息 BioAuthnPrompt.PromptInfo.Builder builder = new BioAuthnPrompt.PromptInfo.Builder().setTitle("主标题") .setSubtitle("副标题") .setDescription("内容描述"); //允许使用其他认证方式 builder.setDeviceCredentialAllowed(true); BioAuthnPrompt.PromptInfo info = builder.build(); //进行认证 bioAuthnPrompt.auth(info); 配置完成后就可以进行指纹认证了,认证页面如下: 面容认证 面容认证的限制条件比较多,具体请参考FAQ: 1. 检查是否有相机权限(EMUI10.1及以后版本不需要相机权限) int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA); if (permissionCheck != PackageManager.PERMISSION_GRANTED) { showResult("请先申请相机权限"); ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.CAMERA}, 1); return; } 2.检查当前设备是否支持人脸识别 FaceManager faceManager = new FaceManager(this); int errorCode = faceManager.canAuth(); if (errorCode != 0) { resultTextView.setText(""); showResult("不支持人脸识别. errorCode=" + errorCode); return; } 3.进行人脸认证 int flags = 0; Handler handler = null; CryptoObject crypto = null; faceManager.auth(crypto, cancellationSignal, flags, new BioAuthnCallback() { @Override public void onAuthError(int errMsgId, CharSequence errString) { showResult("认证报错. errorCode=" + errMsgId + ",errorMessage=" + errString + (errMsgId == 1012 ? " 没有相机权限." : "")); } @Override public void onAuthHelp(int helpMsgId, CharSequence helpString) { showResult("返回识别过程中提示信息. helpMsgId=" + helpMsgId + ",helpString=" + helpString + "\n"); } @Override public void onAuthSucceeded(BioAuthnResult result) { showResult("认证成功. CryptoObject=" + result.getCryptoObject()); } @Override public void onAuthFailed() { showResult("认证失败."); } }, handler); 这样人脸识别的代码就完成了,调用后就会进行人脸认证。需要注意的是人脸认证没有默认的UI页面,需要我们自己去设计配置。 使用场景 指纹认证 一般来说指纹认证是用在支付场景的,用户付款前可以使用指纹认证来进行安全检测。指纹认证也可以用在文件保护App里,只有指纹认证通过才可以查看相关文件。 面容识别 面容识别也可以在支付场景和文件保护APP中使用,这个不再赘述在文件保护APP方面,面容识别的效果会比指纹表现的更出色。因为文件保护App有一个通病,那就是“此地无银三百两”,摆明了告诉别人你这个文件很重要或很敏感。所以其他人只要搞定了你的指纹(虽然也比较困难),那就畅通无阻了。 那么文件保护App除了可以在明面上展示指纹识别外,还可以“悄悄地”再做一层面容识别(面容识别不需要设计UI界面),只有指纹识别和面容识别都过了,才展示正确的文件,否则可以展示假文件。这样做的话就可以更好的保护用户的隐私。 具体的人脸识别的代码实现可以是下面这样的: faceManager.auth(crypto, cancellationSignal, flags, new BioAuthnCallback() { @Override public void onAuthError(int errMsgId, CharSequence errString) { if(isFingerprintSuccess){//指纹认证成功但面容识别失败 //展示假文件 showFakeFile(); } } @Override public void onAuthHelp(int helpMsgId, CharSequence helpString) { } @Override public void onAuthSucceeded(BioAuthnResult result) { if(isFingerprintSuccess){//指纹认证成功 //展示真文件 showRealFile(); }else {//指纹认证失败 //展示假文件 showFakeFile(); } } @Override public void onAuthFailed() { if(isFingerprintSuccess){//指纹认证成功但面容识别失败 //展示假文件 showFakeFile(); } } }, handler); >>访问华为线上快速身份验证服务官网,了解更多相关内容 >>获取华为线上快速身份验证服务开发指导文档 >>华为HMS Core官方论坛 >>华为线上快速身份验证服务开源仓库地址:GitHub、Gitee 点击右上角头像右方的关注,第一时间了解华为移动服务最新技术~

优秀的个人博客,低调大师

边缘计算的安全风险及其克服方法

IT管理员需要采用正确的策略和工具来预测、预防、克服常见的边缘计算安全风险,并实现边缘计算的价值。 如今,每个人都知道计算和网络会带来安全风险,而新的风险伴随着新的计算技术而出现。边缘计算也是如此。因为对于大多数组织来说,它代表了IT模式的相当大的转变,边缘计算设施面临的安全风险可能十分严重。因此,了解这些风险及其补救措施对于确保业务运营的顺利进行至关重要。 边缘计算安全性的注意事项 边缘计算是将数据资源部署在数据中心外部并接近用户的计算设施,而通过这一设施,一系列网络设备将边缘计算设备链接到用户或流程,例如物联网。因此,边缘计算设备的部署并不具备数据中心的物理安全性,以及无法采用驻留在其中的软件或硬件所应用的访问、网络和数据安全性措施。 边缘计算的安全性挑战是提供所需的附加安全性,以使边缘计算设施的安全性达到数据中心标准的安全性和合规性。在许多情况下,这意味着需要安全访问边缘计算设备,无论是物理访问还是通过用户界面访问,都要采用一些关键的安全措施。 边缘计算如何有利于网络安全 边缘计算并不总是会增加风险。它可以通过提供本地加密和其他安全功能来提高安全性。物联网中使用的成本低廉的传感器和控制器缺乏强大的安全功能,边缘计算能够以低成本保护本地流量。 即使在笔记本电脑、台式电脑或移动设备等拥有强大的安全功能的设施,将它们的流量传输到组织虚拟私人网络或数据中心的单一连接上,也将改善对安全的监视和控制。边缘计算设施还可以通过有效地将本地设备从虚拟私人网络或全球互联网的直接连接中删除,从而帮助将本地设备与拒绝服务攻击进行隔离。 边缘计算存在固有的安全风险。使用访问控制和建立审核程序只是帮助保护边缘计算的几个步骤。 常见的边缘计算安全风险 在大多数情况下,边缘计算设施是一种最小化的数据中心,而最小化通常意味着删除或减少安全保护功能,以降低边缘计算设备的成本。这是边缘计算安全风险的最主要来源,但它不是唯一的来源。人们需要了解具体的风险因素及其来源。 数据存储、备份和保护风险 如上所述,存储在边缘计算设施的数据缺乏通常在数据中心中发现的物理安全保护措施。实际上,网络攻击者仅通过从边缘计算资源中删除磁盘或插入U盘,就有可能窃取数据库。由于边缘计算设备的本地资源有限,因此备份关键文件也可能很困难或不可能实现,这意味着如果发生攻击事件,组织可能没有备份副本来恢复数据库。 密码和身份验证风险 边缘计算资源很少由注重安全性的本地IT运营专业人员提供支持。在许多情况下,维护边缘计算系统可能只是IT工作人员的兼职工作,这种情况可能使密码管理松懈。在某些情况下,可能采用容易记住的简单密码。在其他情况下,有可能为重要应用程序张贴带有密码的注释;此外,为了方便用户/管理员操作,边缘计算系统可能不采用强身份验证措施,例如多因素或双因素身份验证。 外围防御风险 由于边缘计算扩展了IT范围,因此总体上使外围防御变得更加复杂。边缘计算系统本身可能必须通过数据中心内的应用程序来验证其应用程序,并且其凭据通常存储在边缘计算设施中。这意味着边缘计算设施出现安全漏洞可能会使数据中心资产的访问凭据暴露,从而显著增加安全漏洞的范围。 云采用风险 总体而言,云计算仍然是IT领域最热门的话题,因此边缘计算与云计算相结合的风险尤为重要。这些风险将取决于边缘计算和云计算之间的特定关系——这是很容易被忽略的,因为不同的云计算软件平台和服务以不同的方式处理边缘计算的元素。如果边缘计算设备是简单的控制器(通常是这样),则很难使它们安全地访问云计算资源和应用程序。 边缘计算安全的最佳实践 边缘计算安全性有六个基本规则。首先,使用访问控制和监视来增强边缘计算的物理安全性。其次,从中央IT运营控制边缘计算配置和运营。第三,建立审核程序以控制数据和应用程序托管在边缘的更改。第四,在设备/用户与边缘计算设施之间尽可能应用最高级别的网络安全性。第五,将边缘计算视为IT运营的公共云的一部分。最后,监视并记录所有边缘计算活动,尤其是与操作和配置有关的活动。 组织必须确保对边缘计算设施的访问权限,因为总体而言并不能保证其设施的安全。将设备放在安全笼中并在人员进入和退出时进行视频监视是一个很好的策略,其前提是必须控制对安全笼的访问,并且采用视频技术可以识别访问尝试。打开安全笼应在组织的IT运营或安全中心触发警报。用于这一目的的工具与用于数据中心设施安全的工具相同,都采用传感器和警报。 而对于组织的IT运营,应该监督所有的边缘计算配置和操作,而让内部部署数据中心工作人员执行关键系统功能会导致密码控制和操作错误。 边缘计算应用程序和数据托管也应进行集中控制,并接受合规性审核。这可以减少或防止将关键应用程序组件或数据元素迁移到未经认证可安全承载它们的边缘计算设施的情况。 因为到边缘计算的网络连接是所有边缘计算信息以及所有操作实践和消息的通道,所以网络连接必须安全。这意味着使用避免将密钥存储在边缘计算系统上的高质量加密技术,因为该系统的安全性较低。多因素身份验证应该应用于所有网络、应用程序和操作访问。 所有这些都必须被监控,并且与边缘计算操作相关的每个事件(包括所有部署、配置更改和从本地键盘/屏幕或远程访问任何监控模式)都必须记录和审核。在理想情况下,在进行更改之前,应通知IT运营和安全领域的运营人员,并应创建上报程序,以便在报告任何意外情况时通知管理层。 关键的边缘安全供应商和产品 防火墙、隧道和安全通信供应商和产品包括所有软件定义的广域网供应商,因为这种技术可以支持来自任何边缘计算的安全通信,包括具有本地计算功能的设施。此外,主要供应商思科、瞻博网络、Palo Alto Networks的安全/防火墙产品可以帮助保护边缘计算设施免受攻击。 边缘计算的应用程序控制和安全性应该是IT运营工具的功能,包括DevOps(Chef、Puppet、Ansible)以及容器编排工具(如Kubernetes)。这些产品可通过多种渠道获得,其中包括HPE、IBM Red Hat和VMware。 边缘计算的威胁检测可以视为网络和系统监视的一种功能,也可以由特定的应用程序集支持。目前主流的监视工具(其中包括Argus、Nagios、Splunk、SolarWinds Security Event Manager、OSSEC、Snort和Suricata)都提供了对入侵检测和预防的特定支持。 而良好的问题跟踪和管理系统对于边缘计算的安全至关重要,尤其是在有很多此类设施和在地理上分布广泛的情况下。如今,市场上有一些这样的系统,其中包括OSSEC、Tripwire以及Wazuh。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册