iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 24
3
Security

資料安全與簡單加密演算法見面會 系列 第 24

[Day24] 資料傳輸安全(通道加密)

記得10幾年前的古時候,史丹利還是Mainframe大型主機的Cobol工程師時(對!一種既古老但又經典的商業語言),有幸參加了兩家銀行的合併專案,專案中大概要執行10幾次的資料轉換測試演練,還是小菜的史丹利經常被排到值班要執行轉換Job的任務。

當中有幾次的任務很特別,因為假日的晨間沒有專人可以送磁帶(TAPE),於是史丹利就被主管請求幫忙先到到A銀行的機房找機房OP大哥取磁帶,揹著幾捲存放著A銀行測試資料的3590磁帶走出資訊處後,騎著既拉風又帥氣的50cc小銀到B銀行機房,路程大約6-7km,通過了門禁,然後再拜託B銀行機房OP大哥幫忙mount Tape掛載磁帶,然後送出submit job的command進行資料轉換,開始忙碌充實的轉換日。

先不考慮道德風險和年輕史丹利騎車騎太快的問題,想想以前這個過程好像也還蠻理所當然的,這樣的資料傳遞也許和快遞差別不大,不過仔細一想,如果是身材魁武的保全有著武裝(反光背心 x 伸縮警棍)再加上厲害的保全車來送,好像就有差別了,在檔案傳輸中,有沒有用上通道加密也就像這樣的差距,176cm vs 183 cm

為了確保資料傳輸的機密性、可識別和完整性,前面幾天,我們用了檔案雜湊、MAC值、數位簽帳及混搭檔案加密演算法來確保車輛本身的安全。除此之外,對於道路的安全也必須要重視,在網際網路的傳輸通道(tunneling )中,常見的加密解決方案有:

  • FTPS(SSL\TLS)
  • SFTP(SSH)
  • VPN(Virtual Private Network)

依據PA DSS的標準,資料的傳輸也有標準需要遵循。

根據PA DSS 需求8 安全的網路: Facilitate secure network implementation

The payment application must only use or require use of necessary and secure services, protocols, daemons, components, and dependent software and hardware, including those provided by third parties, for any functionality of the payment application.

根據PA DSS 需求11 如果透過公眾網路傳輸,加密敏感的交通傳輸內容 :Encrypt sensitive traffic over public networks

If the payment application sends, or facilitates sending, cardholder data over public networks, the payment application must support use of strong cryptography and security protocols(for example, SSL/TLSIPSEC, SSH, etc.) to safeguard sensitive cardholder data during transmission over open, public networks, including at least the following:
• Only trusted keys and certificates are accepted.
• The protocol in use only supports secure versions or configurations
• The encryption strength is appropriate for the encryption methodology in use

這邊我們先複習起檔案類型的傳輸,在複習FTPS/SFTP之前,我們先淺淺的認識她們的爸爸FTP。

FTP(File Transfer Protocol)


中文是檔案傳輸協定,是一種網路檔案傳輸的標準,一個古典的網路傳輸技術之一。

FTP通常使用21 port作為命令通道,讓主從雙方先握手建立連線ACK x SYN驗證,再依照是否啟用被動模式與否決定是否傳送PASV或指定PORT來確認資料傳輸port(通常是20),接著就開始進行STOR下載檔案或RETR傳送檔案,最後使用FIN結束連接,(以上的通訊內容全部都是明文喔)。

尤其是密碼和資料封包
http://ithelp.ithome.com.tw/upload/images/20170112/20103434vAFyIv45vE.png

測試看看攔截封包
http://ithelp.ithome.com.tw/upload/images/20170112/201034348BpwZQ8aqi.jpg
都看到了。

即使到了現在的文明世界,FTP在企業內網(Intranet)的環境下還是一個經常被使用到的檔案傳輸技術,不過由於FTP帳密和檔案內容都使用明文傳輸會有被竊聽或竄改的風險,90時代初期,FTP也開始有了加密連線的使用,她可以避免傳輸過程中部分的中間截取行為。

