RSA算法在擴展程序中的運用

RSA算法在Chrome的擴展程序中被用於對其.crx安裝文件進行簽名和生成ID。下面讓咱們逐一瞭解其技術細節。在繼續以前,請注意一點,文中對於Web Store的技術細節是基於Chrome瀏覽器的角度經過必定的測試而推測出來的,要完全地瞭解Web Store的細節並不能僅經過本文。web


擴展程序的安裝文件有兩種生成方式,一種方式是由擴展程序的開發者在開發的過程當中生成,另外一種是經過Google的Web Store(Google又稱之爲Gallery)提交由後臺服務器生成。儘管兩種方式有些差別,但咱們能夠從開發者生成這種方式中大概瞭解Web Store的行爲。算法


擴展程序的開發者經過下圖所列舉的入口能夠打開安裝文件生成對話框。chrome

150434670.png


在【打包擴展】對話框中(以下圖),須要選擇所需打包擴展程序的根目錄,以及可選的私鑰文件,這一文件與RSA算法有關,這是咱們後面要講的重點。json

150529668.png


當咱們不選擇私鑰文件進行打包時,Chrome會爲咱們生成一個後綴爲.pem的私鑰文件(文件的生成位置與所指定的擴展程序目錄並列)。該文件中存放有RSA算法的私鑰,且經過該私鑰能夠導出公鑰。下圖示例瞭如何經過openssl工具顯示私鑰文件和經過該文件導出公鑰。瀏覽器

150630521.png


下面的活動圖示例說明了Chrome在後臺是如何打包一個擴展程序的。服務器

150737142.png


所生成的.crx(二進制)文件格式以下圖所示。須要特別說明的是,擴展程序的整個目錄是以一個壓縮包存放在.crx文件的最後面的,其中的Signature是經過Public Key所得到的簽名,用於保證壓縮文件內容的完整性。ide

154210722.png


至此相信讀者已瞭解了RSA算法在.crx安裝文件中的做用,接下來讓咱們瞭解擴展程序的ID(又被稱爲App ID)。Chrome中的每個擴展程序都有一個ID值(下圖示例了AdBlock擴展程序的ID值),該值是經過對Public Key進行Hash運算而得到的。工具

150917481.png


下圖示例說明了Chrome打包擴展程序時,如何在後臺生成擴展程序的ID,其中也順道說明了如何處理RSA密鑰來源的。測試

151027393.png


請注意,因爲ID是經過Public Key生成的,而Public Key又是由Private Key所導出的,若是想保證一個擴展程序的ID永遠不變,則打包過程當中必須使用同一個.pem文件。現實工做中,咱們能夠在第一次打包擴展程序時不指定.pem文件以便讓Chrome爲咱們自動生成,而後在隨後的全部打包動做中都指定該.pem文件。固然,若是不關心ID的不變性的話,可讓打包程序每次自動生成.pem文件,具體應如何使用讀者能夠根據本身的情景加以選擇。google


擴展程序一旦安裝完成,須要經過Google Web Store的Developer Dashboard進行上傳,以便用戶能經過Web Store進行安裝。與本地製做.crx文件不一樣的是,上傳的文件必須是對擴展目錄進行壓縮而生成的.zip文件。須要注意的是,擴展程序的manifest.json中不能包含key和update_url兩個域。經過研究Chrome安裝好的擴展程序發現,其中的key域所存放的正是前面談到的Public Key,且兩個域都是服務器在後臺所插入的。因爲這種打包方式中不需指定.pem文件,所以咱們能夠推測打包服務器將爲之自動生成Private Key。

相關文章
相關標籤/搜索