聽說你是程序員,可以幫我盜個QQ號嗎?

聽說你是程序員,可以幫我盜個 QQ 號嗎?這個段子估計很多朋友都看過,程序員被黑過無數次。

聽說你是程序員,可以幫我盜個QQ號嗎?

圖片來自 Pexels

聽說你是程序員,可以幫我盜個QQ號嗎?

在其他人眼中,彷彿我們需要寫得了木馬,翻得了圍牆,修得了電腦,找得到資源,但凡是跟計算機沾點邊的,咱都得會才行。

段子歸段子,言歸正傳,對於咱們程序員來說,多多少少了解一些信息安全的技術知識還是大有裨益的,不僅能瞭解一些計算機和網絡的底層原理,也能反哺我們的開發工作,帶著安全思維編程,減少漏洞的產生。

本文內容:

<code>- 網絡安全
  - SQL注入
  - XSS攻擊
  - CSRF攻擊
  - DDoS攻擊
  - DNS劫持
  - TCP劫持
  - 端口掃描技術
- 系統安全
  - 棧溢出攻擊
  - 整數溢出攻擊
  - 空指針攻擊
  - 釋放後使用攻擊
  - HOOK
  - 權限提升
  - 可信計算
- 密碼學
  - 對稱加密 & 非對稱加密
  - 秘鑰交換技術

  - 信息摘要算法
  - 數據編碼技術
  - 多因子認證技術/<code>

信息安全大體可分為三個大的分支:

  • 網絡安全
  • 系統安全
  • 密碼學

下面我就這三個領域分別羅列一些常用的黑客技術,部分技術是存在領域交叉的,就將其劃入主要那個類別裡去了。

網絡安全

①SQL 注入

Web 安全三板斧之首,大名鼎鼎的 SQL 注入。

聽說你是程序員,可以幫我盜個QQ號嗎?

SQL 注入攻擊的核心在於讓 Web 服務器執行攻擊者期望的 SQL 語句,以便得到數據庫中的感興趣的數據或對數據庫進行讀取、修改、刪除、插入等操作,達到其邪惡的目的。

而如何讓 Web 服務器執行攻擊者的 SQL 語句呢?SQL 注入的常規套路在於將 SQL 語句放置於 Form 表單或請求參數之中提交到後端服務器,後端服務器如果未做輸入安全校驗,直接將變量取出進行數據庫查詢,則極易中招。

聽說你是程序員,可以幫我盜個QQ號嗎?

舉例如下,對於一個根據用戶 ID 獲取用戶信息的接口,後端的 SQL 語句一般是這樣:

<code>select name,[...] from t_user where id=$id/<code>

其中,$id 就是前端提交的用戶 id,而如果前端的請求是這樣:

<code>GET xx/userinfo?id=1%20or%201=1/<code>

其中請求參數 id 轉義後就是 1 or 1=1,如果後端不做安全過濾直接提交數據庫查詢,SQL 語句就變成了:

<code>select name,[...] from t_user where id=1 or 1=1/<code>

其結果是把用戶表中的所有數據全部查出,達到了黑客洩露數據的目的。

以上只是一個極簡單的示例,在真實的 SQL 注入攻擊中參數構造和 SQL 語句遠比這複雜得多,不過原理是一致的。

聽說你是程序員,可以幫我盜個QQ號嗎?

防禦手段:對輸入進行檢測,阻斷帶有 SQL 語句特徵對輸入。

重點關注:前端工程師、Web 後端工程師。

②XSS 攻擊

Web 安全三板斧之二,全稱跨站腳本攻擊(Cross Site Scripting),為了與重疊樣式表 CSS 區分,換了另一個縮寫 XSS。

聽說你是程序員,可以幫我盜個QQ號嗎?

XSS 攻擊的核心是將可執行的前端腳本代碼(一般為 JavaScript)植入到網頁中,聽起來比較拗口,用大白話說就是攻擊者想讓你的瀏覽器執行他寫的 JS 代碼。

那如何辦到呢?一般 XSS 分為兩種:

