国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

永中Office設(shè)計(jì)中的安全創(chuàng)新

2018-02-07 01:44:21江歆皓
信息安全研究 2018年1期
關(guān)鍵詞:永中編程語(yǔ)言文檔

江歆皓

(永中軟件股份有限公司戰(zhàn)略業(yè)務(wù)發(fā)展部 江蘇無(wú)錫 214135)

(jxh@yozosoft.com)

1 獨(dú)創(chuàng)安全性設(shè)計(jì)理念

軟件的獨(dú)創(chuàng)性首先體現(xiàn)在設(shè)計(jì)理念上,而辦公軟件采用不同的文件結(jié)構(gòu),用“集成”的方式定義了一整套的數(shù)據(jù)結(jié)構(gòu).便形成了對(duì)基礎(chǔ)辦公軟件應(yīng)用從文件結(jié)構(gòu)、使用體驗(yàn)、數(shù)據(jù)管理等方面全面的創(chuàng)新.永中Office也正是基于以上的設(shè)計(jì)理念和架構(gòu)編寫永中Office程序的.如何保證數(shù)據(jù)結(jié)構(gòu)中的文件格式安全、確保數(shù)據(jù)對(duì)象的安全,是我們首先要解決的問(wèn)題.

永中Office是采用Java語(yǔ)言開(kāi)發(fā)的,Java是一種跨平臺(tái)、面向?qū)ο蟮木幊陶Z(yǔ)言[1],永中Office集成應(yīng)用,既采用該語(yǔ)言的自有特性也決定了軟件的安全性.傳統(tǒng)的過(guò)程式編程語(yǔ)言是以過(guò)程為中心以算法為驅(qū)動(dòng),面向?qū)ο蟮木幊陶Z(yǔ)言則是以對(duì)象為中心以消息為驅(qū)動(dòng)[2].用公式表示,過(guò)程式編程語(yǔ)言為:程序=算法+數(shù)據(jù);面向?qū)ο缶幊陶Z(yǔ)言為:程序=對(duì)象+消息.現(xiàn)實(shí)世界中的對(duì)象均有屬性和行為,映射到計(jì)算機(jī)程序上,屬性則表示對(duì)象的數(shù)據(jù),行為表示對(duì)象的方法(其作用是處理數(shù)據(jù)或同外界交互).在Java中絕大部分成員是對(duì)象,只有簡(jiǎn)單的數(shù)字類型、字符類型和布爾類型除外.而對(duì)于這些類型,Java也提供了相應(yīng)的對(duì)象類型以便與其他對(duì)象交互操作.除此之外Java的多態(tài)性和單一繼承性也為永中Office集成運(yùn)行、應(yīng)用中數(shù)據(jù)的相互調(diào)用創(chuàng)造了可能.

Java最初設(shè)計(jì)目的是應(yīng)用于電子類消費(fèi)產(chǎn)品,因此要求較高的可靠性.Java雖然源于C++,但它消除了許多C++不可靠因素,可以防止許多編程錯(cuò)誤.首先,Java是強(qiáng)類型的語(yǔ)言,要求顯式的方法聲明,這保證了編譯器可以發(fā)現(xiàn)方法調(diào)用錯(cuò)誤,保證程序更加可靠;其次,Java不支持指針,這杜絕了內(nèi)存的非法訪問(wèn);第三,Java的自動(dòng)單元收集防止了內(nèi)存丟失等動(dòng)態(tài)內(nèi)存分配導(dǎo)致的問(wèn)題;第四,Java解釋器運(yùn)行時(shí)實(shí)施檢查,可以發(fā)現(xiàn)數(shù)組和字符串訪問(wèn)的越界;最后,Java提供了異常處理機(jī)制,程序員可以把一組錯(cuò)誤代碼進(jìn)行統(tǒng)一管理,這樣可以簡(jiǎn)化錯(cuò)誤處理任務(wù)便于恢復(fù).

