馬光,趙佩瑾,崔茂香
滄州醫學高等專科學校 病理教研室,河北 滄州 061001
醫學視頻加解密播放器的研究與實現
馬光,趙佩瑾,崔茂香
滄州醫學高等專科學校 病理教研室,河北 滄州 061001
醫學視頻加密對于保護醫療數據的安全具有重要作用。本文針對醫學視頻文件數據量大、實時性要求高的特點,采用選擇性加密算法和數據流技術,基于Delphi開發平臺設計制作了醫學視頻加解密播放器,較好地解決了醫學視頻加解密問題,既能滿足醫學信息化的需求,又可有效地保證視頻數據的安全性。
醫學視頻;播放器;視頻加密;醫院數字化
隨著計算機科學和通信技術的發展,視頻多媒體信息得到了廣泛應用,與此同時知識產權和數據安全問題也日漸突出。早期的安全方法主要依賴于權限控制,視頻數據本身沒有被加密,容易被非法拷貝、盜版、剽竊和篡改。因此,視頻加密技術作為保證安全的基本手段,已成為信息安全領域非常熱門的研究課題之一[1]。醫學視頻有著不同于一般視頻的突出性特點,如真實性、完整性等。因為以醫學題材為內容的視頻中大多涉及患者的姓名、肖像、病史等個人信息;牽涉誤診、誤治事件發生的概率,事關醫療事故糾紛的權威認證[2-3]。出于對版權、隱私和聲譽等保護的需要,對醫學視頻數據安全性的研究迫在眉睫,同時考慮到軍事醫學視頻的特殊性,醫學視頻文件的加密和保護工作就顯得更為重要。當前流行的多媒體播放軟件功能參差不齊,較難滿足用戶對視頻播放和信息保護的雙重需求。為此,本文基于Delphi開發平臺,利用其功能強大的組件庫制作出一款可支持多種媒體格式,并能對視頻數據進行特殊加密的播放器。
1.1 加解密算法
所謂加密是指以某種特殊的算法改變原有的可理解的信息數據(明文),使其成為無意義的數據內容(密文),使用者必須通過相應的解密方法,才能將密文還原成明文,而解密是加密的逆運算、逆過程[4]。數據加密過程是由形形色色的加密算法來具體實現的,例如選擇性加密,又稱部分加密,它充分考慮數據本身的特征及應用要求,僅對全部數據中的關鍵部分(重要數據)進行加密,用很小的計算復雜度來達到較高的安全性[5-6]。
視頻文件一般由信息區、數據區和索引區三部分構成,其文件頭中的各字節(信息區)保存著數據格式、壓縮方式、播放速度等重要參數,醫學視頻也不例外。視頻播放器通過這些參數來識別視頻文件信息的有效性,如果受到破壞,則會妨礙視頻數據的正確解碼,使播放器不能識別標志信息而無法播放。而且視頻數據具有編碼結構特殊、數據量大、實時性要求高等特點,其加密算法在安全性、壓縮比、計算量和數據可操作性等方面都有一定的要求。為滿足這些要求,本文采用選擇性加密算法,即利用視頻數據結構的特性,僅加密醫學視頻文件頭部信息,這樣擁有解密密鑰的播放器才能成功打開該視頻文件;對視頻文件的處理過程是:分發前加密→播放時解密→使用后加密,從而最大限度地確保數據的保密性和完整性。分析和實驗表明,該算法具有簡單易行、實時性強等特點,在安全性、計算量等指標上均能滿足一般的應用需求[7]。
1.2 加解密方法
在計算機編程中,數據流是面向對象程序設計語言中的典型體現,它徹底地取代了早期利用函數實現輸入輸出的功能,同時也克服了利用函數實現輸入輸出功能的諸多弊端。對于“流”這一概念,可簡單地理解為:流是建立在面向對象基礎上的一種抽象地處理數據的工具,它定義了一些處理數據的基本操作,如讀取數據、寫入數據等,這樣程序員只需掌握流的操作方法,而不用關心流中數據的真正去向。流不但能處理文件,還可處理動態內存、網絡數據等多種數據形式。顯然程序員若能掌握好對流的運用,在程序開發中會利用其便利性,就能夠大大提高編程效率[8]。
高質量的視頻是醫學應用的內在需求,與普通視頻相比,醫學視頻的主要特點是更加偏重于清晰度,也就是對圖像分辨率的要求更高,致使其擁有海量的數據;而且加解密過程的計算量通常很大,但又必須實時處理,才能保證播放流暢。為了保證醫學視頻的質量并提高加解密速度,本文應用Delphi的流對象對醫學視頻文件進行操作來實現其加密和解密。在Delphi中所有流對象的基類為TStream類,其派生類中最常用的是內存流TMemoryStream,它在內存中建立一個流對象,基本方法和函數與文件流TFileStream相似。加密時,首先利用LoadFromFile和SaveToStream方法分別將視頻文件SourceFile和密鑰文件PassWord轉換為內存流,再用Seek函數將指針移到密鑰文件的末尾,最后使用CopyFrom方法將視頻文件追加到密鑰文件尾部,生成一個加密文件TargetFile,即兩個流的合并(PassWord+SourceFile=TargetFile)。解密時,首先利用LoadFromFile方法將加密文件TargetFile轉換為內存流,再用Position函數定位該流中存取指針的位置(密鑰文件PassWord的長度),最后使用CopyFrom方法從指針的當前位置拷貝流中的所有數據。由于Delphi中的MediaPlayer組件不能直接播放內存流的數據,因此還須利用SaveToFile方法把該內存流保存為視頻文件SourceFile,即兩個流的分離(TargetFile-PassWord=SourceFile)[9]。這個加解密程序只是簡單地把醫學視頻文件添加到密鑰文件的尾部,以實現對視頻數據的加密和保護。實際應用中可對視頻文件流的頭部信息采用異或運算或與隨機數據混合進行加密,解密時只要根據加密算法的原理處理好其逆運算即可。
2.1 設計開發平臺
作為快速應用程序開發工具的代表,Delphi不僅是一個面向對象的可視化開發環境,而且提供了功能強大的可視化組件庫,并具備快速的代碼編譯器、簡捷的數據庫引擎,深受廣大程序開發人員的推崇與信賴。在Delphi中,組件是具有特定行為、一定屬性及相應對象的預定義窗口,它是可視化編程的基礎,是整個程序的核心元素。如多媒體播放器組件MediaPlayer,是一個進行音頻和視頻編程的絕好工具,它封裝了Windows媒體組件接口的大量函數,用于控制多媒體設備。開發Delphi程序時,正確地選用組件,將有助于提高工作效率和代碼準確率,并有利于軟件調試和項目的工程化管理[10]。
2.2 設計開發過程
本文所設計的醫學視頻播放器按照預期的效果,包括播放控制模塊、視頻顯示模塊、信息提示模塊以及系統控制模塊等,見圖1。在Delphi所提供的程序框架中,首先建立窗體,設計界面,然后采用面向對象、事件驅動的方法,逐步開發各個模塊,最終制作出一個功能完善的個性化視頻播放器,其效果見圖2。

