Home » Computer » Archive by category "Programming" (Page 88)

MSE/PE 的實做

看到 Bittorrent 的 Protocol header encrypt(PHE)、Message Stream Encryption(MSE)/PE 這篇提到:

另外,和 rxlin 討論的時候,他有提到說都公佈了實作部分的話,那是不是 ISP 也知道怎麼擋了…-_-|

SSL 也公佈了實做的部分,你目前有辦法截聽內容嗎?同樣的思路放到這邊來,我只要把固定字串的判斷改用密碼學裡面的方法,是不是也可以達到「無法偵測」的效果?

目前 MSE 1.0 版是透過五個步驟把資料送出去:

A->B
Diffie Hellman Ya (96 bytes)
PadA (Random, 0 ~ 512 bytes)
B->A
Diffie Hellman Yb (96 bytes)
PadB (Random, 0 ~ 512 bytes)
A->B
HASH('req1', S) (16 bytes)
HASH('req2', SKEY) xor HASH('req3', S) (16 bytes)
ENCRYPT(VC, crypto_provide, len(PadC), PadC, len(IA)) (Random, RC4)
ENCRYPT(IA) (Random, RC4)
B->A
ENCRYPT(VC, crypto_select, len(padD), padD)
ENCRYPT2(Payload Stream) (這邊開始傳實際的內容)
A->B
ENCRYPT2(Payload Stream) (這邊開始傳實際的內容)

前面兩個步驟是雙方先各自產生一個 Xa 及 Xb,然後各自計算出 Ya 及 Yb 丟給對方。對方收到後用自己的 Xb (或 Xa) 與 Ya (或 Yb) 運算,就會得到 S,也就是規格裡面這段:

DH secret: S = (Ya^Xb) mod P = (Yb^Xa) mod P

這就是 D-H exchange,如果你問,在得知 Ya 與 Yb 後,是否可以求得 S,或是更強烈,直接求得 Xa/Xb:這是密碼學上的 ,目前 768 bits 的強度已經足夠應付藍星的 P-Cube 或是其他類似的設備。

接下來的 SKEY 是 .torrent 檔案裡面的資訊,第四步的 ENCRYPT 是 RC4,最後面的 ENCRYPT2 是選用 plaintext 或 RC4 編碼,但到這邊的 offset 已經不固定了...。

以這個架構,目前看不出來要怎麼擋。也許是透過軟體實做上的瑕疵 (像是亂數太過規則之類的),不過這個就算發生,也只是那套軟體的問題。另外一種可能是透過 MSE 在大量連線上可能造成密碼系統的弱點,不過到時候 2.0 版又會跟著出爐...

Gmail

發現 裡面的 Javascript code 又有新東西了:More code foreshadowing perhaps?

這次是 Voicemail:

var hZ="inbox, star, starred, chat, chats, draft, drafts, sent, sentmail, sent-mail, sent mail, all, allmail, all-mail, all mail, anywhere, archive, spam, trash, read, unread, voicemail, voicemails";

以及

var Js=new AG(["gmail.com", "googlemail.com", "google.com", "evite.com"]);

之前放到 上的 code 被發現以後很快就公佈服務了,這次應該也是?

的功能愈來愈多了...

Bittorrent 的 Encryption (MSE/PE)

上看到 Bittorrent Encryption 的條目【】,說明最近這幾個月 (Bittorrent) Header Encryption 的故事。

這段故事從 先在 0.60 版實作 Protocol Header Encryption (PHE) 開始講,但是這部份的實作細節並沒有公開發表,所以其他 軟體也不知道要怎麼做。

過了幾個月後 宣稱找到方法偵測 的 PHE (由於 的實作方式沒有公開,這部份應該是使用逆向工程法找出規則)。

再來是 決定自己發展一套規格,後來經過了一些事情,決定與 一起合作。

我剛剛看了一下目前的 Spec 網頁,發現在 2/9 的時候 1.0 版的實作規格就已經定案:,而 2.4.0.0 也成為第一個支援 MSE/PE 的正式版本, 的 Beta 版也有支援部份 Protocol。

Firefox 的 Back-Forward Cache

的 Back-Forward Cache 吃記憶體吃的很兇:這也是為什麼 1.5 跑起來比 1.0 快,但是肥多了的原因之一。

上看到了 討論前陣子 很嚴重的 memory leak,以及其他跟記憶體有關的問題:About the Firefox "memory leak"

在文章裡提到了 Back-Forward Cache 的頁面數目,也就是 about:config 裡的 browser.sessionhistory.max_total_viewers 這個變數。它的預設值是 -1,表示自動判斷。

自動判斷 (-1) 的時候,記憶體數量在 32MB 以下的會自動關掉這個功能 (也就是跟設成 0 一樣),在 64MB 以下 (但是在 32MB 以上) 是 1,在 128MB 是 2,256MB 是 3,512MB 是 5,1GB 以上的是 8。由於這個數字是指【每個 Tab 所存的數量】 (Update:原來那篇文章的作者確認是總量而不是每個 Tab 的數量)【總共要存的數量】,當你 Tab 愈多,記憶體的用量就...