聽說你是程序員,可以幫我盜個QQ號嗎?

反射型如上圖:

  • 攻擊者將 JS 代碼作為請求參數放置 URL 中,誘導用戶點擊,示例:
<code>http://localhost:8080/test?name=/<code>
  • 用戶點擊後,該 JS 作為請求參數傳給 Web 服務器後端。
  • 後端服務器沒有檢查過濾,簡單處理後放入網頁正文中返回給瀏覽器。
  • 瀏覽器解析返回的網頁,中招!
聽說你是程序員,可以幫我盜個QQ號嗎?

存儲型如上圖:上述方式攻擊腳本直接經服務器轉手後返回瀏覽器觸發執行,存儲型與之的區別在於能夠將攻擊腳本入庫存儲,在後面進行查詢時,再將攻擊腳本渲染進網頁,返回給瀏覽器觸發執行。

常見的套路舉例如下:

  • 攻擊者網頁回帖,帖子中包含 JS 腳本
  • 回帖提交服務器後,存儲至數據庫
  • 其他網友查看帖子,後臺查詢該帖子的回帖內容,構建完整網頁,返回瀏覽器
  • 該網友瀏覽器渲染返回的網頁,中招!

防禦手段:前後端均需要做好內容檢測,過濾掉可執行腳本的侵入。

重點關注:前端工程師、Web 後端工程師。

③CSRF 攻擊

Web 安全三板斧之三,攻擊示意圖如下:

聽說你是程序員,可以幫我盜個QQ號嗎?

核心思想在於,在打開 A 網站的情況下,另開 Tab 頁面打開惡意網站 B,此時在 B 頁面的“唆使”下,瀏覽器發起一個對網站 A 的 HTTP 請求。

這個過程的危害在於兩點:

  • 這個 HTTP 請求不是用戶主動意圖,而是 B“唆使的”,如果是一個危害較大的請求操作(發郵件?刪數據?等等)那就麻煩了。
  • 因為之前 A 網站已經打開了,瀏覽器存有 A 下發的 Cookie 或其他用於身份認證的信息,這一次被“唆使”的請求,將會自動帶上這些信息,A 網站後端分不清楚這是否是用戶真實的意願。

重點關注:前端工程師、Web 後端工程師。

④DDoS 攻擊

DDoS 全稱 Distributed Denial of Service:分佈式拒絕服務攻擊。是拒絕服務攻擊的升級版。拒絕攻擊服務顧名思義,讓服務不可用。

聽說你是程序員,可以幫我盜個QQ號嗎?

常用於攻擊對外提供服務的服務器,像常見的:

  • Web 服務
  • 郵件服務
  • DNS 服務
  • 即時通訊服務
  • ......

在早期互聯網技術還沒有那麼發達的時候,發起 DoS 攻擊是一件很容易的事情:一臺性能強勁的計算機,寫個程序多線程不斷向服務器進行請求,服務器應接不暇,最終無法處理正常的請求,對別的正常用戶來說,看上去網站貌似無法訪問,拒絕服務就是這麼個意思。

後來隨著技術對發展,現在的服務器早已不是一臺服務器那麼簡單,你訪問一個 www.baidu.com 的域名,背後是數不清的 CDN 節點,數不清的 Web 服務器。

這種情況下,還想靠單臺計算機去試圖讓一個網絡服務滿載,無異於雞蛋碰石頭,對方沒趴下,自己先趴下了。

聽說你是程序員,可以幫我盜個QQ號嗎?

技術從來都是一柄雙刃劍,分佈式技術既可以用來提供高可用的服務,也能夠被攻擊方用來進行大規模殺傷性攻擊。

聽說你是程序員,可以幫我盜個QQ號嗎?

攻擊者不再侷限於單臺計算機的攻擊能力,轉而通過成規模的網絡集群發起拒絕服務攻擊。

拒絕服務攻擊實際上是一類技術,根據具體實施手段的不同,又可以進一步細分:

  • SYN Flood
  • ICMP Flood
  • UDP Flood
  • ......

