精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

讓你的應用遠離越獄:iOS 14 App Attest 防護功能

移動開發
當越獄在 iOS 設備第一次流行起來時,iOS 開發人員會嘗試各種方法來保護自己的應用程序,以讓應用免受盜版等不確定因素的困擾。有許多方法可以做到這一點,包括檢查 Cydia 是否存在、檢測應用程序是否可讀取自身沙箱之外的文件、在檢測到調試器時讓應用程序崩潰等等。

當越獄在 iOS 設備第一次流行起來時,iOS 開發人員會嘗試各種方法來保護自己的應用程序,以讓應用免受盜版等不確定因素的困擾。有許多方法可以做到這一點,包括檢查 Cydia 是否存在、檢測應用程序是否可讀取自身沙箱之外的文件、在檢測到調試器時讓應用程序崩潰等等。

[[339459]]

然而,事實證明這些防御措施并不是那么有效。如果攻擊者可以直接訪問物理設備,那么這些措施就不再有效。對于高手來說,他們可以讓設備看上去并沒有越獄以有效地繞過這些措施,過去可以,現在也可以。同時對于一些越獄用戶來說,他們可能并不是想要干壞事,而僅僅是想要一些酷炫的功能,比如說可定制的主屏幕。

隨著近來越獄可能再度流行,Apple 給出了一套自己的解決方案。在 iOS 14 中,新的 App Attest API 為應用提供了一種對服務器請求進行簽名的方法,以嘗試向服務器證明這些請求來自應用程序的合法版本。

需要了解的是,App Attest 不會告訴服務器“這個設備是越獄的么?”,因為這種方案被一次次證明是不可行的。相反,其目標是保護服務器請求,以讓攻擊者更難創建非法的應用版本來解鎖高級功能或植入作弊功能。再次強調的是:由于攻擊者可以物理訪問設備,因此在這種情況下,沒有任何辦法可以完全保護你的應用。

由于無法信任應用可以自我保護,因此 App Attest 要求在應用的后端采取必要的工作來實施這個安全策略。由于這是 Swift 相關的內容,所以這里不介紹后端應該如何處理,只是會順帶提及。

生成一對密鑰以簽署請求

App Attest 依賴于使用非對稱公鑰/密鑰對來工作。最終目的是讓應用程序使用密鑰對服務器請求進行簽名,然后將數據發送到后端,在后端用公鑰來確認請求的合法性。如果攻擊者攔截了請求,他并沒有辦法更改內容,這樣就不會影響后端的驗證。

