Leo Yeh's Blog

SAS 資訊安全 (9)

基本介紹

教學目標

初步了解 SAS 9 平台中進行 SSL Handshake 的基本概念。

重點概念

首先安全連線使用非對稱加密演算法進行金鑰交換(例如:RSA),使用對稱加密演算法進行機敏資料的加密(例如:AES),使用訊息驗證碼確認訊息的完整性(例如:SHA),使用壓縮演算法減少資料的傳輸。同時標準主要有 SSL 和 TLS,其中 SSL v3 已知為不安全,而 TLS v1.2 相對較安全,主要是採用 AES256 進行機敏資料的加密和採用 SHA256 進行資料完整性的確認。

接著安全連線主要會進行 SSL Handshake 的流程,分別為:

  1. 客戶端透過協定傳送 Hello 訊息、隨機數值、密碼套件清單和壓縮方法。
  2. 伺服器透過協定、隨機數值、密碼套件和壓縮方法傳送 Hello 訊息。
  3. 伺服器傳送公開金鑰的憑證。
  4. 伺服器傳送 Hello Done 訊息。
  5. 客戶端驗證伺服器,主要將會傳送公開金鑰憑證和加密在伺服器公開金鑰中的預先私密金鑰。
  6. 伺服器驗證客戶端,主要伺服器和客戶端將會建立共同私密金鑰。
  7. 客戶端傳送加密規格讓伺服器知道如何進行加密。
  8. 伺服器傳送加密規格讓客戶端知道如何進行加密。

其中 SSL 需要公開和私密金鑰配對,在進行 SSL Handshake 的初始階段時,伺服器將會傳送公開金鑰至客戶端,以及客戶端會傳送公開金鑰至伺服器,但是私密金鑰永遠不會發送至任何地方。在進行 SSL Handshake 的流程中,發送者將會透過配對金鑰中的私密金鑰對秘密進行加密,再由接收者使用配對金鑰中的另一個私密金鑰進行解密,一但 SSL Handshake 完成公開和私密配對的金鑰就不再被使用。此外,公開鑰對主要是儲存在憑證檔案中和私密金鑰主要是儲存在金鑰檔案中,為了傳送憑證,發送者必須要指出哪個公開憑證能夠存取私密金鑰,並且安全伺服器永遠傳送憑證至客戶端,客戶端也可能被要求傳送憑證至伺服器。

再來憑證如何被接收方進行驗證,主要會進行下述三件確認事項,分別為:

  1. 確認憑證沒有過期和被撤銷。
  2. 確認憑證中的通用名稱 (Common Name,CN) 將用於發於發送憑證的主機。
  3. 確認憑證中列出憑證頒發機構 (Certificate Authority,CA) 是已知和有效的。若是憑證中還有中繼憑證頒發機構也必須經過驗證,以利建立憑證鏈。

其中 SSL 主要使用憑證來描述使用的公開和私密配對金鑰,主要是使用 X.509 標準定義憑證中包括的訊息,像是通用名稱、公開金鑰、由憑證頒發機構所產生的簽章,以及憑證的格式主要有三種,分別為:

  1. DER (Distinguished Encoding Rules):主要是由 X.690 所定義的二進位檔案輸出。
  2. PEM (Privacy Enhanced Mail):主要是帶有 BEGIN 和 END 標記 Base64 編碼的 DER 檔案,同時一個憑證檔案中可以有許多的憑證。
  3. P12 (PKCS12):主要在檔案中同時具有公開金鑰和私密鑰的檔案格式,其中私密金鑰是被密碼所保護,同時在 Windows 平台上也被稱為 PFX 格式。

至於我們要如何查看憑證,則主要在網際網路選項中選擇「內容」->「憑證」進行查看和安裝憑證,以及可以透過 Microsoft Management Console (MMC) 工具安裝憑證,以利憑證儲存至所有的使用者中進行應用。請注意必須要確認所有人皆有權限存取機器中儲存的憑證檔案,憑證檔案儲存的路徑為「%ALLUSERSPROFILE%\Microsoft\Crypto\RSA\MachineKeys」。

