2013年8月18日 星期日

使用OTR進行加密聊天(適用於Gtalk、Facebook聊天室)


原理介紹


OTR全名叫作Off-the-Record,是一種加密聊天的技術,使用的是非對稱的加密技術。OTR可以外掛在使用XMPP通訊協議(Extensible Messaging and Presence Protocol,前稱Jabber)的聊天協議中,可以加密聊天訊息,讓聊天訊息不會被過濾、竊聽。由於gtalk及facebook聊天都是使用XMPP通訊協議,因此只要聊天雙方都使用支援OTR加密的聊天軟體,就可以在Facebook聊天室和Gtalk中加密聊天內容。

這種聊天加密的方式最大的優點在於聊天雙方因為擁有解密的方式,因此才可以看到原文;而中間攔截到封包的人,無論是政府,甚至是Google、Facebook本身都無法看到原始的內容,只能看到加密後的亂碼。這種加密聊天可以防止聊天內容被竊聽。

當然,這個聊天方式也有缺陷。最主要的缺陷是,這種聊天方式只能一對一來聊天,無法一對多。另外,必須雙方都使用支援OTR加密的聊天軟體,否則無法啟用加密。另外,如果在交換公鑰的步驟就遭到中間人攻擊(Man-in-the-middle Attack),還是有可能會遭到竊聽。

OTR所使用的非對稱的加密技術是什麼?簡單來說,要加密的雙方都必須先擁有成對的公鑰和私鑰。公鑰是負責加密用的,私鑰是負責解密用的。聊天過程中會把公鑰給對方,而私鑰是不會放出去的。



舉個例子,假設私鑰是:

(x + 30) ÷ 5 - 50

那麼和這個私鑰成對的公鑰就是:

(x + 50) × 5 - 30

所以如果你傳10給對方,經過公鑰的加密,就會變成270;收到的人用手上的私鑰解密以後,就會再度變成10,也就是解密以後的結果。

因此聊天加密的原理就如下:

雙方先交換公鑰,確認這個公鑰可以信任



再來使用公鑰加密要給對方的訊息,收到訊息後用手上的私鑰解密。




由此可知,公鑰是很重要的東西。每個公鑰都會有獨一無二的指紋(Fingerprint),長的大概像這樣:

175E 8A9D ED4F 6D2C C03E  CBCE C2AB F2CE 54D0 F049

在第一次交換公鑰的階段,程式會提示要你確認對方的公鑰指紋是否正確。確認以後,如果之後對方給的公鑰不對,那就很有可能遭到攻擊了。

不過,每個平台的軟體都會各自生成金鑰對,因此每個人在不同平台上應該也都擁有不同的公鑰,這點需要注意。也就是說,我在Windows上和在Android上客戶端用的公鑰、私鑰是不一樣的。這些需要一一確認。

那麼,OTR要如何使用呢?底下以Windows和Mac為例,看看如何安裝使用支援OTR的聊天軟體。

Windows如何使用


在Windows上,我們使用的是pidgin。

首先,要先抓下兩個程式:pidgin及pidgin-otr
下載點:
http://sourceforge.net/projects/portableapps/files/Pidgin%20Portable/
http://sourceforge.net/projects/portableapps/files/Pidgin-OTR%20Portable/

下載後如下圖:



再來,分別安裝這兩個程式。記得這兩個程式的安裝路徑必須相同。




安裝完畢以後,到資料夾點擊就可以開啟。



第一次開啟需要先設定帳號,請選擇你的帳號,並輸入密碼進行設定




設定好了以後,連線應該就會成功了。



打開以後,還要設定一下,把OTR的支援打開。




接著和人聊天的過程就可以選擇使用OTR進行加密聊天了。



Mac OS X如何使用


如果是Mac,要使用Adium來進行聊天。由於Adium內建OTR,因此不用另外抓來安裝。
下載點:
https://adium.im/



一樣要先新增聊天帳號




接著就可以進行聊天。
在點下左上角的鎖圖示就可以進行加密聊天



同意對方的公鑰以後就可以進行加密聊天了。


Linux如何使用


Linux一樣是使用Pidgin來進行聊天,不過安裝方式簡單很多:

sudo apt-get install pidgin pidgin-otr


Android如何使用


首先要先下載軟體。下載點如下:
https://play.google.com/store/apps/details?id=info.guardianproject.otr.app.im


一開始打開的時候可能連帳號都沒有,請點右上角的「+」來新增帳號



可以選擇你要新增的帳號種類




新增後,就可以開始聊天了。
一開始的時候,上方鎖頭是打開的,上面的紅色訊息寫著訊息沒有加密。


點下右上方的鎖頭就可以開始加密。加密成功後,會顯示黃色的訊息,告訴你已經是安全連線了。


你可以察看自己和對方的金鑰指紋來確認。







iOS使用方法


首先一樣要先下載軟體。下載點如下:
https://itunes.apple.com/us/app/chatsecure-encrypted-secure/id464200063?mt=8


下載安裝完畢以後,第一次開啟應該也是看不到帳號。請點選右上角的設定按鈕來新增帳號



一樣可以新增各種帳號。這邊以Gtalk為例。



連線上去了以後大致是這個樣子。可以點選聯絡人來進行聊天。

 一開始聊天的時候是沒有加密的。可以看到左上角的鎖頭是打開的,訊息也提示這個聊天沒有加密。



接著點下右上角的鎖頭,會詢問你是否接受對方的公鑰。若你可以信任對方,就點選Verified。


接著就可以看到訊息提示這次的聊天已經啟動加密了。你可以安心的聊天了。



使用效果


有人會問,加密聊天有沒有效果?這是Google+聊天室的截圖,對照原本的聊天內容,可以看到加密聊天的內容全部變成了亂碼。



2 意見:

賣飛機 提到...

HI ~ gtalk 變 hangout 之後好像就不支援 XMPP 了喔

林雨蒼 提到...

@賣飛機

Hangout本身可能不能加密,但可以用其他軟體達成。底層一樣是XMPP。