顯示具有 94360184 邱怡瑄 標籤的文章。 顯示所有文章
顯示具有 94360184 邱怡瑄 標籤的文章。 顯示所有文章

2008年8月21日 星期四

Defending Against Statistical Steganalysis - 心得與筆記(1)

關於OutGuess的Embedding Process

整段文章中,最常使用的關鍵字為「redundant bits」,關於「redundant bits」,在老師的blog有一段文章如下:『冗餘位元(redundant bits) 就是經過修改也不會在掩護媒體中產生會被偵測出來的品質下降現象(degrading)。』
而OutGuess的理念就是將機密訊息嵌入到Redundant Bits。

寫在隱藏之前,作者提到了他將Embedding Process切割成兩個步驟:
1. Identification of redundant bits. (將redundant bits辨別出來)
2. The selection of bit in which the hidden information should be placed.(挑選適合放置隱藏訊息的地點)

關於切割成這兩個步驟的理由,老師的blog提到:『切割成兩個步驟的好處是容易取代(easy replacement), 如果要將本篇論文提出的方法在別的資料格式中實作出來, 只要將 identification algorithm 換掉, 然後用新的選擇策略(selection strategy)即可。』

也就是說,由於cover medium的並非只有JPEG這種格式,雖然本篇論文是以針對JPEG格式來撰寫的,切割成這兩個步驟的狀況下,只要修改一下演算法,也可在其他不同格式的cover medium實做OutGuess的理念。

3.1 Identification of Redundant Bits

一份資料的redundant bits建立在cover medium的輸出格式上,不同格式的cover medium所能計算出的redundant bits不同。此外,也必須思考「cover medium在轉換成最終格式時的資料壓縮如何做到最低程度的修改。」

引用自老師的blog:
作者闡述了一個觀念, 用來嵌入機密訊息的冗餘位元通常和影像的儲存格式相關。整個嵌入程序自然也和輸出格式有關。通常壓縮程序也包含其中。要最小化對掩護媒體(cover- medium)的修改(modification), 必須具備有關冗餘位元的相關知識才做得到, 作者提到 OutGuess 實作了整個輸出影像的運算。

在3.1的最後一段提到了:
A bit is locked when the bit has already been used to carry hidden information. This can occur when more than one message is hidden in the cover medium.
這段文字剛好是我長久以來的問題,「如果已經有人針對一個cover medium做了information hiding,但是有人並不知道這件事情,而繼續對同一個cover medium做information hiding的事情,那麼原本的訊息是會被修改掉,還是並存?」
這篇論文提到,他會將已經嵌入資料的部分上鎖,因此如果同一個cover medium都使用OutGuess隱藏訊息的狀況下,資料是有可能並存的(?)

3.2 Selection of Bits
這小節主要是介紹如何挑選redundant bits。

該文章提到,在選擇redundant bits之前,OutGuess先將我們要隱藏的機密訊息用RC4來進行加密,此外也使用RC4的演算法來建立一個PRNG。

在隱藏機密訊息之前,OutGuess會先藏入一個32 state bits來做紀錄之用,其中16-bit用於紀錄亂數seed,另外16-bit用於紀錄隱藏訊息的長度。

關於Seed。
在計算出該cover medium的redundant bits後,將Seed丟入上述利用RC4所產生的PRNG之中,來挑選嵌入訊息的redundant bits的random offsets(隨機距離)。

問題:
在老師的blog中提到,經由文章中所提到的公式計算之後,嵌入的機密訊息的長度會被有效的控制在可嵌入空間的50%之內?

未完 - 待續 (?)

2008年5月26日 星期一

Meeting - 05/20 紀錄

※關於上週的Meeting,在討論程式以及文件前,老師提及了一些Outguess的方法以及新想法。由於我在奔跑借傳輸線時錯過了一些內容,因此以下僅就「我聽到的部分」以及「我理解的部分」作紀錄。


※時間:2008.05.20 14:30~16:40(大約)
※地點:s402

理論:Outguess上,假設藏資料時,(例如:將2改3,3改2),那麼分析histogram會發現2跟3趨近於一樣高,因此在chi-square的分析下,很容易會被發現破綻。

