android digest 認證,探究 Android 簽名機制和原理

背景

最近在調研一個測試工具的使用,在使用中發現被測試工具處理過的apk文件經安裝后打開就會崩潰,分析崩潰日志后原因是簽名不一致導致的。

說到Android中的簽名,可能大家都知道簽名的目的就是為了保護apk文件的安全,如果apk被惡意篡改后經過安裝校驗的時候,就會出現校驗失敗,導致安裝包安裝失敗的情況。但如果更深去問一下Android簽名機制和原理,是不是就被問住了?接下來的就讓我們去探究Android簽名機制和原理。

bd14a159f349fdde9d2c585cf50f3c15.png

Android 簽名機制和原理

Android系統在安裝APK的時候,首先會檢驗APK的簽名,如果發現簽名文件不存在或者校驗簽名失敗,則會拒絕安裝,所以應用程序在發布之前一定要進行簽名。給APK簽名可以帶來以下好處:

應用程序升級如果想無縫升級一個應用,Android系統要求應用程序的新版本與老版本具有相同的簽名與包名。若包名相同而簽名不同,系統會拒絕安裝新版應用。

應用程序模塊化Android系統可以允許同一個證書簽名的多個應用程序在一個進程里運行,系統實際把他們作為一個單個的應用程序。此時就可以把我們的應用程序以模塊的方式進行部署,而用戶可以獨立的升級其中的一個模塊。

代碼或數據共享Android提供了基于簽名的權限機制,一個應用程序可以為另一個以相同證書簽名的應用程序公開自己的功能與數據,同時其它具有不同簽名的應用程序不可訪問相應的功能與數據。

應用程序的可認定性簽名信息中包含有開發者信息,在一定程度上可以防止應用被偽造。例如網易云加密對Android APK加殼保護中使用的“校驗簽名(防二次打包)”功能就是利用了這一點。

簽名的目的:

1. 對發送者的身份認證:

由于開發商可能通過使用相同的package name來混淆替換已經安裝的程序,以此保證簽名不同的包不被替換。

2. 保證信息傳輸的完成性:

簽名對于包中的每個文件進行處理,以此確保包中內容不被替換。

3. 防止交易中的抵賴發生,market對軟件的要求。

簽名原理:

簡單來說總體分為以下幾個步驟:

1. 對Apk中的每個文件做一次算法(數據摘要+Base64編碼),保存到MAINFEST.MF

2. 對MAINFEST.MF整個文件做一次算法(數據摘要+B阿瑟64編碼),存放到CERT.SF文件的頭屬性中,在對MAINFEST.MF文件中各個屬性塊做一次算法(數據摘要+Base64編碼),存放到一個屬性塊中。

3. 對CERT.SF文件做簽名,內容存檔到CERT.RSA中

對一個APK文件簽名之后,APK文件根目錄下會增加META-INF目錄,該目錄下增加三個文件,分別是:MANIFEST.MF、CERT.SF和CERT.RSA,以下是具體的流程:

MANIFEST.MF

這是摘要文件,文件中保存了APK里面所有文件的SHA1校驗值的BASE64編碼,格式如下(一個文件對應一條記錄)。如果改變了APK包中的文件,在apk安裝校驗時,改變后的文件摘要信息與 MANIFEST.MF 的檢驗信息不同,程序就不會安裝成功。假如攻擊者修改了程序的內容,又重新生成了新的摘要,就可以通過驗證。

Name: AndroidMainfest.xmlSHA1-Digest: incCj47jcu56R8pKV8dLACZBKD8=Name: META-INF/android.arch.core_runtime.versionSHA1-Digest: BeF7ZGqBckDCBhhvlPj0xwl01dw=

CERT.SF

這是對摘要的簽名文件,對前一步生成的MANIFEST.MF,使用SHA1-RSA算法,用開發者的私鑰進行簽名。在安裝時只能使用公鑰才能進行解密。解密之后,與未加密的MANIFEST.MF進行對比,如果相符,則表明內容沒有被異常修改。如果在這一步,開發者修改了程序內容,并生成了新的摘要文件,但是攻擊者沒有開發者的私鑰,所以不能生成正確的簽名文件。系統在對程序進行驗證的時候,用開發者公鑰對不正確的簽名文件進行解密,得到的結果和摘要文件對應不起來,導致不能通過檢驗,不能成功安裝文件。文件格式如下:

