潘曉勇 王龍
摘要:文章針對利用格式化文本進行數(shù)據(jù)隱藏較為困難的問題,提出了一種基于RTF文檔中控制命令字符對大小寫不敏感進行編碼而達到數(shù)據(jù)隱藏目的的數(shù)據(jù)隱藏方法。首先,搜素RTF文檔中所有控制命令字符;其次,按照對控制命令字符第一個字母和前兩個字母大寫分別編碼成“0”和“l(fā)”的規(guī)則進行編碼;最后,按此規(guī)則將密文信息按位進行編碼并寫入RTF文檔;提取密文的解碼過程按規(guī)則反向進行。該方法不改變原文檔大小,編碼簡單,實現(xiàn)方便。
關鍵詞:數(shù)據(jù)隱藏;加密;RTF;編碼
隨著互聯(lián)網(wǎng)的發(fā)展和互聯(lián)網(wǎng)應用的日益增多,互聯(lián)網(wǎng)在人們生活中的作用越來越強,我們的工作、學習和生活的各個方面都被互聯(lián)網(wǎng)所滲透。在這樣一個互聯(lián)網(wǎng)無處不在的環(huán)境下,我們有意無意地向互聯(lián)網(wǎng)或互聯(lián)網(wǎng)上的設備或者人提供者各種各樣的數(shù)據(jù),各種各樣的個人信息。這些信息可能包括上網(wǎng)賬號、密碼、身高、體重、年齡,性別等個人信息,也可能包括家庭、朋友、同學、同事、所在單位等社交信息。這么多私密信息的傳送勢必帶來或多或少的信息安全問題,私密信息的泄露或非法信息的傳遞都屬于信息安全的范疇。整個互聯(lián)網(wǎng)發(fā)展到今天,和現(xiàn)代加密技術的發(fā)展是密不可分的,幾乎每一次加密技術的重大研究成果出現(xiàn)都會立刻被應用到互聯(lián)網(wǎng)中來,被用來保證互聯(lián)網(wǎng)的信息安全。
信息隱藏技術是信息安全的一個重要分支,在人們的互聯(lián)網(wǎng)生活以及日常生活中扮演著重要的作用。它也隨著這些年信息安全方面的研究和互聯(lián)網(wǎng)應用的發(fā)展受到越來越多人的重視。所謂的信息隱藏技術,更確切地來說應該稱為信息偽裝技術,是將被隱藏的敏感信息隱藏于另一份非機密的信息載體中。信息隱藏技術的載體可以是圖片、視音頻、文檔等。信息隱藏要盡量減少載體變化,特別是可被人直接感知的變化,比如外觀、形狀、顏色、大小或聲音等,這些變化越小,越不容易引起人的警覺。同時,也要盡量向計算機隱藏這種變化,至少讓計算機可以正確識別,而攻擊者卻不能輕易提取[l]。
在常用的信息隱藏技術中,視頻、音頻、圖像和文檔常被用來作為隱藏的載體。本文主要介紹了一種基于RTF文檔的數(shù)據(jù)隱藏技術,所以在這里先列舉幾種常見的文檔數(shù)據(jù)隱藏方法。常見文檔數(shù)據(jù)隱藏方法有:利用文檔中人眼對字符大小的微小變化不敏感而采用調整字符的大小進行編碼來實現(xiàn)數(shù)據(jù)隱藏,利用文檔中人眼對字符顏色的微小變化不敏感而采用微調字符顏色進行編碼來實現(xiàn)數(shù)據(jù)隱藏,利用文檔中人眼對標點符號左右是否有空格不敏感而通過在文檔中標點符號左右添加空格來進行編碼來實現(xiàn)數(shù)據(jù)隱藏[2]。本文提出了一種針對富文本格式(Rich Text Format,RTF)文檔對格式控制命令字符大小寫不敏感進行編碼實現(xiàn)數(shù)據(jù)隱藏的技術。該方法不改變原始文檔大小和呈現(xiàn),完全不影響計算機顯示和人的閱讀。
1 隱藏算法
RTF是由美國微軟公司開發(fā)的跨平臺文檔格式。大多數(shù)的文字處理軟件都能讀取和保存RTF文檔,特別地,WINDOWS自帶的“寫字板”軟件就可以直接讀取和編輯RTF文檔。
以如圖1所示的一個RTF文檔為例,在這篇RTF文檔里,命令符用“\”加上命令控制字符的格式進行保存。比如:“\colortbl”表示顏色表,“\red255”表示“紅色值為255”等。對于RTF文檔編輯器來說,“\red255”和“\Red255”、“\REd255”是等價的,都被解釋成“紅色值為255”,即RTF丈檔對命令格式控制字符大小寫不敏感。
(\colortbl. \redl28\greenlOO\bluel62, \redl55\greenO\blue211. \red250\gr eenOkblue0;){\:#\generator Riched20 10.0.15063}
(\viewkind4\ucl\pard\sa200\s L276\slmultl\fO\fs22\lang2002
aff\Cf0f\cFO fffff\cfo f\CFO ffffff\cfo b\cfO\fs44 c\ul\fs22 d\ulnone\i e\iO\strikef\strikeO\fs144 g\par\fs22\par)
基于這個原則,可以將“\”后面跟一個大寫字母的命令編碼為0,將“\”后面跟兩個大寫字母的命令編碼為1,來進行二進制編碼。RTF文檔中還存在“\”加其他非命令字符的情況,對非命令字符進行轉換將影響文檔的呈現(xiàn),這種情況要排除。先建立一個RTF命令字典mdict0存儲所有RTF文檔命令,再進行加密運算。隱藏算法如下:(l)將待隱藏密文轉換為“01”比特流,讀取第一個比特位。(2)從頭搜索RTF文件,比對命令字典mdict0,遇到“\”和命令字典mdict()中命令匹配字符,按“0”轉換為命令第一個字符大寫,“l(fā)”轉換為命令第一、二個字符都大寫的規(guī)則進行轉換。(3)重復步驟(2)直至密文轉換完畢。
以上面文檔為例,將信息“01111110”隱藏后得到的RTF文檔如圖2所示。從中可以看到,密文和明文僅僅在某些命令的頭兩個字幕的大小寫上有變化,對于其他內容,特別是文檔的具體內容沒有進行任何改變,文檔的大小也沒有發(fā)生變化,達到了隱藏真實信息的目的。并且,這種算法的編碼過程非常簡單,算法實現(xiàn)復雜度小,易于推廣使用。
2解隱藏算法
接收方接收到了隱藏了密文信息的RTF文檔后,進行解碼處理。解隱藏算法如下:(1)從頭掃描接收的RTF文檔。(2)比對命令字典mdict(),按命令第一個字符大寫轉換為比特“0”,命令第一、二個字符大寫轉換為比特“1”的規(guī)則進行解碼。(3)重復步驟(2)直至文檔結束。(4)將解碼后的“0”“l(fā)”比特流生成為解密文件。不難看出,這種算法的解隱藏非常簡單,使用起來很方便。
3分析
上述算法可以達到RTF中每個命令符號隱藏一個比特信息的隱藏容量。為進一步提高隱藏容量,可以嘗試一個命令中更改3個大寫字符來隱藏兩個甚至更多比特密文信息的方法。本文提出的方法所用的隱秘載體是公開的,通信的安全性完全依賴于對該方法本身的保密性,這就違背了Kerckhoffs原理[3]。解決這個問題的解決途徑有兩個:(l)對所傳輸?shù)拿孛苄畔⑦M行加密,這樣即使信息被截獲,只要沒有正確密鑰第三方就無法破譯。(2)隱藏時用一個密鑰控制隱藏過程,如利用長度為L的二進制隨機序列K作為密鑰,雙方同時持有該密鑰。隱藏時,密文H的某一位信息H (I) K(I%L)為1進行大寫轉換,為0不轉換。這樣檢測者必須知道密鑰K才能解碼,提高了傳輸?shù)陌踩?。為防止RTF被更改,對密文信息先進行糾錯交織編碼后再進行信息隱藏,接收端解碼后再解交織和解糾錯。當解隱藏誤碼率較低時,能得到完全正確的有效密文信息。
4結語
本文提出了一種基于RTF文檔的信息隱藏的算法。由于算法利用RTF文檔中命令控制符的大寫個數(shù)來代替相應的秘聞“0”“1”比特流,因此,在視覺效果上RTF文檔的呈現(xiàn)沒有任何改變,并且RTF文檔的文件大小也沒有任何變化。因此很難引起檢測者的懷疑。這種算法中,一個RTF文檔命令控制符可以隱藏一個比特的信息,而RTF文檔中的命令控制符是很多的,因此隱藏容量可以達到比較好的水平;同時這種算法的編解碼過程非常簡單,因此算法實現(xiàn)復雜度小,易于推廣使用;另外,由于這種方法解碼過程并不需要原始的文檔提供任何位置參考,因此使用方便。
[參考文獻]
[1]張松,馮祺.通信信息隱藏技術研究[J]艦船電子工程,2016 (10):11-15.
[2]譚瑛.基于文本排版格式的信息隱藏方法比較研究[J]計算機與現(xiàn)代化,2013 (6):52-56
[3]孫權.加密算法安全強度及發(fā)展趨勢分析[J]軟件產業(yè)與工程,2016(3):29-32,51