由于網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā)多采用Java語(yǔ)言,因此對(duì)安全性有較高的要求.如果沒(méi)有安全保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險(xiǎn).Java通過(guò)自己的安全機(jī)制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞.當(dāng)Java字節(jié)碼進(jìn)入解釋器時(shí),首先必須經(jīng)過(guò)字節(jié)碼校驗(yàn)器的檢查,然后,Java解釋器將決定程序中類的內(nèi)存布局,隨后,類裝載器負(fù)責(zé)把來(lái)自網(wǎng)絡(luò)的類裝載到單獨(dú)的內(nèi)存區(qū)域,避免應(yīng)用程序之間相互干擾破壞.客戶端用戶還可以限制從網(wǎng)絡(luò)上裝載的類只能訪問(wèn)某些文件系統(tǒng).上述幾種機(jī)制結(jié)合起來(lái),使得Java成為安全的編程語(yǔ)言.編程語(yǔ)言的這些安全屬性,被廣泛應(yīng)用于永中Office產(chǎn)品中.從而確保了程序的安全可靠性.

作為一款通用軟件,永中Office需要適應(yīng)包括操作系統(tǒng)、硬件環(huán)境、用戶自有應(yīng)用系統(tǒng)等一系列較為復(fù)雜的使用環(huán)境.Java語(yǔ)言的多線程屬性有效地解決了以上問(wèn)題.線程被稱作輕量進(jìn)程,是比傳統(tǒng)進(jìn)程更小的可并發(fā)執(zhí)行的單位.Java支持多線程.首先Java環(huán)境本身就是多線程的.若干個(gè)系統(tǒng)線程運(yùn)行負(fù)責(zé)必要的無(wú)用單元回收、系統(tǒng)維護(hù)等系統(tǒng)級(jí)操作;其次,Java語(yǔ)言內(nèi)置多線程控制,可以大大簡(jiǎn)化多線程應(yīng)用程序開(kāi)發(fā).Java提供了一個(gè)類Thread,由它負(fù)責(zé)啟動(dòng)運(yùn)行,終止線程,并可檢查線程狀態(tài).Java的線程還包括一組同步原語(yǔ).這些原語(yǔ)負(fù)責(zé)對(duì)線程實(shí)行并發(fā)控制.利用Java的多線程編程接口,開(kāi)發(fā)人員可以方便地寫出支持多線程的應(yīng)用程序,提高程序執(zhí)行效率.

原生編程語(yǔ)言的優(yōu)勢(shì),給程序帶來(lái)了很多創(chuàng)新性、安全性的使用體驗(yàn),成為永中Office軟件煥發(fā)生命力的源泉.

2 數(shù)據(jù)對(duì)象安全模塊的形成

在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象是系統(tǒng)中的基本運(yùn)行實(shí)體,是代碼和數(shù)據(jù)的集合.在“集成”的特定文件格式(eio)中,數(shù)據(jù)不是孤立存在的,而是被封裝為對(duì)象,使程序變成一個(gè)面向?qū)ο蟮膬?chǔ)藏庫(kù)系統(tǒng)[3].在這個(gè)儲(chǔ)藏庫(kù)系統(tǒng)中,數(shù)據(jù)對(duì)象被根據(jù)不同的屬性,又被系統(tǒng)分類定義成不同類別樣式的數(shù)據(jù)對(duì)象組,從而生成了對(duì)文檔數(shù)據(jù)的保護(hù)機(jī)制.

2.1 文檔讀寫層數(shù)據(jù)安全保護(hù)

圖1 安全讀寫

在辦公軟件程序中,所有的數(shù)據(jù)對(duì)象都是通過(guò)代碼來(lái)控制讀寫,而不是簡(jiǎn)單地使用程序語(yǔ)言的序列化機(jī)制.因此,試圖用一般的語(yǔ)言序列化機(jī)制來(lái)破解數(shù)據(jù)文件是完全不可能的.當(dāng)數(shù)據(jù)文件以加密方式被保存時(shí),數(shù)據(jù)對(duì)象也是以加密方式被保存下來(lái),如圖1所示.在面向?qū)ο蟮臄?shù)據(jù)儲(chǔ)藏庫(kù)中有200多種不同類型的數(shù)據(jù)對(duì)象,這些對(duì)象均具有自己的特點(diǎn),具有自己獨(dú)特的數(shù)據(jù)域.數(shù)據(jù)對(duì)象類型在文件中都具有唯一標(biāo)識(shí),是一個(gè)整型值,如圖2所示.對(duì)象類型繁多,為破解帶來(lái)極大的困難.當(dāng)試圖破解而獲取一個(gè)對(duì)象的標(biāo)識(shí)時(shí),它只是一個(gè)簡(jiǎn)單的整型值,無(wú)法得知這個(gè)整型值到底代表了哪種具體的數(shù)據(jù)對(duì)象.

