在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Play Integrity API中nonce功能詳解

谷歌開發(fā)者 ? 來源:Android 開發(fā)者 ? 作者:Android 開發(fā)者 ? 2022-07-07 14:35 ? 次閱讀
作者 / Oscar Rodriguez, Developer Relations Engineer

我們近期發(fā)布了 Play Integrity API,希望幫助開發(fā)者們保護自己的應(yīng)用和游戲,使其免受可能存在風險的欺詐性互動 (例如欺騙和未經(jīng)授權(quán)的訪問) 的危害,讓您能夠采取適當措施來防范攻擊并減少濫用行為。 除了與應(yīng)用完整性、設(shè)備完整性和許可信息相關(guān)的有用信號外,Play Integrity API 還提供了一個簡單卻非常實用的功能,即 "nonce"。如果使用得當,開發(fā)者可以進一步加強 Play Integrity API 的現(xiàn)有保護措施,并降低特定類型攻擊的風險,例如中間人 (PITM) 篡改攻擊和重放攻擊。 在這篇文章中,我們將深入介紹什么是 nonce、它的工作原理,以及如何使用 nonce 字段來進一步保護您的應(yīng)用和游戲。

什么是 nonce?

在密碼學和安全工程學中,nonce (number once) 是一個在安全通信中僅能被使用一次的數(shù)字。nonce 用途廣泛,如身份驗證、數(shù)據(jù)加密和哈希處理等。

在 Play Integrity API 中,nonce 是您在調(diào)用 API 完整性檢查前設(shè)置的不透明 Base64 編碼二進制 blob,并通過被簽名的響應(yīng)中原樣返回。根據(jù)創(chuàng)建和驗證 nonce 的方式,您可以使用它來進一步加強 Play Integrity API 的現(xiàn)有保護措施,并緩解特定類型的攻擊,例如中間人 (PITM) 篡改攻擊和重放攻擊。

除了在被簽名的響應(yīng)中按原樣返回 nonce,Play Integrity API 不會對 nonce 實際數(shù)據(jù)進行任何處理,因此您可以設(shè)置任意值,只要它是一個有效的 Base64 值即可。也就是說,為了對響應(yīng)進行數(shù)字簽名,nonce 值將被發(fā)送到 Google 服務(wù)器,因此請勿將 nonce 設(shè)置為任何類型的個人身份信息 (PII),例如用戶姓名、電話或電子郵件地址。

設(shè)置 nonce

將您的應(yīng)用設(shè)置為使用 Play Integrity API 之后,您可以使用 setNonce() 方法,或其適當?shù)淖凅w設(shè)置 nonce,這些變體適用于 API 的 Kotlin、Java、Unity 和 Native 版本。

Kotlin:
val nonce: String = ...
// 創(chuàng)建 manager 的實例val integrityManager =    IntegrityManagerFactory.create(applicationContext)
// 通過 nonce 獲取完整性令牌val integrityTokenResponse: Task =    integrityManager.requestIntegrityToken(        IntegrityTokenRequest.builder()             .setNonce(nonce) // 設(shè)置 nonce.build())

Java:

String nonce = ...
// 創(chuàng)建 manager 的實例IntegrityManager integrityManager =    IntegrityManagerFactory.create(getApplicationContext());
// 通過 nonce 獲取完整性令牌Task integrityTokenResponse =    integrityManager        .requestIntegrityToken(            IntegrityTokenRequest.builder()            .setNonce(nonce) // 設(shè)置 nonce.build());

Unity:

string nonce = ...
// 創(chuàng)建 manager 的實例var integrityManager = new IntegrityManager();
// 通過 nonce 獲取完整性令牌var tokenRequest = new IntegrityTokenRequest(nonce);var requestIntegrityTokenOperation =integrityManager.RequestIntegrityToken(tokenRequest);

Native:

//創(chuàng)建IntegrityTokenRequest對象const char* nonce = ...IntegrityTokenRequest* request;IntegrityTokenRequest_create(&request);IntegrityTokenRequest_setNonce(request, nonce); // 設(shè)置 nonceIntegrityTokenResponse* response;IntegrityErrorCode error_code =IntegrityManager_requestIntegrityToken(request,&response);