新想法→如果在2改3的時候,另外挑選一無辜數字3,將之改成2,那麼整張圖在被chi-square分析下,histogram並沒有改變,因此也就無法破解。

破解→
假設在藏的時候,將圖分成A,B,C,D四部份,如果在A區要把2改成3,但因為Outguess是隨機取一無辜3改2,倘若修改的部分不在A區,只要chi-square分析時也將圖片分成A,B,C,D來掃,最終還是可以發現histogram的詭異之處。

因此,新方法就是將圖片切成 N 個區域,為使histogram維持不變,盡量修改同一個區域的數值,如此一來,在chi-square的attack之下,histogram可以盡量維持不變。

因應的辦法就是,chi-square也將圖片切成 M 個部分來掃描。

--
本週練習主題:
Program
Prac將簡單function製作成obj,呼叫使用之。

摘要 v.2

  在本文件中,我們將會介紹「本專題所使用的論文」、「什麼是資訊隱藏」、「論文中提到的幾種隱藏方法以及該如何破解」、「為什麼要使用JPEG」、「JPEG格式」。
  我們將會在:
  第一章介紹「什麼是資訊隱藏」以及「為什麼要使用JPEG」。
  第二章介紹「本專題所使用的論文」以及「論文中提到的幾種隱藏方法以及該如何破解」。
  第三張介紹「JPEG格式」。

--
只是單純想嘗試不同風格的寫法,這次完全嘗試言簡意賅的提到內文會提起的部分。

2008年5月19日 星期一

摘要試寫

  資訊隱藏可分為隱寫術(Steganography)、密碼學以及一些其他的技術,(在此我們以較有名的兩個舉例)。而我們專題所要做的,就是隱寫術。所謂的資訊隱藏是指不讓傳送者與接收者以外的人知道有訊息傳遞,如此一來不僅可以保護訊息的內容亦可以保護通訊雙方的安全。通常密碼學比較強調前者,而隱寫術強調後者。
  在此簡單的介紹隱寫術。隱寫術通常用於秘密通訊,選擇一個媒體(可以是圖片、聲音、影像)作為掩護媒體(cover-media)來嵌入想要保護[or傳遞?]的訊息,至於如何嵌入將會在後面說明。而已經嵌入訊息的媒體我們稱之為偽裝媒體(stego-media)。任何人皆可藉由傳送偽裝媒體達到秘密通訊的目的。因此有人懷疑許多犯罪組織利用隱寫術來互相溝通,以及策動犯罪。為防止這樣的情形發生,便開始有人研究破解的方法。卡方攻擊法(Chi-square)即是一個很有名的,用以偵測媒體是否為偽裝媒體的攻擊方法。

--
有種...在寫簡介的感覺 O_Oa
應該 不是錯覺吧|||b

2008年5月8日 星期四

初審文件 - Final !!

下載

這是暫時整理出的東西,雖然文件內容還需要修改
但是這個還算完整

---
結論與參考文獻編號尚待改善

2008年5月1日 星期四

初審文件 -- 結論

四、結論
  從開始專研到現在,在老師的指導之下,陸續的學會了一些隱藏與破解的方法以及大致上的觀念。目前為止成功的實做過RGB轉YCbCr、Discrete cosine transform、Quantization Discrete cosine transform…等小程式,但因為後面的編碼步驟較為複雜,因此Quantization Discrete cosine transform之後到編碼完成的這個步驟,根據老師的建議開始研讀IJG[N]所撰寫的Encoder與Decoder程式,並且學習如何使用正式規格的程式以及引用別人已經撰寫好的大型副程式。
  預期在順利使用IJG的副程式後,能夠用最快的速度完成隱藏與破解的程式,也就是本專題的重頭戲。

2008年4月30日 星期三

初審文件 -- 簡介

