2008年5月27日 星期二

Meeting - Jiayu 10

次序:21或22
時間:2008.05.27
地點:S402

內容:
   ①學術論文的研究動機:寫出該研究的重要性。
   ②測試程式產生obj檔。
   ③正確宣告extern以使用其他副程式的函數
   ④使用obj檔(承②)
   ⑤variable scope。
    Global variable與Local variable的差異在於生命週期。
    時間分三種:1.Compile Time 2.Link Time 3.Run Time
    (名稱可能有誤)

    Global variable是在Compile Time就產生(這裡的產生就是系
    統給一塊記憶體),然後包進obj檔裡。
    Local variable:執行到該函數時才產生,即Run Time時產
    生,該函數執行完即消失。

工作:①世昭至圖書館找五篇論文的研究動機,再找五篇學長姐專研文
    件的研究動機。
   ②查閱相關書籍extern的用法。

Working - Jiayu 0902

時間:2008/05/27
進度:3.使用obj檔(承2)

內容:

①將File1.c移除,改新增剛才執行完Project1所產生的File1.obj。


②Run Project1可正常執行。

Working - Jiayu 09

時間:2008/05/27
進度:2.正確宣告extern以使用其他副程式的函數
內容:

①開啟BCB。
(預設的Project1已有一個Unit1.cpp。)

②建立一個.c檔作為我們的副程式。
開啟BCB,最上排選單點選File >> New >> C File。
(目前這個我們新增的File1.c已經加入Project1。)

③在File1.c裡宣告一個變數ˋ一個函數,並定義之。例:
_________________________
int aaa=5;
void Selection_Sort(int *Num)
{
  int min,temp,i,j;
  for(i=0; i<=8; i++)
  {
    min=i;
    for(j=i; j<=9; j++)
    {
      if(Num[j]<Num[min])
        min=j;
    }

    temp=Num[i];
    Num[i]=Num[min];
    Num[min]=temp;
  }
}


④以預設的Unit1.cpp作為我們的主程式,並呼叫副程式File1.c的變數ˋ函數來使用。
在Unit1.cpp裡宣告我們所用到的陣列ˋ副程式的變數ˋ副程式的函數。如下所示:
_________________________
int Num[10];
extern "C" void Selection_Sort(int*);
extern int aaa;  


⑤在Unit1上新增兩個Label原件。Label1顯示副程式裡的函數正確執行後被修改的陣列值(如果該值還是原來的值,我們可知該副程式裡函數未成功執行。)。Label2顯示副程式裡的aaa變數值。

⑥在主程式裡定義陣列初值 >> 呼叫副程式的函數做排序 >> 顯示結果。
_________________________
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
  for(int i=0; i<10; i++)
    Num[i]=10-i;

  Selection_Sort(Num);

  Label1->Caption=IntToStr(Num[0]);
  Label2->Caption=AnsiString(aaa);
}
 

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格式」。

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

Working - Jiayu 08

時間:2008/05/26
進度:初審文件摘要撰寫(Version.2)

內容:
  在這份初審文件,我們先針對將機密訊息嵌入至JPEG圖片的隱藏技術做探討。探討方式是以我們所研讀過的兩篇論文為依據,對其中所提到的四種隱藏技術做介紹,分別是JSteg、OutGuess、JPHide、F5這四種隱藏技術。介紹完隱藏技術之後,我們再進一步介紹兩種破解隱藏技術的方法,分別是針對JSteg的卡方攻擊法(chi-square test),以及針對OutGuess的進階卡方攻擊法(extended chi-square test)。最後再說明JPEG的邊碼流程,藉著對JPEG邊碼流程的了解,以期能實作上述的隱藏與破解技術,並進一步做發想。


備註:
  本次修改地方有兩處。一是將第一句的「這份文件」改成「這份初審文件」,以求清晰。二是對最後引入JPEG邊碼流程的敘述做修改,以期能連貫上文不唐突。
 

2008年5月19日 星期一

摘要試寫

資訊隱藏的方法有很多,而為什麼需要隱藏資訊,是因為當我們不想讓第三者知道我們所要傳遞的訊息,而這些訊息可能是些機密的訊息,所以我們透過一些方法來隱藏這些訊息,例如隱寫術(Steganography)及密碼學,而本章我們所要探討在JPEG圖片上做隱藏以及破解方法。

JPEGJoint Photographic Experts Group〉之所以被我們拿來當作實作題材,是因為他在網路上被廣泛應用,基於這個理由,所以我們就JPEG圖片用某些技術來做嵌入資訊或是找出隱藏的訊息。

摘要試寫(小強)

  隱寫術(Steganography)試屬於資訊隱藏中的一門,與密碼學都應用於秘密通訊,不同的是隱寫術不僅保護訊息內容也保護通訊雙方,而密碼學著重於後者。隱寫術是利用掩護媒體(cover-media)來嵌入所要傳遞的訊息內容,而嵌入完的掩護媒體又稱為偽裝媒體(stego-media)。
  
  由於JPEG是一種被廣泛使用的方法,所以在此論文中我門著重在JPEG的隱藏與破解作探討。根據所閱讀的兩篇論文,我們探討了JSteg、OutGuess、JPHide、F5這四種隱藏方法和兩種破解JSteg和OutGuess的方法。

摘要試寫

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

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

Working - Jiayu 07

時間:2008/05/19
進度:初審文件摘要撰寫(Version.1)

