关于android:从加密到验证全方位保障您应用的通讯安全

2次阅读

共计 5053 个字符,预计需要花费 13 分钟才能阅读完成。

在一个完满的世界上,没有人须要用到明码。每个人都高度自律,心无杂念;每件快递都能不经拦挡精确送达收件人;而每个寄件者都是值得信赖的。然而咱们并不在这样完满的世界中生存。过来的数十年间,密码学曾经倒退到不仅能够通过加密来保障机密性,还能够确保音讯的完整性、身份验证,以及不可否认性——所有的一切都是为了保障音讯私密、实在和牢靠。

如果您的零碎曾经实现了强无效的明码策略,这可能会使您认为不再须要通过生物特色来验证就是用户自己。为了了解为什么验明用户正身在密码学中如此重要,让咱们顺次对照来看密码学中几种办法的胜利和不足之处。由此,作为诸如银行零碎或医疗系统等高端服务的提供者,能够理解为什么您可能须要在明码策略的根底上进一步实现基于生物特色的身份验证性能。

仅凭加密无奈进攻某些特定类型的攻打

您能够把加密比作一个函数,比方 E,这个函数接管两个参数,音讯 m 和密钥 k,并由此生成密文 c。生存中人们经常把这个密文当作加密,但事实上加密指的是可能生成攻击者无奈读取的加扰信息的算法,而最终的加扰信息就是密文。

c = E(m,k)

只有密钥 k 足够长,当您仅晓得 m 或 c 局部内容时,简直不可能得出密钥 k。然而,攻击者无需解密音讯即可对其进行篡改,攻击者兴许能够编辑密文、删除密文,或者以重放的形式从新发送一条蕴含密文的音讯。

并不是所有的攻击者都想要偷盗您的数据;他们可能只想给您带来不便。试想有一个攻击者,他只是重放了您向电脑城付款 $2,000 购买笔记本的加密交易。假如他是与该电脑城没有任何分割的攻击者,所以他什么也没有偷走。您诚然能够通过一些申述伎俩向店家要回退款,但既遭受了工夫的损失又没了好情绪。更蹩脚的是,某些精于此道的攻击者兴许会将电脑城的银行账户替换为其余银行账户——这所有齐全不须要解密您传输的密文。

当然,方才的这些都只是接触了其中的皮毛。针对纯加密计划的攻打有许多更出名的案例。即便您的加密算法充沛防备了已知的攻打伎俩,但仍可能会有有余。简略说来,您没方法永远保障音讯的私密性。甚至是在最佳密码学策略的加持下,当下技术的倒退速度只能让您的音讯在 30 年内放弃私密,或者运气好的话,能有 50 年。因而,仅凭加密是无奈与毁坏音讯完整性的攻击者相抗衡的。您还须要用上身份验证伎俩,也就是下个大节要探讨的问题。

通过音讯身份认证保障音讯不被篡改

在一些敏感场合中,坑骗性质的音讯误传会造成破坏性影响。这个重要的事实启发平安工程师们发明了音讯认证码 (Message Authentication Code,简称 MAC 或 HMAC)。如果发信人在发送音讯的同时还传输了 MAC,那么攻击者就无奈再批改内容并伪装这就是原始音讯。同时攻击者也无奈重放曾经发送过的音讯。攻击者能做到的最多就是删除发送的音讯造成通信失败。

MAC 是什么?MAC a 与通过音讯和密钥计算失去的密文类似。实质上,发信人将音讯 m 和密钥 k 传入函数 h 计算就能生成 MAC 了。随后,发信人同时将音讯和 MAC 发送给收信人。

m,a = h(m,k)

MAC 与单条音讯并不是惟一对应的,这是因为鸽笼原理导致的,大抵意思是如果您的鸽子数量比鸽笼要多,那么某些鸽笼中就不止一只鸽子了。MAC 的长度是事后就决定了的,因而音讯的数量会比对应 MAC 的数量要多。然而因为搜寻域太大,攻击者想要在不晓得密钥的状况下很难猜出批改后的音讯对应的 MAC。因而,MAC 可能无效避免音讯被批改的起因是只有发件人和指标收件人晓得密钥。如果攻击者想要批改发送的音讯,那么他必须替换 MAC 以匹配更改。然而在不晓得密钥的状况下这简直是不可能的。因为间断两次计算 m,a = h(m,k) 会生成两个不同的 MAC,音讯重放攻打也会随之生效。这是因为在实践中通常还有第三个严格减少的参数 t: 因而公式写作 m,a = h(m,k,t)。由此,MAC 函数能帮忙非法的收件人轻松验证是否遭逢了音讯重放攻打。