驗證 nonce

Play Integrity API 的響應(yīng)以 JSON 網(wǎng)絡(luò)令牌 (JWT) 的形式返回,其負載為純文本 JSON,格式如下:

{  requestDetails: { ... }  appIntegrity: { ... }  deviceIntegrity: { ... }  accountDetails: { ... }}

您可以在 requestDetails 結(jié)構(gòu)中查看 nonce,其格式如下:

requestDetails: {  requestPackageName: "...",  nonce: "...",  timestampMillis: ...}

nonce 字段的值應(yīng)與您之前調(diào)用 API 傳過去的值完全匹配。此外,由于 nonce 值位于 Play Integrity API 的加密簽名響應(yīng)中,收到響應(yīng)之后是無法改變它的。通過這些屬性,您就可以使用 nonce 進一步保護您的應(yīng)用。

保護重要操作

試想這個場景,一名攻擊者正在試圖惡意將玩家得分虛報給游戲服務(wù)端。這種情況下,設(shè)備和應(yīng)用都是完整的,但攻擊者仍可以通過代理服務(wù)器或者虛擬專用網(wǎng)絡(luò)查看并修改與游戲服務(wù)器之間的通信數(shù)據(jù)流,從而達到虛報分數(shù)的目的。 在這種情況下,僅調(diào)用 Play Integrity API 不足以保護應(yīng)用: 設(shè)備沒有被破解、應(yīng)用也是合法的,因此該操作可以通過 Play Integrity API 的所有檢查。 但您可以使用 Play Integrity API 的 nonce 來保護這種報告游戲分數(shù)的特定高價值操作,即在 nonce 中編碼操作的值。實現(xiàn)方法如下:

用戶發(fā)起重要操作;

應(yīng)用準備好要保護的消息,例如 JSON 格式的消息;

應(yīng)用計算要保護的消息的加密哈希值。例如,使用 SHA-256 或 SHA-3-256 哈希算法;

應(yīng)用調(diào)用 Play Integrity API,并調(diào)用 setNonce() 以將 nonce 字段設(shè)置為在上一步計算的加密哈希值;

應(yīng)用將要保護的消息以及 Play Integrity API 的簽名結(jié)果發(fā)送給服務(wù)器;

應(yīng)用服務(wù)器驗證其收到的消息的加密哈希值是否與簽名結(jié)果中的 nonce 字段值匹配,并拒絕任何不匹配的結(jié)果。

下面的序列圖說明了相關(guān)步驟:

96dda4e6-fd0f-11ec-ba43-dac502259ad0.png
只要受保護的原始消息與簽名結(jié)果一起發(fā)送,且服務(wù)器和客戶端都使用完全相同的機制來計算 nonce,通過這樣的方式來保證消息不會被篡改。 請注意,在上述場景下,安全模型的有效性僅限攻擊行為發(fā)生在網(wǎng)絡(luò)中 (而不是發(fā)生在設(shè)備或應(yīng)用),因此驗證 Play Integrity API 提供的設(shè)備和應(yīng)用完整性信號也尤為重要。

防范重放攻擊

我們再試想另外一種場景,一個應(yīng)用或游戲使用了 Play Integrity API 來保護自己的 C/S 架構(gòu),但攻擊者試圖通過用已破解的設(shè)備與服務(wù)端交互,并且不讓服務(wù)器端監(jiān)測到。 若要 "達成" 這種攻擊目標,攻擊者會首先在合法的設(shè)備上讓應(yīng)用與 Play Integrity API 進行交互,并獲得已經(jīng)簽名的響應(yīng)內(nèi)容,然后再在破解設(shè)備上運行應(yīng)用并攔截 Play Integrity API 的調(diào)用,使用此前記錄的、已獲得簽名的響應(yīng)內(nèi)容進行響應(yīng),這樣一來就不會執(zhí)行完整性檢查了。 由于已簽名的響應(yīng)并未以任何方式被更改,所以數(shù)字簽名看似正常,應(yīng)用服務(wù)器就會誤以為它正在與合法設(shè)備進行通信。我們將此稱為重放攻擊。 抵御此類攻擊的第一道防線是驗證簽名響應(yīng)中的 timestampMillis 字段。這個字段包含創(chuàng)建響應(yīng)時的時間戳,即使在數(shù)字簽名通過驗證的情況下,也能用于服務(wù)器端檢測是否為可疑的舊響應(yīng)。