防禦手段:即便是到現在,面對 DDoS 也沒有 100% 打包票的防禦方法,只能靠一些緩解技術一定層面上減輕攻擊的威力。這些技術包括:流量清洗、SYN Cookie 等等。

重點關注:運維工程師、安全工程師。

⑤DNS 劫持

當今互聯網流量中,以 HTTP/HTTPS 為主的 Web 服務產生的流量佔據了絕大部分。

Web 服務發展的如火如荼,這背後離不開一個默默無聞的大功臣就是域名解析系統:

聽說你是程序員,可以幫我盜個QQ號嗎?

如果沒有 DNS,我們上網需要記憶每個網站的 IP 地址而不是他們的域名,這簡直是災難,好在 DNS 默默在背後做了這一切,我們只需要記住一個域名,剩下的交給 DNS 來完成吧。

也正是因為其重要性,別有用心的人自然是不會放過它,DNS 劫持技術被髮明瞭出來。

DNS 提供服務用來將域名轉換成 IP 地址,然而在早期協議的設計中並沒有太多考慮其安全性,對於查詢方來說:

  • 我去請求的真的是一個 DNS 服務器嗎?是不是別人冒充的?
  • 查詢的結果有沒有被人篡改過?這個 IP 真是這個網站的嗎?
聽說你是程序員,可以幫我盜個QQ號嗎?

DNS 協議中沒有機制去保證能回答這些問題,因此 DNS 劫持現象非常氾濫,從用戶在地址欄輸入一個域名的那一刻起,一路上的兇險防不勝防:

  • 本地計算機中的木馬修改 hosts 文件
  • 本地計算機中的木馬修改 DNS 數據包中的應答
  • 網絡中的節點(如路由器)修改 DNS 數據包中的應答
  • 網絡中的節點(如運營商)修改 DNS 數據包中的應答
  • ......
聽說你是程序員,可以幫我盜個QQ號嗎?

後來,為了在客戶端對收到對 DNS 應答進行校驗,出現了 DNSSEC 技術,一定程度上可以解決上面的部分問題。

但限於一些方面的原因,這項技術並沒有大規模用起來,尤其在國內,鮮有部署應用。

聽說你是程序員,可以幫我盜個QQ號嗎?

再後來,以阿里、騰訊等頭部互聯網廠商開始推出了 httpDNS 服務,來了一招釜底抽薪。

雖然這項技術的名字中還有 DNS 三個字母,但實現上和原來但 DNS 已經是天差地別,通過這項技術讓 DNS 變成了在 http 協議之上的一個應用服務。

重點關注:安全工程師、後端工程師、運維工程師。

⑥TCP 劫持

聽說你是程序員,可以幫我盜個QQ號嗎?

TCP 是 TCP/IP 協議族中非常重要的成員,位於傳輸層。協議本身並沒有對 TCP 傳輸的數據包進行身份驗證。

所以我們只要知道一個 TCP 連接中的 seq 和 ack 後就可以很容易的偽造傳輸包,假裝任意一方與另一方進行通信,我們將這一過程稱為 TCP 會話劫持(TCP Session Hijacking)。

聽說你是程序員,可以幫我盜個QQ號嗎?

TCP 劫持技術是一種很老的技術,1995 年被提出來後深受黑客青睞。不過近些年來,隨著操作系統層面的安全機制增強和防火牆軟件的檢測能力提升,這種基礎的攻擊方式越來越容易被發現,慢慢的淡出了人們的視野。

重點關注:安全工程師、運維工程師。

⑦端口掃描技術

端口掃描是黑客經常使用的一種技術,它一般是作為網絡攻擊的前期階段,用於探測目標開啟了哪些服務,以便接下來發起針對該服務的攻擊。

記得剛剛學習網絡安全的時候,大家總會沒事拿出工具來掃一掃,雖然掃了之後就沒有了下文,也總是樂此不疲,在不懂的人面前秀一把自己的“黑客”能力。

聽說你是程序員,可以幫我盜個QQ號嗎?

