國科微首席科學家康新海
康新海:了解國科微的都知道,我們是一家從事芯片開發(fā)的公司,我們開發(fā)的芯片涉及IOT和一些消費級以及企業(yè)機的存儲芯片。
今天為什么我站在臺上講存儲系統(tǒng)的安全?回答這個問題之前,我想分享一下我對業(yè)界科技發(fā)展的一個看法。
我一直認為,技術的發(fā)展其實是一個螺旋上升的過程,所以走到一定時候的時候,我們發(fā)現(xiàn)好象歷史在重演,就像今天上午有位嘉賓說有時候感覺很吊詭,我的感覺也是這樣。
舉例子,在互聯(lián)網(wǎng)出現(xiàn)之前,大家都很辛苦的開發(fā)基于windows的程序,當互聯(lián)網(wǎng)火熱以后,應用程序開始慢慢的消沉,轉成網(wǎng)頁的操作;智能手機出現(xiàn)和普及以后,大家現(xiàn)在都是用APP,但我個人不喜歡用APP,我每次手機瀏覽百度的時候,總是讓我安裝APP,但是不管怎么樣,可能我反潮流,但是潮流就是這樣,似乎又重復的回到了之前的時代。
還有一個例子,我們存儲的設備,在最開始我上大學的時候,要去訪問一個硬盤,我們要知道數(shù)據(jù)在硬盤的哪個柱面、哪個磁頭、哪個扇區(qū)。那時候我們用CHS而不是現(xiàn)在的LBA來尋址。更復雜地應用程序可能需要直接訪問磁盤控制器的寄存器,而且硬件和軟件都沒有標準化。后來慢慢的開始出現(xiàn)一些標準,從高層的應用層協(xié)議,比如ATA協(xié)議出現(xiàn)了,控制器芯片的接口,比如說基于PCIe的,就出現(xiàn)了最早的IDE到后來的AHCI,還有現(xiàn)在對于閃存來說有NVMe這樣一個標準的協(xié)議,把這些標準化以后,應用層就變得比較簡單了。這個時候我們就發(fā)現(xiàn)存儲設備做的越來越復雜,當然這也得力于芯片技術的不斷發(fā)展,在一個嵌入系統(tǒng)里的CPU越來越強大,所以存儲設備自身做的事情越來越多,也越來越復雜,特別是到了SSD,由于Flash重寫之前要擦除,導致SSD軟硬件非常復雜。隨著顆粒的成本不斷的下降,我們對控制器本身的成本要求也越來越嚴格,雖然現(xiàn)在SSD閃存顆粒的價格下降了,但是DRAM價格沒有下降,于是SSD里面的RAM很少。但是大家對性能要求沒有降低,反而時要求越來越高,包括了帶寬和訪問的時延,這樣SSD越來越復雜。當數(shù)據(jù)中心云計算等領域開始大量使用SSD以后,很多人希望在上層直接控制顆粒,而不是說通過一個Flash Translation Layer (FTL)。就像剛才那個朋友說的,讓應用層直接控制顆粒,讓主機側的軟件來做閃存的管理,包括FTL、磨損均衡等等。
但是我們現(xiàn)在又發(fā)現(xiàn)一個問題,隨著人工智能的火熱,大家希望把人工智能和深度學習的功能放進存儲設備里來做一些所謂的智能設備,又重新把復雜的功能拉到了SSD里??傊覀兊闹饕δ茉诓粩嗟淖兓?,有一段時間可能在設備里,有一段時間會被拉到主機側,又被拉回來。
我舉例子的原因是為了引入我開始給我自己提出的問題,為什么作為芯片公司的人要談系統(tǒng)的安全。
我認為單純做芯片不能說沒有出路,但很辛苦,做芯片的必須要和系統(tǒng)緊密結合,做出不管是存儲還是加速的芯片,不能說做一個芯片,告訴你怎么樣訪問我的芯片,你去做其他的事情,這樣不行,必須要深入的了解系統(tǒng)時如何使用存儲設備的,切入到系統(tǒng)的領域來,才能充分的發(fā)揮系統(tǒng)芯片的功能,設計出更好的芯片。
當然,數(shù)據(jù)的安全或者說信息安全其實是一個很泛的課題,包括物理安全,容災,包括網(wǎng)絡的安全,服務器本身系統(tǒng)的安全,但是今天我會著重講密碼學在存儲系統(tǒng)安全中的應用和國科在上面所進行的工作。
安全層面,基本上要解決這幾個問題,第一,機密性,必須保證數(shù)據(jù)不能被不該看的人看到,第二個,完整性和真實性,也就是數(shù)據(jù)放在那里,你雖然看不到,因為你沒有被授權,我也不能讓你修改,或者你修改了我的數(shù)據(jù)我是能知道的,比如說我有一段視頻,被你篡改了,我都不知道,那么可能真實性完全沒有了,我看到的內容完全是錯誤的,第三個重要的方面,抗抵賴,你送給我一段消息,張三送給我的,我一定要確認是張三送的,
說安全一定要談攻擊,但是今天我只想說一點,攻擊者對加密數(shù)據(jù)的破解可能超乎你的想象。現(xiàn)在的密碼學算法本身都是公開的,也必須公開,一個靠保密算法來實現(xiàn)安全的措施,基本上可以說是耍流氓,所以算法是公開的,破解者甚至可以根據(jù)硬件在執(zhí)行一個算法的過程里,所花費的時間、所消耗的功耗已經(jīng)電磁輻射破譯出密鑰,對于數(shù)據(jù)加密來說,如果密鑰被破解了,數(shù)據(jù)基本上一覽無余,所以我只是想強調一下數(shù)據(jù)安全的重要性,別人破解你的手段是很高的。
應用安全密碼學的算法基本上都是很成熟的算法,對應剛才說的三大課題,其實在密碼學里有三大類的算法,有對稱密鑰算法和雜湊算法和非對稱密鑰算法,當然他們并不是一個算法只解決一個問題,有時候是多類算法聯(lián)合起來,可以實現(xiàn)剛才安全的服務,所以這是三大類算法。
說到密碼學,有重要地一點,就是密鑰,因為所有的東西都是靠密鑰實現(xiàn)保護的,那么密鑰的管理就包括密碼的生成、密鑰的生成、密鑰的存儲和交換、密鑰的使用、更替、銷毀等等,這些都是很重要的課題。比如說密鑰生成,通常做數(shù)據(jù)加密的時候,我們都會用所謂的對稱加密算法,用一個128或者256比特的密鑰,這個密鑰通常就是一個簡單的隨機數(shù)或者通過一個隨機數(shù)通過特定運算生成,但是對這個隨機數(shù)就會有一寫要求,比如說我們隨便在電腦上調一個高級語言的函數(shù)產(chǎn)生一個隨機數(shù),這個隨機數(shù)我們叫偽隨機數(shù),都是靠算法實現(xiàn)的,是可重現(xiàn)的,如果是這種方式實現(xiàn)隨機數(shù),來生成一個密鑰,那是非常不安全的,所以通常來說安全的方法一定要有一個真正的隨機數(shù),這個只能是靠硬件實現(xiàn),而不能靠軟件實現(xiàn)。
密鑰其實有很多很多種,根據(jù)我們最佳實踐,最安全的方法是一個密鑰只能是做一件事,而且一個密鑰只能是保護盡量少的數(shù)據(jù),如果一個密鑰保護了太多的數(shù)據(jù),密鑰被破解的幾率就會大大增加。我們可以看到一系列各種各樣的密鑰,比如對稱加密密鑰、非對稱密鑰,隨機數(shù)生成密鑰、簽名密鑰、驗證密鑰、交換密鑰、導入導出密鑰等等,五花八門。
剛才我簡單的介紹了跟安全有關的一些密碼學的知識,下面再來看一看落到存儲系統(tǒng)里,數(shù)據(jù)安全到底要保護什么數(shù)據(jù),我們的數(shù)據(jù)可以分為三大類,第一,動態(tài)數(shù)據(jù),第二,靜態(tài)數(shù)據(jù),第三,工作數(shù)據(jù)。
什么是靜態(tài)數(shù)據(jù)?靜態(tài)數(shù)據(jù)就是已經(jīng)保存到到存儲介質上的數(shù)據(jù),這個數(shù)據(jù)一定要保護,不然別人把你的盤偷走了,你的數(shù)據(jù)就沒有了。第二,動態(tài)數(shù)據(jù),因為數(shù)據(jù)不是靜止的,特別是現(xiàn)在的分布式時代,數(shù)據(jù)應用程序在很遙遠的地方,要從存儲設備把數(shù)據(jù)讀取出去,都要經(jīng)過各式各樣的網(wǎng)絡和網(wǎng)關以及各種各樣的服務器,這個數(shù)據(jù)在流動過程里任何時候都可能會被別人攔截,所以動態(tài)數(shù)據(jù)是需要保護的。還有正在被使用的數(shù)據(jù),比如你把數(shù)據(jù)已經(jīng)從數(shù)據(jù)中心拿到本機了,你在使用它肯定會在內存里留下痕跡,這個時候也有可能別人如何黑到你的電腦里,你正在使用這個數(shù)據(jù),也會被人竊取,所以這個是安全領域需要解決的三大類數(shù)據(jù)的保護。
這個圖是來自ISO關于存儲安全的一份文檔的圖,描述了數(shù)據(jù)從左側到最右側,右側是存儲設備,就是靜態(tài)的數(shù)據(jù),在最左側是一些客戶端,在使用數(shù)據(jù),或者說產(chǎn)生一些數(shù)據(jù),數(shù)據(jù)總是有的地方產(chǎn)生,我們姑且稱之為數(shù)據(jù)源,這些數(shù)據(jù)中間要經(jīng)過網(wǎng)絡,網(wǎng)關和各個服務器,最終到存儲設備,我們選擇安全的時候,必須要選擇在什么地方去實現(xiàn)數(shù)據(jù)的加密,我們可以選擇在應用層加密,也就是我的數(shù)據(jù)一產(chǎn)生就把它加密,把數(shù)據(jù)發(fā)送到網(wǎng)絡,發(fā)送到存儲的系統(tǒng)過程之前,就把它加密,這樣是最安全的,我們就不用保護網(wǎng)絡了,我們也不用保護存儲設備了,數(shù)據(jù)一產(chǎn)生就被加密了。
第二類方式,我們選擇在文件系統(tǒng)加密,因為你去改一個應用程序,比如應用程序產(chǎn)生數(shù)據(jù)的時候,一定要加密,這個很嚴格,你要改應用程序,太多了,我們不妨選擇在文件系統(tǒng)層加密,應用程序調用標準的文件訪問接口讀取文件的時候,我們寫文件的時候加密,讀文件的時候解密,文件系統(tǒng),不管是集中式的文件系統(tǒng)還是分布式的文件系統(tǒng),都有一些加密的文件。
另一個選擇,可能在網(wǎng)絡層加密,做一個加密網(wǎng)關,數(shù)據(jù)在這里就加密要讀出去時候解密,這是網(wǎng)絡層。
最后一個層,在存儲設備層來加密,這是最底層的加密,理論來說在應用層加密是最安全的,但是它最復雜的,存儲設備層加密是相對最簡單的,但是是最不安全的,前面還有一條暢長的路,沒有得到保護。
這里是一個存儲系統(tǒng)的邏輯拓撲圖。一個存儲系統(tǒng)集群,無非就提供了不同訪問類型的接口,就是快存儲接口、文件存儲接口、對象存儲接口,我可以提供不同的服務,在不同的服務上有不同的應用,比如云計算,網(wǎng)關服務,共享文件服務,流媒體服務。
我們看一個物理圖。
存儲系統(tǒng)集群是很多的服務器和很多的存儲設備,在上面有各種各樣的接入服務器,或者說叫網(wǎng)關,有塊存儲網(wǎng)關和文件存儲網(wǎng)關和各種網(wǎng)關做協(xié)議的轉換,最上面有一些計算節(jié)點,就是數(shù)據(jù)源存在的地方,選擇安全的方案時可以在最底層的磁盤加密,就像現(xiàn)在我們使用很多的自加密硬盤,也可以選擇在這些各類接入服務器做協(xié)議轉換的時候進行加密,可以選擇在計算節(jié)點進行加密,就像剛才說的我們理想的情況是應用層加密,其實比較難實現(xiàn),但是有一個特例,就是虛擬計算,虛擬計算我們可以這么理解,其實宿主機每一個虛擬機就是一個數(shù)據(jù)源,在虛擬機環(huán)境下很容易的實現(xiàn)應用層的加密,虛擬機有一個虛擬硬盤,做一個啟動盤,也會使用存儲設備的存儲,通常有幾種方式,一個是以本地文件的方式,遠程的文件系統(tǒng)放到宿主機上,用本地的文件做一個虛擬盤,也可能連到存儲設備上。
我下面介紹一下我們在存儲安全領域的一些工作。作為一家芯片公司,我們提供了一些存儲和加速芯片,提供了加密學各類算法的硬件實現(xiàn),比如對稱算法,非對稱算法,密鑰存儲,等等。提供不同的接口形態(tài),有USB接口,SATA接口,還有PCIe接口以適應不同的應用場景,我們也提供中間件,包括驅動和應用軟件的接口,針對不同的特別是開源的分布式的文件系統(tǒng),包括ceph和Gluster和插件,在ceph基礎上怎么應用中間件實現(xiàn)數(shù)據(jù)的安全。
我的匯報就到這里,我們的口號是,“你的數(shù)據(jù),我們?yōu)槟闶刈o”。
謝謝大家。