OTR(Off-the-Record) 技術(shù)探討

中文網(wǎng)絡(luò)上對(duì)OTR(Off-the-record)技術(shù)文章甚少嬉荆,實(shí)際上聊天上采用OTR技術(shù)具有極大的安全性泵额。OTR是一種結(jié)合Diffie-Hellman密鑰交換算法型型、AES算法鸿脓、SHA-1哈希算法的加密在明文情況下傳輸?shù)募夹g(shù)。

通過(guò)OTR技術(shù)妹懒,能夠?qū)崿F(xiàn):

  • 加密聊天內(nèi)容

  • 證明與你聊天的人就是與你聊天的人(防止中間人攻擊)

  • 服務(wù)器無(wú)法記錄你的真實(shí)聊天內(nèi)容

原理

消息鑒別碼(MAC)

在密碼學(xué)中雀监,消息鑒別碼(Message Authentication Code)是經(jīng)過(guò)特定算法后產(chǎn)生的一小段信息,檢查某段消息的完整性,以及作身份驗(yàn)證会前。

假設(shè)有兩個(gè)聊天用戶好乐,一個(gè)叫Alice,一個(gè)叫Bob瓦宜。

例如:Alice要給一個(gè)叫Bob發(fā)信蔚万,Alice將明文MK使用Hash算法進(jìn)行摘要提取,提取結(jié)果為Hash(MK)临庇,之后用Alice的私鑰對(duì)摘要進(jìn)行簽名SA[Hash(MK)]反璃,之后將MK和SA[Hash(MK)]一同發(fā)給Bob。

其中SA[Hash(MK)]便可稱之為消息鑒別碼(MAC)假夺。

它可以用來(lái)檢查在消息傳遞過(guò)程中淮蜈,其內(nèi)容是否被更改過(guò),不管更改的原因是來(lái)自意外或是蓄意攻擊侄泽。同時(shí)可以作為消息來(lái)源的身份驗(yàn)證礁芦,確認(rèn)消息的來(lái)源蜻韭。

過(guò)程

第一步悼尾,使用Diffie-Hellman雙方交換公鑰,確認(rèn)公鑰可以信任(只大概敘述肖方,取mod運(yùn)算被簡(jiǎn)化)闺魏。

  • Alice(用A表示)和Bob(用B表示)每人分別取一個(gè)數(shù)x,y,并且取一個(gè)g

  • A->B: Alice 生成gx,并且簽名SignAlice(gx)

  • B->A: Bob 生成gy俯画,并且簽名SignBob(gy)

  • SS=g^xy: 生成共享的公鑰

第二步析桥,使用公鑰加密消息,消息傳遞艰垂。

  • 計(jì)算EK=Hash(SS), MK=Hash(EK)

  • A->B: Encek(M), MAC(Encek(M),MK)

  • Enc采用對(duì)稱加密算法泡仗,比如AES算法用EK作為密鑰

  • Bob 用MK驗(yàn)證MAC, 用EK解密M

  • 保密性和真實(shí)性得到了保證

第三步,更新密鑰

  • Alice and Bob 再取一個(gè)x',y'

  • A->B: g^x’, MAC(g^x’, MK)

  • B->A: g^y’, MAC(g^y’, MK)

  • SS’ = H(g^x’y’)

  • EK’ = H(SS’), MK’=H(EK’)

  • 隨后猜憎,Alice和Bob安全清除掉之前的SS, x, y, EK

第四步娩怎,繼續(xù)保留 MK

  • Alice 和 Bob 并不需要去清除MK

  • 事實(shí)上,在他們發(fā)下一條消息的時(shí)候還用著之前的MK

  • 這讓中間人攻擊者只能偽造過(guò)去的消息胰柑,并不能對(duì)現(xiàn)在的消息造成影響

從宏觀的角度上來(lái)看截亦,假設(shè)是Alice是消息發(fā)送方 發(fā)給 Bob是消息接受方,大致步驟可以分為:

  1. Alice 和 Bob 都自行生成一對(duì)公私鑰對(duì)柬讨,并將自己的公鑰發(fā)送給對(duì)方

  2. 若消息Alice打算發(fā)送消息M崩瓤,則發(fā)送方首先用Bob的公鑰和自己的私鑰對(duì)M進(jìn)行加密、簽名踩官,得到M1

  3. M1經(jīng)由服務(wù)器被發(fā)送給消息接收方

  4. Bob用自己的私鑰和Alice的公鑰對(duì)M1進(jìn)行解密却桶、簽名校驗(yàn),最終還原出M

