【Chrome】RSA演算法在擴充程式中的運用

來源:互聯網
上載者:User

RSA演算法在Chrome的擴充程式中被用於對其.crx安裝檔案進行簽名和產生ID。下面讓我們逐一瞭解其技術細節。在繼續之前,請注意一點,文中對於Web Store的技術細節是基於Chrome瀏覽器的角度通過一定的測試而推測出來的,要徹底地瞭解Web Store的細節並不能僅通過本文。


擴充程式的安裝檔案有兩種產生方式,一種方式是由擴充程式的開發人員在開發的過程中產生,另一種是通過Google的Web StoreGoogle又稱之為Gallery)提交由後台伺服器產生。儘管兩種方式有些差異,但我們可以從開發人員產生這種方式中大概瞭解Web Store的行為。


擴充程式的開發人員通過所列舉的入口可以開啟安裝檔案產生對話方塊。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/11414U202-0.png" title="1.png" />


在打包擴充】對話方塊中如),需要選擇所需打包擴充程式的根目錄,以及可選的私密金鑰檔案,這一檔案與RSA演算法有關,這是我們後面要講的重點。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/11414R3G-1.png" title="2.png" />


當我們不選擇私密金鑰檔案進行打包時,Chrome會為我們產生一個尾碼為.pem的私密金鑰檔案檔案的產生位置與所指定的擴充程式目錄並列)。該檔案中存放有RSA演算法的私密金鑰,且通過該私密金鑰可以匯出公開金鑰。樣本了如何通過openssl工具顯示私密金鑰檔案和通過該檔案匯出公開金鑰。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/11414U919-2.png" title="3.png" />


下面的活動圖表樣本說明了Chrome在後台是如何打包一個擴充程式的。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/11414TX6-3.png" title="4.png" />


所產生的.crx二進位)檔案格式如所示。需要特別說明的是,擴充程式的整個目錄是以一個壓縮包存放在.crx檔案的最後面的,其中的Signature是通過Public Key所獲得的簽名,用於保證壓縮檔內容的完整性。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/11414TY0-4.png" title="5.png" />


至此相信讀者已瞭解了RSA演算法在.crx安裝檔案中的作用,接下來讓我們瞭解擴充程式的ID又被稱為App ID)。Chrome中的每一個擴充程式都有一個ID值樣本了AdBlock擴充程式的ID值),該值是通過對Public Key進行Hash運算而獲得的。

650) this.width=650;" src="http://img1.51cto.com/attachment/201305/150917481.png" title="6.png" />


樣本說明了Chrome打包擴充程式時,如何在後台產生擴充程式的ID,其中也順道說明了如何處理RSA密鑰來源的。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/11414TH9-6.png" title="7.png" />


請注意,由於ID是通過Public Key產生的,而Public Key又是由Private Key所匯出的,如果想保證一個擴充程式的ID永遠不變,則打包過程中必須使用同一個.pem檔案。現實工作中,我們可以在第一次打包擴充程式時不指定.pem檔案以便讓Chrome為我們自動產生,然後在隨後的所有打包動作中都指定該.pem檔案。當然,如果不關心ID的不變性的話,可以讓打包程式每次自動產生.pem檔案,具體應如何使用讀者可以根據自己的情景加以選擇。


擴充程式一旦安裝完成,需要通過Google Web Store的Developer Dashboard進行上傳,以便使用者能通過Web Store進行安裝。與本地製作.crx檔案不同的是,上傳的檔案必須是對擴充目錄進行壓縮而產生的.zip檔案。需要注意的是,擴充程式的manifest.json中不能包含key和update_url兩個域。通過研究Chrome安裝好的擴充程式發現,其中的key域所存放的正是前面談到的Public Key,且兩個域都是伺服器在後台所插入的。由於這種打包方式中不需指定.pem檔案,因此我們可以推測打包伺服器將為之自動產生Private Key。


本文出自 “至簡李雲” 部落格,請務必保留此出處http://yunli.blog.51cto.com/831344/1211260

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.