以 TCP/IP 協議族構建的互聯網,網絡服務總是離不開端口這個概念,不管是 TCP 也好,UDP 也罷,應用層都需要一個端口號來進行網絡通信。

而我們常見的服務端口有:

  • 21:FTP 文件傳輸服務
  • 25:SMTP 郵件服務
  • 53:DNS 域名解析系統服務
  • 80:HTTP 超文本傳輸協議服務
  • 135:RPC 遠程過程調用服務
  • 443:HTTPS
  • 3389:MSRDP 微軟遠程桌面連接服務
  • ......

端口掃描都原理,對於基於 UDP 的服務,發送對應服務都請求包,查看是否有應答;對於基於 TCP 的服務,嘗試發起三次握手發送 TCP SYN 數據包,查看是否有應答。

如果遠端服務器進行了響應,則表明對端服務器上運行了對應的服務,接下來則是進一步探知對端服務器使用的操作系統、運行的服務器程序類型、版本等等,隨即針對對應的漏洞程序發起網絡攻擊。

聽說你是程序員,可以幫我盜個QQ號嗎?

由此可見,為安全著想,在互聯網上應當儘可能少暴露信息,關閉不需要的服務端口。

防禦手段:使用防火牆等安全產品,即時發現和阻斷非法的掃描探測行為。

重點關注:運維工程師、安全工程師。

系統安全

系統安全版塊中的技術,一般是指攻擊發生在終端之上,與操作系統息息相關。

①棧溢出攻擊

棧溢出攻擊歷史悠久,也是發生在系統側最基礎的攻擊。

現代計算機基本上都是建立在馮-諾伊曼體系之上,而這一體系有一個最大的問題就是數據和指令都保存在存儲器中。

聽說你是程序員,可以幫我盜個QQ號嗎?

在計算機的內存中,既包含了程序運行的所有代碼指令,又包含了程序運行的輸入輸出等各種數據,並沒有一種強制的機制將指令和數據區分。

因為對於計算機來說它們都是一樣的二進制 0 和 1,大部分時候都是靠程序按照既定的“規則”去解釋理解內存中的這些 0 和 1。而一旦這些“規則”理解錯誤,事情就變得糟糕起來。

具體到我們現代 CPU 和 OS,不管是 x86/x64 處理器,還是 ARM 處理器,均採用了寄存器+堆棧式的設計,而這個堆棧中,既包含了程序運行各個函數棧幀中的變量數據等信息,還保存了函數調用產生的返回地址。

聽說你是程序員,可以幫我盜個QQ號嗎?

所謂棧溢出攻擊,則是通過一些手段輸入到棧中的緩衝區中,衝破緩衝區原有的界限,將存儲返回地址的位置覆蓋為一個數值,使其指向攻擊者提前佈置的惡意代碼位置,劫持了程序的執行流程。

防禦手段:現代操作系統針對棧溢出攻擊已經有非常成熟的應對方案,像 Linux 平臺的 Stack Canary,Windows 平臺的 GS 機制等等,程序員需要做的就是充分利用這些機制。

重點關注:C/C++ 工程師。

②整數溢出攻擊

和棧溢出攻擊一樣,整數溢出攻擊也是屬於溢出類攻擊,不一樣的是溢出的目標不是棧中的緩衝區,而是一個整數。

聽說你是程序員,可以幫我盜個QQ號嗎?

我們知道,計算機數值以補碼的方式表示和存儲。在表示一個有符號數時,最高位是用來表示這是一個正數(0)還是一個負數(1)。

比如對於一個 16 位的 short 變量而言,+1 和 -1 的表示方法如下:

<code>+1: 0000 0000 0000 0001
-1: 1111 1111 1111 1111/<code>

一個 16 位的 short 變量表示的範圍是 -32768~32767,現在思考一個問題,假如一個 short 變量的值現在是 32767:

<code>32767: 0111 1111 1111 1111/<code>

如果現在對其執行 +1 操作,將變成:

<code>1000 0000 0000 0000/<code>