Awesome OTRs

官網(wǎng): https://otr.cypherpunks.ca/

pidgin-otr: https://otr.cypherpunks.ca/gentoo-install/otr-setup.html

JavaScript 實(shí)現(xiàn): https://github.com/arlolra/otr

otr.to源代碼(JS): https://github.com/OTRMan/otr.to-chat

一個(gè)python的otr項(xiàng)目: https://github.com/SpiralP/HexChat-otr

otrtalk(JS): https://github.com/mnaamani/otrtalk

Facebook的OTR實(shí)現(xiàn)Chrome插件:https://github.com/osnr/otron

一個(gè)基于OTR技術(shù)的P2P聊天系統(tǒng): https://github.com/mehrvarz/P2pChatOTR

小結(jié)

研究算法的過(guò)程很有趣蔗牡,也很累颖系,每次應(yīng)用OTR技術(shù)聊天的時(shí)候畴嘶,我都強(qiáng)烈的感受到我的數(shù)據(jù)包被加密解密的過(guò)程,不知道為什么集晚,感覺(jué)窗悯,異常,舒爽...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末偷拔,一起剝皮案震驚了整個(gè)濱河市蒋院,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莲绰,老刑警劉巖欺旧,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蛤签,居然都是意外死亡辞友,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)震肮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)称龙,“玉大人,你說(shuō)我怎么就攤上這事戳晌■曜穑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵沦偎,是天一觀的道長(zhǎng)疫向。 經(jīng)常有香客問(wèn)我,道長(zhǎng)豪嚎,這世上最難降的妖魔是什么搔驼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮侈询,結(jié)果婚禮上舌涨,老公的妹妹穿的比我還像新娘。我一直安慰自己妄荔,他們只是感情好泼菌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著啦租,像睡著了一般哗伯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上篷角,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天焊刹,我揣著相機(jī)與錄音,去河邊找鬼。 笑死虐块,一個(gè)胖子當(dāng)著我的面吹牛俩滥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贺奠,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼霜旧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了儡率?” 一聲冷哼從身側(cè)響起挂据,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎儿普,沒(méi)想到半個(gè)月后崎逃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡眉孩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年个绍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浪汪。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巴柿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吟宦,到底是詐尸還是另有隱情篮洁,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布殃姓,位于F島的核電站,受9級(jí)特大地震影響瓦阐,放射性物質(zhì)發(fā)生泄漏蜗侈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一睡蟋、第九天 我趴在偏房一處隱蔽的房頂上張望踏幻。 院中可真熱鬧,春花似錦戳杀、人聲如沸该面。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)隔缀。三九已至,卻和暖如春傍菇,著一層夾襖步出監(jiān)牢的瞬間猾瘸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牵触,地道東北人淮悼。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像揽思,于是被迫代替她去往敵國(guó)和親袜腥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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

  • 姓名:于川皓 學(xué)號(hào):16140210089 轉(zhuǎn)載自:https://baike.baidu.com/item/RS...
    道無(wú)涯_cc76閱讀 2,532評(píng)論 0 1
  • HTTPS 是建立在密碼學(xué)基礎(chǔ)之上的一種安全通信協(xié)議钉汗,嚴(yán)格來(lái)說(shuō)是基于 HTTP 協(xié)議和 SSL/TLS 的組合瞧挤。理...
    i_cassell閱讀 259評(píng)論 0 3
  • 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念,然后通過(guò)一個(gè)加密通信過(guò)程的例子說(shuō)明了加密算法的作用儡湾,以及數(shù)字證書(shū)的出現(xiàn)...
    sunny沖哥閱讀 1,364評(píng)論 0 3
  • 所有貨幣都需要一些方法來(lái)控制供應(yīng)特恬,并強(qiáng)制執(zhí)行各種安全屬性以防止作弊。在法定貨幣方面徐钠,像中央銀行這樣的組織控制貨幣供...
    Nutbox_Lab閱讀 3,076評(píng)論 1 3
  • 我的心里住著兩個(gè)家伙尝丐,一個(gè)是A一個(gè)是B显拜。A是一個(gè)消極主義者,面對(duì)任何事情的時(shí)候他以悲觀對(duì)待爹袁,而B(niǎo)是一個(gè)樂(lè)觀主...
    夏天過(guò)后是冬天閱讀 487評(píng)論 0 0