2012-06-21 69 views
4

如果搜索代碼簽名在網上你會得到命中過多關於哪裏去得到一個數字證書籤名的代碼,但你應該得到簽署沒有文章或文檔時您的代碼或爲什麼這可能是必要的。所以我提出了這些問題:代碼簽名:何時和爲什麼?

  • 什麼樣的用例存在,開發人員或開發團隊希望/需要簽署他們的代碼?
  • 可以/應該簽署哪些類型的代碼? JavaScript的? Java的? C++?每種語言/平臺是否有不同類型的代碼簽名?
  • 是否將代碼簽名爲原始源代碼或已編譯的二進制代碼?

在此先感謝。

回答

2

我想理論上任何語言的任何代碼都可以作爲源代碼簽名,但更常見的是編譯後的二進制代碼。

我想到的主要用例是移動應用程序(本例爲Android)。發佈前必須簽署代碼。您還必須保存密鑰存儲文件,因此如果您對該應用程序進行了任何更新並希望上傳它,請使用相同的密鑰對其進行簽名。這是因爲Android在升級應用程序時會檢查很多東西,其中主要的一點是舊代碼和新代碼的代碼簽名是相同的,只要密鑰存儲文件和密碼足夠保密,證明它來自同一來源。如果有人以某種方式修改代碼,則簽名驗證將失敗。

簡而言之,簽署代碼讓最終用戶/機器知道代碼來自哪裏。而在升級的情況下,很難/不可能修改代碼並讓其他人下載它。

蘋果公司對iOS的代碼簽名很瘋狂,我沒有完全掌握所有的細節,但你必須從蘋果公司獲得證書(是的超過1),並與他們簽約。如果你想把應用程序放在測試設備上,你需要另一個證書來簽名並安裝到設備上,否則你必須在App Store上獲得它(需要獲得Apple的批准),他們可能會在某些地方簽署它iOS設備知道其Apple認可的私鑰。

+0

感謝@Russ(+1) - 您能否想到任何用於代碼簽名的非移動(和現實世界)應用程序?我覺得像代碼簽名預先約1英里的現代移動應用熱潮。 – IAmYourFaja

0

每次您需要確保代碼來自可信來源且沒有人修改它時(簽名通常帶有校驗和)。這很常見。編程庫,軟件分發,軟件升級。當您需要申請專利時,您應該對其進行簽名並獲得可信的時間戳。當您創建一家銀行並通過互聯網訪問它時,您可以通過SSL =將您的網頁發送給用戶進行加密和簽名。並可能還有很多更多

0

開發人員或開發團隊希望/需要簽署代碼的用例存在哪些用例?

數字簽名在不同的平臺上意味着不同的東西。如果您正在編寫Windows桌面軟件,那麼簽署可執行文件最大的好處就是擺脫Windows自從Windows XP SP2以來一直向用戶顯示的令人討厭的「未知發佈者」警告。在其他平臺(一些手機,Java,Flash,Office VBA宏等)簽署的代碼是必需的,以提升權限。

您可以讓Windows程序自行檢查自己的數字簽名以確保它是有效的,這意味着EXE自簽名以來一直沒有改變。大多數人使用它作爲抵禦惡意軟件和盜版的另一層保護。

看看這個太: http://blog.ksoftware.net/2011/07/what-is-authenticode/

哪些類型的代碼可以/應當簽字? JavaScript的? Java的? C++?每種語言/平臺是否有不同類型的代碼簽名?

在理論上有可能以數字方式簽署任何文件,但大多數的時候,人們都在談論他們在談論MS驗證碼(附加數字簽名,以任何PE格式的文件(代碼簽名EXE,DLL,COM等)或簽名的可執行文件的OSX/iOS版。

有不同類型的簽約在不同的平臺,但大多數人會使用相同的證書。

簽訂爲原料源或編譯的二進制代碼?

在大多數情況下,二進制。

相關問題