色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

Play Integrity API中nonce功能詳解

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

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

什么是 nonce?

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

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

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

設置 nonce

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

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

Java:

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

Unity:

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

Native:

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

驗證 nonce

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

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

您可以在 requestDetails 結構中查看 nonce,其格式如下:

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

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

保護重要操作

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

用戶發起重要操作;

應用準備好要保護的消息,例如 JSON 格式的消息;

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

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

應用將要保護的消息以及 Play Integrity API 的簽名結果發送給服務器;

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

下面的序列圖說明了相關步驟:

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

防范重放攻擊

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

也就是說,應用服務器也可以利用 Play Integrity API 中的 nonce,為每個響應分配一個唯一值,并驗證該響應是否與之前設置的唯一值匹配。實現方法如下:

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

應用調用 Play Integrity API,并將 nonce 字段設置為應用服務器接收的唯一值;

應用將 Play Integrity API 的簽名結果發送到服務器;

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

下面的序列圖說明了相關步驟:

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

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

結合兩種保護措施

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

用戶發起重要操作;

應用要求服務器提供一個標識請求的唯一值;

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

應用服務器向應用發送全局唯一值;

應用準備好要保護的消息,例如 JSON 格式的消息;

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

應用通過附加從應用服務器收到的唯一值以及要保護的消息的哈希值來創建一個字符串;

應用調用 Play Integrity API,并調用 setNonce() 以將 nonce 字段設置為在上一步中創建的字符串;

應用將要保護的消息以及 Play Integrity API 的簽名結果發送給服務器;

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

下面的序列圖說明了相關步驟:

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

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

審核編輯:湯梓紅


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

    關注

    12

    文章

    9184

    瀏覽量

    85482
  • API
    API
    +關注

    關注

    2

    文章

    1502

    瀏覽量

    62071
  • Integrity
    +關注

    關注

    0

    文章

    5

    瀏覽量

    7722

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

文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    華納云:使用 WireMock 在開發和測試模擬 API 服務

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

    API :軟件程序間溝通的橋梁

    或許我們不清楚API是什么,但在現實生活API的應用場景卻遠遠超出了我們的想象。舉個例子來說,當我們想要搜索某個IP地址時,通常是利用API與離線庫兩種方式去獲取數據信息,那么或許
    的頭像 發表于 08-27 15:54 ?265次閱讀

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

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

    tcpip_adapter_start_api 函數的功能是什么?

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

    詳解工業網關在線探測功能及用途

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

    RA MCU CANFD在FSP的配置詳解

    RA MCU CANFD在FSP的配置詳解
    的頭像 發表于 06-19 08:06 ?543次閱讀
    RA MCU CANFD在FSP<b class='flag-5'>中</b>的配置<b class='flag-5'>詳解</b>

    華為云發布 CodeArts API,為 API 護航

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

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

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

    API安全風險顯現,F5助API實現可信訪問

    API在現代軟件開發占據著重要地位,是應用和數據的網關,實時API更是構建數字業務的基礎。Salt Labs報告顯示,過去6個月中,API攻擊活動數量快速增長了400%,可見
    的頭像 發表于 04-17 16:09 ?461次閱讀
    <b class='flag-5'>API</b>安全風險顯現,F5助<b class='flag-5'>API</b>實現可信訪問

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

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

    Chrome 123穩定版引入全新Long Animation Frames API

    早在 Chrome 116 版本,谷歌就已經開啟了 LoAF 的實驗性測試,如今,隨著 Chrome 123 版本的正式面世,這一新特性被廣泛應用開來。此 API 堪稱 Long Tasks API 的升級版,主要
    的頭像 發表于 03-22 14:29 ?788次閱讀

    谷歌Play商店推出并行下載功能,支持多應用下載

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

    如何在鴻蒙系統上安裝Google Play

    隨著鴻蒙(HarmonyOS)系統的逐漸普及和用戶基數的增加,一些用戶希望能在鴻蒙系統上使用Google Play商店以獲取更多應用。然而,由于鴻蒙系統與Google服務不兼容,官方并未提供官方支持
    的頭像 發表于 01-31 17:13 ?1.6w次閱讀

    Kubernetes Gateway API攻略教程

    Kubernetes Gateway API 剛剛 GA,旨在改進將集群服務暴露給外部的過程。這其中包括一套更標準、更強大的 API資源,用于管理已暴露的服務。在這篇文章,我將介紹 Gateway
    的頭像 發表于 01-12 11:32 ?896次閱讀
    Kubernetes Gateway <b class='flag-5'>API</b>攻略教程
    主站蜘蛛池模板: 大胸美女被C得嗷嗷叫动态图| 中国老太婆xxxxx| 中文字幕日本一区| 亚洲午夜久久久精品电影院| 伊人久久综合影院| 中文在线无码高潮潮喷在线| 91精品国产入口| www亚洲欲色成人久久精品| 大香伊蕉在人线国产最新| 国产精品一区二区四区| 国内精品免费视频精选在线观看| 九九热视频 这里有精品| 美女扒开腿让男生桶免费看动态图| 欧美精品专区免费观看| 台湾果冻传媒在线观看| 亚洲色欲色欲WWW在线丝| 69丰满少妇AV无码区| 成人国产在线24小时播放视频| 国产精品夜夜春夜夜爽久久小| 9LPORM原创自拍达人| 欧美人与禽zoz0性伦交app| www.99在线| 午夜伦理伦理片在线观| 好大太快了快插穿子宫了| 亚洲综合中文字幕无线码| 久久亚洲伊人中字综合精品| 91免费永久在线地址| 青草国产超碰人人添人人碱| 俄罗斯少女人体| 午夜福利免费院| 精品亚洲永久免费精品| 18video性欧美19sex高清| 国产乱子影视频上线免费观看| 精品日韩二区三区精品视频| 欧美性暴力变态xxxx| 亚洲国产精品嫩草影院久久| 97午夜精品| 国产午夜小视频| 欧美精品一区二区三区四区| 亚洲精品色播一区二区 | 国产精品1卡二卡三卡四卡乱码 |