MAC 机制实质上使得攻击者必须破解密钥。因为 MAC 的存在,模拟原始音讯不再可行。音讯完整性失去基本保障。尽管 MAC 机制十分实用,但在机密性方面它依然有局限,这也是前面章节要阐明的问题。

已签名但未封装

值得注意的是,MAC 只是对音讯进行了签名而没有将其封装——也就是没有机密性。攻击者依然能够读到音讯的内容;只不过他们无奈轻松篡改内容。然而同时进行签名和封装并不难。咱们不再应用 m,a = h(m,kₐ),取而代之的是通过代数替换失去 c,a = h(c,kₐ),其中 c 是由 c= E(m,k𝒸) 计算得出的。

好的明码算法就像是好房子。它们能够在狂风暴雨中耸立 30 年以上,而不是仅存在一天就坍塌。特地是对于明码学家来说,这意味着他们须要预感在将来的 10 年或是 30 年后攻击者会以当下尚未创造的技术来破解加密算法,而不是仅思考攻打是否会在今天或下个月产生。因而,MAC 并不能使加密颠扑不破。它只是减少了攻击者的破解难度。30 年后的攻击者可能会用 生日攻打、中途相遇攻打 来猜想通过篡改的音讯的 MAC 值,从而使收信人接到混充的音讯。

非对称加密让扩大更从容

目前为止,咱们谈到了明码学家如何搭配加密和 MAC 来生成签名且封装的音讯。咱们也谈到了攻击者所能做的最多就是删除这些音讯;否则音讯会胜利、私密、残缺地送达收信人。听起来这就是咱们所须要的全副了,其实还有更多。在咱们开始探讨 “ 更多 ” 之前,无妨先聊聊可扩展性。

目前为止咱们探讨的大多数技术被统称为 对称密码学。简言之,它们要求发信人和收信人都是用完全相同的密钥来加密或者解密音讯,以及创立或校验 MAC。这种办法的问题在于,如果整个群组有 10 名成员,那么每名成员都须要分享和存储 9 个不同的密钥,这样才可能在任意两名成员之间互发加密信息。这样一来,整个群组就有 45 个 key 存在。如果有 20 集体,就有 190 个密钥;个别地,n 集体就有 (n-1)n/2 个密钥。假想一下,如果对联系人列表里的每个人,您都须要应用一个独立手机号码与其分割会怎么?这样一来,您不能将一个号码发给所有的联系人,而每次结交新敌人,您都须要购买一个新的手机号码!这就是对称加密的问题所在。难以扩大。不过幸好还有非对称加密可用。

非对称密码学 应用数论中的观点 (尤其是 无限域实践 和 单射函数) 来实现其技术优雅。实质上是每个人都创立一个公钥和一个私钥。任何想要和您交换的人能够应用您的公钥来加密信息,但只有您的私钥能够将其解密。

这里意在探讨非对称加密,而不是深入探讨数论。要反对不可否认性,您必须要应用到非对称加密,这是咱们接着要探讨的下一个密码学属性。

必要的不可否认性

不可否认性是 “ 不可食言 ” 的业余说法。电子商务反动把这个简略的公平交易准则带到密码学畛域的前沿和核心。

在应用对称密钥的状况下,收到音讯的人 (比方 Bob) 没方法向法官证实发信人 (比方 Alice) 是真正发消息的那个人。这是因为 Alice 和 Bob 用雷同的密钥来通信。或者 Alice 真的发送了原始音讯,但 Bob 篡改了它,抑或 Alice 在扯谎。裁判没方法判断到底是哪一种状况。

然而在应用非对称密钥时,只有持私钥的那个人才能够对音讯签名。全世界任何人都能够读到音讯的内容,毕竟公钥是公开的。因而会呈现这样的状况: 当 Alice 须要从 Bob 那边买货色时,她会用 Bob 的公钥来加密交易,并应用她本人的私钥来签名。而后当 Bob 收到交易信息后,能够用 Alice 的公钥来确定是不是真的用 Alice 的私钥签的名,随后用他本人的私钥来解密音讯。由此可见,签名就被用来提供不可否认性了。MAC 和签名实质上是一样的,不过前者是对称加密的概念,而后者属于非对称加密。

简略回顾

当初咱们来回顾一下。密码学被利用于加密和认证音讯,并且提供不可否认性。当应用了正确的技术,音讯的真实性和加密性两方面都难以被破解——它们都依赖较为简单的数学伎俩,比方整数合成、离散对数和椭圆曲线算法,这些办法随后被利用于无限域问题中。须要指出的是,通过数学分析来取得加密密钥可能会很艰难,然而仍有其余办法能够攻入平安零碎,比方社会工程学,也就是人可能被诱导泄密。此外,咱们没有聊到密钥生成和认证的过程,因为咱们曾经说得很明确了: 作为一门工程学科,明码学会依据时代的倒退而一直演进,并试图放弃超前攻击者。