也就是說,應(yīng)用服務(wù)器也可以利用 Play Integrity API 中的 nonce,為每個響應(yīng)分配一個唯一值,并驗證該響應(yīng)是否與之前設(shè)置的唯一值匹配。實現(xiàn)方法如下:

服務(wù)器以攻擊者無法預測的方式創(chuàng)建全局唯一值。例如,128 位或位數(shù)更多的加密安全隨機數(shù);

應(yīng)用調(diào)用 Play Integrity API,并將 nonce 字段設(shè)置為應(yīng)用服務(wù)器接收的唯一值;

應(yīng)用將 Play Integrity API 的簽名結(jié)果發(fā)送到服務(wù)器;

服務(wù)器驗證簽名結(jié)果中的 nonce 字段是否與之前生成的唯一值匹配,并拒絕所有不匹配的結(jié)果。

下面的序列圖說明了相關(guān)步驟:

96fdd374-fd0f-11ec-ba43-dac502259ad0.png

實現(xiàn)上述流程后,每次服務(wù)器要求應(yīng)用調(diào)用 Play Integrity API 時,它都會使用不同的全局唯一值,因此只要攻擊者無法預測該值,nonce 與預期值不匹配,就無法重用之前的響應(yīng)。

結(jié)合兩種保護措施

雖然上述兩種機制的工作方式不同,但如果應(yīng)用同時需要兩種保護,則可以將這兩種機制組合在一個 Play Integrity API 調(diào)用中,例如,將兩種保護措施的結(jié)果附加到一個更大的 Base64 nonce 中。結(jié)合兩種保護措施的實現(xiàn)方法如下:

用戶發(fā)起重要操作;

應(yīng)用要求服務(wù)器提供一個標識請求的唯一值;

應(yīng)用服務(wù)器生成全局唯一值,防止攻擊者做出預測。例如,您可以使用加密安全的隨機數(shù)生成器創(chuàng)建此類值。我們建議創(chuàng)建不小于 128 位的值;

應(yīng)用服務(wù)器向應(yīng)用發(fā)送全局唯一值;

應(yīng)用準備好要保護的消息,例如 JSON 格式的消息;

應(yīng)用計算要保護的消息的加密哈希值。例如,使用 SHA-256 或 SHA-3-256 哈希算法;

應(yīng)用通過附加從應(yīng)用服務(wù)器收到的唯一值以及要保護的消息的哈希值來創(chuàng)建一個字符串;

應(yīng)用調(diào)用 Play Integrity API,并調(diào)用 setNonce() 以將 nonce 字段設(shè)置為在上一步中創(chuàng)建的字符串;

應(yīng)用將要保護的消息以及 Play Integrity API 的簽名結(jié)果發(fā)送給服務(wù)器;

應(yīng)用服務(wù)器拆分 nonce 字段的值,然后驗證消息的加密哈希值以及之前生成的唯一值是否與預期值相匹配,并拒絕任何不匹配的結(jié)果。

下面的序列圖說明了相關(guān)步驟:

971c2360-fd0f-11ec-ba43-dac502259ad0.png

以上是您可以使用 nonce 進一步保護應(yīng)用免受惡意用戶攻擊的一些示例。如果您的應(yīng)用會處理敏感數(shù)據(jù),或容易被濫用,我們建議您考慮借助 Play Integrity API,采取相關(guān)措施緩解威脅。 如需了解關(guān)于使用 Play Integrity API 的更多信息并開始體驗,請前往 Play Integrity API 頁面。

審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9295

    瀏覽量

    85856
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1510

    瀏覽量

    62280
  • Integrity
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7729

原文標題:通過 Play Integrity API 的 nonce 字段提高應(yīng)用安全性

