Archive

Posts Tagged ‘IM’

Pidgin加密插件介绍

March 1st, 2011 No comments

PidginUnix/Linux下使用最多的IM客户端,支持MSNGTalk、飞信1等几十种协议。Pidgin同时也是一个开放应用程序框架,允许用户开发自己的插件。本文介绍在Pidgin官网列出的几款通信加密插件,并分析其安全性和易用性。

Pidgin-paranoia

Pidgin-paranoia基于一次一密乱码本的加密原理。假设你和朋友各自有一本一模一样的小本子,里面写的是一串随机字符序列。当你要发信息给朋友的时候,就将信息(明文)按照顺序与小本子中的随机字符进行异或操作,这就加密成了密文。你的朋友收到密文之后根据小本子将密文再次进行异或操作,便还原了明文。之后你和朋友将乱码本上“用过”的字符序列撕掉,下次加密/解密的时候使用新的随机字符序列。如果乱码本的随机字符序列足够长,那么理论上一次一密乱码本是无法破解的。

一次一密乱码本原理上完美,使用上却有几个问题。第一个问题就是乱码本属于对称加密,你和朋友需要共享乱码本。如果安全的与朋友共享乱码本而不被他人监听获取,是对称密码的主要的问题。Pidgin-paranoia官方页面给出的一个方案是“拷贝到U盘里面,然后(寄)给你的朋友

对称加密的第二个问题是如果你有N个朋友,那么你就需要N个密码本。如果这些朋友相互之间通信,那么就需要N*N个不同的密码本。朋友一多,乱码本管理就麻烦起来。

通信的安全性只依赖于乱码本的安全性,乱码本是明文保存在硬盘里的,进而安全性依赖于你和朋友的电脑的安全性。如果你的电脑被入侵,被盗窃,被别人扣留,那么对方就可以得到密码本,继而得以知道你和朋友聊天的所有内容。

另外,Pidgin-paranoia没有认证功能,无法确定和你聊天的是否就是你的朋友,中间人可以伪造消息。

Pidgin-paranoia目前的最新版本是0.4.0

Pidgin-GPG

PGP是久经考验的邮件加密工具/协议,而GPGPGPGNU实现。Pidgin-GPG实现了GPG的功能,从而(理论上)可以达到和GPG一样的安全性。

Pidgin-Encryption

Pidgin-Encryption的设计考虑了安全性和易用性的折中问题,设计时参考了SSH的风格。Pidgin-Encryption为每一个帐号新建一个公钥/私钥对。当你与朋友聊天时,Pidgin-Encryption会将你的公钥发送给对方,同时接收对方的公钥并保存起来。相互有了对方的公钥之后便可以进行加密聊天了。下一次聊天时Pidgin-Encryption会先比对对方发送的公钥和上次接受的公钥是否一致,如果不一致将提示你进行确认,以防止中间人攻击。

Pidgin-Encryption最大的特点就是易用,安装并开启了之后,不需要额外的设置就可以直接使用。Pidgin-Encryption使用MozillaNSS库,提供加密和认证两个功能。缺点是其安全性也依赖于私钥的安全性,而私钥是明文保存的,如果你的电脑被入侵,被盗窃,被别人扣留,那么对方就可以得到私钥,继而可能破译你和朋友聊天的所有内容。

周期性的删除并重新生成自己的公钥/私钥对可以在一定程度上避免以往的聊天内容被破译。

Pidgin-OTR

 

Pidgin-OTR是四款插件中最年轻的一款插件,采用Ian Goldberg等人专门为IM聊天设计的安全协议,其对IM通信安全的角度和目标也和之前的几款插件不同。

Ian Goldberg等人认为在IM上的“秘密”谈话应该和两个人在单独房间中谈话一样“秘密”,满足以下的特点(假设这两个人叫AliceBob):

  1. Alice能够确认自己在和Bob谈话,反之亦然。
  2. 房间只有他们俩,除非实现安装了窃听器,或者AliceBob)自己说出来,没有人知道他们的谈话内容。
  3. 即使AliceBob的谈话内容透露出来,她也不能证明这些话确实是Bob说的,反之亦然。

