如何利用已有的流行即時通訊軟體實現自定義加密通信?

盡量防止任意第三方查看通信內容和被軟體運營方感知。


參考:

發送方:

base64encode(rsa_encrypt("原始內容"))

微信發送"xxxxx"...

接收方:

rsa_decrypt(base64decode("xxxxx"))

注意雙方先交換公鑰。


雖然不是這個領域的專業,但正好看過一些相關的書。簡單地概括,題主的問題是典型的閾下信道問題。

這個問題表述為:

Alice想通過閾下信道傳遞給Bob,他們之間的任何信息都暴露在Walter之下,如果Alice和Bob對信息加密,則Walter雖然讀不懂他們之間的信息,但他可以馬上知道Alice和Bob正在試圖繞過他的視線建立秘密聯繫。因此任何的直接加密是不可行的。

在這個場景下Alice需要和Bob約定建立一個閾下信道。即通過雙方的約定,把信息隱藏在公開信道當中,這個信息無法被看守Walter感知。例如以本回復為例。每一個段落隱藏了一個bit,如果段落中文字數為奇數,則隱藏了「1」,如果為偶數,則為「0」。

以上面的例子,我通過構建前四個段落的文字,向閱讀這篇回復的接收者傳遞了1100(前四個段落,中文字數分別為奇、奇、偶、偶)。所有不知道這個演算法的人,包括時刻監視我的通信的Walter,均無法感知我發送的1100這個數據。這個就是最簡單的閾下信道。

當然,這個信道也是可以被攻擊的。主要是通過主動往信道中插入信息以擾亂甚至封閉閾下信道,使得Alice和Bob無法通信。又或者通過檢測雙方通信的隨機性,從而發現在正常通信中是否有隱藏信息。如何建立一個安全的閾下信道,那是密碼學專家的課題了。


給題主一個關鍵詞:PGP

自己搜索,拿好不謝


你這不就是在現有的信道上再加一層私人加密么 = =

整體加密強度取決於你的私人加密強度


把昵稱改成「Alice」和"Bob"


樓上的回答都需要有另外的信道傳遞密文,其實已經算作弊了啦。你怎麼保證傳遞密文的信道就不被監聽呢?

密碼學裡這個的標準解是 Diffie-Hellman key exchange ,簡單來說是以下圖示:

前提是我們有一個問題,可以簡單的算出 A+B -&> C,但是極難反推出 C-A -&> B 。這是當今所有公共密碼協議的基礎,比如RSA就是選用大質數求冪問題,其他還有基於橢圓曲線問題等等。

  • 首先Alice和Bob各自選擇一個共同的公鑰和一個獨立的密鑰
  • 互相傳遞 (公鑰+自己的密鑰) 這個值
  • 得到對方值以後,再加入自己的密鑰, 雙方都得到(公鑰 + Alice密鑰 + Bob密鑰),用這個值來作為通信的密碼
  • 但是因為密鑰從來就沒有傳輸過,監聽方只能達到(公鑰 + Alice密鑰) 與 (公鑰 + Bob密鑰)
  • 前面說了,因為我們選的問題本身決定了拆分極為困難,監聽方無法得到(公鑰 + Alice密鑰 + Bob密鑰)這個值。

當然這個方法只能做到防止第三方破譯你們通信的內容,卻無法掩飾你們通信的頻率,時間等等。要完全保密只有自己另外建立信道。

補充:允許信道更改你們通信內容的話,第三方可以通過man in the middle來破譯你們的密碼。估計你們的話題還沒有重要到需要騰訊專門建立一個系統來修改通信內容,只是被動防監聽的話這樣足夠了。


上學的時候傳紙條用的是五筆碼。然後輸到文曲星解碼

h ip r jfwh wfny xqa tsu et r j gg ttfn dcg. qdrg lwgj gc yygy mad jtg qev dcg.


http://repo.xposed.info/module/rbq2012.wechatcipher


雙方確定好密碼後 發送的信息和解碼的信息 都使用AES加密 一般解不開


《如何在通話中拋一枚公正的硬幣》

雙方RSA加密信息即可。


我的一個朋友自己發明了一套不成熟的語言,叫giagia語。

舉例:

hibi表示好吧。

mimi意思是沒有。

頂級加密。


推薦閱讀:

漢諾塔問題的遞歸解法是怎麼想出來的?
編譯原理和演算法導論是不是屠龍技 有技而無龍可屠?
有哪些有用或者好玩的 Telegram Bot?
C++ 關於 static 對象定義問題?
python求解八皇后問題中的回溯究竟體現在哪裡了?

TAG:互聯網 | 即時通訊IM | 程序員 | 編程 | 加密 |