• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      江歆皓

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

      (jxh@yozosoft.com)

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

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

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

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

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

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

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

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

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

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

      圖1 安全讀寫

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

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

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

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

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

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

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

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

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

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

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

      3.1 文檔全生命周期安全

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

      圖5 編輯與加密

      1) 文檔編輯與加密

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

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

      2) 文檔傳輸

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

      3) 文檔存儲

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

      圖6 碎片化存儲

      4) 文檔使用限制

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

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

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

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

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

      [3]冷曄, 黃芳. 基于對象存儲庫的自定義對象的處理方法: 中國, CN200610007388.3[P]. 2008-10-08

      [4]周屹, 李艷娟. 數(shù)據(jù)庫原理及開發(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é)報, 2003, 35(5): 565-574

      [7]廖磊. 公共密鑰和數(shù)字簽名[J]. 電腦愛好者, 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]李金庫, 張德運(yùn), 張勇. 身份認(rèn)證機(jī)制研究及其安全性分析[J]. 計算機(jī)應(yīng)用研究, 2001, 18(2): 126-128

      猜你喜歡
      永中編程語言文檔
      封面影圖
      西部(2023年3期)2023-05-30 00:08:28
      壓力-體積轉(zhuǎn)換在CFC編程語言中的實現(xiàn)解析
      有人一聲不吭向你扔了個文檔
      夏秋用桑蠶品種“永中×豐白”通過河南省蠶桑品種審定委員會審定
      Java編程語言的特點與應(yīng)用
      淺談不同編程語言對計算機(jī)軟件開發(fā)的影響
      電子制作(2018年1期)2018-04-04 01:48:36
      基于RI碼計算的Word復(fù)制文檔鑒別
      面向?qū)ο骔eb開發(fā)編程語言的的評估方法
      Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
      信永中和會計師事務(wù)所國際化發(fā)展取得新進(jìn)展
      阜南县| 依安县| 潜江市| 海口市| 封丘县| 射洪县| 莲花县| 三河市| 怀安县| 庆元县| 绥化市| 湛江市| 禹州市| 新河县| 宁强县| 石林| 蚌埠市| 嵊泗县| 赣榆县| 诏安县| 塘沽区| 山西省| 建湖县| 河津市| 曲松县| 顺平县| 丹凤县| 闽清县| 临洮县| 加查县| 苏尼特左旗| 桐庐县| 靖江市| 祥云县| 西城区| 镇巴县| 格尔木市| 九龙县| 南京市| 曲水县| 湘西|