Total Pageviews

Tuesday, 24 September 2013

使用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+聊天室的截圖,對照原本的聊天內容,可以看到加密聊天的內容全部變成了亂碼。


--------------------------------------------------------------------------------------------------------------------------

使用 OTR 保护你的聊天隐私


在互联网上聊天(即时通信)中,通过使用开源免费的软件可以确保软件没有后门,通过使用加密传输协议(如基于 SSL 的 HTTPS)可以确保信息在传输至服务器的过程中不被第三方截获,不过这样仍不能避免聊天服务提供商记录或者分析你的聊天内容,所以为了保护聊天的隐私,最好使用“端到端”的加密技术让聊天内容只能由聊天的双方阅读。
在众多的“端到端”加密技术当中,开源免费的 OTR(Off the record,大概可翻译为“路过不留痕” :D)相对方便且容易使用,跟传统的 PGP 系统不同的是,OTR 更适合网络聊天,因为 PGP 运用到网络聊天会有一些缺点:
1、钥匙对(key pair)的有效期较长。
经过 PGP 加密的聊天内容,作为第三攻击方虽然不能即时破译不过却可以先记录下来,以后通过一定的方法获取某一方的密钥(private key),攻击方就可以还原之前的所有聊天记录了。
2、数字签名的能保证聊天内容的数据完整性以及确定内容的作者,在当次聊天当中是必须的,但在将来假如某一方的密钥泄露的情况下,之前数字签名过的聊天内容就变成“证据”了。
OTR 通过每次会话都使用短期有效密钥的方法避免了 PGP 的缺点,所以在安全性方面更有保障。
为了傻瓜化地使用 OTR,我们需要使用即时通信软件 Pidgin 配合,这是一款支持多种即时通信服务的客户端软件,而且有丰富的插件提供功能扩展。Pidgin 支持的即时通信服务包括 MSN、AIM、Yahoo、Google Talk 还有 QQ(Linux 下通过安装 LWQQ 插件实现)。OTR 将会以插件的形式在 Pidgin 中运行,它会把你的信息在发送之前先加密,然后对方接收到信息后会自动解密,简单来说它对用户是透明的,所以非常方便。
下面简单介绍安装和使用 Pidgin 和 OTR 的步骤。@ivarptr。

1、安装 Pidgin

Pidgin 同样是开源免费的程序,而且能在 Windows 和 Linux 下运行,对于 OSX 系统,可以使用基于同样内核的 Adium
对于 Linux 系统,一般能在官方源里找到 Pidgin 以及 OTR 插件。比如对于 Ubuntu 系统,在软件中心搜索 Pidgin 即可找到这两个软件;对于 Arch Linux,可直接安装软件包 pidgin 和 pidgin-otr,如果希望登录 QQ,则再安装软件包 pidgin-lwqq,详细的请阅读 Arch Linux 的 Pidgin Wiki
对于 Windows 系统,先下载主程序 Pidgin,再下载 OTR 的 Pidgin 插件,然后依次安装即可。

2、配置帐号

首次运行 Pidgin 会要求你配置一个聊天帐号,这里你可以输入 MSN、AIM、Yahoo、Google Talk 或者 QQ 的登录名和密码,成功后应该能看到联系人并且能与之聊天。

3、激活及配置 OTR

在 Pidgin 主窗口点击菜单“工具(tools)”->“插件(Plugins)”,找到插件 “(不留痕)Off-the-Record Messaging”点击并勾上它。

然后点击窗口下方的“配置插件(Configure Plugin)”按钮,在新出现的窗口中点击“生成(Generate)”按钮以生成你自己专属的密钥。
大概1分钟左右密钥生成完成。

4、尝试使用 OTR 加密聊天

现在你该找一位朋友帮你测试 OTR 加密了,首先你的朋友也要重复以上的步骤,然后你双击它的头像进入聊天窗口。

在聊天窗口的菜单中点击“OTR”,然后点击”开始加密聊天(Start private conversation)”,如果对方也安装有 OTR 则会建立一个加密的会话。不过这样的会话是存在漏洞的,因为对方可能被第三方入侵(即其他人冒充你的朋友),为了完善,你需要验证一下对方是否为本尊。点击菜单“OTR”或者点击消息发送框右上角的按钮,选择“身份验证”会显示如下一个窗口。

OTR 支持3种身份验证方式:
  • 问答式:你设定一个问题和一个答案,让对方根据问题输入答案,如果他输入的答案跟你设定的完全吻合,则通过验证。
  • 暗号式:你设定一个暗号(可以是一个句子),当对方输入完全相同的暗号时则通过验证。
  • 指纹验证:在第3步生成你的密钥时,如果注意观察的话会发现那里会显示一个指纹值(一串字母,可以再次进入OTR设置窗口查看),记下这个指纹值,然后你可以通过电话跟你的朋友核对一下各自的指纹值,一致的话则点击“已核对”按钮,身份验证即完成。
以上3种方式你可以任选一种,一旦身份验证后,消息发送框右上角的按钮即变为绿色的“加密(private)”,即表示现在你们的会话已经安全地加密了。
1、钥匙对(key pair)的有效期较长。作为第三攻击方虽然不能即时破译聊天内容,不过却可以先记录下来,以后抄家时只要获取某一方的密钥(private key)就可以还原之前的所有聊天记录了。甚至包括将来的,假如另一方不知道该方的密钥已经泄露的话。
2、数字签名的数据完整性以及无法抵赖特性在当次聊天当中是必须的,但在将来假如某一方的密钥泄露的情况下,之前数字签名的聊天内容就变成“呈堂证据”了.
----------

如何使用Pidgin以及利用OTR插件进行加密通讯


自从网络管理严格(疯狂)之后,好多小伙伴问如何使通讯安全些....嗯,天朝监控太严厉了,和美帝有一拼...下面来普及一下如何用Pidgin+OTR插件来加密聊天内容..
首先什么是Pidgin和OTR呢?“Pidgin(前称Gaim)是一个跨平台的实时通信客户端,使用GNU通用公共许可证发布。这款软件支持多个现时常用的实时通信协议,让用户可以用同一个软件登录不同的实时通信服务。截至2007年,Pidgin约有三百万名用户。” (From Wikipedia) "OTR全称 Off-the-Record Messaging 是一个通路可以为即时通讯提供加密,并且使用AES128位密钥进行加密...(如有兴趣了解可以参考wikipedia,这里篇幅有限就不说太详细了...总之是以目前的技术能力无法在短时间内破解AES128的)"
鉴于用Winows的小伙伴比较多,这次还是在windows环境下进行演示...
首先我们先要下载Pidgin
打开http://www.pidgin.im 点击绿色的Download Now按钮
1
跳转进入Sourceforge下载,过一会自动开始下载....
下载完毕后,我们需要校验数字签名...
校验方法是:在安装包右键点击属性,并切换到数字签名一栏
2
3
如果数字签名不存在或损坏,请不要使用..因为安装包可能已被篡改...
确认正确后,选择中文安装
4
安装过程中可能要下载一些软件
5
所以可能需要等待一小会儿......安装完毕后,我们打开https://otr.cypherpunks.ca/index.php#downloads来下载OTR插件
6
点击Win32 installer for pidgin 2.x来下载插件,下载完成后一路下一步即可安装。
安装完毕后,打开Pidgin主界面,点击工具,插件..找到Off-the-Record Messaging后勾选已启用即可..
7
鉴于xmpp是比较流行的一种协议,我们使用xmpp来进行测试....
添加一个xmpp帐号
8
添加后,状态提示可用则代表已链接上,我们来添加一个好友进行测试.
9
输入要添加的用户名..
10
在双方都同意添加之后,就可以在好友列表中看到对方了...
打开聊天窗口,在OTR选项中启动私密对话...
11
等待互相生成完密钥,私密聊天即可开始..
12
生成完毕之后,即可进行私密对话..
13
不过目前状态是“未认证的” 您可以互相发送一段问题来确认是否为对方..
OTR - 认证好友身份
14
对方会弹出对话框,如果输入的答案与您预设的答案一致 即可通过验证...
15
关于这个状态,我们来举个栗子.......(来自官网)
如果状态是 不保密的:
Alice 和 Bob 通讯时没有加密技术保护,如果有人在监视互联网流量或服务提供商作恶,则他们可以看到聊天内容....
notprivate-ab
如果状态是 保密的:
Alice 和 Bob 正在使用OTR,他们互相认证了对方并确保确实是在与对方交谈。这样即使有人在观察互联网浏览或服务提供商作恶也无法知道具体在讨论什么....
private-ab
如果状态是 未认证的:
Alice 和 Bob 正在使用OTR,他们没有互相认证对方,则有可能遭到中间人攻击...

unverified-ab
如果状态是 已结束的:
Alice曾经与Bob私密聊天,但是Bob决定终止它,这样有可能使Alice不小心发出私密消息....为了防止不小心的发生,任意一方需重新进行OTR(即点击OTR-启动私密对话)
from http://web.archive.org/web/20150919172743/https://xiaolan.me/how-to-use-pidgin-and-otr.html
-----------------------------------
跨平台即时聊天工具Pidgin

Pidgin (原名 Gaim),是一款采用 GTK 开发的开源多平台即时聊天客户端软件,支持包括 Aim、ICQ 、Yahoo、IRC、Jabber、Gadu-Gadu、SILC、Groupwise Messenger和Zephyr等即时通信软件。同时也支持局域网的通讯。除了聊天,还支持文件传输、离开提示、键入提示, 好友提醒功能(当某个特定的好友离开或者脱机,它会用某种方式对你进行提醒,比如发送消息、播放声音甚至运行某个程序)等。

官方下载: http://pidgin.im/download/source/
-----------------------------------------------------------
相关帖子:http://briteming.blogspot.com/2015/03/otrto-p2p.html