圖2 多類型多數(shù)值

2.2 多類型數(shù)據(jù)對(duì)象更安全

所有不同類型的數(shù)據(jù)對(duì)象,在定義時(shí)有一個(gè)共同特點(diǎn)——它們都具有多個(gè)(短)整型數(shù)組字段,在圖3的這些數(shù)組中,通過(guò)[ID,Value]對(duì)的方式存儲(chǔ)對(duì)象中一些數(shù)據(jù).這些ID都是在程序中預(yù)定義的,ID區(qū)分為若干類型,例如純數(shù)據(jù)ID、數(shù)據(jù)索引ID等.不同類型的ID,其對(duì)應(yīng)的值(Value)的含義不同,例如,純數(shù)據(jù)ID對(duì)應(yīng)的值即為數(shù)據(jù)值;但數(shù)據(jù)索引ID對(duì)應(yīng)的值表示的是一個(gè)索引,真正的數(shù)據(jù)將憑借這個(gè)索引來(lái)進(jìn)一步獲取.數(shù)據(jù)對(duì)象的復(fù)雜性表明,其(短)整型數(shù)組字段中數(shù)值的含義,通常只有在程序中才能獲得正確的解釋,假如對(duì)象被破解,將很難理解和解釋(短)整型數(shù)組中值的含義.對(duì)象的數(shù)據(jù),在存儲(chǔ)和讀入過(guò)程中,根據(jù)對(duì)象本身定義的邏輯,將會(huì)調(diào)整對(duì)象內(nèi)數(shù)據(jù)字段的值.這意味著:程序運(yùn)行過(guò)程中計(jì)算機(jī)內(nèi)存中對(duì)象的數(shù)據(jù)和存儲(chǔ)后文件中的數(shù)據(jù)是存在差異的.因此經(jīng)過(guò)破解獲取文件中的數(shù)據(jù),未必是真實(shí)數(shù)據(jù),通過(guò)動(dòng)態(tài)調(diào)整,保證了文檔數(shù)據(jù)的安全性.

圖3 數(shù)據(jù)定義動(dòng)態(tài)調(diào)整

2.3 特有文檔結(jié)構(gòu)自有安全

永中Office設(shè)計(jì)出基于面向?qū)ο蟮臄?shù)據(jù)儲(chǔ)藏庫(kù)技術(shù)的特有文件結(jié)構(gòu),以確保文檔的安全.如圖4所示,圖4中左側(cè)部分,把文件結(jié)構(gòu)簡(jiǎn)單描述為文件頭和數(shù)據(jù)區(qū),其中數(shù)據(jù)區(qū)中按表式結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),圖4中右側(cè)部分,表示2個(gè)表示結(jié)構(gòu)(sheet_1和sheet_2),并表示了其中數(shù)據(jù)對(duì)象的一個(gè)關(guān)聯(lián)結(jié)構(gòu).

圖4 特有文件結(jié)構(gòu)