而這正是 -32768 的補碼形式!試想一下,如果這個變量名字叫 length 作為 strcpy 參數,或是叫 index 作為數組的下標,整數的溢出將導致可怕的後果,輕則進程崩潰,服務宕機,重則遠程代碼執行,拿下控制權。

重點關注:所有程序員。

③空指針攻擊

空指針一般出現在指針沒有初始化,或者使用 new 進行對象創建/內存分配時失敗了,而粗心的程序員並沒有檢查指針是否為空而進行訪問導致的攻擊。

聽說你是程序員,可以幫我盜個QQ號嗎?

大多數情況下,這將導致內存地址訪問異常,程序會崩潰退出,造成拒絕服務的現象。

聽說你是程序員,可以幫我盜個QQ號嗎?

而在一些特殊的情況下,部分操作系統允許分配內存起始地址為 0 的內存頁面,而攻擊者如果提前在該頁面準備好攻擊代碼,則可能出現執行惡意代碼的風險。

④釋放後使用攻擊

釋放後使用 Use After Free 意為訪問一個已經釋放後的內存塊。較多的出現在針對瀏覽器的 JavaScript 引擎的攻擊中。

正常情況下,一個釋放後的對象我們是沒法再訪問的,但如果程序員粗心大意,在 delete 對象後,沒有即時對指針設置為 NULL,在後續又繼續使用該指針訪問對象(比如通過對象的虛函數表指針調用虛函數),將出現內存訪問異常。

聽說你是程序員,可以幫我盜個QQ號嗎?

在上面的場景中,如果攻擊者在 delete 對象後,馬上又 new 一個同樣內存大小的對象,在現代操作系統的堆內存管理算法中,會有很大概率將這個新的對象放置於剛剛被 delete 的對象的位置處。

這個時候還通過原來對象的指針去訪問,將出現鳩佔鵲巢,出現可怕的後果。養成好的編程習慣,對象 delete 後,指針及時置空。

重點關注:C/C++ 工程師。

⑤HOOK

HOOK 原意鉤子的意思,在計算機編程中時常用到,用來改變原有程序執行流程。

聽說你是程序員,可以幫我盜個QQ號嗎?

在那個互聯網充斥著流氓軟件的年代,流行著一種鍵盤記錄器的木馬,用於記錄用戶鍵盤的輸入,從而盜取密碼,這其中 QQ 曾經是重災區。

聽說你是程序員,可以幫我盜個QQ號嗎?

而實現這一功能的技術就是用到了 HOOK 技術,鉤到了鍵盤敲擊的事件消息。

除了消息 HOOK,用得更多的是程序執行流程層面的 HOOK。

惡意代碼被注入目標程序後,在函數入口處添加跳轉指令,導致執行到此處的線程轉而執行攻擊者的代碼,實現修改參數、過濾參數的目的。

聽說你是程序員,可以幫我盜個QQ號嗎?

HOOK 技術不僅為黑客使用,安全軟件用的更多,安全軟件需要守護整個系統的安全防線,通過 HOOK 技術在各處敏感 API 處設立檢查,從而抵禦非法調用攻擊行為。

聽說你是程序員,可以幫我盜個QQ號嗎?

另外,軟件補丁技術中也時常用到 HOOK 技術,軟件廠商發現原來程序漏洞後,通過 HOOK,修改既有程序的執行邏輯,從而達到修復漏洞的目的。

重點關注:C/C++ 工程師。

⑥權限提升

現代操作系統都對運行於其中的進程、線程提供了權限管理,因為安全攻擊無可避免,而權限的限制作為一道頗為有效的屏障將程序被攻擊後的影響減少到最小。

換句話說,即便我們的程序因為漏洞原因被攻擊執行了惡意代碼,但因為操作系統的權限控制,惡意代碼能幹的事情也有限。

聽說你是程序員,可以幫我盜個QQ號嗎?

就像一枚硬幣總有兩個面,有權限限制,自然而然就有權限提升。攻擊者想要做更多事情,就得突破操作系統的限制,獲取更高的權限。