Name:?AndroidMainfest.xmlSHA1-Digest:?SyFsd2VUpCg4nq8jSOB7dBwuMyI=Name:?META-INF/android.arch.core_runtime.versionSHA1-Digest:?OPQCkzMXJVPQryHeMowVNZmfRMw=

CERT.RSA

該文件中保存了公鑰、所采用的加密算法等信息。

從上面的內容來看,Android系統就是根據這三個文件的內容對APK文件進行簽名檢驗的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532977.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532977.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532977.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html圖片拼接出現留白,關于img標簽周圍留白的問題

在進行頁面的DIV CSS排版時,遇到IE6瀏覽器中的圖片元素img下出現多余空白的問題絕對是常見的,對于該問題的解決方法也是“見機行事”。1、將圖片轉換為塊級對象即,設置img為“display:block;”。在本例中添加一組CSS代碼:“#sub i…

html5中的行高元素,詳解HTML元素的height、offsetHeight、clientHeight、scrollTop等梳理

關于元素的一些屬性在前端的日常開發中,我們經常無可避免的需要獲取或者監聽一些頁面的屬性,那么我們需要經常了解一些屬性代表的含義才能更好地使用這些屬性。特別是一下這些:尺寸相關:offsetHeight、clientHeight、scrollHeight…

pm2 start 帶參數_3款有海景天窗的國產SUV,最適合帶女朋友看星星,首付3萬拿下...

夏天就這么緩緩地來了,在某一個周末的晚上,約上心愛的女朋友,開上車子,一路上馳騁在無人的大橋上,放上音樂,開到目的地,打開天窗,看看星星,從詩詞歌賦談到人生哲學&#…

html仿京東快速購物導航,jQuery仿京東樓層滑動側邊欄高亮(原創)

插件描述:jQuery模仿京東側邊欄點擊滑動到該樓層,同時側邊欄隨著頁面滾動對應導航高亮。更新時間:2017/9/30 下午2:48:37更新說明:1,添加了查看評論按鈕來改變對應區的高度2,將floorList和navList作為匿名函…

華為云大數據存儲的冗余方式是三副本_華為TaurusDB技術解讀(轉載)

近日,華為云自研關系型數據庫 Taurus 公開亮相。作為華為云自研的最新一代云原生分布式數據庫,Taurus 完全兼容 MySQL 8.0,采用計算與存儲分離、日志即數據的架構設計,支持 1 寫 15 讀,性能達到原生 MySQL 的 7 倍。性…

spring html訪問統計,spring-mvc訪問本地html文件(示例代碼)

項目中要用到在線預覽word文檔,剛開始考慮是要將word轉成pdf文件,然后再直接在瀏覽器打開pdf文檔即可,但是項目部署在Linux下,在網上搜了一下沒有找到合適的方法,后來項目組討論用POI生成HTML文件,但是生成…

unity 是厘米還是米_喬丹19歲才1.75米,2年增高近20公分,這個長高方法你能堅持多久...

相信現在有很多的人希望自己在長大之后能去NBA打籃球,但是因為種種原因,最后還是放棄了這個想法, 很多人是因為自己的身體素質達不到要求,比如說天賦上沒有達到一個籃球運動員的身高,還有的是因為自己家庭的原因最后放…

win7變成xp風格了怎么改回_微軟看了會沉默,把 Windows 10 變成經典 98 風格

眾所周知「Windows 10」官方提供的主題都只是換換壁紙,所以喜歡折騰的小伙伴會選擇用「UltraUXThemePatcher」來讓「Windows 10」支持第三方主題,實現模仿各種風格,如 macOS、Win7、Ubuntu 等。但是由于「Windows 10」版本太多,導…

2021廣東高考成績排名如何查詢,2021年廣東高考個人排名怎么查詢,廣東高考成績排名查詢方法...

高考成績公布后,很多家長和學生咨詢我們,廣東高考個人成績排名位次如何查詢:廣東高考成績排名,可以通過省招生考試院發布的廣東一分一段表來查詢,也可以到聚志愿網站直接輸入分數查詢,一分一段它顯示每一個…

區塊如何防篡改_深入淺出:一條數據是如何完成上鏈的

