程序員對(duì)私密聊天的亂想

嘮叨

群里有人推了個(gè)項(xiàng)目TgWechat,微信端對(duì)端加密插件双仍,還特意@了我表示感謝枢希,受寵若驚。

隱私問(wèn)題其實(shí)說(shuō)了很久朱沃,有人說(shuō)微信其實(shí)一直看著我們聊天苞轿,具體是怎么樣的,咱也不知道逗物,咱也不敢問(wèn)吖...

誰(shuí)沒(méi)個(gè)秘密呢搬卒,或者和朋友開個(gè)玩笑,或者和伴侶聊點(diǎn)"家常"翎卓,如果這些內(nèi)容暴露在別人眼中契邀,確實(shí)有點(diǎn)尷尬,但畢竟咱也沒(méi)亂說(shuō)啥吖...

不過(guò)加密聊天也可有能會(huì)給某些人提供某些庇護(hù)失暴,導(dǎo)致出現(xiàn)一些安全問(wèn)題坯门,這也是一個(gè)大問(wèn)題...

所以你讓我說(shuō)微信到底要不要、能不能看我們聊天內(nèi)容逗扒,我確實(shí)也說(shuō)不好...

所以這里不討論這種問(wèn)題古戴,我只聊技術(shù)。

不是廣告~~

端對(duì)端加密( end-to-end encryption)矩肩,按我的簡(jiǎn)單理解就是A和B聊天现恼,A說(shuō)出去的話加密后,只有B能夠解開密文蛮拔,拿到明文述暂,這個(gè)過(guò)程中網(wǎng)絡(luò)傳輸過(guò)程全是加密的痹升。

2017年8月建炫,WhatsApp宣布對(duì)所有通訊信息進(jìn)行端到端加密,WhatsApp超過(guò)10億用戶的所有信息(包括文字疼蛾、照片肛跌、視頻、文件和語(yǔ)音信息)在默認(rèn)下都會(huì)進(jìn)行端到端加密,包括群聊衍慎。

“我們的想法很簡(jiǎn)單:當(dāng)你發(fā)送一條消息转唉,只有接收你消息的人或群組可以讀取,”WhatsApp創(chuàng)始人Jan Koum和Brian Acton表示稳捆,“沒(méi)有人可以看到這些消息赠法,網(wǎng)絡(luò)罪犯、黑客乔夯、政府人員甚至我們都不能看到這些消息砖织。端到端加密可確保WhatsApp通訊的隱私性,這有點(diǎn)像面對(duì)面的談話末荐〔啻浚”

看了這個(gè)新聞,知道我沒(méi)理解錯(cuò)甲脏。

其實(shí)我很早就寫了個(gè)小工具眶熬,就實(shí)現(xiàn)了端對(duì)端加密,而且還是對(duì)聊天工具透明的块请,也就是說(shuō)任何工具都能用娜氏。

哈哈,有點(diǎn)吹了...

小工具叫做Chisechat负乡,slogn是“獨(dú)屬于你和我的心靈密令”牍白,本來(lái)是我自用的小玩意,后來(lái)改了幾版之后才分享出來(lái)的抖棘。

功能很簡(jiǎn)單茂腥,A和B都用Chisechat設(shè)置一個(gè)一樣的密碼(私下協(xié)商,打電話或者當(dāng)面定好)切省,A把要發(fā)的內(nèi)容放到Chisechat加密最岗,再用聊天工具把加密內(nèi)容發(fā)給B,B拿到密文在Chisechat中解密查看朝捆。

看起來(lái)操作是不是挺麻煩般渡,其實(shí)還好,因?yàn)槲裔槍?duì)操作做了優(yōu)化芙盘,基本不影響聊天體驗(yàn)驯用,具體不說(shuō)了,感興趣的自行下載試用儒老,地址:https://anhkgg.com/Chisechat/蝴乔。

唯一讓我拿出來(lái)分享的原因是,我覺(jué)得自己做的挺好玩驮樊,讓我啰嗦說(shuō)道一下薇正。