在 Windows 上,經常叫獲得管理員權限。在 Linux 上,經常叫獲得 Root 權限,手機 Root 也是這個意思。在 iOS 上,經常叫“越獄”。

聽說你是程序員,可以幫我盜個QQ號嗎?

權限提升的方式五花八門,總體來說,程序執行的時候,所屬進程/線程擁有一個安全令牌,用以標識其安全等級,在訪問資源和執行動作的時候由操作系統內核審核。

權限提升的目標就是將這個安全令牌更改為高等級的令牌,使其在後續訪問敏感資源和執行敏感動作時,憑藉該令牌可以通過系統的安全審核。

聽說你是程序員,可以幫我盜個QQ號嗎?

而更改這個安全令牌的慣用伎倆便是利用操作系統內核漏洞(如前面所述的棧溢出、整數溢出、釋放後使用等)執行攻擊者的代碼,實現安全令牌的篡改。

重點關注:

安全工程師。

⑦可信計算

安全攻擊無處不在,不僅應用程序的環境不可靠,甚至連操作系統內核的環境也充滿了風險。

如果一個程序(比如支付)必須在一個極度絕密的環境下執行,該怎麼辦?

聽說你是程序員,可以幫我盜個QQ號嗎?

可信計算的概念被安全研究者提了出來,根據百科的解釋:

可信計算/可信用計算(Trusted Computing,TC)是一項由可信計算組(可信計算集群,前稱為 TCPA)推動和開發的技術。可信計算是在計算和通信系統中廣泛使用基於硬件安全模塊支持下的可信計算平臺,以提高系統整體的安全性 [1] 。簽註密鑰是一個 2048 位的 RSA 公共和私有密鑰對,它在芯片出廠時隨機生成並且不能改變。這個私有密鑰永遠在芯片裡,而公共密鑰用來認證及加密發送到該芯片的敏感數據。

可信計算中一個非常重要的概念是可信執行環境 TEE(Trusted Execution Environment),簡單來說就是在現有的計算機內部的世界裡,再構建一個秘密基地,專門用於運行極度機密的程序。

該秘密基地甚至連操作系統都輕易無法訪問,更別說操作系統之上的應用程序了。

在移動端,ARM 芯片佔據了主流市場,ARM 芯片提供了名為 TrustZone 技術的技術,在硬件層面新增一個可信計算環境,包含一個可信 OS,和一些可信 APP,和普通環境在硬件層面隔離,處理器內部進行通信完成兩個世界的交互。

聽說你是程序員,可以幫我盜個QQ號嗎?

重點關注:終端系統工程師。

密碼學

由於數據傳輸的過程中會遇到信息洩漏、篡改、偽造的風險,加密技術應運而生。

①對稱加密&非對稱加密

有加密就有解密,根據加密過程使用的密鑰和解密過程使用的密鑰是否相同,將加密算法分為了兩個大類:對稱加密和非對稱加密。

最早出現的加密技術是對稱加密:加密密鑰和解密密鑰一致,特點是加密速度快、加密效率高。

常用的對稱加密算法有:

  • DES
  • AES
  • RC4

這種加密方式中有一個非常關鍵的問題是,解密方需要拿到密鑰才能進行解密,而密鑰鑰匙通過網絡傳輸又會面臨不安全的風險,這成了一個雞生蛋,蛋生雞的問題。

於是通信技術上一個劃時代的技術被髮明瞭出來,這就是非對稱加密!

聽說你是程序員,可以幫我盜個QQ號嗎?

非對稱加密:加密密鑰與解密密鑰不一致,特點是算法較複雜,但安全性高。非對稱加密的密鑰一般分為公鑰和私鑰,公鑰公開,私鑰需保密。常用於數字認證,如 HTTPS 中握手階段的服務器認證。

常用的非對稱加密算法有:

  • RSA
  • DH
  • ECC(橢圓曲線加密)

可以毫不誇張的說,沒有了非對稱加密,互聯網絕不會發展到今天這樣的高度。

②秘鑰交換技術

