程式設計者所需要知道關於 HTTPS 知識
2021-03-07
筆記身為開發者所需要關於 Https 的知識,包含加密演算法、憑證以及網頁伺服器該如何實作。
PKI
在 PKI 的架構中,CA (Certification Authority) 負責進行憑證的管理。憑證是個人訊息以及公開金鑰所組合的檔案,而在 PKI 架構中由從屬於 CA 的 RA (Registration Authority) 來專責公開金鑰與個人身分的對應,減少 CA 的負擔。
藉由 PKI 可以做到下列資安事項:
- 通訊過程的加密:將要傳輸的資料使用公開金鑰加密,持有對應私密金鑰者才能解開
- 宣稱身分的驗證:將任意檔案藉由私鑰加密,任何人使用公開金鑰解開者能夠驗證私鑰持有者的身分
- 內容完整性:藉由雜湊的機制,當內容被第三方竄改時,內容的雜湊值會不一致,從而保持內容的完整
- 不可否認性:因為雙方公、私鑰驗證過彼此身分,所以發生的行為不能由任一方否認
台灣的頂層 CA
Chunghwa Telecom
提供憑證的商業服務,也代為營運**政府伺服器數位憑證管理中心(GTLSCA)**的憑證業務。
OU=ePKI Root Certification Authority,O=Chunghwa Telecom Co., Ltd.,C=TW
TWCA
提供憑證的商業服務。
CN=TWCA Global Root CA,OU=Root CA,O=TAIWAN-CA,C=TW
CN=TWCA Root Certification Authority,OU=Root CA,O=TAIWAN-CA,C=TW
GRCA
政府憑證總管理中心(Government Root Certification Authority) ,為政府機關公開金鑰基礎建設階層架構的最頂層憑證機構,同時也是PKI的信賴起源,具備最高的公信度。負責PKI內外憑證機構間的交互認證,由國家發展委員會委託中華電信數據分公司營運。
O=Government Root Certification Authority,C=TW
Trusted Root Certificate Authority List
加密法
分為 對稱式(Symmetric Encryption) 以及 非對稱式(Asymmetric Encryption) ,對稱式在加密以及解密使用同一把金鑰進行,所以加解密速度快,但無法公開的交換金鑰;非對稱式雙方都有一組公開金鑰以及私鑰,可以在公開傳送訊息,進行的方式如下:
A 將檔案以B的公鑰進行加密;B 收到檔案後以自己的私鑰進行解密
而更完善的機制是:
A 將檔案以B的公鑰進行加密、並同時以自己的私鑰進行加密;
B 收到檔案後先以A的公鑰進行解密,確認檔案確實由是由A所提供;同時再以自己的私鑰進行解密
綜合對稱式與非對稱式的優點,公開環境的溝通,就是先藉由非對稱式加密法,傳送對稱式加密法所使用的金鑰,之後的訊息溝通則都可以用對稱式金鑰來完成。
常見的對稱式加密法
AES、RC4、3DES、Blowfish
常見的非對稱式加密法
RSA、Diffie-Hellman、ElGamal、ECC、ECDH
憑證
PKI 所使用的憑證格式為 X.509
憑證的取得
可以分為向信任第三方發出申請或者自行簽發的方式。
SSL / TLS
機制
那些關於SSL/TLS的二三事(九) — SSL (HTTPS)Communication
解讀 Cipher Sutie
加密法使用時機 | 使用的加密法 |
---|---|
Key Exchange 金鑰交換 | RSA, Diffie-Hellman, ECC, ECDH, SRP, PSK |
Authentication 驗證 | RSA, DSA, ECDSA |
Bulk Ciphers 內容加密 | RC4, 3DES, AES |
Message Authentication 完整性檢查 | HMAC-SHA256, HMAC-SHA1, HMAC-MD5 |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH secp256r1 (eq. 3072 bits RSA)
WEAK : TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) ECDH secp256r1 (eq. 3072 bits RSA)
WEAK : TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH secp256r1 (eq. 3072 bits RSA)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH secp256r1 (eq. 3072 bits RSA)
WEAK : TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH secp256r1 (eq. 3072 bits RSA)
WEAK : TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH secp256r1 (eq. 3072 bits RSA)
WEAK : TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c)
WEAK : TLS_RSA_WITH_AES_128_CBC_SHA (0x2f)
WEAK : TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c)
WEAK : TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d)
WEAK : TLS_RSA_WITH_AES_256_CBC_SHA (0x35)
WEAK : TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d)
WEAK : TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (0x41)
WEAK : TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (0x84)
mozilla wiki - Security/Server Side TLS
IIS Server 如何啟用 HTTPS
匯入憑證
站台繫結
Powershell Script For Best TLS Setup
參考資料
What Every Developer Must Know About HTTPS
Play by Play: What You Need to Know About HTTPS Today
Implementing Active Directory Certificate Services in Windows Server 2016
為何HTTPS憑證有貴有便宜還更可以免費?讓我們從CA原理開始講起
How does HTTPS work? What's a CA? What's a self-signed Certificate?