技管思維 logo

技管思維

Subscribe
Archives
May 27, 2023

資安的四個迷思及唯一解法

資安就是往三個方向想而已

「資訊安全」的層面很廣,對軟體或平台建置/維運相關人員來說一定可以理解。但以我自身一點點相關領域的經驗,再加上曾和身邊優秀的導師共事,讓我理解到資安的落實細節確實很多,但方向倒沒有很多,就三個方向而已,就是讓被保護的目標:

  1. 改不動:不可被更動,1個bit都不行。
  2. 看不懂:無法直接被人類看懂或理解。
  3. 帶不走:就算改不動也看不懂,但也不能被複製。

以往,資安的觀念並沒有那麼被系統化的整理過,尤其是在中小企業。就算是大企業,也只是外包給廠商去規劃,自己去執行,但對於廠商的規劃項目,並不知道為什麼要這麼做,要保護什麼,要預防什麼。因為不夠清楚背後的理由,所以真的在執行的過程,只感到很麻煩,平常很順暢的工作流,硬是為了資安而綁手綁腳。

隨著環境和攻擊者的手段一直在進化,近年來最重要的一個資安觀念,莫過於「==零信任(Zero Trust)==」這個觀念。如果說以往的加密技術做到了「看不懂」的目標,數位簽章技術解決了「改不動」的問題,那「零信任」的實作及落實,就算是很大程度的滿足了「帶不走」的需求。尤其是離線的遊戲產品,很多時候這種產品的大部分成本也就是裡面的一個主程式而已,剽竊者拿得到就可以有很大的獲利空間,他也不用看得懂,也不需要修改它,能弄到會跑就行了。

為什麼我會說”很大程度”而已呢?因為另一個不是技術的問題則是「社交工程」。

「人」一直是任何完美系統中的唯一缺點,「社交工程」攻擊手段就是對「人」下手的。不管系統有什麼限制還是設計,只要是給「人」用的,就很難解決「帶不走」的問題:人的眼睛一看到就帶走了,一聽到也是帶走了,除非不是給人用的,否則是不可能有100%完美的防御手段的。

在真的往下看所謂的「建議」以前,若需要更具像化的理解什麼叫「零信任」或是「社交工程」的,可看一下我和ChatGPT的問答,以下的說明或建議,就是在零信任的觀念下提出的。

中小企業常見的資安迷思

中小企業因為無足夠的人力及心思去更新,去跟上目前的資安資訊,因此許多迷思是在過去的環境(網路,技術,作業流程等)建立起來的。不能說是”錯的”,因為在過去確實是對的。但現在是2023年,過去的觀念在現在看來就是迷思,就是需要修正及學習。

1. 防火牆

我不太確定這是幾年前的資安思維:以為只要資料放在防火牆內,就認為是有保護?

在到處都是SaaS(Software as a Service)的情況下,線上協作文件系統,工項追蹤系統,源碼版控系統,即時通訊工具…都已是在Internet的環境下運行的。以SaaS這麼普及的視角看來,在防火牆內的資料或工具,任何一個在Intranet裡的系統或流程,它就是效率,品質和自動化的阻礙節點。

想想大家「現在」的工作場景是什麼就知道了。常走來走去的幹部,因為無法在自己的座位上收信,可又非常需要有即時的訊息同步需求,能滿足需求的自然就變成了第三方提供的即時通訊,文件/影片平台,即時數據系統等的各種服務。要能在這種場景下”辦公”,表示重要到能產生行動和決策的資料,能上的Internet的都上了,剩下在Intranet的,不是不重要的,就是不急的,不然就是不常用的。

企業對防火牆的理解,和中國的「網路長城」差距並不大,以為長城可抵御外敵,也可防止資訊流出。

因此會採購許多”高端”的工具,來防止員工把資料輸出到防火牆的外面。這個作法,只能說在”戰技”上,勉強算是對的,在戰術和戰略上都是錯得離譜,因為這只是把資料的生成現場給推到防火牆外而已,就像剛剛提到的,為了能實現行動辦公,大家根本不會在Intranet中作業,而是第一時間就使用Internet的工具作業,生成資料進行協作。所以防火牆的思維只是把資料的安全責任推給員工,自己把頭往沙堆一埋,自認為「資安做得真好」而已。

在牆內的資料是安全的,在牆內的系統是安全的,對。只是重要的資料和行動都發生在牆外。

在「零信任」的觀念下,網路只是存取的管道的一種,可==在「微分段」或「最小權限」的前提下,成為一種限制的手段==,但不能是全面的,系統性的預設設定。過多或是不合理的限制,都是在”提醒”用戶去思考「我要不要把資料放進來受到保護」這個問題。每問一次,就增加一次控管不到的風險。因此應將公司內大家作業流程會接觸到的必要資源,放到外網存取得到的位置上。讓員工的辦公需求,不要一直被防火牆給擋下來,不要挑戰員工直接用外網辦公的欲望,防火牆防不了這種事的。