在互聯網通信中,有加密就有解密,解密自然就需要密鑰,那如何把這個密鑰告訴對方呢?密鑰交換算法就是要解決這個問題:如何安全的將密鑰傳輸給對方?

聽說你是程序員,可以幫我盜個QQ號嗎?

回頭看看上面提到的非對稱加密,它就可以解決這個問題:

  • 服務器負責生成一對公私鑰,公鑰告訴客戶端,私鑰自己保存
  • 客戶端拿到公鑰後,使用它來對後續通信將要使用的對稱加密算法密鑰進行加密傳輸
  • 服務端收到後使用私鑰解密,拿到這個密鑰
  • 以後雙方可以通過對稱加密進行傳輸通信

上面這個例子並不只是舉例,在早期版本的 HTTPS 中,就是通過這種方式來進行密鑰交換。而後來的版本中,另外一種叫 DH 及其變種的密鑰交換算法用的越來越多。

聽說你是程序員,可以幫我盜個QQ號嗎?

DH 全稱 Diffie-Hellman,是兩位數學家的名稱構成,這種算法的核心是完全依靠數學運算實現密鑰的交換。

③信息摘要算法

信息摘要算法其實不算是一種加密算法,加密的前提是可以通過解密還原,而信息摘要算法的目的並不是對數據進行保護,也無法解密還原。

在一些語境下,信息摘要我們聽得少,聽的更多的名詞是哈希,信息摘要算法的目的之一是校驗數據的正確性,算法公開,數據通過該算法得出一個摘要值,收到數據後通過該算法計算出這個摘要,前後對比就知道是否有被篡改。

常用的信息摘要算法有:

  • MD5
  • SHA1
  • SHA256

④數據編碼技術

嚴格來說,數據編碼技術也不算是加密算法,因為其目的同樣不是為了加密,而只是為了將數據編碼以便傳輸。

聽說你是程序員,可以幫我盜個QQ號嗎?

最常見的編碼算法就是 base64 了,多用於編碼二進制的數據,將不可見的字符編碼後轉換成 64 個常見字符組成的文本,便於打印、展示、傳輸、存儲。如郵件 eml 格式中,將附件文件通過 base64 編碼。

聽說你是程序員,可以幫我盜個QQ號嗎?

除了 base64,還有常用於比特幣錢包地址編碼的 base58。base 家族還有 base85、base92、base128 等眾多算法。它們的區別不僅僅在於參與編碼的字符集不同,算法執行也是各有千秋。

⑤多因子認證技術

說到認證,最常出現的莫過於登錄、支付等場景。傳統的認證技術就是密碼技術,但隨著網絡攻擊的日益猖獗以及互聯網滲透到人們生活的方方面面,傳統密碼技術的安全性不足以滿足互聯網的發展。

聽說你是程序員,可以幫我盜個QQ號嗎?

多因子認證技術意為在傳統密碼認證之外,引入其他認證技術進行補充,使用 2 種及以上的方式共同完成認證。

隨著人工智能技術的發展,基於生物特徵的認證技術突飛猛進:

  • 指紋認證
  • 虹膜認證
  • 人臉識別
  • ......
聽說你是程序員,可以幫我盜個QQ號嗎?

這個世界從來不缺先行者,多因子認證看上去很複雜,好在已經有不少頭部企業搭建了認證平臺,對於絕大多數企業,需要做的只是下載 SDK,調用 API 而已。

目前國內外主流的多因子認證平臺有三大派系:

  • FIDO,國際標準,在國內,翼支付、百度錢包、京東錢包、微眾銀行等都已經應用。
  • IFAA,阿里系,憑藉阿里在電商領域的優勢,也吸引了眾多追隨者。
  • TUSI,騰訊系。

總結

本文羅列了一些常見的信息安全技術,主要分網絡安全、系統安全和密碼學三個領域展開。

信息安全技術不僅僅是安全工程師的事情,作為一位程序員,瞭解這些技術將幫助我們更好的 Build The World!

出處:轉載自微信公眾號編程技術宇宙(ID:ProgramUniverse)


分享到:


相關文章: