自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你真的了解Android密鑰庫嗎?

企業(yè)動態(tài)
Android 的密鑰庫已經(jīng)推出很多年了,它為應(yīng)用開發(fā)者提供了一種使用加密密鑰進(jìn)行身份驗(yàn)證和加密的方式。

Android 的密鑰庫已經(jīng)推出很多年了,它為應(yīng)用開發(fā)者提供了一種使用加密密鑰進(jìn)行身份驗(yàn)證和加密的方式。密鑰庫將密鑰資料存放在應(yīng)用的進(jìn)程空間之外,因此,密鑰資料不會在可能受到網(wǎng)絡(luò)釣魚攻擊的情形下被應(yīng)用意外透露給用戶,不會通過其他某種渠道泄漏,也不會在應(yīng)用遭到入侵時(shí)陷入危險(xiǎn)之中。

[[206842]]

許多設(shè)備也在安全硬件中為密鑰庫密鑰提供基于硬件的安全機(jī)制,這種機(jī)制將密鑰資料完全存儲在 Android 系統(tǒng)之外,因此即使 Linux 內(nèi)核遭受入侵,密鑰資料也不會泄漏。在絕大多數(shù) Android 設(shè)備中,安全硬件都是主 CPU 的一種特殊模式,其通過硬件與 Linux 內(nèi)核及 Android 用戶空間強(qiáng)制隔離。有些設(shè)備還使用單獨(dú)的安全微處理器。

Android 提供的 API 可以讓應(yīng)用確定給定密鑰庫密鑰是否處于安全硬件中,但是如果操作系統(tǒng)受到入侵,這些 API 將變得不可靠。密鑰認(rèn)證讓設(shè)備的安全硬件可以驗(yàn)證某個非對稱密鑰是否處于安全硬件中,從而在 Android OS 遭受入侵時(shí)為密鑰提供保護(hù)。

密鑰庫歷史

密鑰庫最初在 Android 4.0 中引入,密鑰采用用戶的密碼進(jìn)行加密。Android 4.1 添加了使用設(shè)備安全硬件的基礎(chǔ)架構(gòu)。

在 Android 6.0 之前,密鑰庫僅支持 RSA 和 ECDSA。在 Android 6.0 中,密鑰庫得到顯著增強(qiáng),增加了對 AES 和 HMAC 的支持。此外,加密運(yùn)算的其他關(guān)鍵要素(例如 RSA 補(bǔ)位1 和 AES 區(qū)塊鏈接2 模式)也移入安全硬件中。

在 Android 6.0 中,密鑰庫還能夠限制特定密鑰的使用方式??梢詰?yīng)用的最有用限制是 用戶身份驗(yàn)證綁定。這種限制允許將密鑰的使用“綁定”到用戶密碼(他們的 PIN 碼、圖案或口令)或者指紋。對于密碼身份驗(yàn)證綁定,應(yīng)用開發(fā)者可以指定一個超時(shí)(以秒為單位)。如果自用戶上次輸入密碼以來所經(jīng)歷的時(shí)間已超過指定時(shí)間,安全硬件將拒絕要求使用密鑰的任何請求。指紋綁定密鑰在每次使用密鑰時(shí)都會要求新的用戶身份驗(yàn)證。

還可以向 Android 6.0+ 密鑰應(yīng)用其他更多技術(shù)限制。特別是,在創(chuàng)建或?qū)朊荑€時(shí),需要指定密鑰可用于哪些加密目的(加密、解密、簽名或驗(yàn)證),為初始化向量或隨機(jī)數(shù)指定補(bǔ)位與分組加密模式、摘要和熵源以及加密運(yùn)算的其他詳細(xì)信息。由于指定的信息以加密方式永久綁定到密鑰資料上,密鑰庫將不允許以任何其他方式使用此密鑰。因此,已經(jīng)獲取應(yīng)用或系統(tǒng)控制權(quán)限的攻擊者無法濫用密鑰。為了幫助防止攻擊,開發(fā)者應(yīng)為給定密鑰指定盡可能窄的用戶范圍。

Android 7.0 中引入了 Android 密鑰庫最重要的變更之一。預(yù)裝 Android 7.0+ 并帶有安全鎖定屏幕的新發(fā)布設(shè)備必須具有安全硬件,并支持基于硬件的密碼身份驗(yàn)證和密鑰庫密鑰。在 Android 7.0 之前,安全硬件支持比較分散,不過在未來幾年,這項(xiàng)功能將逐漸統(tǒng)一。