Client端使用FTP方式(C#)

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp網址目錄");
request.Method = WebRequestMethods.Ftp.UploadFile;

FTPS(FTP over SSL/TLS)


由於ftp的明文傳輸風險,90年代後,加密的ftp(ftpS)應天命而生,就像http有https陪伴,ftp也有ftps。
Ftp會透過安全通訊端層(SSL)或傳輸層安全(TLS)通訊協定,讓檔案傳輸受到加密保護,減少不必要風險。

FTPS Wiki

傳輸層安全協議(英語:Transport Layer Security,縮寫:TLS),及其前身安全通訊協定(Secure Sockets Layer,縮寫:SSL)是一種安全協定,目的是為網際網路通訊,提供安全及資料完整性保障。網景公司(Netscape)在1994年推出首版網頁瀏覽器,網景領航員時,推出HTTPS協定,以SSL進行加密,這是SSL的起源。IETF將SSL進行標準化,1999年公布了第一版TLS標準檔案。

主要的網站,如Google、Facebook等也以這個協定來建立安全連線,傳送資料。目前已成為網際網路上保密通訊的工業標準。

此外FTPS在傳輸時有兩種模式,隱含(Implicit)及外顯(Explicit):

  • 外顯(Explicit):收到AUTH SSL指令後,內容開始加密。
  • 隱含(Implicit):直接從連線一開始就使用SSL Socket進行通訊,網際網路號碼分配局IANA預設是將990作為隱含式FTPS的PORT,完成握手後,全部的內容都是加密的。

.NET FTPWebRequest Class可以支援ftps Explicit模式,但目前還沒辦使支援ftps Implicit。

Client端使用使用FTPS方式(C#)

FtpWebRequest ftprequest = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm");
ftprequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftprequest.EnableSsl = true;

支援ftps Implicit client端傳輸的第三方元件
Alex FTPS(LGPL)、chilkat(付費)

SFTP(SSH File Transfer Protocol) SSH Protocol standard (RFC 4253)


中文是安全檔案傳輸通訊協定,SFTP也是FTP的替代方案,不過他是透過安全殼層Secure Shell(SSH)通訊協定傳輸,是SSH內建的檔案傳輸服務,如果檔案伺服器是Linux,sftp是很常見的選擇。

最近也發現越來越多支付機構或是運輸組織使用SFTP替代FTPS,也碰到有的機構使用SFTP後在檔案規格中就不再對檔案本體加密,不過這就看資料安全的需求來決定了。

支援client端SFTP的第三方元件,但要注意是否apply新的加密或壓縮演算法。
http://www.sftp.net/client-libraries

攻擊事件


行政院國家資通安全會報技術服務中心的技術建議:
關閉不安全的通訊協定SSLv2,避免遭受中間人攻擊:

攻擊者可利用SSLv2協定的安全性漏洞,破解金鑰交換加密演算法,以取得加密金鑰,進而還原加密封包,解析通訊內容。

建議使用TLS協定架站並使用較高強度的加密演算法。

  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA

另外也需要注意OPEN SSL Toolkit加密函式庫的問題,相信大家還記憶猶新兩年前(2014年)的Heartbleed 心臟出血漏洞

臺灣企業開始因應OpenSSL超危險漏洞 戰國策、聯卡中心搶先修補
http://www.ithome.com.tw/news/86615

VPN(Virtual Private Network)

中文是虛擬私人網路,主要有IPSec及SSL兩種網路層及應用層的安全協定,但記得要啟用加密協定才能發揮效果。

另外也可以使用ISP業者的國內VPN方案。
https://zh.wikipedia.org/wiki/%E8%99%9B%E6%93%AC%E7%A7%81%E4%BA%BA%E7%B6%B2%E8%B7%AF


如果要手動收送檔案,不管是ftps或是sftps,open source的filezilla client是我們很重要的夥伴。
使用了加密通道還有一個副作用,就是企業內的DLP(Data Loss Prevention)可能沒辦法有效偵測SSL通道內加密資料,也許檔案加密出去前,需要一個許可證作為辨識。

雖然文件的加密不是資訊安全保護的終點,但透過檔案加密還有通道加密的兩道措施下,資料的傳輸安全算是也往前邁出一大步了。

好,我們簡單用一天複習安全的加密傳輸,接下來我們就要邁入最後兩個部分:

  • 簡單加密演算法
  • 加密演算法在支付產業的應用

參考


FTP Wiki
https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE

FTPS Wiki
https://zh.wikipedia.org/wiki/%E5%82%B3%E8%BC%B8%E5%B1%A4%E5%AE%89%E5%85%A8%E5%8D%94%E8%AD%B0

行政院國家資通安全會報技術服務中心:關閉不安全的通訊協定SSLv2,避免遭受中間人攻擊
https://www.nccst.nat.gov.tw/NewInfoDetail?lang=zh&seq=1471

臺灣企業開始因應OpenSSL超危險漏洞 戰國策、聯卡中心搶先修補
http://www.ithome.com.tw/news/86615

PIC Security
https://www.pcisecuritystandards.org/pci_security/

米蘭警察
http://ithelp.ithome.com.tw/upload/images/20170108/20103434dzTFK3ZK24.jpg

2011.10攝於Milano,Italy


上一篇
[Day23] 資料傳輸安全(機密性) RSA x AES 混搭風(下)
下一篇
[Day25] 簡單加密演算法見面
系列文
資料安全與簡單加密演算法見面會 30

2 則留言

1
虎虎
iT邦新手 3 級 ‧ 2017-01-10 22:00:50

謝謝史丹利大大分享!!!
這篇我超需要的 >///<

我要留言

立即登入留言