要生成密鑰對,可以導入 DeviceCheck 框架,并調用 DCAppAttestService 單例對象的 generateKey 方法:

  1. import DeviceCheck 
  2. let service = DCAppAttestService.shared 
  3. service.generateKey { (keyIdentifier, error) in 
  4.     guard error == nil else { 
  5.         return 
  6.     } 

App Attest 生成的密鑰對會安全地存儲在設備的 Security Enclave 中。由于無法直接訪問,所以這個方法返回的是一個 keyIdentifier 屬性,在需要時可以用來找到對應的密鑰。我們需要存儲它,以便后續用來驗證應用程序的請求。

值得一提的是,并非所有類型的設備都支持App Attest,如果查看了 Apple 的文檔,會發現我們需要先檢查是否支持,并要求服務器做降級處理以應用例外的情況:

  1. if service.isSupported { ... } 

但是不要這么做!就像之前所說的,攻擊者可以可以輕松地偽裝成設備不支持這一操作。Apple 也沒有相應的應對措施,這個檢查的原因更多的是因為有些 Macbook 沒有支持它的芯片。根據 Guilherme Rambo 的調查,大部分 iOS 設備都支持這一功能,所以對應 iOS 應用來說,不需要這個兼容性檢測。

將公鑰發送到后端

為了對請求進行簽名,需要為后端提供一種校驗簽名的方法。我們需要為后端提供上述生成的公鑰的訪問權限,來完成校驗。但是我們不能簡單地創建一個請求來發送公鑰,因為攻擊者很容易攔截請求并發送自己的公鑰,這樣他們可以完全控制應用發送到后端的內容。

這個問題的解決方法是讓 Apple 來證明我們發送的密鑰是來自應用的合法版本。可以調用 attestKey 方法來完成,該方法接收密鑰的標識符作為參數:

  1. service.attestKey(keyIdentifier, clientDataHash: hash) { attestation, error in 
  2.     guard error == nil else { return } 
  3.     let attestationString = attestation?.base64EncodedString() 
  4.     // Send the attestation to the server. It now has access to the public key
  5.     // If it fails, throw the identifier away and start over. 

這個方法會訪問遠程 Apple 服務器,并返回一個 "attestation" 對象,這個對象不僅包含了公鑰,而且還包含有關應用程序的大量信息,以表明這是經過 Apple 認證的合法的公鑰。客戶端收到這個對象后,必須將其完整發送到后端,后端需要執行多步驗證,以確認未被篡改。如果驗證了 "attestation" 對象是合法的,后端便可以從中安全地提取應用的公鑰。

目前尚不清楚 Apple 是否嘗試在此過程中檢查用戶的設備是否越獄。文檔并沒有提到這種情況,不過他們也指出 App Attest 不能確切地設備是否越獄,這至少說明他們嘗試過。可以肯定地說,并沒有辦法指出設備是否越獄,而且 attest 這個詞只表示請求未被攔截或篡改。

attestation 請求的附加 clientDataHash 參數與校驗的過程本身無關,但對安全性卻至關重要。實際上,這個請求的很容易做重放攻擊,攻擊者可以攔截驗證請求并竊取從 Apple 發送的 "attestation" 對象,以便后續可以在應用程序的非法版本中 “重放” 相同的驗證請求來欺騙服務器。

解決這個問題的方法是簡單粗暴地不允許驗證請求被隨意地執行。客戶端可以提供一個一次性使用令牌(或會話ID),服務器希望該令牌與請求一起使用以確保其有效性。如果兩次使用相同的令牌,則請求將失敗。這就是 clientDataHash 的目的:通過向驗證請求提供令牌的哈希版本,Apple 會將其嵌入到最終對象中,并為您的服務器提供一種提取它的方式。有了這個,對于攻擊者來說,僅通過攔截請求就很難創建您應用程序的非法版本。

  1. let challenge = getSessionId().data(using: .utf8)! 
  2. let hash = Data(SHA256.hash(data: challenge)) 
  3. service.attestKey(keyIdentifier, clientDataHash: hash) { ... } 

如前所述,Apple 并不建議你重用密鑰,而應該對設備中的每個用戶帳戶執行整個過程。

由于這個請求依賴于遠程 Apple 服務器,因此可能會失敗。如果錯誤是服務器不可用,Apple 表示你可以重試,但是如果其他原因,則應丟棄密鑰標識符并重新開始這一流程。例如,當用戶重新安裝您的應用程序時,可能會發生這種情況:你生成的密鑰在正常的應用程序更新中仍然有效,但是在重新安裝應用程序,設備遷移或從備份還原設備后仍然會發生錯誤。對于這些情況,您的應用需要能夠重新執行密鑰生成過程。

從服務器方面來說,還值得一提的是,"attestation" 對象還包含一張回執,你的服務器可以使用該回執來向 Apple 請求欺詐評估指標。這使你可以檢查生成的密鑰的數量以及與它們關聯的設備,以檢測可能的欺詐情況。蘋果公司特別提到了攻擊的可能性,即用戶可能使用一個設備向越獄設備提供有效的斷言,這種欺詐評估可以通過定位具有異常高數量的斷言請求的用戶來檢測到。

加密請求

在驗證了密鑰的有效性之后,后端將可以訪問公鑰。從現在開始,每次處理敏感內容時,都可以安全地對請求進行簽名。用于此目的的 generateAssertion 方法的工作原理與密鑰的驗證非常相似,只是這次需要要驗證請求本身:

  1. let challenge = getSessionId().data(using: .utf8)! 
  2. let requestJSON = "{ 'requestedPremiumLevel': 300, 'sessionId': '\(challenge)' }".data(using: .utf8)! 
  3. let hash = Data(SHA256.hash(data: challenge)) 
  4. service.generateAssertion(keyIdentifier, clientDataHash: hash) { assertion, error in 
  5.     guard error == nil else { return } 
  6.     let assertionString = assertion?.base64EncodedString() 
  7.     // Send the signed assertion to your server. 
  8.     // The server will validate it, grab your request and process it. 

與之前一樣,后端必須支持使用一次性令牌來防止重放攻擊。這次,由于請求本身就是我們的 clientDataHash,因此我們將令牌添加到 JSON 中。對于給定鍵可以進行的斷言數量沒有限制。但是,盡管如此,通常仍應保留它們,以在應用程序發出請求保護敏感信息,例如下載內容。

在這種情況下,額外保護來源于請求被散列并且只能使用一次。由于整個請求都是由私鑰簽名的,因此攻擊者無法簡單地攔截請求并利用它們來制作自己的請求。他們必須弄清楚你請求的參數來自何處,并手動嘗試對其進行簽名,這比簡單附加代理要更多的技術。如開頭所述,要破解這種保護并不是沒有可能,只是需要更加努力。

測試及實施

App Attest 服務記錄了你無法重置的標記。為防止這種情況,非生產環境中的應用程序將使用沙盒版本。如果你想在生產環境中進行測試,則應將 com.apple.developer.devicecheck.appattest-environment 授權添加到你的應用中,并將其值設置為 production。

如果你的用戶群很大,Apple 建議你逐步啟用此功能,因為對 attestKey 的請求受網速限制。

結論

通過在客戶端和后端中實現此功能,攻擊者更難創建應用程序的非法版本。但是,請注意這并不意味著不可能!如前所述,你無法確定用戶是否擁有越獄設備,也無法確定阻止其攻擊你的應用的方法。與大多數安全措施一樣,App Attest 的目的是使此過程足夠困難,以使只有一個非常熟練和專業的攻擊者才能找到闖你您的應用程序的途徑-而這種牛人很少。

責任編輯:未麗燕 來源: Medium
相關推薦

2018-07-23 15:50:43

iOS越獄蘋果

2012-01-05 09:19:25

iOSApp應用

2016-01-06 09:09:10

移動開發app store

2011-10-09 13:29:11

HTML5App Store蘋果

2013-07-30 15:24:53

App應用體驗

2015-10-10 11:38:10

ios9spotlight

2020-03-24 14:23:08

iOS 14查找蘋果

2010-08-31 15:03:18

網絡釣魚

2011-06-22 15:47:16

2018-01-30 17:35:39

LinuxPythonNmon分析器

2019-09-29 16:17:25

Java代碼性能編程語言

2019-12-26 08:24:19

僵尸網絡網絡安全網絡攻擊

2018-04-03 12:26:14

2013-07-12 13:24:19

App誘惑

2021-01-04 11:34:44

iOS 14越獄iPhone

2021-04-02 17:12:42

CoolStariOS 14越獄

2017-07-25 16:08:18

AndroidRecyclervie

2020-10-12 09:50:10

iOS 14蘋果功能

2025-07-31 06:40:00

2013-04-16 16:01:51

APP支持iPhoneiOS開發
點贊
收藏

51CTO技術棧公眾號

欧美少妇性生活视频| 国产一区二区三区奇米久涩| 亚洲一二三精品| 青青在线精品| 午夜精品视频一区| 日本一区二区三区免费观看| 91超薄丝袜肉丝一区二区| 韩日精品在线| 在线电影av不卡网址| 一卡二卡三卡四卡五卡| 欧美成人黑人| 一区二区欧美精品| 欧美日韩在线高清| 可以免费看毛片的网站| 久久综合九色| 久久久在线免费观看| www.日本高清视频| 欧美一区 二区| 69堂精品视频| 99免费视频观看| 国产乱码在线| 中文字幕一区在线观看视频| 蜜桃传媒视频第一区入口在线看| 国产又粗又猛又黄又爽| 久久精品麻豆| 午夜精品久久久99热福利| 免费黄色激情视频| 夜夜春成人影院| 亚洲国产精品yw在线观看| 亚洲制服中文字幕| 日韩成人综合网| 色婷婷久久久亚洲一区二区三区| 日本人体一区二区| 成人video亚洲精品| 欧美国产一区视频在线观看| 精品一卡二卡三卡四卡日本乱码| 精品人妻aV中文字幕乱码色欲| 蜜桃视频一区二区| 国产91在线播放九色快色| 日韩成人免费在线视频| 中文字幕日韩欧美精品高清在线| 日韩在线小视频| 人妻av无码一区二区三区| 国产精品国产| 亚洲成人激情在线| www.四虎在线| 97一区二区国产好的精华液| 日韩亚洲欧美综合| 欧美一区二区三区影院| 成人午夜888| 91精品免费在线观看| av在线网址导航| 麻豆久久久久| 欧美精品18+| 欧美日韩久久婷婷| 久久国产精品美女| 日韩欧美高清在线| 久久久久99人妻一区二区三区 | 91av免费观看91av精品在线| 青青草成人免费| 一区精品久久| 97久久精品视频| 伊人手机在线视频| 日韩电影在线一区| 国产精品丝袜高跟| 91麻豆成人精品国产| 国产一二三精品| www.久久久| 天天操天天舔天天干| 久久久久久久久久久久久久久99 | 欧美一区影院| 操日韩av在线电影| 国语对白一区二区| 国产亚洲一区在线| 国产精品久久久久av| 一区二区三区黄| 懂色av一区二区三区免费看| 久久另类ts人妖一区二区| 激情在线视频| 综合久久综合久久| 国产主播自拍av| 欧洲精品一区二区三区| 91精品国产综合久久久久久| 美女久久久久久久久| 蜜桃成人av| 久久天堂电影网| 国产视频91在线| 日本aⅴ精品一区二区三区| 91美女片黄在线观看游戏| 亚洲AV无码乱码国产精品牛牛| 99精品久久只有精品| 亚洲精品日韩在线观看| 日韩专区av| 在线视频一区二区免费| 四虎国产精品永久免费观看视频| 欧美理论电影在线精品| y97精品国产97久久久久久| 精品视频一区二区在线观看| 日韩精品成人一区二区在线| 99理论电影网| 在线激情小视频| 精品成人av一区| 婷婷中文字幕在线观看| 日韩电影不卡一区| 美女福利精品视频| chinese国产精品| 国产精品资源网| 日本一区二区视频| 多野结衣av一区| 69p69国产精品| 无码人妻精品一区二区中文| 亚洲国产91| 成人综合网网址| 国产日本在线视频| 五月天激情综合| 中文字幕55页| 91亚洲人成网污www| 91av在线免费观看视频| 国产综合视频在线| 亚洲美腿欧美偷拍| 波多野结衣xxxx| 久久99国产精一区二区三区| 久久久久久香蕉网| 99精品视频免费看| 中文字幕一区三区| 日本中文字幕高清| 夜夜春成人影院| 97成人精品区在线播放| 亚洲老妇色熟女老太| 亚洲欧美日本在线| 天堂av8在线| 色男人天堂综合再现| 国产精品av在线播放| 视频一区二区三区在线看免费看| 亚洲国产精品一区二区久久恐怖片 | 免费在线观看a视频| 性欧美暴力猛交另类hd| 久久99欧美| 国产福利电影在线播放| 亚洲成人黄色网| 日本一区二区网站| 99久久99久久综合| 久久综合久久网| 国产精品一级在线观看| 精品国内亚洲在观看18黄| 一区二区 亚洲| 亚洲人午夜精品天堂一二香蕉| 欧美日韩一区二区三区69堂| 日韩一区二区在线免费| 国产有码在线一区二区视频| 日本a级在线| 7777精品伊人久久久大香线蕉完整版| 情侣偷拍对白清晰饥渴难耐| 黄一区二区三区| 老汉色影院首页| 白嫩白嫩国产精品| 2018中文字幕一区二区三区| 手机看片1024日韩| 欧美性猛交xxxx久久久| 欧美特级黄色录像| 免费观看一级特黄欧美大片| 亚洲一区二区不卡视频| 国产高清日韩| 国模精品视频一区二区| 日本午夜在线视频| 欧美日韩视频专区在线播放| 手机免费观看av| 精品写真视频在线观看| 欧美一级特黄aaaaaa在线看片| 亚洲精品高潮| 日韩免费视频在线观看| 日本最新在线视频| 亚洲精品在线免费播放| 久久夜色精品国产噜噜亚洲av| 欧美国产1区2区| 天天爽夜夜爽视频| 亚洲自啪免费| 一区二区三区四区久久| 精品国内亚洲2022精品成人| 国产99久久精品一区二区 夜夜躁日日躁| 91短视频版在线观看www免费| 这里是久久伊人| 99精品视频99| 国产精品高清亚洲| 99精品一区二区三区无码吞精 | 亚洲男人天堂2021| 亚洲伦理精品| 国模精品一区二区三区| 成人在线高清| 97人人模人人爽人人喊中文字 | 欧美精品激情在线观看| 黄色片在线免费观看| 日韩天堂在线观看| 国产精品午夜一区二区| 亚洲自拍偷拍图区| 很污很黄的网站| 91蜜桃婷婷狠狠久久综合9色| 在线播放av中文字幕| 夜夜嗨一区二区| 在线看视频不卡| 男男gay无套免费视频欧美| 91视频国产一区| 欧美xxx网站| 久久久久久久999精品视频| h视频在线免费| 亚洲护士老师的毛茸茸最新章节| 亚洲天堂视频在线| 欧美日韩国产丝袜美女| 日本少妇高清视频| 国产免费成人在线视频| 久久久久麻豆v国产精华液好用吗| 久久国产综合精品| 久草综合在线观看| 日韩一级在线| 99er在线视频| 羞羞色午夜精品一区二区三区| 蜜桃999成人看片在线观看| 91精品国产自产在线丝袜啪 | 伊人网中文字幕| 色综合久久久久综合99| 国产极品在线播放| 亚洲精品视频在线观看网站| 刘亦菲国产毛片bd| 久久精品视频一区二区| 国产网站无遮挡| 岛国一区二区在线观看| 深夜做爰性大片蜜桃| 激情综合一区二区三区| 一级在线免费视频| 日本不卡一区二区| 中文字幕乱码人妻综合二区三区| 亚洲激情视频| 无码专区aaaaaa免费视频| 午夜国产一区| 日韩欧美精品免费| 亚洲视频日本| 亚洲色成人www永久在线观看| 黄色亚洲免费| 日本人体一区二区| 亚洲精品看片| 国产极品在线视频| 国产精品主播| 青青青在线播放| 日韩精品三区四区| 日本xxxx黄色| 久久爱www久久做| 国产福利精品一区二区三区| 激情都市一区二区| 丰满饥渴老女人hd| 国产91在线|亚洲| 国产激情第一页| 久久一日本道色综合| 国产艳俗歌舞表演hd| 久久毛片高清国产| av永久免费观看| 国产精品夫妻自拍| 中国一级片在线观看| 一区二区三区四区不卡在线| 日韩av在线播放观看| 欧美性猛交xxxx富婆| 波多野结衣视频在线观看| 在线观看欧美精品| 国产欧美日韩综合精品一区二区三区 | 欧美成人免费va影院高清| 欧美性受ⅹ╳╳╳黑人a性爽| 欧美激情视频一区二区三区不卡| 国产后进白嫩翘臀在线观看视频 | 亚洲国产伊人| 99久久伊人精品影院| 亚洲aaa级| 亚洲国产精品综合| 欧美日一区二区在线观看| 久久精品国产sm调教网站演员| 香蕉亚洲视频| 日本黄色的视频| 99精品国产热久久91蜜凸| 天天操天天干天天操天天干| 亚洲欧美日韩国产另类专区| 日韩欧美三级在线观看| 日本高清无吗v一区| 国产色视频在线| 日韩激情第一页| 蜜桃av在线免费观看| 午夜精品免费视频| 国产一区二区主播在线| yellow视频在线观看一区二区 | 青青国产精品| 精品久久久久久综合日本| 精品香蕉视频| 777av视频| 精品一区二区三区免费观看 | 国产福利资源在线| 亚洲免费精彩视频| 免费在线看电影| 国产精品久久久久久久一区探花| 66精品视频在线观看| 日韩av电影免费在线| 欧美午夜电影在线观看| 免费激情视频在线观看| 成人激情综合网站| 911国产在线| 日韩欧美亚洲成人| 亚洲毛片欧洲毛片国产一品色| 在线观看欧美日韩| 999福利在线视频| 91中文在线观看| 欧美日韩伦理在线免费| 久久99中文字幕| 国产精品996| 国产又粗又黄又猛| 精品久久久久久亚洲国产300| 精品国自产在线观看| 最近2019年中文视频免费在线观看| а_天堂中文在线| 亚洲最大的网站| 日韩欧美二区| 爆乳熟妇一区二区三区霸乳| 成人激情黄色小说| 久久久久久久久久99| 制服.丝袜.亚洲.中文.综合| 在线免费观看黄| 国产精品久久久久久久久久免费 | 成人午夜av影视| 成人免费视频国产免费观看| 欧美性三三影院| 国产视频在线看| 日本精品视频在线播放| 欧美a一欧美| 国产精品一区二区免费在线观看| 国产成人精品免费视频网站| 国产波霸爆乳一区二区| 在线不卡欧美精品一区二区三区| 97最新国自产拍视频在线完整在线看| 欧美一级视频免费在线观看| 农村少妇一区二区三区四区五区| 蜜臀精品一区二区| 成人av资源在线| 丰满少妇乱子伦精品看片| 精品少妇一区二区三区在线播放| 亚洲wwwww| 风间由美一区二区三区| 激情久久久久久| 五月开心播播网| 好吊成人免视频| 手机亚洲第一页| 日韩av大片在线| 日韩成人影院| 国内av一区二区| 一级做a爱片久久| 无套内谢的新婚少妇国语播放| 奇米4444一区二区三区| 久久99蜜桃| 另类小说第一页| 中文字幕日韩欧美一区二区三区| 国产乱子伦精品无码码专区| 久色乳综合思思在线视频| 在线一区二区三区视频| 少妇高潮毛片色欲ava片| 久久免费午夜影院| 国产一区二区三区成人| 欧美激情欧美激情在线五月| 国产精品xxxav免费视频| 青青在线视频观看| 中文字幕永久在线不卡| 亚洲精品一区二区三区新线路| 久久青草福利网站| 久草成人资源| 欧美性受xxxx黒人xyx性爽| 亚洲成人精品一区二区| 风间由美一区| 99r国产精品视频| 欧美亚洲网站| 午夜激情视频在线播放| 亚洲国产高潮在线观看| 色天使综合视频| 国产精品88久久久久久妇女| 95精品视频在线| 亚洲字幕av一区二区三区四区| 欧美大片第1页| 欧美裸体在线版观看完整版| xxx中文字幕| 一本一道久久a久久精品| 理论片午午伦夜理片在线播放| 国产精品综合久久久久久| 久久中文精品| 久久国产免费观看| 在线播放国产一区中文字幕剧情欧美 | 狠狠色狠狠色综合日日tαg| 黄色a一级视频| 日韩一区二区三区视频在线观看| 欧美大电影免费观看| 欧美日韩午夜爽爽| 久久久久久综合| 亚洲国产999| 国产精品一二区| 免费一级欧美片在线播放| 欧美黄色一级网站| 中文字幕日韩免费视频| 欧美中文一区| 韩国三级在线看|