數(shù)據(jù)表(sheet)的標(biāo)識(shí)ID是動(dòng)態(tài)分配的,其值取決于辦公軟件運(yùn)行過(guò)程中,表管理器(sheet manager)的程序邏輯.而數(shù)據(jù)對(duì)象(data object)在數(shù)據(jù)表中的位置(row,cloumn)是動(dòng)態(tài)分配的,其值取決于辦公軟件運(yùn)行過(guò)程中,數(shù)據(jù)管理器(DOORS data manager)的程序邏輯.這些數(shù)據(jù)對(duì)象(data object)并非孤立的,數(shù)據(jù)對(duì)象之間通常具有引用關(guān)系.這種引用關(guān)系,并非編程語(yǔ)言中常用的對(duì)象引用,而是數(shù)據(jù)對(duì)象儲(chǔ)藏庫(kù)中的索引[4].程序運(yùn)行時(shí)刻,數(shù)據(jù)對(duì)象的引用關(guān)系是比較復(fù)雜的,數(shù)據(jù)對(duì)象A可能引用了一些數(shù)據(jù)對(duì)象,如B,C,D等,數(shù)據(jù)對(duì)象B可能也引用了一些數(shù)據(jù)對(duì)象如E,F等……由此可見(jiàn),從數(shù)據(jù)對(duì)象A開(kāi)始,通過(guò)對(duì)象的引用關(guān)系在程序中,數(shù)據(jù)對(duì)象A即為數(shù)據(jù)儲(chǔ)藏庫(kù)的根結(jié)點(diǎn),其他數(shù)據(jù)對(duì)象為子結(jié)點(diǎn).數(shù)據(jù)對(duì)象A本身可能也是另外一個(gè)數(shù)據(jù)儲(chǔ)藏庫(kù)的一個(gè)子結(jié)點(diǎn).根據(jù)前面講的數(shù)據(jù)對(duì)象儲(chǔ)藏庫(kù)的復(fù)雜定義,這意味著,當(dāng)試圖破解文件中數(shù)據(jù)對(duì)象時(shí),幾乎無(wú)法確定該數(shù)據(jù)對(duì)象關(guān)聯(lián)的其他數(shù)據(jù)對(duì)象的位置.

3 自主可控應(yīng)用實(shí)踐

擁有自主知識(shí)產(chǎn)權(quán)的核心技術(shù)是強(qiáng)國(guó)之道.隨著國(guó)家自主可控[5]的推進(jìn),國(guó)產(chǎn)化生態(tài)環(huán)境已經(jīng)越來(lái)越好,大家都已經(jīng)認(rèn)識(shí)到,國(guó)外的軟硬件是存在安全風(fēng)險(xiǎn)的,更不能提可控.代碼不是自己的,可能有這樣那樣的后門,風(fēng)險(xiǎn)很大.為實(shí)現(xiàn)安全可控的目標(biāo),辦公軟件需要擁有自主知識(shí)產(chǎn)權(quán),取得專利權(quán)、著作權(quán)和商標(biāo)權(quán),每一行代碼都自己寫,沒(méi)有漏洞、不留后門.在代碼安全保障方面,作為通用軟件需要為用戶保存大量信息,這也是大家面臨同一個(gè)“可能被攻擊、破譯”的問(wèn)題,為保證自主研發(fā)的代碼安全性,需對(duì)軟件源代碼加密,每次編譯版本都生成不同的加密表,使用反編譯技術(shù)只能獲得完全沒(méi)有可讀性的代碼片段.這也是永中Office辦公軟件應(yīng)用在安全方面的另一層保障.

3.1 文檔全生命周期安全

隨著近些年IT系統(tǒng)應(yīng)用的推廣和發(fā)展,大量的OA等辦公業(yè)務(wù)系統(tǒng)應(yīng)用于政府、企事業(yè)單位,對(duì)文檔全生命周期[6]的安全性管理要求越來(lái)越高,辦公軟件與應(yīng)用系統(tǒng)結(jié)合后也具備了更多的對(duì)文檔安全性控制能力.通過(guò)圖5的演示我們解決了文檔編輯加密與傳輸過(guò)程中的一些問(wèn)題.

圖5 編輯與加密

1) 文檔編輯與加密

當(dāng)用戶將文檔共享或者流轉(zhuǎn)給其他用戶時(shí),可以對(duì)權(quán)限進(jìn)行控制.(只讀、讀寫、下載、修訂等),辦公軟件可以根據(jù)用戶角色或者文檔擁有者賦予當(dāng)前用戶的權(quán)限,禁止或者啟用打開(kāi)、拷貝、截屏、保存、另存、修訂等功能,保護(hù)文檔的安全.后臺(tái)記錄操作過(guò)程形成日志,以供信息追溯.