所以在下面的 comment 就有人抱怨了:

Maybe 8 is not the best upper limit?

Do users *really* need to go back 8 times? People usually does back a couple of times but 8....

他說得對,你會天天沒事去 Back 八次嗎?這種事情偶而才會來一次吧?於是我把我的 改成 1:

建議記憶體夠多的人用 2 或 3 就好了,用 8 實在太 (*逼*) 了...

當然,下面已經有人提出建議,用一些算法 (像是 Current Tab 比較多,其他的比較少) 以降低用量之類的,不過那是以後才會看到的事情... 現在這種先這樣用吧。

Maple3 的軟體授權問題

好像每一陣子就會被拿出來講...。

現在大家所看到的 Maple3 並不是 opus (Original author) 或 親自釋出的。而是透過兩個管道流出,一個是從 woju 的 FromZero (從零開始):(Re: NTHU-CS Maple 3.0 BBS ports 計畫展開!Re: 想請 vanilla 幫忙做 ports),另外一個是 放出來的 Maple3 (3.02 版)。

現在大家在用的 Maple3 都是 放出來的版本,這個版本在 ftp://php.twbbs.org/pub/bbs/ 下還找的到,也成為後來其他 Maple3 BBS 主要的來源 (包括了 )。

在 Open Source Community 的部份,目前還有繼續維護的應該只剩下

回到原來主題,有些人宣稱 Maple3 的授權不是 GPL (Ptt2,in2 板),有些人對外宣稱 Maple3 是 Cleanroom Software (有沒有自由軟體的同好呀...),不過,如果用 grep 掃一次當年 所釋出的版本:

gslin@netnews [~/work/bbs/src] [3:55/W4] grep -r '2\.36' .
./innbbsd/Makefile:# innbbsd/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #
./bmtad/Makefile:# bmtad/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #
./bpop3d/Makefile:# bpop3d/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #
./include/bbs.h:/* bbs.h ( NTHU CS MapleBBS Ver 2.36 ) */
./include/global.h:/* global.h ( NTHU CS MapleBBS Ver 2.36 ) */
./include/modes.h:/* modes.h ( NTHU CS MapleBBS Ver 2.36 ) */
./include/proto.h:/* proto.h ( NTHU CS MapleBBS Ver 2.36 ) */
./include/perm.h:/* perm.h ( NTHU CS MapleBBS Ver 2.36 ) */
./include/struct.h:/* struct.h ( NTHU CS MapleBBS Ver 2.36 ) */
./include/config.h:/* config.h ( NTHU CS MapleBBS Ver 2.36 ) */
./include/global.h~:/* global.h ( NTHU CS MapleBBS Ver 2.36 ) */
./include/config.h~:/* config.h ( NTHU CS MapleBBS Ver 2.36 ) */
./include/modes.h~:/* modes.h ( NTHU CS MapleBBS Ver 2.36 ) */
./bgopherd/Makefile:# util/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #
./maple/board.c:/* board.c ( NTHU CS MapleBBS Ver 2.36 ) */
./maple/cache.c:/* cache.c ( NTHU CS MapleBBS Ver 2.36 ) */
./maple/edit.c:/* edit.c ( NTHU CS MapleBBS Ver 2.36 ) */
./maple/mail.c:/* mail.c ( NTHU CS MapleBBS Ver 2.36 ) */
./maple/xover.c:/* xover.c ( NTHU CS MapleBBS Ver 2.36 ) */
./maple/Makefile:# Makefile ( NTHU CS MapleBBS Ver 2.36 ) #
./maple/bso/Makefile:# Makefile ( NTHU CS MapleBBS Ver 2.36 ) #
./maple/bso/vote.c:/* vote.c ( NTHU CS MapleBBS Ver 2.36 ) */
./maple/bso/chat.c:/* chat.c ( NTHU CS MapleBBS Ver 2.36 ) */
./util/hdr-dump.c:/* util/hdr-dump.c ( NTHU CS MapleBBS Ver 2.36 ) */
./util/mail.acl:110542.3651@compuserve.com SPAM # Jan 12 03:27:54 17 (110)
./util/mailpost.c:/* util/mailpost.c ( NTHU CS MapleBBS Ver 2.36 ) */
./util/Makefile:# util/Makefile ( NTHU CS MapleBBS Ver 2.36 ) #

呃... Cleanroom?

如果你有改過 Maple2 與 Maple3 的 source code,應該還會發現裡面某些 function 根本是直接抄 Maple2 的。如果你有翻 src/lib/ 下的東西,還可以發現某些 BSD license code (但是卻沒有把 license 的部份附上,參考 src/lib/xsort())

這個問題,應該很明顯了吧...

Archives