一、簡介
  本專題主要是以研究論文中所提到的方法來實行如何在JPEG圖片中隱藏訊息,因此在一開始的時候研讀了Hide and Seek[1]來學習前人所提出的方法,而該論文[1]所提到的方法,我們將會在第二章的時候提出介紹。此外,後續有人發表了破解Hide and Seek中所提出的方法,甚至是有更好的隱藏方法,因此我們繼續研讀了第二篇論文[2]來學習更有效率的隱藏方法,同樣也是在第二章的時候提出介紹。
  在研究隱藏與破解的方法的同時,發現如果我們對於JPEG沒有一定程度的理解,本專題將難以繼續下去;因此我們開始閱讀JPEG規格書[3]來詳細研究JPEG的格式與內容以及編碼和解碼的方法。我們將在第三章的時候詳細介紹我們所學到的JPEG格式以及該如何去編碼與解碼。

2008年4月27日 星期日

專研初審文件

參考 初審文件範例

「我們的文件」

不定時更新

1.簡介 - -

2.論文與系統的介紹 - -
2-1研究動機、背景及目的 - -
2-2 論文介紹 - -
2-3隱藏與破解的方法 - -
2-4遭遇的問題及實做心得 - -
2-4-1 遭遇問題 - -
* - -
* - -
* - -
* - -
* - -
2-4-2 實做心得(初審暫時保留) - -
2-4-3 還沒想到(保留) - -

3.JPEG格式介紹 - -
3-1 - -
3-2 - -
3-3 - -
3-4 - -
3-5 - -
3-6 - -
3-7 - -

4.結論 - -

5.參考文獻 - -



關於遭遇問題與心得那邊
打算採用各自寫各自的(這部分需要討論)
找個機會討論一下?

2008年4月12日 星期六

初審文件 - 老師的建議( Meeting 17 )

Chapter 1 簡介
Chapter 2 論文 (閱讀心得與實作(?)問題與討論(?))
Chapter 3 JPEG格式介紹 (比wiki更為詳細的介紹,目標是改編wiki XD!)

----------以上是初審需要具備的內容(建議)----------

Chapter 4 實作
Chapter 5 結論

關於文件

[系辦方面公佈的東西]
1.初審類別內容
2.各組審查老師
3.初審文件範本

關於公佈事項
助教有開一個專用的blog
但因為內容涉及每個人的資料

所以,需要網址跟密碼的人可以跟我問

----
第07週(04/09~04/13)公佈審查老師名單
第12週(05/14~05/18)繳交初審文件給審查老師
第13、14週(05/21~06/01)為初審審查
第16週(06/11~06/15)公佈審查結果

2008年3月29日 星期六

最近Compile程式的過程中,常見的問題群

1.Header File -- 關於標頭檔的建立
 赫然發現,當初大一時楊學務長給我們的講義中,有稍微提到...
 也就是CH05的講義,如果目前手邊沒有,到 webhd 95vc,可以找找看

※以下資料來源:C++風格與藝術 /O'REILLY
標頭檔可包含全部的公用資訊,像是:
.註解區段清楚說明各個模組的功能及可提供給使用者的能力。
.公用類別定義
.共用的常數
.公用的結構
.全部公用函式的原形
.對公用變數的extern的宣告

2.前置處理器
 #if
 #else
 #endif
 #ifdef
 #ifndef
 #undef
 #line 
 #pragma

在Debug的過程中,上述文字在諸多header file出現不少次

3.Extern 修飾子 (承1)
 extern  變數/函式是定義在別的檔案中
 <空白> 變數/函式是定義在這個檔案中,並且可用在別的檔案內。
 static  變數/函式在該檔案中是區域變數值(專用)

4.STL--Standard Template Library
 我們在compile的過程中,曾經卡在header file裡面某段程式碼,有著
 template <xxxx>
 {
   code;
 }
 這一系列都是標準模板庫,詳見維基百科 (自行點往中文介面...XD)
 之前學過的Queue跟Stack,其實都是STL的東西,
 而我們所寫的程式大部分都只是模擬,而很少實際用到STL內建的

2008年3月18日 星期二

Meeting 15

※時間:08.03.18
※地點:s207多媒體互動實驗室(Lab)
※人員:全組到齊

報告者:陳佳玉
內容:介紹IJG的環境設定
   1.在UNIX系統下
   2.市面上常用編譯器
   3.其他編譯器
   該如何安裝(實際上沒有提到內容) //這不是為了吐槽 囧