辦公軟件可以對(duì)文檔進(jìn)行加密,可以多種加密方式混合使用(例如AES256,MD5等),采用超長(zhǎng)度公共密鑰[7]+私有密鑰,理論上杜絕被破解的危險(xiǎn).通過(guò)權(quán)威機(jī)構(gòu)認(rèn)證第三方單位的控件對(duì)文檔進(jìn)行加密、解密,保證文檔數(shù)據(jù)的安全性.打開(kāi)文檔必須使用密鑰,拔出密鑰無(wú)法打開(kāi)文件,文檔離開(kāi)系統(tǒng)后就失效.

2) 文檔傳輸

辦公自動(dòng)化系統(tǒng)支持SSL[8]加密訪問(wèn).SSL協(xié)議支持?jǐn)?shù)據(jù)加密傳輸可以增強(qiáng)系統(tǒng)安全性,通過(guò)網(wǎng)絡(luò)傳遞的數(shù)據(jù)均會(huì)使用RSA算法進(jìn)行不對(duì)稱加密,可以完全杜絕數(shù)據(jù)包被截獲后泄密的可能性,加上第三方權(quán)威的CA(Certificate Authority)認(rèn)證支持,可以完全確保數(shù)據(jù)的傳輸安全.

3) 文檔存儲(chǔ)

傳統(tǒng)的單一物理文件存儲(chǔ)方式,一旦文件被竊取,所有內(nèi)容均丟失,數(shù)據(jù)安全受到嚴(yán)重威脅.碎片化存儲(chǔ)則沒(méi)有這樣的顧慮.如圖6所示文件整體被切割成許多碎片,而且沒(méi)有固定的切割規(guī)則,沒(méi)有固定的切割數(shù)量,這樣,即使碎片被竊取,也無(wú)法順利組裝成完整的文檔.碎片化存儲(chǔ),適合于網(wǎng)絡(luò)存儲(chǔ),用戶身份需要嚴(yán)格認(rèn)證,碎片組合成完整文檔的規(guī)則存儲(chǔ)在數(shù)據(jù)庫(kù)中,文件服務(wù)器的安全防范措施提供有力的安全保障,JCR標(biāo)準(zhǔn)接口可以實(shí)現(xiàn)文件的碎片化處理、壓縮處理和數(shù)據(jù)加密[9].

圖6 碎片化存儲(chǔ)

4) 文檔使用限制

文檔數(shù)據(jù)存儲(chǔ)在服務(wù)器端,文件不允許下載到客戶端.文檔始終在系統(tǒng)的監(jiān)管下流轉(zhuǎn)、使用.即使通過(guò)某種途徑獲得文檔數(shù)據(jù)也無(wú)法解密,不能正常打開(kāi).文檔使用策略的應(yīng)用,靈活有效地控制了文檔的安全.如:設(shè)置文檔的使用期限,過(guò)期后文檔自動(dòng)銷毀;設(shè)置文檔的閱讀次數(shù),達(dá)到閱讀次數(shù)后文檔自動(dòng)銷毀;設(shè)置文檔密碼,密碼輸錯(cuò)達(dá)到限定次數(shù)后,文檔銷毀等權(quán)限設(shè)置選項(xiàng).

文檔在生成和使用過(guò)程中,都要經(jīng)歷以上每個(gè)過(guò)程,永中Office除了依托程序自身的安全性,還通過(guò)以上手段保障文檔在運(yùn)行系統(tǒng)中的安全.

永中Office通過(guò)編程語(yǔ)言的選擇、數(shù)據(jù)安全保障、存儲(chǔ)方式處理等多層面設(shè)計(jì)程序運(yùn)行模式,保障文檔的安全.從安全角度講,永中Office作為通用軟件已經(jīng)從代碼結(jié)構(gòu)上確保了其安全性,當(dāng)針對(duì)目前復(fù)雜的運(yùn)行環(huán)境,永中Office可能還需要作出更多的探索.把國(guó)密商密標(biāo)準(zhǔn)算法結(jié)合到Office中來(lái),在Office中引入嚴(yán)格的身份驗(yàn)證[10],例如人臉識(shí)別、指紋識(shí)別、語(yǔ)音識(shí)別等,甚至可以以此作為增強(qiáng)型的加密措施,例如一個(gè)文檔,限定這個(gè)文檔只能由某人閱讀,打開(kāi)文檔時(shí)用人臉識(shí)別技術(shù)驗(yàn)證身份,比現(xiàn)在的密碼更加安全可靠.在Office擴(kuò)展更多的安全控制功能,例如限制文檔內(nèi)容不能被復(fù)制粘貼、限制閱讀次數(shù)、閱后即焚、限制打印份數(shù)等等.更深入地,可以做留痕,記錄文檔什么時(shí)間被誰(shuí)打開(kāi)、被誰(shuí)修改、被誰(shuí)打印等等.這可能都是未來(lái)我們需要探索和發(fā)展的方向.