Chisechat剛開始加密就是簡(jiǎn)單的xx算法+base64片酝,然后base64的內(nèi)容特征太明顯,也不好看挖腰,我就開始想怎么弄得更自然一點(diǎn)雕沿,后來(lái)增加了兩種模式。

  1. 增加base64中文版算法猴仑,也就是那些xx字符全換成我選的一些中文审轮,這樣編碼結(jié)果看起來(lái)自然多了
  2. 后來(lái)覺(jué)得選的字太簡(jiǎn)單也不好看,就靈光一閃想到粵語(yǔ)辽俗。是的断国,粵語(yǔ)詞看起來(lái)非常炫酷,非常好玩榆苞。

具體如何你們自行鑒賞一下:

1.png

OK稳衬,扯得有點(diǎn)多了,我的Chisechat其實(shí)一種粗糙且粗暴的一種解決方案坐漏,但夠用了薄疚。

研究

那WhatsApp是如何做的呢?不知道赊琳。

但是搜索的時(shí)候街夭,看到了這個(gè)必須擁有姓名的軟件Telegram,也就是TgWechat參考的躏筏。

Telegram中文名好像叫做“電報(bào)”板丽,很安全的感覺(jué)。Telegram號(hào)稱"這個(gè)世界上沒(méi)人能監(jiān)控我"趁尼。

Telegram 為一對(duì)一的聊天提供端對(duì)端加密埃碱,加密模式是基于256位對(duì)稱AES 加密,RSA 2048 的加密和Diffie-Hellman 的安全密鑰交換協(xié)議酥泞。協(xié)議極其優(yōu)秀砚殿,兼具數(shù)學(xué)和工程之美,不僅加密基礎(chǔ)非常完善芝囤,在工程上也很出色似炎,Telegram傳遞的消息為函數(shù),可擴(kuò)展性相當(dāng)強(qiáng)悯姊。

Telegram用的是RSA-dh+AES來(lái)完成的端對(duì)端加密羡藐。

按我一個(gè)密碼學(xué)渣的粗淺理解就是:

  1. A和B擁有相同的p、q悯许,通過(guò)RSA生成各自公鑰和私鑰仆嗦。
  2. 私鑰自行保存,公鑰通過(guò)網(wǎng)絡(luò)發(fā)送給對(duì)方岸晦。
  3. 互相拿到公鑰后欧啤,和自己的私鑰一起算出一個(gè)共享密鑰
  4. A和B算出密鑰是一樣的,這樣就是可以互相AES加密解密了启上。

具體算法大家自行查看其他更詳細(xì)的分享邢隧,比如對(duì)抗中間人攻擊(RSA簽名),爆破(p冈在、q很大)倒慧。

看一下這個(gè)實(shí)例更好理解:

//https://blog.csdn.net/andylau00j/article/details/82178351

1.愛(ài)麗絲與鮑伯協(xié)定使用p=23以及g=5.
 
2.愛(ài)麗絲選擇一個(gè)秘密整數(shù)a=6, 計(jì)算A = g^a mod p并發(fā)送給鮑伯。
   A = 5^6 mod 23 = 8.
 
3.鮑伯選擇一個(gè)秘密整數(shù)b=15, 計(jì)算B = g^b mod p并發(fā)送給愛(ài)麗絲包券。
   B = 5^15 mod 23 = 19.
 
4.愛(ài)麗絲計(jì)算s = B a mod p
  19^6 mod 23 = 2.
 
5.鮑伯計(jì)算s = A b mod p
   8^15 mod 23 = 2.

總的來(lái)說(shuō)纫谅,Telegram通過(guò)很牛逼的密鑰交換算法讓兩方擁有了一樣的密碼,然后別人不知道溅固,也找不到付秕,這樣子聊天內(nèi)容一加密,就只有對(duì)方能夠看到侍郭,如此完成了一個(gè)端對(duì)端加密的安全聊天通道询吴。

再扯一句,Telegram是通過(guò)協(xié)議和算法來(lái)完成協(xié)商密鑰亮元,而我的Chisechat是人工通過(guò)其他通道協(xié)商的密鑰猛计,殊途同歸,嘎嘎爆捞。

猜測(cè)

理論搞明白了奉瘤,現(xiàn)在想想TgWechat是怎么做的呢(這玩意加的vm太多了...別想逆了)?