內容:
  在這份文件,我們先對將機密訊息嵌入至JPEG圖片的隱藏技術做探討。探討方式是以我們所研讀過的兩篇論文為依據,對其中所提到的四種隱藏技術做介紹,分別是JSteg、OutGuess、JPHide、F5這四種隱藏技術。介紹完隱藏技術後,我們再進一步介紹兩種破解隱藏技術的方法,分別是針對JSteg的卡方攻擊法(chi-square test),以及針對OutGuess的進階卡方攻擊法(extended chi-square test)。在隱藏與破解技術探討之餘,由於我們一開始選定研究的掩護媒體是JPEG圖片,所以我們也對JPEG圖片邊碼流程做了一定程度的了解,並在此文件的後半部做介紹。


心得:
  這樣讀下來覺得自己寫得有點像章節前的引文(汗,原因是有些東西很難拿捏該不該在摘要寫,以及即使選擇要寫,也有很大機會是寫不完整的。

2008年5月13日 星期二

Note - 摘要

摘要
1.介紹什麼是資訊隱藏
2.為什麼要挑選JPEG
3.如何實做專題、使用什麼工具

隱寫術(steganography)是資訊隱藏的一個分支,應用於秘密通訊(可分為密碼學與隱寫術)。
Hint: 應用與目的

不僅可以保護訊息的內容亦可以保護通訊雙方的安全
密碼學強調保護前者,隱寫術強調保護後者

藏前→藏後
掩護媒體→偽裝媒體
(cover-media→stego-media) 可替換

小強專研問題

接下來我再看程式碼時有找到djpeg.c 這個檔案,我發現它是Linux版本的解壓縮JPEG主程式.

因為我想試著把它改成C語言的版本,於是我就先試著對他做Compiler,出現了兩個錯誤.

如圖一


一個是說重複 #define FAR這個變數,於是我把它刪了一個之後這個錯誤就沒出現.

但是真正有問是第二個錯誤

它是說沒有定義command 這個Function.

也就是說他少定義了這個函數,我繼續的在找尋這個函式是在哪需要用到的在哪些H或C檔有用到.

2008年5月12日 星期一

小強專研發現

根據初審之前程式的進度,小強我繼續的Compiler有了一些小小的發現如下:

1.首先是Compiler jccolor.c這個程式:

(1)首先看到的錯誤是在jmorecfg.h typedef long INT32 出現了如圖一的錯誤


它出現了重複定義 typedef long INT32 的錯誤.



2.於是我就去看了第二個錯誤找到他所說重複定義的變數在 basetsd.h 檔中如圖二:



我發現了同樣是INT32但是宣告的型態卻是不同:



typedef signed int INT32、*PINT32;



typedef long INT32;



3.接下來是 jmorecfg.h 檔裡所宣告的變數typedef int boolean也出現同樣的錯誤如圖三:



也發現到在rpcndr.h中所宣告的相同變數但不同型態如圖四:



typedef int boolean;

typedef unsigned char boolean;

於是我將她們的型態改成一至發現Compiler就可以過了,但是我不知道未什麼他的型態會這樣宣告,是因為變數型態宣告錯誤還是另有問題.我也只是初步猜測他是型態宣告不一至所造成的錯誤.至於是不是我所想的這樣我依然在查證.

2008年5月8日 星期四

初審文件 - Final !!

下載

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

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

2008年5月1日 星期四

初審檔案撰寫-小強 01

2-2論文簡介
這篇文章討論Jsteg和OutGuess 0.1這兩個現有的隱藏技術系統並且透過隱藏技術統計提出在檢測它們過程中的新的研究F5,其他調查集中於藏和在浮印水印圖案上的訊息的一般的用法要不然提供察覺算法的概述。

2-3隱藏方法
2-3-1 JSteg
它將資料連續用訊息替資料替換DCT係數的最低位元(least-significant bit),此隱藏技術 系統不需要一個分享的秘密的金鑰。因此,知道隱藏技術系統的人能復原JSteg所隱藏的消息。


2-3-2 OutGuess 0.1
OutGuess 0.1是改進編碼步驟的一個隱藏技術系統從使用一個假的隨機數產生器隨便選擇DCT(discrete cosine transform)係數,被選擇的DCT係數的最低位元被替換加密的訊息資料。JSteg的卡方攻擊無法發現被隨機被嵌入的訊息資料,它不能發現被OutGuess 0.1隱藏技術所隱藏的內容。


2-3-3 F5
F5減量它在一個過程的絕對值叫矩陣編碼(matrix encoding),而不是用訊息資料去替換一個DCT係數的最低位元。因此,卡方攻擊不能發現F5隱藏技術不可能連合任何固定的DCT係數。

2-4破解方法
2-4-1 JSteg破解
Andreas Westfeld和Andreas Pfitzmann 注意到改變連續的最低位元的隱藏技術系統,能以隱藏技術分析發現所引起變形。他們觀察一幅規定的圖像,可預測模式的顏色頻率的直方圖嵌入觀察高熵的資料改變。

2-4-1 OutGuess 0.1破解
使用Extend卡方攻擊我門可以發現假的隨機數所隱藏的資料,固定一個樣本數而不是增加樣本數的量和在鄰近位置試驗,使用固定樣本數的量但是以移動樣本的量的位置接管整個圖像範圍。

2-5問題與討論
未完

初審文件 -- 結論

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