与加密和身份认证不同,不可否认性会更难凑合一点,因为用户身份的验证能够为攻击者再添一层难度。

用户在场的重要性

到目前咱们曾经理解到密码学就是在钻研安全等级: 对于一个攻击者来说,扰乱通信的代价 (工夫、金钱和膂力) 有如许高。尽管如此,依然存在一个次要问题: 仅凭音讯发自我所持有的设施且由我的私钥签名,并不能阐明是我自己发送的音讯。病毒或是未经受权的用户也有可能发送了该音讯。因为这些以及相似的起因,只管数字签名曾经被纳入国内法律体系中,比方 ESIGN,许多跨国商贸机构依然没有信赖它,因为在无奈证实用户在场的状况下很难保障不可否认性,而举证责任由商家承当。

为了加强商家对不可否认性的信念,业界引入了 双重因素验证 (2FA)。因为网络罪犯经常会破解那些仅受用户名和密码保护的在线账号,2FA 引出了让自称是非法用户的代理提供 多一种信息 的概念。这里所说的 多一种信息,通常指的是以下三类中的一种: 某件您晓得的事、某样您领有的事物,或是您是谁。2FA 的指标是要给商家信念去置信,用户自己确实在进行交易。两种常见的 2FA 模式是电子钥匙链和通常由短信发送的验证码。应用电子钥匙链或类似的硬件令牌都有容易失落或被盗的问题。而当遗失或被窃的设施就是接管短信或者推送告诉的设施时,用短信验证码作 2FA 也就毫无抵挡能力了。因而,现在 2FA 最先进的模式就只剩您身材的一部分。生物特色身份验证就是这种加强 2FA 的例子。

在您的安全策略实现中用生物辨认特色验证是否为用户自己,能够让您的利用更平安,并且不可否认性成为了您的商业模式中的一个牢靠个性。对于医疗保健或是酒店服务业利用来说,这可能确保更实在的用户注销或是勾销预约状况。对于电子商务和银行利用,这使得您的客户服务团队破费更少的工夫来解决顾客的小孩意外产生的购买行为和退款,从而有更多的工夫以更多令人满意的形式使顾客开心。

使生物特色认证在您的平安零碎中成为拦截攻击者的额定阻碍的根本原因在于: 尽管生物辨认和密码学伎俩是互相齐全独立的措施,但它们都使得攻击者难以攻破。因而,两者联合就能够让攻击者更难以未遂。

举个例子,在 Android 当中,生物特色辨认像是一条单行道。用户的生物特色信息永远不会来到设施,而且绝不会与利用共享。当用户决定把本人的生物特色信息录入 Android 设施时,他们必须要通过零碎的设置利用。假使用户要应用指纹或是人脸识别,那么他们须要把手指放在传感器上,传感器会间接把指纹图像发送到 Android 设施的受限区域内,这个区域被称为 可信执行区域 (TEE)。随后,当您的利用须要通过生物特色验证用户自己在操作时,Android 框架和运行于 TEE 中的生物识别系统会替您的利用解决整个 “ 用户是否在场 ” 的验证过程。因为 Android 框架让假冒设施客人的生物特色十分艰难,您能够给这个用户自己验证充沛的信念。

您能够通过浏览咱们的文章《联合应用 BiometricPrompt 和 CryptoObject》,更深刻理解在 Android 零碎上生物特色验证是怎么用不可否认性来加强您利用的平安的。

总结

您在本篇文章中理解到了:

  • 为什么良好的明码策略实现须要强调私密性、真实性和不可否认性。
  • 为什么只应用加密不足以爱护音讯免受攻打。
  • 为什么 MAC 或 HMAC 可能无效防止音讯被篡改。
  • 为什么非对称加密比对称加密更容易扩充规模。
  • 为什么现实生活中,不采纳生物特色验证就难以实现不可否认性。
  • 为什么生物特色验证能够通过用户存在性验证来加强加密实现。
  • 在哪里能够理解到如何在您的利用中实现生物特色验证。

咱们还撰写了许多文章,它们波及工程最佳实际、设计指南以及将生物特色验证集成到您利用中的技巧:

  • 如果您想要理解怎么在您的利用中实现生物特色验证,请浏览系列文章:

    • 在 Android 中应用生物辨认
    • 实战 | 将 Android 生物辨认身份验证整合至利用中
  • 如果您的利用中有应用了 FingerprintManager 的旧逻辑,咱们建议您用 BiometricPrompt 取代它。

    • 全面理解 BiometricPrompt,请浏览: 在所有 Android 设施中应用对立的生物辨认身份验证 API
    • 理解怎么实现迁徙工作,请浏览: 从 FingerprintManager 迁徙到 BiometricPrompt

祝您编程欢快!

正文完
 0