其實(shí)也有兩種方式煮甥,一種類似于Chisechat的思路盗温,自行設(shè)置密碼,然后加密聊天成肘,一種就是像Telegram一樣通過(guò)協(xié)議和算法完成肌访。

這前面密碼的事都沒(méi)啥好說(shuō)的,關(guān)鍵在Wechat不是你自己的軟件艇劫,要怎么插入一些自己的東西進(jìn)去吼驶。

這里我也只是給出思路,猜測(cè)TgWechat是這么做的店煞。

  1. hook sendmsg蟹演、recvmsg。
  2. 密鑰協(xié)商階段顷蟀,檢查發(fā)送內(nèi)容和接收內(nèi)容是不是特定內(nèi)容酒请,是則通過(guò)算法生成公私鑰,公鑰sendmsg發(fā)送出去鸣个。
  3. recvmsg收到公鑰羞反,算出共享密鑰布朦。
  4. 后續(xù)發(fā)送和接收到內(nèi)容時(shí),通過(guò)加密算法先加解密昼窗,再發(fā)送出去或者顯示是趴。

OK,基本就是這樣了澄惊。

點(diǎn)擊原文體驗(yàn)Chisechat:https://anhkgg.com/Chisechat/

參考:

  1. WhatsApp宣布對(duì)所有通訊信息進(jìn)行端到端加密
  2. 全球沒(méi)人能監(jiān)控的聊天軟件也要死了 — Telegram唆途。
  3. DH秘鑰交換算法
  4. TgWechataa
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市掸驱,隨后出現(xiàn)的幾起案子肛搬,更是在濱河造成了極大的恐慌,老刑警劉巖毕贼,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件温赔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鬼癣,警方通過(guò)查閱死者的電腦和手機(jī)让腹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扣溺,“玉大人骇窍,你說(shuō)我怎么就攤上這事∽队啵” “怎么了腹纳?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)驱犹。 經(jīng)常有香客問(wèn)我嘲恍,道長(zhǎng),這世上最難降的妖魔是什么雄驹? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任刁品,我火速辦了婚禮雳攘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己柒桑,他們只是感情好摩疑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布匕累。 她就那樣靜靜地躺著渡八,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霞怀。 梳的紋絲不亂的頭發(fā)上惫东,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音毙石,去河邊找鬼廉沮。 笑死颓遏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滞时。 我是一名探鬼主播叁幢,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼漂洋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起力喷,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刽漂,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后弟孟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贝咙,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年拂募,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庭猩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陈症,死狀恐怖蔼水,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情录肯,我是刑警寧澤趴腋,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站论咏,受9級(jí)特大地震影響优炬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厅贪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一蠢护、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧养涮,春花似錦葵硕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至宣决,卻和暖如春蘸劈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尊沸。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工威沫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贤惯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓棒掠,卻偏偏與公主長(zhǎng)得像孵构,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烟很,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 互聯(lián)網(wǎng)的通信安全颈墅,建立在SSL/TLS協(xié)議之上。 本文簡(jiǎn)要介紹SSL/TLS協(xié)議的運(yùn)行機(jī)制雾袱。文章的重點(diǎn)是設(shè)計(jì)思想和...
    拉肚閱讀 2,643評(píng)論 0 6
  • 數(shù)字證書原理 - 無(wú)恙 - 博客園 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念恤筛,然后通過(guò)一個(gè)加密通信過(guò)程的例子說(shuō)明...
    拉肚閱讀 1,663評(píng)論 0 3
  • 前言 文中首先解釋加密解密的一些基礎(chǔ)知識(shí)和概念毒坛,然后通過(guò)一個(gè)加密通信過(guò)程的例子說(shuō)明了加密算法的作用,以及數(shù)字證書的...
    sunny沖哥閱讀 2,992評(píng)論 0 2
  • 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念林说,然后通過(guò)一個(gè)加密通信過(guò)程的例子說(shuō)明了加密算法的作用煎殷,以及數(shù)字證書的出現(xiàn)...
    sunny沖哥閱讀 1,388評(píng)論 0 3
  • 原文地址:數(shù)字證書原理,公鑰私鑰加密原理 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念,然后通過(guò)一個(gè)加密通信過(guò)程的例...
    淇濱杜隆坦閱讀 4,164評(píng)論 4 46