其中特点1是属于认证(Authentication)要求;特点2在网络上无法满足(任何路由节点都可以窃听),需要用加密来保证;特点3 Pidgin-EncryptionPidgin-GPG都无法满足。Pidgin-OTR根据以上的场景,在保密性和认证功能的基础上提出了另外两个设计目标:

  1. Perfect Forward Secrecy:即使获取了BobAlice的电脑,知道了所有的私钥、公钥、密码,截获了过去所有的数据包,也无法破译AliceBob过去的通信内容。
  2. Repudiable AuthenticationBob知道自己在和Alice通信,但是无法向第三人证明信息就是Alice发送的。

在实现上,Pidgin-OTR使用了短生命期密钥和消息认证吗机制来达到上述的两个设计目标。大致的协议过程如下:

  1. 通过经典的Diffie-Hellman密钥交换过程交换公钥,得到一个共享的密钥SS
  2. 密钥SS进行散列处理,得到通信需要的对称加密密钥EKMAC密钥MK,加密通道建立完成;
  3. 用第二组公钥再次使用Diffie-Hellman交换过程,得到第二个共享的密钥SS’
  4. 密钥SS’进行散列处理,得到通信需要的加密密码EK’MAC密码MK’
  5. 丢弃SSEK,将MK随后续数据报文发送出去,握手完成。

这个设计如何保证Perfect Forward SecrecyRepudiable Authentication

  1. Perfect Forward SecrecyPidgin-OTR在每次会话建立的时候生成临时的公钥/私钥对,并在会话结束时删除。由于AliceBob)的私钥只存在于AliceBob)的电脑中,一旦删除便可做到彻底无法恢复。这就保证了即使窃取了AliceBob)的电脑,或是在其中装了后门,也无法知晓之前AliceBob的通信内容。
  2. Repudiable Authentication:首先通信内容是采用的对称加密方式,这就使得Bob无法证明加密信息是自己生成的还是Alice生成的;其次步骤5的时候将MK发送出去,使得窃听者可以伪造基于密钥SS的数据包。由于AliceBob已经采用了基于SS’的密钥,所以无法欺骗AliceBob,但是另一方面,AliceBob就可以以此抵赖自己发送过的数据包。

其它通信安全问题

除了使用以上各种加密插件之外,以下问题也会对你和朋友的通信安全有影响:

  1. Pidgin聊天记录。默认是开启的,而Pidgin-Encryption等插件都是是默认保存解密后的明文。如果你的电脑被别人访问,对方可以直接看到你的聊天记录。加密聊天的时候最好选择“不记录本次会话”,或者干脆关闭聊天记录功能。
  2. 木马/后门/Rootkit/按键记录器。如果你是“重要人物”,那么小心你的电脑上可能会被黑客安装这些东西。这意味着你的私钥会被窃取,继而通信的安全性就不存在了。定期杀毒、经常更换私钥都无法彻底避免。用LiveCDLiveUSB来启动可以彻底避免这个问题。
  3. 站在背后的人/摄像头。他能看到你看到的内容,即所有聊天内容。
  4. 不要在网吧使用。理由是网管和GA局都可以看到你的屏幕。

参考链接

pidgin-paranoia主页:http://pidgin-paranoia.sourceforge.net/

pidgin-GPG主页:https://github.com/segler-alex/Pidgin-GPG/wiki

pidgin-encryption主页:http://pidgin-encrypt.sf.net/

pidgin-OTR主页:http://www.cypherpunks.ca/otr/

pidgin主页:http://pidgin.im/

1通过openfetion移植到Pidgin实现。

 

带有加密插件的Pidgin安装、设置及使用教程

January 18th, 2011 4 comments

本教程针对使用Windows操作系统、计算机用得不熟练的人编写,在学习完本教程之后,你将可以学到如何安全的与恋人/亲人通信,避免第三人窥视。