2. 文件的迷思

我也不是很確定,有多少中小企業中的多少人對「文件」的理解,還是處於「doc/xls/ppt/pdf」這種離線文件的概念🤔。

如果認為「文件」就是那些離線檔案,就好像還以為聽音樂或看影片一定要用光碟片一樣的不可思議。當然,公司內還有許多文件是這樣在流通的:我附在信件給你;你貼在LINE裡面給我;我複製到xxx公電裡面;你上傳到NAS(Network Attached Storage)裡給我…也許有人認為,把文件上個鎖,加個密,就很安全了不是嗎?是的,如果我們要解決的是「看不懂」的問題的話,這是個好辦法。但可惜的是,這早已不是我們面對的資安挑戰。文件一離線,即意謂著失去了版本歷史,存取權限,刪除及建立複本的控管,這每一項都是致命的資安漏洞。

如果我們真的認為「文件」真的是重要資產,我們就不能再”沈迷”於過時的觀念(「沈迷」這個詞我覺得不算誇張😅)。真的需要被控管的文件,就應該是一份線上的文件。真正要落實所謂的資安政策或是控管的話,該做的就是在有網路環境的使用場景下,==全面禁止離線文件的使用,強力要求文件只能在線上創建及協作==。因為在「零信任」的概念下,唯有在線上的文件,才能有所謂的「身份,權限,分段和監控」的相關實作。

當然,若是確實有離線環境的場景(比如說街機產品)下,當然就繼續使用離線的文件。不用因噎廢食。

3. 即時通訊工具的迷思

如果有朝一日,我必須向朋友說明,在2023年的今天,我們公司只能在Windows桌機裡的Outlook 2010才能收信,我不曉得他們會露出什麼表情?尷尬又不失禮貌的微笑😬?

即時通訊工具(Instant Messaging tool,簡稱「IM」),本質上是指能即時傳送及接受訊息的工具,所以不是LINE或是Telegram才叫做IM,本質上郵件或簡訊就可以叫IM了,不但是現在工作的常態,也是資安最大的漏洞之一。要知道在知識產業裡,一個關鍵的Know-How可能比產品本身還重要,影響力還來得巨大(想想可口可樂的”神秘配方”就可以理解了)。

當公司完全沒有針對IM做任何的規劃及管理時,等於就是完全放任最新的發現,最前線的”戰況”(產品銷售後的狀況),或是最重要的魔術數字(重要的參數)等資訊,在這些通訊頻道裡”自由流通”。若我們耗費了大量的資源,部署了先進的工具,去防堵文件或源碼被傳輸帶走,但卻沒在IM上管控,這就表示資安團隊的思維還停留在「資料」,而不是「資訊」。

文件是BI(Business Intelligence)的重要傳承媒介(也許快要不是了)之一,雖說是重要資料,但也是落後資料;源碼是產品的重要構成要素,但佔成功產品/服務的比重也越來越低了。這兩件事有一點是共同的,就是最關鍵,能產生最大價值的資訊,跟它的大小及型式並沒有關係。文件中95%的資訊可能都是網路搜尋得到的內容,但那5%就決定了我們的產品品質比競品好;源碼中95%的內容都是開源社區抄來的,但就是那5%的實作決定了玩家願意付費玩我們的遊戲。因為只有5%,所以很容易,也很有可能,會透過不受管控的IM流出。

在「零信任」的概念下,公司應提供一套能==掌握身份認證,權限控管,內容加密及記錄留存==的IM給所有員工使用,只要是公事就必須在這兒交流。如果大家不喜歡「郵件」這東西,要發訊息就得想標題,那像Slack或是Teams這種企業面向的通訊軟體,都是很好的解決方案。LINE/Telegram這類無法Self-Hosting的工具,非但很容易造成員工的”公私不分”以外,每個頻道都是一樣的存取權限的設計,也是完全滿足了攻擊者可以「橫向擴張」的意圖,絕對應該禁止拿來談公事的。

4. 源碼的迷思

2018年公視播出的《你的孩子不是你的孩子》,是一部很發人省思的劇。那時我常跟同事開玩笑,在開源社區面前,其實「你的源碼不是你的源碼」,那都是大神寫的,是貢獻給全人類的。隨著AIGC(AI Generated Content)的技術面前,你甚至只會寫註解,不會自己寫源碼,對吧?

在開源趨勢下,「從0到1」的實作幾乎是不存在的,除非那是個不合群不受控的工程師。如果一個軟體產品/專案有1000個模組,你認為這1000個模組的源碼,重要性一樣高嗎?你知道哪個模組的重要性最高嗎?專案負責人不知道就不用說了,實作工程師可能會認為自己寫的都是最重要的😅,而技術總監(TechLead)可能會告訴你的是:這1000個各自看都不重要,某幾個模組的某些片段,才是真正重要的源碼;另外,知道怎麼設計整個架構才是最重要的,源碼的本身一點都不重要。

以資安為名,設置重重的路障,想方設法來絆工程師的腳(Ex: X-Fort),綁工程師的手(Ex: TrustView),限制他做事/實驗的空間和方式(還在用SVN?),以為只要無法讓源碼被複製,或是把工程師的一舉一動都留下記錄,就是萬無一失的資安措施,我想不出有什麼更嚴重的形容或比喻,來描述對資安的天大誤解。

如果大家有打從心裡認同,「Know-How」才是最重要的,比源碼重要個1000倍的話,那接下來該做的,就是全面停止這些監控程式的使用,把剪貼簿,效能,版控系統和「信任」還給工程師。要知道,他們眼睛看得到,腦中記得住的東西,都不是這些工具擋得下來或禁止得了的。過度無謂的限制,只是在激發工程師翻牆的意圖,挑戰他們挖洞的能力而已。

在「零信任」的原則下,==掌握關鍵源碼的存取權限才是真正在落實資安==。關鍵的源碼才應該被獨立監管,唯有在事先申請的前提下,在一定時間內,才有存取該源碼的權限。而使用其源碼的人員,僅能拿到預建置好的函式庫來使用。

或許你會問,誰來決定哪些是「關鍵的源碼」?

這問題就好像你問熱狗攤老闆,不同口味的熱狗堡產品,有什麼是一定不能少的靈魂?他想都不用想一定會說是「熱狗」。我們其實也都一定回答得出這個答案,只是這個答案看起來合不合理而已。也許我們會猛然發現,某個產品的構成,還真沒有哪一塊是”關鍵”的?因為這個產品也不過就是拿幾個開源或第三方的函式庫組一組就出來了。就像一開始說到的,在軟體開發門檻已大幅降低的環境下,軟體本身本來就不是成功產品的全部,細微的效能差異,長時間運行下來的穩定度,運營的操作或是UI/UX的設計,有些關鍵甚至跟源碼沒什麼關係,而是我們對用戶的洞察,那才是關鍵。

願意信任「零信任」系統,就是資安

不管是堅持在防火牆或Intranet,還是用XFort地毯式監控,或是用TrustView預防資訊流出,我們的方向都是嘗試(妄想)用技術來做「社交工程」面的資安。或許你會說,就是因為「人」不可靠,所以只要用最大的限制手段,來盡可能預防資訊的流出,或是降低流出後的損失,那管它是「零信任」還是「社交工程」,都是最有效的資安,不是嗎?

其實這有點算是「道高一尺,魔高一丈」的問題。用這種低成本的手段,可以獲取這麼大範圍的預防及降低損失的效果,表面上看來就算是很「有效率(Efficient)」的資安,對吧?只是看到這裡的我們都知道,這完全就不是「有效(Effective)」的。因為大家都知道怎麼”翻牆”,怎麼更”有效率”的做事,才不會被這種地圖炮式的資安給綁手綁腳。

就像一開始提到的,人看得見,記得住的重要資訊,用任何工具都是擋不了的。我們要解決其實不是技術問題,比較像是人性問題。其實在「零信任」有充份落實的情況下,不管是員工的資安觀念不足,或是真的受到「社交工程」的攻擊,能造成的傷害都會減小很多。因為在「最小權限」和「微分段」的前提下,要能取得有足夠影響力的重要資訊,通常不會是1,2人的資訊就足夠。一定要騙得了足夠多的人,打通足夠多的權限及網段,湊起來的資訊才有可能造成夠大的傷害。只要在整個系統當中,沒有設計出過大權限的節點(可能是機器,更有可能是人),就很難有什麼致命的危害。

說到底,這個問題很像是「信任」問題。

當公司把資安的主角設定成那些「資料」時,想的就都是怎麼保護資料不要被流出去。可看到這裡,我們都很清楚,很多資料外洩是「人」流出去的,要嘛是他擁有過多的存取權,要嘛就是整個系統根本沒有驗證存取者的身份。==「零信任」是指不信任存取的「人」,而非不信任存取的方法或管道==。所以把資料關在防火牆內是因噎廢食的,限制工程師不可以複製資料是搞錯方向的,全面監控是事倍功半的,因為重點都不是放在「人」。如果真的要做好資安,就要在所有員工相信,在零信任的系統下,只要自己的身份被驗證通過,就可以繼續用他熟悉高效的方式工作,大家才會願意配合,自發性的在這個系統下做事。

Don't miss what's next. Subscribe to 技管思維:
This email brought to you by Buttondown, the easiest way to start and grow your newsletter.