在 Android 8.0 中,密鑰認(rèn)證已成為預(yù)裝 Google Play 的所有新設(shè)備的強(qiáng)制選項(xiàng)。

為何使用密鑰認(rèn)證?

假設(shè)您正在開發(fā)一款應(yīng)用,該應(yīng)用讓銀行客戶可以訪問其銀行余額、交易歷史記錄和賬單支付系統(tǒng)。安全性至關(guān)重要;您肯定不希望撿到用戶電話的任何人都能訪問用戶的銀行賬戶。一種應(yīng)對方式是使用用戶的網(wǎng)站密碼。但是這種方式對用戶來說通常不方便,因?yàn)榫W(wǎng)站經(jīng)常需要復(fù)雜的長密碼,在小型觸摸屏上輸入這類密碼不是很方便。

借助 Android 密鑰庫,您可以生成一個非對稱的身份驗(yàn)證密鑰(例如 256 位 ECDSA 密鑰),讓每位用戶使用他們的復(fù)雜網(wǎng)絡(luò)密碼登錄一次,然后在銀行的客戶賬戶數(shù)據(jù)庫中注冊公鑰。在用戶每次打開應(yīng)用時(shí),您都可以使用該 ECDSA 密鑰執(zhí)行一次質(zhì)詢-響應(yīng)身份驗(yàn)證協(xié)議。而且,如果您進(jìn)行密鑰身份驗(yàn)證綁定,用戶在每次打開應(yīng)用時(shí)還可以使用他們的鎖定屏幕密碼或指紋進(jìn)行身份驗(yàn)證。這樣一來,他們可以在自己的電話上使用更簡單、更方便的身份驗(yàn)證機(jī)制。

如果攻擊者入侵 Android 并嘗試提取密鑰,他們可能會無功而返,因?yàn)槊荑€儲存在安全硬件中。

作為一名應(yīng)用開發(fā)者,您可以利用密鑰驗(yàn)證在自己的服務(wù)器上驗(yàn)證您的應(yīng)用請求的 ECDSA 密鑰確實(shí)位于安全硬件中。請注意,在您的應(yīng)用中使用驗(yàn)證意義不大;如果 Android OS 未被入侵并值得信賴,那么您可以直接使用 6.0 中引入的 KeyInfo 類來確定密鑰是否處于安全硬件中。如果系統(tǒng)已被入侵,那么該 API 與您在設(shè)備上驗(yàn)證密鑰認(rèn)證的任何嘗試都是不可靠的。

 

請注意,密鑰認(rèn)證與 SafetyNet 認(rèn)證不同。它們的理念相同,不過認(rèn)證的對象不同,來源也不同。密鑰庫密鑰認(rèn)證旨在聲明加密密鑰位于安全硬件中并且具備指定的某些特性。SafetyNet 認(rèn)證旨在聲明設(shè)備是真實(shí)設(shè)備(不是模擬器)并且設(shè)備正在運(yùn)行已知軟件。SafetyNet 在幕后也使用密鑰庫密鑰認(rèn)證,因此,如果您想要了解設(shè)備完整性,請使用這種認(rèn)證。如果您想要確認(rèn)您的密鑰位于安全硬件中,請使用密鑰認(rèn)證。

【本文是51CTO專欄機(jī)構(gòu)“谷歌開發(fā)者”的原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者(微信公眾號:Google_Developers)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2022-07-26 00:00:22

HTAP系統(tǒng)數(shù)據(jù)庫

2014-04-17 16:42:03

DevOps

2019-09-16 08:40:42

2014-11-28 10:31:07

Hybrid APP

2020-02-27 10:49:26

HTTPS網(wǎng)絡(luò)協(xié)議TCP

2023-03-16 10:49:55

2021-01-15 07:44:21

SQL注入攻擊黑客

2021-11-09 09:48:13

Logging python模塊

2025-01-03 08:09:15

2024-02-02 08:50:20

Node.js元數(shù)據(jù)自動化

2023-10-24 08:53:24

FutureTas并發(fā)編程

2012-05-31 09:56:54

云安全

2015-07-31 10:35:18

實(shí)時(shí)計(jì)算

2022-12-12 08:46:11

2019-11-06 09:52:01

JavaScript單線程非阻塞

2022-03-14 07:53:27

ELTETL大數(shù)據(jù)

2017-02-14 15:18:44

GoogleAndroid

2023-05-10 11:07:18

2016-01-13 10:34:57

物聯(lián)網(wǎng)物聯(lián)網(wǎng)技術(shù)

2018-01-06 10:38:51

Ping抓包 ICMP協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號