跳过介绍,直接看安装步骤

什么是Pidgin?

Pidgin是一款跨平台、支持多种即时通讯(IM)协议的聊天工具。属于开源软件,遵守GPLv2,目前Windows平台和Linux平台都可以运行,支持MSN、GTalk、Yahoo、Skype、Facebook、Twitter等帐号。国内常用的IM工具有QQ、MSN、GTalk、飞信、人人、百度Hi等。Pidgin目前很好的支持MSN和GTalk。虽然也支持QQ2008协议,但是腾讯会在QQ号登录几分钟后将QQ帐号锁定。飞信协议Pidgin的支持不是很好。

什么是Pidgin-Encryption?

Pidgin-Encryption是Pidgin的一款插件,可以端到端支持通信加密。当双方启用了Pidgin-Encryption之后,除了你的电脑和对方的电脑,中间的任何网络节点都无法看到你们在聊什么。Pidgin-Encryption的设计初衷是提供一款足够简单的加密方案,在插件安装之后只需要开启即可,不需要任何设置就可以使用,非常适合对计算机不是很熟悉的人使用。

为什么要用Pidgin和Pidgin-Encryption?

你可能从来没有想过,你在QQ/MSN上说出的每一句话都被记录。当你使用QQ/飞信(短信)/Gtalk/MSN/Skype的时候,你的聊天记录会被腾讯/移动/Google/微软/TOM(可能是永久的)保存,并可随时被该公司及其它机构查阅、分析。

如果你不想让自己和恋人/爱人的私密聊天内容被完全不认识的人作为娱乐的材料;如果你觉得自己在和恋人/爱人说悄悄话的时候,身边有一个不认识的人拿着录音笔记录会让你很尴尬;如果你想要保留一点点隐私,那么Pidgin和Pidgin-Encryption就是为你准备的。

在MSN/GTalk中文版上聊天相当于把话写在明信片上邮寄出去,所有经手的邮差(电脑)都能够看到,并复印一份;在QQ和GTalk英文版上聊天相当于把话写在信里,把信放到信封里邮寄给腾讯/Google,然后腾讯/Google把信封拆开,复印一份,再将信邮寄给跟你聊天的人。Pidgin-Encryption作用是一个翻译员,负责把你说的话翻译成只有对方的翻译员(Pidgin-Encryption)看得懂的语言,然后将翻译后的文字写到明信片(如果用MSN)或者信封里(如果用GTalk英文版)。这样,除了你和跟你聊天的那个人,其他人都不知道你们聊的内容。

Pidgin-Encryption安全么?

Pidgin-Encryption使用了成熟的RSA加密机制,在原理上是安全的。具体的算法实现可以参考Pidgin-Encryption主页

没有任何加密算法能够保证你的信息万无一失。Pidgin-Encryption可以保证你的通信是安全的,但是是在你的电脑和对方的电脑安全的前提下。在下列条件下通信内容是不安全的:

  • 你的电脑或者对方的电脑中了木马。
    这样黑客就可以获取你的聊天记录、私钥等隐私内容。
  • 你或对方的私钥被窃取。
    私钥被窃取后,使用此私钥的所有通信都可能被解密。
  • 你选择了存储聊天记录,而你的电脑被其他人接触。
    聊天记录是明文存储的,这意味着一个人只要能登录你的Windows帐号,就可能看到你的聊天记录。
  • 聊天的时候背后有人看着你。

