簽署Java代碼

在上一篇文章中,我們討論了如何保護移動代碼 。

提到的措施之一是簽名代碼。 這篇文章探討了Java程序如何工作。

數字簽名

數字簽名的基礎是密碼學 ,特別是公鑰密碼學 。 我們使用一組加密密鑰:私有密鑰和公共密鑰。

私鑰用于簽名文件,并且必須保持秘密。 公鑰用于驗證使用私鑰生成的簽名。 由于鍵之間的特殊數學關系,這是可能的。

簽名和公鑰都需要轉移給接收者。

證明書

為了信任文件,需要驗證該文件上的簽名。 為此,需要一個與用于簽署文件的私鑰相對應的公鑰。 那么我們如何才能信任公鑰呢?

這是證書的來源。證書包含公用密鑰和標識該密鑰所有者的專有名稱 。

信任來自證書本身已簽名的事實。 因此,證書還包含簽名和簽名者的專有名稱。

當我們控制通信的兩端時,我們既可以提供證書又可以完成證書 。 例如,這對于您編寫的連接到您控制的服務器的移動應用程序效果很好。

如果您不能同時控制兩端,那么我們需要一個替代方案。 簽名者的專有名稱可用于查找簽名者的證書。 使用該證書中的公鑰,可以驗證原始證書中的簽名。

我們可以以這種方式繼續創建證書鏈 ,直到我們明確信任的簽名者為止。 這通常是公認的證書頒發機構 (CA),例如VeriSign或Thawte 。

密鑰庫

在Java中,私鑰和證書存儲在稱為keystore的受密碼保護的數據庫中。

每個密鑰/證書組合由一個稱為別名的字符串標識。

代碼簽名工具

Java附帶了兩個用于代碼簽名的工具: keytool和jarsigner 。

使用jarsigner程序使用存儲在密鑰庫中的證書對jar文件進行簽名。

使用keytool程序創建私鑰和相應的公鑰證書,從/向/從密鑰庫檢索/存儲那些證書,以及管理密鑰庫。

keytool程序無法創建由其他人簽名的證書。 它可以創建證書簽名請求 ,但是您可以將其發送到CA。 它還可以將CA的響應導入密鑰庫。

替代方法是使用支持此類CA功能的工具如OpenSSL或BSAFE 。

代碼簽名環境

代碼簽名應該在安全的環境中進行,因為涉及私鑰,并且私鑰需要保密。 如果私鑰落入他人之手,則第三方可能會使用您的密鑰對他們的代碼簽名 ,從而誘使客戶信任該代碼。

這意味著您可能不想在構建機器上維護密鑰庫,因為該機器可能對很多人都可用。 一種更安全的方法是引入專用的簽名服務器:

您還應該使用不同的簽名證書進行開發和生產。

時間戳記

證書僅在有限的時間內有效。 使用公鑰證書已過期的私鑰簽名的任何文件都不應再受信任,因為這些文件可能已在證書過期后進行了簽名。

我們可以通過給文件加上時間戳來減輕此問題。 通過將受信任的時間戳記添加到文件,即使簽名證書過期,我們也可以信任它。

但是,我們如何信任時間戳? 好吧,當然可以通過使用時間戳管理局進行簽名! OpenSSL程序也可以幫助您。

超越代碼簽名

簽名代碼時,僅證明該代碼來自您。 為了使客戶能夠信任您的代碼,它必須是可信任的。 您可能希望設置一個完整的安全開發生命周期 (SDL),以確保它盡可能地多。

在這方面要考慮的另一件事是第三方代碼。 大多數軟件包都嵌入了商業和/或開源庫。 理想情況下,這些庫由其作者簽名。 但是無論如何,您都需要擁有所有權,因為客戶不在乎在您自己編寫的代碼還是在所使用的庫中是否發現了漏洞。

參考: 安全軟件開發博客上的JCG合作伙伴 Remon Sinnema 簽署Java代碼 。

翻譯自: https://www.javacodegeeks.com/2012/11/signing-java-code.html

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

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

相關文章

蜘蛛搜索引擎_SEO:搜索引擎蜘蛛要引導,不能佛系優化

又是一個不眠的夜晚,工作對生活節奏不斷地敲打,我們新一代的年輕小伙不得不進步,滿懷熱情來挑戰我們對于工作的激情,雖然每一天工作都是重復地進行,但是每一天都有我們留下的痕跡,為世界的美好增添一道絢麗…

SQL數據庫排序規則修改

修改SQL數據庫排序規則: 1.修改為單用戶模式 2.然后關閉所有的查詢窗口,修改Options的Collocation屬性,如:Chinese_PRC_90_CI_AS 3.再修改為多用戶模式 例如: ALTER DATABASE SRMain SET SINGLE_USER WITH ROLLBACK IMMEDIATE Go…

屬于計算機病毒主要特征的是,[單選] 不屬于計算機病毒的主要特征的是()

[單選] 不屬于計算機病毒的主要特征的是()更多相關問題已知兩直線l1:mx+y-20和l2:(m+2)x+y+40與兩坐標軸圍成的四邊形有外接圓,則實數m的值為()A.1B.&#xf…

小程序滴滴車主板塊的銀行卡管理左滑刪除編輯

最近在類似于滴滴軟件的一款小程序,工程確實有點大,很多東西都是第一次做。這次記錄一下關于左滑刪除的一個代碼記錄。主要的思想就是計算滑動距離的大小來使用css中的 transition 控制滑動的效果,主流的都是控制邊距margin來達到左滑的效果。…

華菱重卡儀表指示說明_儀表裝置11種常見故障的解決方法

1. 轉速表工作不正常或停止工作首先檢查轉速表背面的黑色3孔插頭與插座接觸是否良好及電壓正常與否。3個端子的連接情況:端子a是電源負極,與儀表盤14孔白色插座上的棕色導線連接后搭鐵(儀表盤上所有搭鐵點均由棕色導線匯集在一起,并通過膠布包…

WADL中的JSON模式

在其他工作之間&#xff0c;我最近一直在審查WADL規范&#xff0c;以解決一些文檔問題&#xff0c;以生成更新版本。 因為顯而易見的一件事是缺少對XML以外的語言的語法支持-是的&#xff0c;您可以使用JSON <-> XML Schema的映射&#xff0c;但這對于JSON純粹主義者而言…

怎么用python自制計算公式_如何使用Python和Numpy計算r平方?

我最初發布下面的基準是為了推薦numpy.corrcoef&#xff0c;愚蠢地沒有意識到原來的問題已經使用了corrcoef&#xff0c;實際上是在詢問高階多項式擬合。我已經使用statsmodels為多項式r-squared問題添加了一個實際的解決方案&#xff0c;并且我已經離開了原始的基準測試&#…

ASP .NET SVN emmet 插件

學習 ASP .NET 時間的第三周&#xff1a; 來講講如何在 visual studio 2013...上搭載 SVN吧: 廢話不多說&#xff1a; One Step&#xff1a; 電腦上已安裝 visual studio 2013 等版本&#xff08;未安裝時 紅色區域是不存在的&#xff09; Two Step&#xff1a; 從官網上下載對…

Python之路3【知識點】白話Python編碼和文件操作(截載)

無意發現這篇文章講的比較好&#xff0c;存下來供參考&#xff1a; http://www.cnblogs.com/luotianshuai/p/5735051.html轉載于:https://www.cnblogs.com/shikaihong/p/7778880.html

Http協議入門

[在此處輸入文章標題] 1 web web入門 1&#xff09;web服務軟件作用: 把本地資源共享給外部訪問 2&#xff09;tomcat服務器基本操作 &#xff1a; 啟動: %tomcat%/bin/startup.bat 關閉&#xff1a; %tomcat%/bin/shutdown.bat 訪問tomcat主頁&#xff1a; http://loca…

計算機硬件系統都是看得見的,計算機組成硬件系統).doc