老師建議及問題討論
1.每個人的程式都嘗試使用Borland C++ Builder開啟
2.使用Binary方式讀檔,詳見UltraEdit (或上webhd,輸入分享名稱JPEG)
3.嘗試使用副程式(jccolor.c)撰寫RGB→YCbCr
4.開始閱讀JPEG規格書,建議起始點為Page.34(以UltraEdit作為輔助工具)

2008年2月23日 星期六

關於JPEG的一些問題與思維

將Bitmap圖檔使用JPEG個壓縮步驟如下:
RGB -> YCbCr -> DCT -> QDCT -> Zig-Zag -> Huffman -> JPEG

Question:
根據老師的講解以及網路上的資料,目前已知JPEG壓縮技術是
一張未經壓縮(尚未失真)的影像,經過DCT,QDCT,ZigZag,Huffman後
所編成的資料流(stream),就是JPEG影像的資料(已經失真)。
那麼,我們眼睛所見的影像,到底是如何從資料流轉變成影像的?

或許這個問題問起來有點不知所云,但這的確是我苦思不解,
畢竟有些圖檔即使副檔名是.jpg的圖片,看起來就跟.bmp沒啥兩樣。

ANSWER 1 :
關於這件事情,我試圖在網路上尋找資料,還有找人詢問
目前有得到的一個說法是
「副檔名是.jpg的意義在於程式在解碼時,需要找到對應的decoder,
 也就是知名的影像軟體,其實是充滿了圖片壓縮的解碼器(?);
 而我們所看到的影像,則是被機器或是軟體decode後的成像,
 也就是解回bitmap那樣,等處理結束才又再度編碼成jpeg儲存。」

我覺得這算是我能理解的說辭之一,但不知正確性如何...

2008年1月28日 星期一

Team Discussion

※Date:2008.01.25
※Place:S building @ MCU
※Member:All

※也許還會修改....
※有錯誤或是不明之處~請提出討論~

※主旨:
討論於Facebook介面上實作JPEG Information Hiding的可行性。

[Note:本次討論,Base on 對於"Facebook可提供資源"仍不熟悉的狀況來模擬]
※可行的實際方案有二:
1.使用PHP(facebook所支援的語言)架構一個介面,
 該介面可連線到一台主Server,主Server使用BCB程式處理,
 關於圖片的處理,全部交由Server處理;
 PHP僅處理資料(圖片、Message)傳遞。

2.不使用Server,參照Google ToolBar
 讓使用者下載一應用程式,將資訊處理過後
 透過PHP所架構的介面傳送。

※相關問題與討論,以下針對方案一做討論:
1.圖片→管理者設定 (可以一開始就知道 容量大小,但圖片選擇性低)
    使用者設定 (必須另外判定圖片可藏的資料量)

2.Server→電源(機器該放哪邊?)
     網路(網路的流量可以達到快速不delay嗎?)

 目前facebook提供的空間不明,資源不明。

 且機器設置位置為一大考量,首先必須要找到一位置提供全天候電源服務;
 由於在Information Hiding的過程中,圖片與訊息的傳遞,為一大考量
 倘若要做到即時的服務,恐怕不像(fluff)friend那樣簡單....
 1.國內網路v.s.國外網路
 2.自己所在網域的下載/上傳的速度

想法與心得:
如果要做到方案一 (使用Server的評估)
1.PHP是否能夠做到藉由圖片大小來判斷容量大小

2.承上,倘若PHP辦不到
 a.丟給server判斷(較費時,費工,費資源)
 b.思索一套演算法,藉由圖片大小來計算 "可能" 的容量 (不一定準確)

3.網路的問題,因為facebook目前的使用者以國外為大宗
 但國內連國外網路的速度會很慢..(必須想出改進方案)
 經由圖片的Information Hiding deliver....可能無法達到即時效果

4.機器是有(學校發的那台),但是全天候的網路與電源供應...
 可能較難以達成。

2007年10月31日 星期三

Detecting Steganographic Content on the Internet

※不一定是問題,但希望提出的討論如下:

