백도어

위키百科, 우리 모두의 百科事典.

컴퓨터 시스템(또는 暗號化 시스템, 알고리즘)의 백도어 ( 英語 : backdoor )는 一般的인 認證과 暗號化를 迂廻(bypassing)해 遠隔 接續 및 暗號化된 텍스트 에 對한 權限을 取得하는 等 隱密히 惡性코드 를 實行하는 典型的인 方法이다. 백도어는 設置된 프로그램의 形態를 取하기도 하고, 旣存 프로그램 또는 하드웨어의 變形일 수도 있다. 一般的으로 CCTV에 깔려서 情報를 빼어갈 수도 있다.

開館 [ 編輯 ]

백도어의 威脅은 多重 使用者와 네트워크 運營 體制가 널리 받아들여지면서 表面化되었다. 피터슨과 턴은 1967年 AFIPS 學會에 論文을 發表한 바 있다. 여기서 指摘한 陵洞 浸透 攻擊 形態는 "함정문 trapdoor" 浸透點을 利用하여 保安 機能을 迂廻하고 데이터에 直接 接近을 許容하는 것이었다. 함정문 trapdoor이라는 單語는 分明히 더 最近의 백도어의 正義와 一致한다. 그러나 公開 키 暗號化와 함께 함정문이라는 單語는 다른 意味를 가지게 되었다. 1970年, 더욱 一般的으로 그러한 保安 漏泄이 랜드 硏究所 태스크 포스 리포트에서 더 길게 論議되었다.

로그인 시스템의 백도어는 시스템에 接近 할 수 있는 使用者 이름과 暗號를 하드 코드(데이터를 소스 코드에 直接 揷入) 形態를 띌 수 있다.잘 알려진 이런 種類의 例는 1983年 映畫 워게임에 나오는 것으로 WOPR 컴퓨터 시스템을 만든 사람이 하드 코드 暗號 (죽은 아들의 이름)를 揷入하여 使用者가 시스템과 文書化되지 않은 部分 (特히 비디오 게임처럼 보이는 시뮬레이션 모드와 人工知能과의 直接 相互 作用)에 接近할 수 있게 하는 것이었다.

2003年 綻露난 리눅스 커널에 백도어를 심으려 했던 試圖가 보여 주는 것은 그러한 코드 變更이 얼마나 巧妙할 수 있는가 하는 것이다. 이 境遇에는 誤他人 것처럼 보이게 單 두 줄을 變更한 것이었지만 실은 呼出者가 sys_wait4 函數의 루트 權限 接近을 許容하는 것이었다.

專用 소프트웨어 (소스 코드가 公開되지 않은 소프트웨어)를 使用하는 시스템에는 얼마나 많은 백도어가 있는지는 잘 알려져 있지 않지만 그럼에도 不拘하고 자주 露出된다. 프로그래머들은 甚至於 無害한 코드인 이스터에그 를 大量으로 設置하기도 하는데, 그러한 境遇 實際로 許容은 안되더라도 公式的으로는 默認된다.

또한 소스 코드 修正 없이도 백도어를 만드는 것도, 甚至於 컴파일 後에 修正하는 것도 可能하다. 이는 컴파일러를 다시 作成하여 소스 코드를 컴파일 할 때 特定 部分에 백도어를 揷入시키는 것이다. 그래서 使用者가 特定 入力을 提供하면 어떤 (아마도 文書化 되지 않은) 프로그램의 機能에 接近할 수 있게 된다. 이 攻擊은 처음 켄 톰슨 (리치와 함께 C 言語를 만든)이 說明한 것으로 잘 알려진 論文 Reflections on Trusting Trust에 나와 있다.

많은 컴퓨터 웜 , 例를 들어 Sobin Mydoom 은 백도어를 對象 컴퓨터에 設置한다. (一般的으로 廣帶域 網에 連結된 PC로 不安全한 마이크로소프트 윈도우와 아웃룩을 實行하는 PC가 標的이 된다.) 그러한 백도어는 스팸 메일을 感染된 컴퓨터로부터 發送하게 된다. 다른 것, 例를 들어 소니 BMG의 루트킷 프로그램 은 2005年 末까지 數百萬張의 音樂 CD에 조용히 配布되었는데, 이는 디지털 權利 管理 또는 데이터 蒐集 에이전트 로서의 意圖를 가지고 있어서 中央 서버를 週期的으로 接觸하였다.

