⑴ 在手機'設置'中'安全'中的'從SD卡中安裝證書'的'證書'指什麼
https證書有效性驗證引發的安全問題
超級試駕員
閱198轉02019-01-16分享收藏
前言:
在實際項目代碼審計中發現,目前很多手機銀行雖然使用了https通信方式,但是只是簡單的調用而已,並未對SSL證書有效性做驗證。在攻擊者看來,這種漏洞讓https形同虛設,可以輕易獲取手機用戶的明文通信信息。
手機銀行開發人員在開發過程中為了解決ssl證書報錯的問題(使用了自己生成了證書後,客戶端發現證書無法與系統可信根CA形成信任鏈,出現了 CertificateException等異常。),會在客戶端代碼中信任客戶端中所有證書的方式:
public static HttpClient getWapHttpClient() {
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);
SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
//此處信任手機中的所有證書,包括用戶安裝的第三方證書
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme(「http」, PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme(「https」, sf, 443));
ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
return new DefaultHttpClient(ccm, params);
} catch (Exception e) {
return new DefaultHttpClient();
}
}
而在客戶端中覆蓋google默認的證書檢查機制(X509TrustManager),並且在代碼中無任何校驗SSL證書有效性相關代碼:
public class MySSLSocketFactory extends SSLSocketFactory {
SSLContext sslContext = SSLContext.getInstance(「TLS」);
public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
super(truststore);
TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
//客戶端並未對SSL證書的有效性進行校驗,並且使用了自定義方法的方式覆蓋android自帶的校驗方法
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
sslContext.init(null, new TrustManager[] { tm }, null);
}
問題出來了:
如果用戶手機中安裝了一個惡意證書,那麼就可以通過中間人攻擊的方式進行竊聽用戶通信以及修改request或者response中的數據。
手機銀行中間人攻擊過程:
1 客戶端在啟動時,傳輸數據之前需要客戶端與服務端之間進行一次握手,在握手過程中將確立雙方加密傳輸數據的密碼信息。
2 中間人在此過程中將客戶端請求伺服器的握手信息攔截後,模擬客戶端請求給伺服器(將自己支持的一套加密規則發送給伺服器),伺服器會從中選出一組加密演算法與HASH演算法,並將自己的身份信息以證書的形式發回給客戶端。證書裡麵包含了網站地址,加密公鑰,以及證書的頒發機構等信息。
3 而此時中間人會攔截下服務端返回給客戶端的證書信息,並替換成自己的證書信息。
4 客戶端得到中間人的response後,會選擇以中間人的證書進行加密數據傳輸。
5 中間人在得到客戶端的請求數據後,以自己的證書進行解密。
6 在經過竊聽或者是修改請求數據後,再模擬客戶端加密請求數據傳給服務端。就此完成整個中間人攻擊的過程。
以fiddler工具模擬中間人攻擊為例:
1 首先在手機中裝入fiddler根證書:
導出fiddler的根證書:
將fiddler根證書放入手機的SD卡中,然後在手機設置-安全中選擇從SD卡中安裝證書:
成功安裝fiddler根證書到手機上:
2 在PC端打開fiddler,將手機通信代理到PC端fiddler所監聽的埠上(可以在wifi中的高級設置中設置代理),這樣手機銀行的所有通信均會被fiddler監聽到。
3 啟動手機銀行客戶端,會在fiddler中查看到所有請求的明文數據,並且可以進行修改後轉發,成功將https加密繞過。
防護辦法:
使用CA機構頒發證書的方式可行,但是如果與實際情況相結合來看的話,時間和成本太高,所以目前很少有用此辦法來做。由於手機銀行伺服器其實是固定的,所以證書也是固定的,可以使用「證書或公鑰鎖定」的辦法來防護證書有效性未作驗證的問題。
具體實現:
1 公鑰鎖定
將證書公鑰寫入客戶端apk中,https通信時檢查服務端傳輸時證書公鑰與apk中是否一致。
public final class PubKeyManager implements X509TrustManager{private static String PUB_KEY = 「″ +」″ +」」 +」″ +」″ +」″ +」″ +
「″ +
「」 +
「″;
//鎖定證書公鑰在apk中
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException
{
if (chain == null) {
throw new IllegalArgumentException(「checkServerTrusted: X509Certificate array is null」);
}
if (!(chain.length > 0)) {
throw new IllegalArgumentException(「checkServerTrusted: X509Certificate is empty」);
}
if (!(null != authType && authType.equalsIgnoreCase(「RSA」))) {
throw new CertificateException(「checkServerTrusted: AuthType is not RSA」);
}
// Perform customary SSL/TLS checks
try {
TrustManagerFactory tmf = TrustManagerFactory.getInstance(「X509″);
tmf.init((KeyStore) null);
for (TrustManager trustManager : tmf.getTrustManagers()) {
((X509TrustManager) trustManager).checkServerTrusted(chain, authType);
}
} catch (Exception e) {
throw new CertificateException(e);
}
// Hack ahead: BigInteger and toString(). We know a DER encoded Public Key begins
// with 0×30 (ASN.1 SEQUENCE and CONSTRUCTED), so there is no leading 0×00 to drop.
RSAPublicKey pubkey = (RSAPublicKey) chain[0].getPublicKey();
String encoded = new BigInteger(1 /* positive */, pubkey.getEncoded()).toString(16);
// Pin it!
final boolean expected = PUB_KEY.equalsIgnoreCase(encoded);
if (!expected) {
throw new CertificateException(「checkServerTrusted: Expected public key: 」
+ PUB_KEY + 「, got public key:」 + encoded);
}
}
}
}
2 證書鎖定:
即為客戶端頒發公鑰證書存放在手機客戶端中,在https通信時,在客戶端代碼中固定去取證書信息,不是從服務端中獲取。
⑵ AlphaSSL證書適合什麼樣的網站GlobalSign的證書呢
適用於個人及中小型企業。
解釋原因:
GlobalSign擁有Alphassl相同的信任體系。
AlphaSSL屬於GlobalSign品牌證書,是唯一擁全球CRL節點的CA機構,其中包括有中國CRL節點的伺服器,所以非常適合中國互聯網使用。
可信CA機構SSL證書會被瀏覽器信任,同樣會保護網站安全,避免網站劫持。
AlphaSSL SSL證書具備頂級CA操作系統默認根證書,可以信任更加古老的瀏覽器。
AlphaSSL根證書與網路搜索使用的GlobalSign一模一樣,所以可以達到相同信任級別。
GlobalSign是一家聲譽卓著、備受信賴的CA中心。
GlobalSign源自美國,現已屬於GMO集團下的業務。
GlobalSign通過使用SHA-256和最低2048位RSA密鑰提供了最強加密服務。
GlobalSign SSL提供持續的安全服務。與Netcraft建立合作夥伴關系提供網路釣魚警報服務,如果您的網站上檢測到網路釣魚攻擊將給予通知。
GlobalSign SSL受信於每個主流的瀏覽器、 應用程序和設備。訪客,無論它們使用什麼設備將自動信任您的SSL安全。
GlobalSign自2001年以來,每年通過WebTrust審計。
解決辦法:可以在Gworg拿到GlobalSign或者AlphaSSL證書部署到伺服器。
⑶ Java可以考哪些含金量高的證書
SCJP是提供的針對J2SE的兩項認證之一,另一個是SCJD。CJP主要考察開發人員掌握Java的基本知識和語法,包括資料庫連接、Swing、I/O、網路編程等知識。需要有扎實的基礎知識才可以順利通過。
⑷ 什麼是Digicert ssl證書
SSL證書是由數字證書審來核驗證頒發的源,這種頒發SSL證書的機構又叫CA,是一個受信任的數字證書頒發機構。只有通過WebTrust國際安全審計認證,根證書才能預裝到主流瀏覽器,成為全球可信的SSL證書頒發機構。
DigiCert是業內最古老的根證書之一,兼容所有主流瀏覽器,兼容所有操作系統、安卓、蘋果等平台。是美國老牌的CA認證中心,提供SSL證書和SSL管理工具十多年,DigiCert旗下擁有DigiCert,Symantec,Geotrust,Thawte,Rapid 5大SSL證書品牌,是全球領先的數字證書提供商。
解決方法:Digicert數字證書在ssln擁有多個ssl證書類型
⑸ 考CISA證書都有什麼條件(比如:學歷流程)
提供從事信息系統審計、控制與安全工作5 年以上經驗的證明。具有下列經驗者,可申請替代部分年限,並出示適當的證明:
具備如下資歷者,可以申請替代(最長達)1 年的信息系統審計、控制與安全的工作經驗要求:
1、滿1 年的非信息系統審計工作經驗,或滿1 年的信息系統工作經驗,和/或具有大專學歷(大學60 個學分或同等學歷)。
2、擁有學士學位(大學120 個學分或同等學歷)者,可以替代2 年信息系統審計、控制與安全工作經驗。
3、2 年相關領域(計算機科學、會計、審計、信息系統審計等)大學專職講師經驗可以替代1 年信息系統審計、控制與安全工作經驗。無最高可代替年限限制(6 年大學講師經驗可以代替3 年信息系統審計、控制與安全工作的經驗)。
專業經驗必須在申請前的10 年之內獲得,或在第一次通過考試之日的前5 年之內。認證申請必須在通過CISA 考試的5 年之內提出。所有專業經驗都必須由原僱主獨立地簽字確認。
從ISACA網站網頁上獲取報名表。應當用黑色墨水筆工整填寫或列印。字跡要清楚。請確認考試中心代碼正確,並根據需要選擇考試中使用語言的版本。在填完報名表並付款後,ISACA將寄給考生 CISA考試報名的回執信與一份《CISA考試考生指南》。投遞時間為6個星期。
(5)代碼審計證書擴展閱讀:
證書榮譽:
1、專業頂尖的標志
獲得CISA 認證有助於確立你作為一名合格的信息系統審計、控制和安全專業人才的聲譽。不 論你是希望提高你的工作表現還是得到職務升遷,擁有CISA 資格證書都會使你擁有他人無法企及的競爭優勢。
2、僱主渴求的人才
由於CISA 持證人能夠熟練掌握當今需要的最先進的技能,僱主更願意僱用和留住那些達到並能夠維持 資格證書所要求水平的人才。對於僱主而言CISA 認證確保其雇員擁有勝任當前工作所必需的最新教育與實踐經驗。
3、全球的認可
也許本認證對於你當前的工作並不是絕對必需的 ,然而越來越多的機構希望員工得到CISA 認證。為了確保你在全球職業市場上的成功,選擇一個建立在全球認可的技術實務基礎上的 認證是至關重要的。CISA 就是這種認證。
CISA 作為信息系統審計、控制與安全專業人員的資格證書,受到全世界信息系統審計、控制和安 全行業的廣泛認可。
⑹ java代碼審計工程師是做什麼的
代碼審計:顧名思義就是檢查源代碼中的安全缺陷,檢查程序源代碼是否存在安全隱患,或者有編碼不規范的地方,通過自動化工具或者人工審查的方式,對程序源代碼逐條進行檢查和分析,發現這些源代碼缺陷引發的安全漏洞,並提供代碼修訂措施和建議。
⑺ Digicert的EV 代碼簽名證書比普通代碼簽名證書有什麼優勢
與OV代碼簽名證書相比,EV代碼簽名證書的審核更加嚴格,功能更加強大。與OV代碼簽名證書相比,EV代碼簽名證書更具優勢。
因為代碼簽名證書可以支持windows內核驅動簽名、微軟硬體,表盤等賬戶注冊登錄使用EV代碼簽名證書可以增強軟體的安全性,防止用戶放棄安裝,並且增加下載率,有助於增強用戶的信任。
⑻ 代碼證年檢需要提交審計報告嗎
不會的,只要營業執照,法人身份證,代碼證,經辦人身份證(以上所有的原件及復印件)跟公章,都是只要這些的
⑼ Digicert的EV代碼簽名證書有什麼優勢
代碼簽名證書是數字證書的一種,它是通過對代碼進行有效的「簽名」,來標識軟體來源的安全性及軟體開發者的真實身份,給用戶提供一個安全的應用軟體環境。EV代碼簽名證書是其中的一種類型,它是按照更加嚴格的國際審計標准來審核,和EV SSL證書一樣嚴格,因此安全級別也是最高的。
申請Digicert的EV代碼簽名證書的優勢:
1)防止代碼被惡意篡改或破壞,保護了代碼的完整性。
2)有效避免Windows發出錯誤消息和安全警告。
3)驗證軟體發布者的真實身份,確保軟體來源的真實性,提升了用戶體驗度,給個人或企業樹立了可信賴的形象,有利於提升軟體的下載和使用率。
⑽ php腳本編程學到什麼階段可以轉做代碼審計師挖漏洞呢一般到達代碼審計階段要多長時間
這個不好說 貌似只學php的沒去做這個的