文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何利用Google Play實現(xiàn)出海應(yīng)用增長

    本文內(nèi)容來自于活動演講內(nèi)容的整理和總結(jié),演講人分別: Google Play 應(yīng)用增長顧問 Tammy Taw,Google Play 商業(yè)拓展經(jīng)理 Christina Li,Google Play
    的頭像 發(fā)表于 01-22 11:52 ?93次閱讀
    如何利用Google <b class='flag-5'>Play</b>實現(xiàn)出海應(yīng)用增長

    Google Play如何幫助您的應(yīng)用變現(xiàn)

    Play Partner Day 活動的應(yīng)用專題演講,我們分享了市場、用戶、變現(xiàn)等方面的干貨,包括 Google Play 的變現(xiàn)工具和不同類型應(yīng)用的用戶特點,如何留住用戶、吸引用戶回流,以及如何拓展
    的頭像 發(fā)表于 01-21 11:21 ?93次閱讀
    Google <b class='flag-5'>Play</b>如何幫助您的應(yīng)用變現(xiàn)

    詳解REST API通信協(xié)議

    在構(gòu)建智能化網(wǎng)絡(luò)的今天,設(shè)備需具備IIoT的關(guān)鍵功能:標準化、可擴展性、與IT及OT系統(tǒng)的兼容性,以及互操作性。這些特性對于實現(xiàn)設(shè)備間的無縫連接和數(shù)據(jù)交換至關(guān)重要。當然,通信的安全性也是我們不可忽視
    的頭像 發(fā)表于 01-17 12:40 ?111次閱讀
    <b class='flag-5'>詳解</b>REST <b class='flag-5'>API</b>通信協(xié)議

    如何利用Google Play吸引自然流量并收獲忠實玩家

    本文將介紹 Google Play 的多種引流工具,包括如何利用現(xiàn)有功能 (如商品詳情和推廣內(nèi)容) 以及全新功能 (如新的內(nèi)容類型和 "Collections" 功能),來提升
    的頭像 發(fā)表于 01-16 10:35 ?121次閱讀

    請問mateXT鴻蒙 4.2.0.130, 如何可以安裝并正常使用goople play store?

    請問mateXT鴻蒙 4.2.0.130, 如何可以安裝并正常使用goople play store? microG service hw apk,microG companion hw.apk
    發(fā)表于 11-28 08:43

    華納云:使用 WireMock 在開發(fā)和測試模擬 API 服務(wù)

    在本地開發(fā)和測試期間,經(jīng)常會遇到您的應(yīng)用依賴于遠程 API 的情況。網(wǎng)絡(luò)問題、速率限制,甚至 API 提供商的停機都可能阻礙您的進度。這會嚴重影響您的工作效率并使測試更具挑戰(zhàn)性。這就
    的頭像 發(fā)表于 10-25 16:46 ?411次閱讀

    esp-adf esp_audio_play()播放https異常的原因?怎么處理?

    Play the given uri * * The esp_audio_play have follow activity, setup inputstream, outputstream
    發(fā)表于 06-28 06:31

    tcpip_adapter_start_api 函數(shù)的功能是什么?

    , msg->mac, msg->ip_info); } 請問 1. tcpip_adapter_start_api函數(shù)的功能是什么??或者說tcpip_adapter_start調(diào)用
    發(fā)表于 06-26 07:08

    詳解工業(yè)網(wǎng)關(guān)在線探測功能及用途

    詳解工業(yè)網(wǎng)關(guān)在線探測功能及用途 工業(yè)網(wǎng)關(guān)作為工業(yè)物聯(lián)網(wǎng)(IIoT)架構(gòu)的關(guān)鍵組件,扮演著橋梁的角色,它連接了現(xiàn)場的各類傳感器、執(zhí)行器以及更高級別的云平臺或企業(yè)系統(tǒng)。在線探測功能是工業(yè)
    的頭像 發(fā)表于 06-20 13:55 ?358次閱讀
    <b class='flag-5'>詳解</b>工業(yè)網(wǎng)關(guān)在線探測<b class='flag-5'>功能</b>及用途

    華為云發(fā)布 CodeArts API,為 API 護航

    ,華為云 CodeArts API 保證了 API 各階段數(shù)據(jù)高度一致,為開發(fā)者提供友好易用的 API 全流程端到端解決方案。 API 是連接不同應(yīng)用程序的橋梁,讓軟件能互相溝通和協(xié)作
    的頭像 發(fā)表于 05-09 23:17 ?563次閱讀
    華為云發(fā)布 CodeArts <b class='flag-5'>API</b>,為 <b class='flag-5'>API</b> 護航

    OpenAI API Key獲取與充值教程:助開發(fā)者解鎖GPT-4.0 API

    Key。以下是獲取 API Key 的步驟: 訪問 OpenAI 官網(wǎng):在瀏覽器打開 OpenAI 官方網(wǎng)站。 創(chuàng)建賬戶:點擊網(wǎng)站右上角的“Sign Up”注冊
    的頭像 發(fā)表于 04-28 16:35 ?1.1w次閱讀
    OpenAI <b class='flag-5'>API</b> Key獲取與充值教程:助開發(fā)者解鎖GPT-4.0 <b class='flag-5'>API</b>

    API安全風險顯現(xiàn),F(xiàn)5助API實現(xiàn)可信訪問

    API在現(xiàn)代軟件開發(fā)占據(jù)著重要地位,是應(yīng)用和數(shù)據(jù)的網(wǎng)關(guān),實時API更是構(gòu)建數(shù)字業(yè)務(wù)的基礎(chǔ)。Salt Labs報告顯示,過去6個月中,API攻擊活動數(shù)量快速增長了400%,可見
    的頭像 發(fā)表于 04-17 16:09 ?491次閱讀
    <b class='flag-5'>API</b>安全風險顯現(xiàn),F(xiàn)5助<b class='flag-5'>API</b>實現(xiàn)可信訪問

    手機信號屏蔽器:功能、原理及使用方法詳解

    深圳特信電子|手機信號屏蔽器:功能、原理及使用方法詳解
    的頭像 發(fā)表于 04-01 09:09 ?3395次閱讀

    谷歌Play商店推出并行下載功能,支持多應(yīng)用下載

    此非 Google Play 的首次嘗試。早于 2020 年,Google Play 已啟動多項安卓應(yīng)用的并行下載測試,然而后因技術(shù)緣故而被暫停。如今,再度回歸該功能試驗。隨著時間推移,有望逐步推廣至廣大用戶群體。
    的頭像 發(fā)表于 03-08 14:20 ?813次閱讀

    如何在鴻蒙系統(tǒng)上安裝Google Play

    隨著鴻蒙(HarmonyOS)系統(tǒng)的逐漸普及和用戶基數(shù)的增加,一些用戶希望能在鴻蒙系統(tǒng)上使用Google Play商店以獲取更多應(yīng)用。然而,由于鴻蒙系統(tǒng)與Google服務(wù)不兼容,官方并未提供官方支持
    的頭像 發(fā)表于 01-31 17:13 ?1.7w次閱讀
    主站蜘蛛池模板: 射久久 | 特黄特色视频 | 四虎免费永久观看 | 国产人成精品免费视频 | 日韩特级 | 操天天操| 亚欧美色| 欧美成人26uuu欧美毛片 | 久久人精品 | 中文字幕天堂在线 | 你懂得视频在线 | 国产女人18毛片水真多18精品 | 99精品久久久久久久婷婷 | 韩国在线a免费观看网站 | 天堂资源在线播放 | 久久婷婷国产精品香蕉 | 天天透天天干 | 天天躁夜夜躁狠狠躁2021西西 | 欧美色综合网站 | 四虎精品永久在线网址 | 亚洲午夜久久久久影院 | 久视频在线观看久视频 | 中文字幕在线观看日剧网 | 男人边吃奶边做视频免费网站 | 免费在线观看你懂的 | 不卡视频免费在线观看 | 狠狠色噜狠狠狠狠色综合久 | 伊人久久大线蕉香港三级 | 国产香港日本三级在线观看 | 亚1州区2区3区4区产品乱码 | 三级在线国产 | 亚洲一区欧美日韩 | 天堂社区在线视频 | 亚洲欧美成人在线 | 一本到卡二卡三卡视频 | a级黄色毛片三个搞一 | 午夜视频免费在线观看 | 日韩欧美中文字幕在线播放 | 4虎影视国产在线观看精品 4虎影院永久地址www | 乱人伦小说短篇 | 制服丝袜国产精品 |