傳統的인 백도어는 對稱的 백도어다. 백도어를 찾은 사람은 누구나 使用할 수 있었다. 非對稱 백도어라는 表現은 96年 紹介되었는데, 백도어의 全體 具現이 (出版, 逆工學 等에 依해) 公開되더라도 企劃한 攻擊者만 使用될 수 있는 것이다. 또한 이러한 非對稱的 백도어의 存在는 블랙박스 쿼리로는 電算的으로 追跡이 不可能하다. 이 種類의 攻擊은 kleptography 라는 用語로 表現하는데 소프트웨어, 하드웨어 (스마트카드), 또는 둘의 組合으로 遂行될 수 있다. 非對稱 백도어 理論은 이제는 cryptovirology라 부르는 더 큰 分野의 一部이다. 靈과 융은 RSA 키 生成 알고리즘에도 OpenSSL RSA 백도어라는 實驗的인 非對稱 백도어를 設計하였다.

Trusting Trust에 對한 考察 [ 編輯 ]

켄 톰슨 의 "Trusting Trust에 對한 考察 Reflections on Trusting Trust"은 블랙박스 백도어 問題를 記述한 最初의 主要 論文으로 信賴는 相對的인 것이라는 것을 指摘하였다. 아주 奇拔한 백도어 期作을 敍述하였는데, 사람들이 (사람이 쓴) 소스 코드만 檢討할 뿐, 컴파일한 機械語 코드 는 檢討하지 않는다는 事實에 基盤한 것이었다. 컴파일러 라는 프로그램이 소스코드로부터 機械語 코드를 生成하는데 使用되는데 컴파일러는 率直하게 시키는 일만 할 것이라고 普通 믿어지고 있다.

톰슨의 글은 變形된 유닉스 C 컴파일러에 對해서 말하고 있는데 이는 다음과 같은 動作을 할 수 있다:

  • 로그인 프로그램이 컴파일 되고 있음을 알아차리면 보이지 않는 백도어를 유닉스 로그인 命令에 둔다.
  • 또한 未來의 컴파일러를 컴파일 할 때 이 機能을 들키지 않게 追加한다.

컴파일러 自體가 컴파일된 프로그램이기 때문에 使用者가 이러한 作業을 하는 機械語 코드를 알아차릴 可能性은 極히 낮다. (두 番째 作業으로 컴파일러의 소스 코드는 깨끗해 보일 것이다.) 더 나쁜 것은 톰슨의 槪念 證明 구현판人 變形된 컴파일러가 分析 프로그램 ( 디스어셈블러 ) 또한 變形하여 一般的인 方法으로 李瑱 코드를 分析한 이들은 누구도 實際로 作動하는 코드를 볼 수 없고 엉뚱한 다른 코드를 보게 된 것이다. 이 버전은 公式的으로는 世上에 풀려난 적은 없다. 그러나 最小限 한件의 백도어 使用이 記錄되어 있다.

一旦 시스템이 Trusting Trust 컴파일러와 같은 백도어 또는 트로이 木馬 에 影響을 받으면 "正當한" 使用者가 시스템의 制御權을 되찾는 것은 매우 어렵다. 그러나 Trusting Trust 攻擊의 弱點이 몇가지 提案되었다. 例를 들어 充分히 動機 附與된 使用者는 컴파일러를 使用하기 前에 苦痛을 甘受하고 機械語 코드를 檢討할 것이다. 위에서 言及한 대로 트로이 木馬 를 감추는 方法이, 例를 들어 역어셈블러 를 變造하는 것처럼 存在한다; 그러나 이러한 防禦 手段에 맞서는 方法도 있다. 例를 들어 自身만의 역어셈블러를 처음부터 만들어 感染된 컴파일러가 알아차리지 못하게 하는 것이다. 그러나 이러한 提案은 一般的으로 非實用的이다. 使用者가 컴파일러를 믿지 못한다면 아예 使用하지 않는 것이 물들지 않았다고 믿어지는 道具만 써서 李瑱 코드를 檢討하는 것 보다는 나을 것이다. 컴파일러가 感染되었다고 深刻하게 생각하지 않는 使用者는 厖大한 作業을 堪當하지 않을 것이다.

데이비드 A 휠러는 이 攻擊에 對한 對應 手段을 提案하여 "分散 二重 컴파일"이라 불렀다.

種類 [ 編輯 ]

백도어에는 論理 爆彈 (logic bomb), (worm), 트로이 木馬 (trojan horse) 等이 있다. 그러나 이들처럼 惡意的으로 만들어진 것 말고도, 새로 開發한 시스템을 테스트하기 위해 開發者가 揷入하는 백도어度 存在할 수 있다.