一筆業務數據在區塊鏈處理的流程大致分為三個階段:分別是上鏈前處理階段、鏈上處理階段和智能合約處理階段。一.上鏈前處理階段業務數據上鏈前需要將業務數據處理,并且對信息進行簽名。這些過程可以通過對應的工具,比如序列化工具和各種橢圓曲…

鎖定計算機在哪里設置方法,怎樣鎖定電腦?如何設置電腦鎖屏【步驟詳解】

我們在日常使用電腦的時候,特別是自己的私人電腦時,難免會遇到上個廁所接個水之類的雜事需要離開位置的,也許可能就一兩分鐘不到的時間,這么點的時間如果關機的話又覺得實在是太麻煩了,但是又不想讓其它的人知道我們的…

python 安裝html,python安裝glob

python 里面的glob模塊是怎么用的新手剛學這一塊內容,不是很懂 這個模塊可以用來統計每個類型物品的統計glob是python自己帶的一個文件操作相關模塊,用它可以查找符合自己目的的文件,就類似于Windows下的文件搜索,支持通配符操作,…

hough變換檢測圓周_Python OpenCV 霍夫變換

霍夫變換(Hough Transform)是圖像處理中的一種特征提取技術,它通過一種投票算法檢測具有特定形狀的物體。Hough變換是圖像處理中從圖像中識別幾何形狀的基本方法之一。Hough變換的基本原理在于利用點與線的對偶性,將原始圖像空間的給定的曲線通過曲線表達…

關于未來計算機的想象作文600字,未來世界的想象作文600字

我背著書包漫無目的地走在街上,剛要出門的時候突然出現了一個大洞,我本想上前一看究竟,結果被石子絆了下去,一下就落進了那個黑洞里,我的世界陷入了一片黑暗。不知過了多久,我眼睛好不容易看到一絲光亮&…

creator qt 字體太小_qt ttf 字體太小的解決方法

編譯完成qt以后,發現qt的字體太小了原因是qt的dpi計算錯誤,這樣的情況會導致qt在不同的平臺上大小不一解決的方法就是設置好qt的dpi,qt是根據顯示器的物理長度或者寬度于分辨率的關系來計算dpi的,所以我們設置exportQWS_DISPLAY"LinuxFB:mmWidth95:0"export QWS_SIZE…

當前超級計算機的應用方興未艾,四川省若爾蓋縣高三下學期語文模擬卷(五)

四川省若爾蓋縣高三下學期語文模擬卷(五)姓名:________ 班級:________ 成績:________一、選擇題 (共3題;共6分)1. (2分)(2017海南模擬) 下列各句中劃線成語的使用,全都正確的一項是()①與做人一樣,李天來對待試驗同樣謹小慎微。他說&#xff…

easyui中onchange事件_React中類似Vue的“模板語法”

一、數據綁定類似 Vue 的 v-model,this.state { val: 1, companies: ["阿里巴巴", "騰訊", "百度", "京東"], };companyNameUpdate(e) { this.setState({ companyName: e…

html5著陸頁模板,多用途著陸頁HTML模板

資源下載此資源下載價格為5D幣,請先登錄資源文件列表apnew/css/animate.css , 74096apnew/css/bootstrap.min.css , 121260apnew/css/font-awesome.min.css , 27466apnew/css/jquery-ui.css , 36437apnew/css/jquery.carousel-3d.default.css , 3639apnew/css/mater…

php十六進制字符串轉成字節數組_10 天 5 千 Star!21 歲本科生給程序員開發的十六進制編輯器...

【導語】:ImHex 是一款界面美觀的十六進制編輯器,主要面向逆向工程師和程序員。如果你喜歡暗黑系編輯器,那它應該是你的菜。ImHex 最近在 GitHub 上非常火熱,上架五天就收獲了 2.5k Star,十天 5k Star。開發者介紹ImHe…

ie11用不了html5,HTML5拖放不能在IE11上運行

應用HTML5原生拖放功能,drop不適用于IE,與chrome和firefox配合使用。拖動似乎正在起作用,但對IE不感興趣。另一個小問題 - 在IE中,我的可拖動元素周圍有一個半透明的方塊,但它的背景是透明的(圖像是這樣完成的)&#x…