////////一開始是跟OutGuess無關的問題..b//////
51. JSteg and Jsteg-Shell
 a.JSteg在藏東西時沒有使用亂數選擇embed的位置(has no random bit selection?)
 b.其中提到了"The Hunting of the Snark"has been bzip2似乎不會被X-test偵測到而JSteg會?
 c.JSteg-Shell is a Windows user interface to JSteg意思是有不同於Jsteg的介面來發展?之後又提到了RC4(stream cipher),我的見解是Jsteg-Shell是套裝軟體,而RC4則是讓使用者設定的Key,傳訊者與收訊者擁有Key之類的。

5.2 JPHide
JPHide的隱藏方式似乎跟Jsteg很像,但是有一段話"JPHide can skip DCT coefficients , the probability is not as high as with Jsteg",雖然說這次讀Paper的重點似乎該放在OutGuess上,但這邊提到關於DCT係數有關的其他東西,就忍不住想拿出來討論。

5.3 OutGuess
當初是為了OutGuess才閱讀這篇Paper,然而Paper中提到Outguess的部份似乎並不多,而這邊提到了一句話"A user-supplied pass phrase initializes a stream cipher and a pseudo-random number generator(PRNG) ,both base on RC4",再度提到了RC4

再Figure7面有一段話,根據我的解讀是「因為OutGuess採用PRNG因此難以探測到特殊訊號」
意指,因為OutGuess的藏法會把訊息有點平均的隱藏在不一會出現的地方,所以不會有哪邊特別容易被探測到?

此外,關於「False Negatives」以前似乎有聽說過,但是後來又忘記了....這點希望能討論一下...

※其他的部份暫時沒什麼大問題,但也或許需要多看幾次才知道....問題在哪裡

2007年8月19日 星期日

Meeting 8

※時間:07.08.16
※地點:教師研究室&討論室

※研究方向與重點
1.星期二時,討論的公式
2.討論八月底Paper報告內容,人員與範圍

小強:Introduction
佳玉:DCT→Page.38第一個句號
小冬:Figure8→Steganographydetection on the Internet之前
   (不含Steganographydetection on the Internet)
世昭:Steganographydetection on the Internet到結束

目前沒有考慮介紹,引用了哪些文章(最後一頁的那些)
還沒像老師詢問過,報告的順序是否就依據Paper內容順序(?)
(也就是前兩位於8/28時報告,後兩位於8/30報告)

我在當日稍稍跟世昭解釋了一下那個公式的概念
以及突然忘記要怎麼解釋 八倍平均值(汗)
(不過現在好像又想起來了...←看來應該是在人前解釋會緊張)

暫時先寫到這裡,目前尚在考慮
要不要手算那個公式...然後Upload

2007年8月14日 星期二

Meeting 7

※時間:07.08.14
※地點:教師研討室

※老師宣布事宜
1.於8/28,8/30分兩批報告Hide & Seek(人員範圍尚未決定)
2.因應黃老師出國,九月休假

※本日討論重點
DCT Transform 引用自

Reason→為精簡程式執行DCT時的時間
將公式精簡成F(u,v)=ΣΣf(x,y)‧K(u,v,x,y)
《參考》老師的程式 CreateDCTtransform();
《做法》手動將value代入公式內,算出可以精簡的value "K(u,v,x,y)"
    學姊的講解與建議:將Call (Math.h) Function計算時間省下來

《Hint 1》將1/4C(u)C(v)→1/2C(u)‧1/2C(v)
《Hint 2》將cos[ (2i+1)uπ/16]‧cos[ (2j+1)vπ/16 ]
     轉成cos[ (2i+1)/16‧uπ ]‧cos[ (2j+1)/16‧vπ ]

《Hint 3》綜合1.2→1/2C(u)‧1/2C(v)‧cos[ (2i+1)/16‧uπ ]‧cos[ (2j+1)/16‧vπ ]

※暫時先寫到這裡

2007年8月9日 星期四

Meeting 6

※時間:96.08.09
※地點:教授休息室

問題與探討
1.補足8*8的細節討論
 a.依照上上週方式,在DCT前就補齊
 =>是JPEG規格的做法

 b.不補但是範圍有加大
 =>在系統會把沒有Assign自動補0,進而造成高頻變多
 =>較以壓縮

 c.在其他步驟補上(未知)
 =>因為在DCT前就補齊是JPEG規格故....(?)

2.承1.b.高頻與低頻訊號的討論
 =>二維空間的頻率訊號可分解承64種訊號波形
  之前曾經說過,DCT是分析高頻訊號與低頻訊號
  由於訊號的波形可以藉由N種波形組合而成....
  QDCT的陣列,就像在紀錄特定波形的強度=>64種波形

例子:
圖一 = 圖二+圖三
訊號的波形可能像圖一,圖二.....圖三....圖四(振幅大小不一,林林總總64種型態)
假設圖五就是圖片的訊號,他可能有上述64種波形組合而成
而DCT(或是QDCT)裡面的數字,就是在紀錄64種不同訊號的強度
而高頻的訊號大多為0

↑假設這是圖一
↑假設這是圖二
↑假設這是圖三
↑假設這是圖四
↑假設這是圖五




3.JSteg藏資料的問題
 分析出可以藏資料的資料後,可以直接藏進去(老師的方法)  
 亦可用我說的商編碼順序藏,只是較為麻煩(我的疑惑)

※可以接著做的:
1.做完QDCT後,可開始寫JSteg的程式(請將可藏資料的資料全藏滿
2.JSteg做完後,將資料分析成Histogram表示
3.Histogram做完後,可嘗試藏入大小不一的資料量,並分析
 =>資料量:可藏資料的80%,70%,60%.....etc

※Meeting 6進度,暫時先寫到這裡,日後進行修改(?)

2007年8月5日 星期日

關於JSteg的研究

※前情提要
 針對JSteg嵌入有所疑惑的部分=>是否會牽扯到商編碼
 由於老師講解程式時商編碼跟JSteg都有提到,於是我腦中的記憶開始模糊

※以老師的程式碼為根據
// 模擬 Jsteg 嵌入資料...
RN = random(2);
if (( iRQDCTcoeY[i][j] != 1 ) && ( iRQDCTcoeY[i][j] != 0 ))
{
  LSB = iRQDCTcoeY[i][j] & 1; // & : bitwise AND operator
  if ( RN != LSB )
  {
    if ( RN == 1 )
      iRQDCTcoeY[i][j] = iRQDCTcoeY[i][j] 1;
    else
    {
      iRQDCTcoeY[i][j] = iRQDCTcoeY[i][j] >> 1;
      iRQDCTcoeY[i][j] = iRQDCTcoeY[i][j] <<1;
    }
  }
}

根據上述的程式碼 (與關鍵字搜索)
JSteg嵌入的動作
似乎是「QDCT矩陣內的值非0或1的值皆可執行 LSB判讀與嵌入資料的動作」

我原本以為需要先將二維陣列換成一維陣列(使用商編碼)
但是詳加閱讀程式後的結過,似乎並非我所想像

※註一
原本因為會有[短時間內無法觸碰電腦的私人理由]
請佳玉代替我向老師詢問
但在獲得情報前又思索了一次JSteg的事情
進而產生了這篇文章(因為有不同想法--這是我第二種想法)

※這篇Blog將在所有問題都釐清後視情況刪除

2007年7月27日 星期五

Meeting 5(07/26)

第五次Meeting
※時間:2007.07.26
※地點:教師休息室

這次Meeting
老師很仔細的跟我們介紹他之前寫的一支程式

裡面有
分析RGB,YCbCr,DCT,QDCT,重建YCbCr,重建RGB
將圖片壓縮為JPEG並調整壓縮比,JSteg....等功能

我跟佳玉稍微Show了一下這幾個禮拜來寫出來的程式
老師說,當做出DCT跟QDCT後,可以嘗試寫寫JSteg等功能

此外,我們向老師預借Information Hiding Class曾出現過的課本

※以下稍作整理提要
1.尚未完成DCT,QDCT的人繼續努力
2.已經寫出DCT與QDCT的人,嘗試寫JSteg (演算法)
 (更進階是使用卡方分析自己寫的程式數據)
3.向老師借課本來研讀Information Hiding歷史
4.研究老師發給我們的程式