計算機組成硬件系統)各位計算機協會的成員大家好&#xff0c;很高興大家能陪我們走過這段難忘的時光。為了讓大家更好的學到東西&#xff0c;我們特地將計算機方面的東西整理成技術文檔&#xff0c;共大家使用&#xff0c;祝大家學得愉快&#xff01;湘信院計算機協會一&#x…

Google Guava –期貨

這篇文章是我在Google Guava上的系列文章的延續&#xff0c;這次涵蓋了Future。 Futures類是用于使用Future / ListenableFuture接口的靜態實用程序方法的集合。 Future是提交給ExecutorService的異步任務&#xff08;可運行或可調用&#xff09;的句柄。 Future界面提供以下方…

iptables 配置后連接不上數據庫_Linux服務器配置-VSFTP服務配置(三)

上文&#xff1a;Linux服務器配置-VSFTP服務配置(二)一、vsftpd服務防火墻配置1、主動(POST)模式 FTP 防火墻配置CentOS6 系統 iptables 的配置iptables -t filter --line-number -nL INPUT#顯示現有防火墻規則&#xff0c;查看是否開啟20、21號端口。iptables -t filter -I IN…

下標索引必須為正整數類型或邏輯類型_Python3 基本數據類型

Python中的變量不需要聲明。每個變量在使用前都必須賦值&#xff0c;變量賦值以后該變量才會被創建。在Python中&#xff0c;變量就是變量&#xff0c;它沒有類型&#xff0c;我們所說的"類型"是變量所指的內存中對象的類型。Python 3中有六個標準的數據類型&#xf…

noip模擬賽 寫代碼

分析&#xff1a;這其實就是括號匹配題&#xff0c;一眼貪心題&#xff0c;不過一開始貪錯了&#xff0c;以為([)]是合法的......其實括號之間不能嵌套. 一開始的想法是盡量往左邊填左括號&#xff0c;因為每種括號的數量都確定了&#xff0c;那么左括號和右括號的數量也就確定…

[CF797C] Minimal string(貪心,棧)

題目鏈接&#xff1a;http://codeforces.com/contest/797/problem/C 題意&#xff1a;給個字符串&#xff0c;求字典序最小的出棧順序。 一開始想用優先隊列記錄全局最小的字符&#xff0c;然后每次入棧的時候檢查當前字符是不是最小的&#xff0c;如果是那么同時pop。這樣做的…

讓我們緊縮大數據

作為開發人員&#xff0c;我們的重點是簡單&#xff0c;有效的解決方案&#xff0c;因此&#xff0c;最有價值的原則之一就是“保持簡單和愚蠢”。 但是使用Hadoop map-reduce很難堅持這一點。 如果我們要評估多個Map Reduce作業中的數據&#xff0c;那么最終將得到與業務無關但…

行內元素和塊元素以及行內塊元素的特點

一、背景 初學html&#xff0c;接觸很多標簽 <h1>、<p>、<span>、<ul>、<em>等&#xff0c;當寫出簡單的小頁面的時候&#xff0c;例如僅僅是一篇帶有標題的文章&#xff0c;標題 <h1>標簽單獨一行&#xff0c;不管后面有多大的空間&…

軟件測試的功能測試和性能測試,大型軟件的功能測試流程及性能測試流程

大型軟件具有涉及子模塊繁多、建設過程復雜、功能全面、性能具有較高要求的特點。依據ISO/IEC 9126軟件產品評估標準&#xff0c;需要對軟件的功能性、可靠性、可用性、效率、可維護性、可移植性等方面進行評估。因此&#xff0c;需要有一種方法能夠對大型軟件進行測試&#xf…

vue 分模塊打包 腳手架_Vue面試官最愛的底層源碼問題,你可以這樣回答!

最近看到身邊很多人都在投簡歷&#xff0c;有因為企業裁員的&#xff0c;有因為自己想跳槽的&#xff0c;原因不一&#xff0c;但是最終大家都會需要接觸到面試這個事情。但是很多人對待面試不夠認真&#xff0c;只會等待結果&#xff0c;不去努力。所以這邊想整理一些懶人面試…