[1]李剛. 瘋狂Java講義[M]. 2版. 北京: 電子工業(yè)出版社, 2014

[2]Eckel B. Java編程思想[M]. 北京: 機(jī)械工業(yè)出版社, 2007

[3]冷曄, 黃芳. 基于對(duì)象存儲(chǔ)庫(kù)的自定義對(duì)象的處理方法: 中國(guó), CN200610007388.3[P]. 2008-10-08

[4]周屹, 李艷娟. 數(shù)據(jù)庫(kù)原理及開(kāi)發(fā)應(yīng)用[M]. 2版. 北京: 清華大學(xué)出版社, 2013

[5]王可. 信息安全“自主可控”[OL]. (2014-04-05) [2017-11-06]. http://it.people.com.cn/n/2014/0405/c1009-24833631.html

[6]沈建新, 周儒榮. 產(chǎn)品全生命周期管理系統(tǒng)框架及關(guān)鍵技術(shù)研究[J]. 南京航空航天大學(xué)學(xué)報(bào), 2003, 35(5): 565-574

[7]廖磊. 公共密鑰和數(shù)字簽名[J]. 電腦愛(ài)好者, 1998 (6): 62

[8]曾強(qiáng). 網(wǎng)絡(luò)安全協(xié)議SSL原理及應(yīng)用[OL]. (2005-06-01) [2015-02-06]. https://wenku.baidu.com/view/8261d36ab 84ae45c3b358c7e.html

[9]楊偉. 幾種加密算法的分析和比較 [J]. 科技信息, 2010 (27): 440-494

[10]李金庫(kù), 張德運(yùn), 張勇. 身份認(rèn)證機(jī)制研究及其安全性分析[J]. 計(jì)算機(jī)應(yīng)用研究, 2001, 18(2): 126-128

猜你喜歡
永中編程語(yǔ)言文檔
封面影圖
西部(2023年3期)2023-05-30 00:08:28
壓力-體積轉(zhuǎn)換在CFC編程語(yǔ)言中的實(shí)現(xiàn)解析
有人一聲不吭向你扔了個(gè)文檔
夏秋用桑蠶品種“永中×豐白”通過(guò)河南省蠶桑品種審定委員會(huì)審定
Java編程語(yǔ)言的特點(diǎn)與應(yīng)用
淺談不同編程語(yǔ)言對(duì)計(jì)算機(jī)軟件開(kāi)發(fā)的影響
電子制作(2018年1期)2018-04-04 01:48:36
基于RI碼計(jì)算的Word復(fù)制文檔鑒別
面向?qū)ο骔eb開(kāi)發(fā)編程語(yǔ)言的的評(píng)估方法
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
信永中和會(huì)計(jì)師事務(wù)所國(guó)際化發(fā)展取得新進(jìn)展
调兵山市| 任丘市| 鹤庆县| 天水市| 客服| 萨迦县| 石渠县| 福建省| 沿河| 福泉市| 邹平县| 台中县| 阳谷县| 大埔区| 海宁市| 清远市| 东乡族自治县| 甘德县| 常山县| 衡南县| 丰都县| 临泽县| 娱乐| 启东市| 铅山县| 新密市| 涡阳县| 河曲县| 黔南| 从江县| 中牟县| 乐都县| 聊城市| 共和县| 上高县| 丰原市| 浦城县| 富民县| 黎城县| 乌拉特前旗| 内江市|