圖1 視頻播放器功能模塊圖

圖2 視頻播放器界面圖
(1)播放控制模塊。采用多媒體核心控制組件MediaPlayer,通過其對應的屬性設置、事件調用與方法編寫,實現對醫學視頻文件的播放與基本的播放控制,如播放、快進、停止等操作。此外添加兩個滑動條組件TrackBar,并編寫OnChange事件的響應代碼分別用于當前視頻文件播放進度的顯示及動態調節、聲卡音量輸出大小的控制;通過按鈕組件Button和鍵盤事件KeyDown,實現播放視圖全屏模式與窗口模式的切換。
(2)視頻顯示模塊。選用面板組件Panel作為視頻顯示窗口,同時設置MediaPlayer組件的Display屬性為Panel。
(3)信息提示模塊。使用標簽組件Label和計時器組件Timer,并編寫實現相應功能的程序代碼,用來實時顯示視頻文件的當前播放狀態、播放進度及其播放時長等有效信息。
(4)系統控制模塊。應用Windows API函數ShellExecute打開.chm類型的幫助文件,為用戶提供系統版本信息以及具體的使用方法。在“退出”按鈕的OnClick事件中編寫代碼:Application.Terminate,終止應用程序的運行,使用戶安全退出系統。
視頻播放器在打開和關閉醫學視頻文件時,會分別調用視頻光盤分發前編寫的解密函數和加密函數,這樣把視頻播放與視頻加解密有機地結合在一起,為使用者提供了方便同時也保證了重要醫學視頻內容的安全。
3.1 安全性分析
本文采用的選擇性加密算法不是直接對視頻圖像像素值進行加密,而是對視頻編碼過程中產生的關鍵信息加密,所以該算法不具有數據格式相容性,加密后的視頻文件只有正確解密后才能播放。因此,使用Windows Media Player、暴風影音等流行的媒體播放軟件,打開數據格式信息加密后的AVI、WMV等主流媒體格式的視頻文件時,將難以識別該視頻數據的操作信息而不能解碼和播放,會出現“試圖播放的文件的擴展名與文件格式不匹配”、“不是標準的視頻文件”、“無法渲染文件”等提示,達到了對該視頻文件加密的目的。另外,由于醫學視頻文件分發前進行過加密預處理,視頻加解密播放器需擁有與每個數據包相對應的解密密鑰,這也增加了非授權者破解的難度,使得加密更有效,數據更安全。
3.2 加解密速度
文件加解密過程的時間消耗包括準備時間和加解密時間,其中加解密前的準備時間主要用來完成數據的讀寫,在計算機性能和文件大小相同的條件下,數據讀寫的速度由編程所用的實現方法來決定;加解密時間是在加解密算法的控制下對數據進行變換所需的時間,這取決于算法的復雜程度。本文提出的加解密方案中,因采用Delphi“流”支持技術,大大提高了視頻數據交換的速度,同時由于加解密只是對視頻數據的頭部信息作異或運算,可明顯降低加解密操作的數據量和計算的復雜度。因此,本視頻播放器具有較快的加解密速度,例如在酷睿CPU@2.93 GHz、內存2 GB的計算機上對大小為74 MB、時長為308 s的AVI視頻文件進行加解密速度測試,所用的運行時間約為3 s,能較好地滿足視頻數據應用的實時性需求。
本播放器已用于《活體組織病理學檢查》、《滄州市醫療糾紛尸體解剖檢查》等視頻系統的構建,應用結果表明:該播放器界面友好、使用簡單,又具有加密效果好、復雜度適中、處理速度快等特點,是一款多種功能兼備的視頻播放軟件,這對醫學信息安全的發展具有重要意義。由于開發經驗欠缺,本播放器仍需要做進一步的改進:優化程序代碼,進一步提高其穩定性和執行速度;加強對視頻信息安全技術的研究,尋求更安全、更高效的加解密方法應用于本設計;根據實際需求,在界面布局、使用功能等方面進行進一步修改與完善。
[1] 趙霙頔.面向無線環境的H.264能量有效視頻加密技術研究[D].北京:北京工業大學,2013.
[2] 孫海東.面向醫學教育視頻的垂直檢索的研究[D].上海:第二軍醫大學,2011.
[3] 張俊,趙歆.淺談我院視頻監控系統建設[J].中國醫療設備,2015, 30(9):157-159.
[4] 劉兵,劉勁.Delphi實現對文檔的加密解密[J].電腦編程技巧與維護,2009,(4):77-79.
[5] 林楊菲,葉少珍.一種醫學影像數據選擇性的加密方法[J].電子技術應用,2015,41(3):107-110.
[6] 廉士國,孫金生,王執銓.幾種典型視頻加密算法的性能評價[J].中國圖象圖形學報,2004,9(4):483-490.
[7] 朱慶生,劉金鳳,葛亮,等.格式兼容的視頻加密算法設計與實現[J].計算機工程,2010,36(20):145-149.
[8] 李慧,劉欣.Delphi程序開發范例寶典[M].北京:人民郵電出版社,2012.
[9] Delphi流的操作[EB/OL].(2014-12-03)[2015-12-15].http:// my.oschina.net/u/582827/blog/351964.
[10] 洪運國.Delphi程序設計[M].北京:北京理工大學出版社,2013.
Research and Implementation of Medical Video Encryption and Decryption Player
MA Guang, ZHAO Pei-jin, CUI Mao-xiang
Department of Pathology, Cangzhou Medical College, Cangzhou Hebei 061001, China
Medical video encryption plays a vital role in protecting the security of medical data. In view of the features of medical videos covering huge data and high real-time requirements, this paper proposed a selective encryption algorithm and data stream technology to solve the problem of medical video encryption, and used Delphi to design a video encryption and decryption player. This design not only can meet the needs of medical informatization, but also effectively ensure the high security of medical videos.
medical videos; video player; video encryption; hospital digitalization
TP311.52
A
10.3969/j.issn.1674-1633.2016.06.022
1674-1633(2016)06-0087-03
2015-12-28
2016-01-11
河北省高等學校人文社會科學研究項目(SZ2011366)。
作者郵箱:czyzvivid@126.com