最後我們可以透過 OpenSSL 的指令驗證客戶端進行 SSL handshake 的流程是否正確,指令為「openssl s_client -connect www.sas.com:443 -state」,其結果輸出為:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
c:\Apache24\bin>openssl s_client -connect www.sas.com:443 -state
CONNECTED(00000148)
SSL_connect:before SSL initialization
SSL_connect:SSLv3/TLS write client hello
SSL_connect:SSLv3/TLS write client hello
SSL_connect:SSLv3/TLS read server hello
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA
verify error:num=20:unable to get local issuer certificate
SSL_connect:SSLv3/TLS read server certificate
SSL_connect:SSLv3/TLS read server key exchange
SSL_connect:SSLv3/TLS read server done
SSL_connect:SSLv3/TLS write client key exchange
SSL_connect:SSLv3/TLS write change cipher spec
SSL_connect:SSLv3/TLS write finished
SSL_connect:SSLv3/TLS write finished
SSL_connect:SSLv3/TLS read change cipher spec
SSL_connect:SSLv3/TLS read finished
---
Certificate chain
0 s:/C=US/ST=North Carolina/L=Cary/O=SAS Institute Inc./CN=*.sas.com
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFQzCCBCugAwIBAgIQCBUFBAbEG2mfaYUuCY58SDANBgkqhkiG9w0BAQsFADBw
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz
dXJhbmNlIFNlcnZlciBDQTAeFw0xNTA0MjMwMDAwMDBaFw0xODA0MjcxMjAwMDBa
MGYxCzAJBgNVBAYTAlVTMRcwFQYDVQQIEw5Ob3J0aCBDYXJvbGluYTENMAsGA1UE
BxMEQ2FyeTEbMBkGA1UEChMSU0FTIEluc3RpdHV0ZSBJbmMuMRIwEAYDVQQDDAkq
LnNhcy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4JccuNlsh
5qomSFWEfjZ2vxnCfWdTXeSVAdI8sf6OFVlCkAFk7615ATJdkU+d/5KR7vW3S5L8
nSkRRydebEK5ubBqzCM2+10XFRB9r2KZRUkdWq+hEa8ooYZtyiph1M/5NPCDfb+i
jWU6wk4ccFNfMHNFLxUHxePfldknJFZfohjAJqcnl1CsEThrXwrsAfA+YdMsQTGj
MAKcl6Pt3vlQGl7y0u7cYqdaMb6Doxsnype5XZrB0bzb3fhgpGlCX9oy/lnMbzjY
P6XbZWTFMpf7bpV/JVeJFCHjUTsCsP+vuEPQJTuN7pDLfV1b9Gg2ojKubc16XWqa
8q6CrObWASXNAgMBAAGjggHhMIIB3TAfBgNVHSMEGDAWgBRRaP+QrwIHdTzM2WVk
YqISuFlyOzAdBgNVHQ4EFgQUmendREGu/CV+UfnHWshYXItQkuowHQYDVR0RBBYw
FIIJKi5zYXMuY29tggdzYXMuY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAU
BggrBgEFBQcDAQYIKwYBBQUHAwIwdQYDVR0fBG4wbDA0oDKgMIYuaHR0cDovL2Ny
bDMuZGlnaWNlcnQuY29tL3NoYTItaGEtc2VydmVyLWc0LmNybDA0oDKgMIYuaHR0
cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItaGEtc2VydmVyLWc0LmNybDBCBgNV
HSAEOzA5MDcGCWCGSAGG/WwBATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5k
aWdpY2VydC5jb20vQ1BTMIGDBggrBgEFBQcBAQR3MHUwJAYIKwYBBQUHMAGGGGh0
dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBNBggrBgEFBQcwAoZBaHR0cDovL2NhY2Vy
dHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkhpZ2hBc3N1cmFuY2VTZXJ2ZXJD
QS5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAQEAW2nmp0OXrUKa
FzgRXdpdqYwBdQaofA6w3PbYMTtwonR+lJ6EjVwyIUzETluZspX0LreyjZThOy4o
cP92L+xkNkM/49l5tkNJF6ZXlb6p9P/4SEhMfIRu24q1FC8V55L6l3mC/Vp4uoat
C8OAokDcBmQIlYDOOPli8PdhV6iEuXZd5RV5YPgFh3KXsb1xjVoZo8JMksmIXNe4
8BO8fylAk1GI0tW4S+WTtDXcDvl2ylU4/tdx/YmoDMPxxkwOlbrIfhH3PSrCWXW1
KVvB4BR52NihcK19p/UhkBA7rblsgwiK3EaWWEs22QaBEjJDqgtceUpWJZJrtZom
TTPK+eMf8w==
-----END CERTIFICATE-----
subject=/C=US/ST=North Carolina/L=Cary/O=SAS Institute Inc./CN=*.sas.com
issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
---
No client certificate CA names sent
Peer signing digest: SHA256
Server Temp Key: DH, 1024 bits
---
SSL handshake has read 3252 bytes and written 366 bytes
Verification error: unable to get local issuer certificate
---
New, TLSv1.2, Cipher is DHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : DHE-RSA-AES256-GCM-SHA384
Session-ID: B04F6359E4F2B79C59D66C890DFB1EE79D1CFEDD0A8D1401577836EB5C0BEE75
Session-ID-ctx:
Master-Key: DE7C03273C799D36744D82594F6C9B1BC009E1C523723383A7C6C65203AED436D9355AADB96C7F826E5E69E8A533AFE6
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1512870383
Timeout : 7200 (sec)
Verify return code: 20 (unable to get local issuer certificate)
Extended master secret: no
---

總結在 SAS 9 平台中我們能夠進行 SSL Handshake 流程以利客戶端透過 HTTPS 安全連線的方式存取 SAS 9 平台。

相關資源

⬅️ Go back