Pidgin和Pidgin-Encryption安装。

  1. 点击进入Pidgin官方网站下载Pidgin的Windows的安装程序。因为是exe文件,浏览器可能认为有危险,会要求你确认是否下载。点击“是”确认下载。
  2. 点击进入Pidgin-Encryption网页下载Pidgin-Encryption的安装文件,链接名称为“Win32 self-extracting binary”。或者直接点击这里直接下载3.1版。
  3. 安装Pidgin
    Pidgin的安装过程和一般Windows软件相同,一路Next即可。如果修改了默认的安装目录,需要记住安装到哪里了。
  4. 安装Pidgin-Encryption
    Pidgin-Encryption的安装过程和一般Windows软件相同,一路Next即可。需要注意的是安装目录必须选择跟Pidgin一样的目录。
  5. 设置MSN/GTalk帐号
    1. 第一次启动时的设置
      如果是安装完的第一次启动,Pidgin会弹出一个向导要求输入帐号信息,如下图所示:

      Pidgin帐号设置向导

      Pidgin帐号设置向导

      点击“添加”按钮,进入“添加帐号”对话框。

    2. 设置MSN帐号
      添加MSN帐号

      添加MSN帐号

      “协议”下拉菜单选择“MSN”协议,在用户名中输入你的MSN帐号。这个时候不需要输入密码,可以在登录的时候输入。注意不要选中“记住密码”,因为Pidgin是明文存储你的登录密码的。
      本地别名是你和别人在聊天的时候显示的你的名字。如果空白,则默认是你MSN帐号的昵称。

    3. 设置GTalk帐号
      添加GTalk帐号

      添加GTalk帐号

      “协议”下拉菜单选择“Google Talk”协议,在用户名中输入你的GMail帐号。这个时候不需要输入密码,可以在登录的时候输入。注意不要选中“记住密码”,因为Pidgin是明文存储你的登录密码的。

  6. 设置Pidgin-Encryption插件。
    1. 在Pidgin主面版上点击“工具”菜单,选择“插件”。
      Pidgin->工具->插件

      Pidgin 工具->插件

      在弹出的窗口中选中“Pidgin-Encryption”,如下图所示:

      启用pidgin-encryption

      启用pidgin-encryption

      选中之后,点击“配置插件”按钮,对照下图选中部分选项:

      设置pidgin-encryption

      设置pidgin-encryption

      点击“关闭”结束设置。

  7. 设置结束,开始加密通信。
    1. 经过以上设置之后,我们就已经可以和朋友加密通信了。双击好友列表中的任意一位在线好友,打开聊天窗口之后,会看到菜单栏中间有一个锁的标志。默认锁是开着的,表示没有开启加密。点击这个小锁,就开启加密了。

      pidgin-chat-window

      带有加密插件的Pidgin聊天窗口

    2. 每次打开聊天窗口点击一下小锁按钮有点麻烦,Pidgin-Encryption提供了默认开启加密的功能。在Pidgin好友列表窗口中右击好友的头像,选中“开启自动加密(Turn Auto-Encrypt On)”,就可以了。

写在最后

  1. Pidgin和Pidgin-Encryption相对于QQ等聊天工具,局限性还是很大的。除了聊天也就基本不能做别的事情了(不能视频,不能语音,传送文件很慢)。
  2. Pidgin-Encryption不是默认功能,需要双方都安装才能使用,增加了第一次使用的难度。
  3. Pidgin-Encryption是有局限性的,它假设用户的电脑是安全的。如果某人可以访问你的电脑(这种事情经常发生),拷贝出来你的私钥,你就没有任何安全性可言了。应对方法一个是用EFS加密你的pidgin目录,防止有人绕过你的操作系统直接访问硬盘;第二个是定期更换私钥,当然这个不是很靠谱。
  4. 除了Pidgin-Encryption之外还有pidgin-OTR、pidgin-GPG和Pidgin-Paranoia插件可以使用。功能类似,设置也都不复杂。感兴趣的同学可以看这里。之所以使用Pidgin-Encryption,主要是因为刚开始上手的就是这个,原理上也是安全的,开源软件,至少不用担心有后门存在。
  5. 建议不要相信任何非开源的加密软件,例如很多伴随QQ运行的“加密”软件,其“安全性”往往都是浮云。
  6. 借用目前在百度实习的一位师兄的话结尾:“(有的时候)不是互联网公司侵犯了你的隐私,而是你把隐私放到了网上。” 如果不想有隐私被侵犯的感觉,那么就赶紧使用加密聊天工具吧。