目前有許多對數位權利管理(DRM)的誤解,導致不少人懷疑這項技術究竟能否有效應用於數位可攜式媒體播放機。雖然數位權利管理會隨著硬體平台、內容擁有者和內容供應商的不同而出現各種形式與格式,但無論實作方式為何,所有數位權利管理機制都具有幾項共同的重要特性。整體而言,數位權利管理技術可以保護內容不被非法使用,然而這樣的保護相對需要付出部分代價。例如,使用者會擔心數位權利管理機制會不會影響內容播放和造成操作不便,開發商則想瞭解數位權利管理會對各種播放器的效能、延遲時間和電池壽命造成哪些影響。
數位媒體播放器製造商在考慮支援數位權利管理之前,應先瞭解必須克服那些障礙才能實現這項功能。要提供高效率的數位權利管理功能,必須進行的工作絕不僅是發展一套最佳化的密碼程式庫;廠商如果根據錯誤的資訊貿然採取行動,就可能出現極不明智的商業決策或開發不合乎市場需求的產品。本文將討論如何減輕數位權利管理對數位媒體播放器的衝擊,讓有意採用這項技術的廠商不再害怕或懷疑數位權利管理的可行性,而是集中全力找出最有效的方法來實現數位權利管理功能。本文也將探討在實作數位權利管理功能時,最常遇到的各種障礙,這些討論結果將可應用於任何的標準或架構。
《圖一 裝置開機時若要執行任何應用軟體,就必須先確認其來源是否值得信任。問題在於,如果負責確認和驗證應用軟體的程式碼也很容易被破壞,裝置就必須在執行該程式之前先進行確認和驗證。但若ROM啟動載入程式(ROM Boot Loader)不會被修改,那麼這個程式就不會被破壞;這表示裝置可以信任該程式,不必在開機時進行驗證。》 |
|
克服問題
一般而言,要克服數位權利管理所帶來的時間延誤和效能問題,就必須儘量將數位權利管理作業從關鍵路徑(critical path)中移出。這項工作通常要靠數位權利管理作業的適當排程來實現,包括預先讀取或處理資料、在背景執行相關處理作業、或是在時間延誤較不重要時執行處理作業,例如使用者在做決策的時候。工程師真正要注意的重點有三項,分別是開機、播放和內容傳送,這些動作都可能影響產品的效能、使用便利性和電池壽命。
開機時間
乍看之下,數位權利管理似乎不會對開機時間造成任何影響。畢竟它只是一種驗證使用權的方法,沒有理由影響產品開機時間。但事實卻不然,要知道箇中原由,首先必須瞭解任何數位權利管理規格都包含的重要原則:強固性與符合性規則(Robustness and Compliance Rules;R&CR)。
強固性與符合性規則是一套準則,廠商必須依照這套準則確實防止數位權利管理硬體與軟體被規避或修改。值得注意的是,雖然不同的數位權利管理標準會給予這類準則不同的名稱,它們的基本目標卻都相同:確保裝置堅固可靠,有能力發現任何想藉由篡改應用程式碼來欺騙或破壞數位權利管理機制的企圖。具有數位權利管理功能的裝置在解除保護或允許存取保護內容之前,必須先確認數位權利管理機制確實存在、未被篡改、而且功能運作正常;另外,這些裝置還必須禁止使用除錯工具,以免它們被用來破解或變更授權資料。
強固性與符合性規則要求為不同的系統資產或零件提供不同等級的保護。例如在以憑證為基礎(certificate-based)的數位權利管理機制中,用來讓播放器通過內容伺服器驗證的憑證就是高級資產,需要最高等級的保護,因為這類憑證一旦遭到破解,裝置的所有內容就會被全部洩露。根據特定廠商憑證所產生的特定裝置(device-specific)憑證也很重要,倘若這類憑證被破解,就等於破解了廠商利用該憑證生產的所有播放器。相形之下,個別曲目的解密金鑰就顯得沒有那麼重要,因為這類型的解密金鑰所保護的只是一首歌曲的內容。無論是憑證、金鑰或其他保護機制所採用的機密資訊,都需要適當的保護。一般而言,曝露的風險越大,保護機制就必須越堅固可靠,但這意味可能對使用者造成越大的影響。
程式碼毀損是指程式碼已被破壞,雖然不一定來自惡意攻擊,卻是數位權利管理可能遇到的最大威脅之一。如果應用軟體能被篡改,就表示金鑰和內容一樣不安全。因此,裝置在執行任何應用程式碼之前,都必須確認和驗證這些軟體的來源是否值得信任;另外,裝置在每次開機時都必須執行這項檢查,確保硬體沒有被篡改。問題在於,如果負責確認和驗證應用軟體的程式碼也很容易被破壞,裝置就必須在執行這些程式碼之前,先進行確認和驗證,請參考(圖一)。
(表一) 安全啟動載入程式(boot loader)技術能在裝置剛開機時,確認硬體與軟體都處於值得信任的已知狀態。為了將延遲時間減到最短,程式碼的驗證和載入會分數個階段進行。裝置若在任一階段發現程式碼被篡改,就會啟動災難復原模式和重新設定裝置組態;否則裝置會載入第一個程式,也就是儲存在ROM記憶體的啟動載入程式,此程式是由晶片廠商提供,而且無法修改,故能確保程式正確有效。裝置接著會利用雜湊演算法驗證其餘的程式碼並進行解碼,有些產品還會使用晶片內儲存的特定ID來進行驗證和解碼的動作。把開機啟動程序分成數個階段可以加快使用者與裝置的互動,有效縮短開機時間。
程式碼(按照驗證和載入順序) |
安全性 |
功能 |
說明 |
ROM啟動載入程式(boot loader) |
無法修改,所以不必驗證 |
有限的密碼功能
特定處理器(Processor-specific)程式碼 |
可以取得儲存於晶片內的特定ID,以便將用戶和應用軟體啟動載入程式解密 |
用戶啟動載入程式(user boot loader) |
利用開發工具產生
可於開發時設定部份組態
雜湊演算法(hash)加密保護 |
完整加密功能
特定平台(Platform-specific)程式碼
作業系統與驅動程式
可顯示開機畫面
提供連結界面以便下載重新設定組態的程式碼
有限的顯示功能
災難復原模式 |
基本裝置功能
提供開機畫面,讓使用者知道裝置正在操作中 |
特定裝置(Device-specific)程式碼(上方)
特定應用(Application-specific)程式碼(下方) |
應用軟體啟動載入程式:階段1 |
雜湊演算法加密保護 |
啟動播放清單 |
驗證速度很快,延遲時間很短 |
應用軟體啟動載入程式:階段2 |
雜湊演算法加密保護 |
把授權資料庫和首批可能用到的內容檔案載入記憶體 |
驗證速度很快,延遲時間很短
載入部份的數位權利管理程式庫 |
應用軟體啟動載入程式:階段3+ |
雜湊演算法加密保護 (選用功能) |
載入其他/大多數的應用軟體 |
驗證時間最久,延遲時間最長
同時進行下載和讓使用者選擇所要播放的第一個內容;亦即在關鍵路徑(critical path)外執行這些作業 |
安全啟動載入技術就能避免前述的兩難局面,並且確認硬體和軟體都在值得信任的已知狀態下,請參考(表一)。裝置剛開機時,處理器會先執行ROM記憶體內的啟動載入程式,這個程式是一種特定裝置(device-specific)程式,而且只會支援最基本的功能,例如用來確認和驗證後續啟動載入程式的基本密碼功能,以及發現程式被篡改時,立刻啟動災難復原模式的能力。這個程式儲存在ROM記憶體,不可能被竄改破壞,所以不需要驗證。但是有些功能可儲存在晶片外,或是加入其他程式碼一起接受ROM啟動載入程式的驗證,譬如驗證失敗通知的顯示功能;但是在設計ROM啟動載入程式時必須注意,一旦發現驗證失敗,就不可以再使用這些程式。
ROM啟動載入程式通常由晶片廠商提供,OEM廠商要獲得許可才能進行修改。ROM啟動載入程式的主要工作是驗證用戶啟動載入程式(user boot loader)。用戶啟動載入程式則是由OEM廠商發展,他們會利用晶片廠商開發工具所提供的可規劃式架構發展用戶啟動載入程式,以便提供顯示器、USB界面和硬碟等底層驅動程式和界面連結功能,以及裝置所需的其他密碼功能。廠商在必要時可在產品設計階段更新和修改用戶啟動載入程式,但只要產品上市,廠商通常就不會再修改這些程式。
為了驗證用戶啟動載入程式,ROM啟動載入程式通常會先執行雜湊演算法,確認程式碼未被篡改,然後將程式碼解密還原(廠商提供的程式碼都已加密,以免有人透過逆向工程找出程式弱點或機密資訊)。用戶啟動載入程式通過ROM啟動載入程式的驗證後,即可開始確認和驗證主要應用軟體(亦即應用軟體啟動載入程式),使用者也可以開始存取被保護的內容。如果處理器晶片內含一個獨一無二的ID,而且此ID只能讀取而不能修改,那麼程式碼驗證的安全性還可進一步提高。廠商也能將此ID做為私密金鑰的基礎,或是利用這個ID將內容加密,只允許特定的播放機播放這些內容。
如果ROM啟動載入程式認為用戶啟動載入程式已被篡改,就會進入數位權利管理的一個重要模式:災難復原模式(Disaster Recovery Mode)。此時,裝置會先告知使用者這個裝置將不會再播放任何內容,讓使用者瞭解裝置並未故障,只是需要重新設定;接著再向使用者解釋如何重新設定裝置。這個步驟非常重要,否則使用者一旦發現無法播放內容,就會打電話要求廠商維修或是憤怒地退貨,而導致廠商付出很大的成本。
有時,產品中儲存的機密資訊很可能在其他地方被破解。如果發生這種情形,該產品所使用的數位權利管理標準將會提供某種機制,讓內容供應商「撤銷」該裝置或OEM廠商的使用權限,又或者透過某種方式讓使用者無法再使用被破解的內容或硬體。產品如果支援災難復原,就表示該產品包含一套安全的軔體升級機制,讓廠商能以未被撤銷的機密資訊取代裝置原有的機密資訊。當然,產品須能確保新程式碼或機密資訊的來源值得信任。
注意ROM啟動載入程式不會提供從USB下載程式碼等災難復原所需的功能,所以只會啟動災難復原模式,但不太可能親自執行這項作業;事實上,災難復原功能是由用戶啟動載入程式提供。由於這個原因,系統也應禁止旁人修改用戶啟動載入程式,才能確保災難復原程式不會被篡改,產品也能在發生問題時順利恢復正常運作。
把開機程序分為數個階段有幾項好處。首先,廠商更容易將程式碼分為特定裝置(device-specific)和特定應用(application-specific)兩個部份。更重要的是,能夠讓使用者感覺開機時間沒那麼長。舉例來說,驗證程式碼所需的時間通常都與程式碼長度成正比;因此程式碼越長,所需的驗證時間就越久,而當產品在驗證應用程式碼時,使用者只能乾瞪著空白而毫無反應的螢幕,心想是不是產品的電池沒電了。
只要採用精簡的用戶啟動載入程式,並且分階段載入應用軟體,就能加快系統與使用者的互動。例如用戶啟動載入程式開始執行後,就應立即在螢幕上顯示開機畫面,這會讓使用者感覺系統的回應很快,並且確信產品正在運作。甚至應用軟體啟動載入程式也可分為數個階段,像是界面功能就可分階段載入和執行:先載入使用者界面程式,然後載入使用者界面所須存取的資料庫。透過這種方式,產品就能一邊在背景中繼續載入和驗證大部份的應用軟體功能(例如目前還用不到的數位權利管理功能),一邊先讓使用者選擇所要播放的內容。如果不採取這種分階段的做法,而是一次就要驗證整個應用軟體,那麼這項產品可能需要數十秒鐘才能完成驗證工作並將資訊顯示在螢幕上。
啟動硬碟
將密碼功能最佳化雖可提高效能,但縮短開機時間的關鍵如前所述,仍在於讓開機功能與其他作業平行操作,使產品能在背景執行這些功能。同樣的原理也可讓使用者覺得等待的時間沒那麼長,例如在選擇一首歌後,使用者覺得很快就聽到產品開始播放。縮短延遲時間對提升使用者的整體感受很重要。
如(圖二)是數位權利管理功能在播放內容前所執行的驗證程序。驗證內容與驗證程式有很大的區別,因為授權碼、金鑰或雜湊表可能不會與受保護的內容儲存在一起,而是儲存在其他資料庫。例如有些歌曲可能會對播放次數做出限制,這表示驗證程序必須增加數個處理步驟,才能支援這種授權方式。由於使用者的播放清單可能很長(例如把20GB的音樂儲存在同一個資料夾),產品最好能產生索引資料庫以加速查詢過程。
《圖二 數位權利管理功能在播放內容前所執行的驗證程序。在此例中,所有數位權利管理作業都在關鍵路徑內,因此所需的時間最久。》 |
|
要將資料庫查詢最佳化,開發人員必須在效能、記憶體分配和電池壽命之間取得平衡,而影響這三項因素的最大關鍵或許在於作業是否需要存取硬碟。硬碟是可攜式媒體播放器的最大耗電來源,其耗電量甚至超過螢幕。並不是所有的可攜式媒體播放機都有硬碟,但不含硬碟的產品所能提供的儲存空間就會大幅減少,資料庫也會相對地較小,但也比較好管理。
節省電力的最好方法是將多個硬碟存取動作一次執行完畢,以便將硬碟啟動次數減到最少。例如系統不應為了播放三首歌曲而啟動硬碟三次,而應該按照播放清單的順序一次就載入三首歌曲,這是因為使用者最有可能按照順序播放歌曲。如果這項猜測錯誤(亦即使用者選了另外一首歌曲),那麼預先載入歌曲所用的電力就等於浪費了。不過相較於硬碟額外運轉時間所需的電力,這種預先載入動作的耗電其實很少,因此這種做法就長期而言將能節省可觀電力。
這套方法也能用在資料庫查詢。隨著資料庫大小差異,有時更好的做法是把整個資料庫都載入記憶體,而不是不停地存取硬碟。例如產品可於開機時將資料庫載入記憶體,此後的任何資料修改都只會套用在記憶體內的資料庫,系統偶爾才會將這些資料寫回硬碟。媒體播放器通常有10~20MB的預先讀取記憶體,大約能儲存10~40分鐘的音樂。把資料庫儲存在這個緩衝區雖會減少播放內容時所能使用的記憶體,卻能免除啟動硬碟的需求,因此能大幅加快查詢時間。
值得注意的是,如果授權資料庫也載入記憶體,系統就能把多首歌曲所需執行的密碼功能放到佇列裡,然後啟動硬碟並一次完成所有動作,而不是在硬碟啟動後跑去執行這些計算,然後留著硬碟空轉。雖然把所有授權資料都載入RAM記憶體可以減少耗電,但這也會大幅降低裝置安全功能的可靠性,因此除非有特別需要,否則還是應該加以避免。
假設使用者開啟播放機後,螢幕很快就出現開機畫面,然後是播放清單。此時使用者多半會想一下要先播放那首歌曲,而這段思考時間通常就足以讓系統載入應用軟體。如果使用者很快就選擇了所要播放的歌曲,系統就能載入歌曲內容和授權資料,進行驗證,然後開始播放,讓使用者在最短的時間內聽到音樂。
此時,由於裝置還沒有機會預先下載任何內容,因此所有的數位權利管理作業都會在關鍵路徑內執行。但等到第一首歌曲開始播放後,播放器就能把授權資料庫載入記憶體,並根據播放清單預先處理後續幾首歌的授權金鑰,同時繼續預先下載所需的歌曲內容。透過這種方式,多數的數位權利管理作業實際上都會在背景執行,不但不會影響使用者的操作感受,還能將硬碟運轉時間減到最少,請參考(圖三)。
資料庫的強固性
隨著所採用的數位權利管理機制不同,管理記憶體內的資料庫有可能比管理硬碟裡的資料庫更複雜,因為須提供適當的保護功能,以免使用者藉由開關機的方式規避數位權利管理機制。以「有限次數播放」授權為例,使用者每播放一次受到這類保護的內容,資料庫就必須將剩餘播放次數減一。但使用者可能在資料庫尚未將記憶體內的這些修改內容寫回硬碟時,就先將裝置關機,企圖藉此規避這項保護機制。
《圖三 顯示同樣的數位權利管理程序,但這個程序已儘可能將最多的處理步驟移到關鍵路徑外,讓使用者完全感覺不到播放速度變慢或效能受到影響。將授權資料庫儲存在預先下載緩衝區後,系統就能在背景同時驗證多筆授權資料,同時減少硬碟存取次數以節省電力。》 |
|
通常當播放的時間或歌曲達到一定數目時,強固性與符合性規則(R&CR)還會規定記憶體內的資料庫在經過幾次更新後,就應將新內容寫回硬碟內的資料庫中。如果系統內含快閃記憶體,那麼更新資料也可儲存在快閃記憶體內的更新佇列,這樣就算使用者故意開關機,更新資料也不會消失,可惜多數硬碟式媒體播放器都不包含如快閃記憶等類型的資料非揮發性記憶體。另外要注意的是,這些更新內容不可儲存在卸除式媒體,因為使用者可能在關機後移除該媒體,也就等於將儲存更新資料的佇列也移除。
這些設計的目標,都是為了避免數位權利管理的相關功能讓硬碟啟動次數增加。為了讓記憶體和硬碟的資料庫內容儘量一致,同時把所需的更新次數減到最少,系統必須注意其他功能對於啟動硬碟的要求,然後在這些功能執行後進行資料庫更新。舉例來說,當播放器預先下載某首歌曲時,機器本身就應該自動更新硬碟裡的資料庫。而使用者原本就會預期下載歌曲需要一些時間,因此系統可透過這種方式,在傳送歌曲資料時順便傳送授權資料。除此之外,如果系統將更新資料儲存在佇列,那就只有這些資料庫內容變更需要寫回硬碟,而不需要將整個資料庫都寫回。
系統還能記錄和分析使用者的使用模式,然後預測他們會如何使用媒體內容,這種方式也能將硬碟的運轉時間減到最少。舉例來說,如果使用者習慣按照播放清單播放歌曲,播放器就能利用這個習慣節省電力。甚至隨機播放都不必那麼隨機,播放器可隨機產生一份播放清單,然後就像在處理普通的播放清單一樣,一次就預先從硬碟讀取數首歌曲,同時讓使用者查看已經播放過的曲目。在記錄使用者的播放習慣時,系統甚至還能記錄使用者跳過某一首歌曲的次數,在隨機播放時,就能減少播放這些不受歡迎的曲目。
傳送授權資料
通常下載內容檔案所需的等待時間最容易讓使用者感到不耐煩,數位權利管理則會讓這個狀況雪上加霜,因為這個機制必須傳送授權資料、執行安全功能交握協定(secure handshaking)以及驗證內容的著作權。要減少數位權利管理功能對於授權資料和內容傳送時間的影響,系統同樣可以安排數位權利管理作業在背景執行,或是事先就與其他作業一起執行。
處理授權資料時,很重要的一點是使其易於使用。使用者希望他們點選一首歌後,播放器就能立刻播放該歌曲。因此儘管數位權利管理的職責是管理授權資料,並且防止使用者在授權期滿後繼續使用媒體內容,但系統在執行這項功能時,一定要以很客氣的方式提出明確的說明。
有許多方法都能管理授權期滿的處理方式,實際做法則要視產品所用的數位權利管理標準而定。無論在那種情形下,系統都應清楚告訴使用者什麼東西已經期滿,他們應如何取得新授權。某些授權資料還可能有「過期狀態」(stale-date),例如使用者把歌曲下載到可攜式媒體播放器後,最多只能播放一個星期,然後就必須讓播放器重新連接到一台值得信任的內容伺服器(亦即利用個人電腦透過網際網路連接到值得信賴的伺服器)。
為了避免使用者造成混淆,開發商應預先設想可能出現的問題。舉例來說,使用者可能出外旅行,因此最近都沒有連線到內容伺服器。如果這位使用者的授權方式是以使用時間或使用次數為基準,而授權資料剛好在這段期間過期,那麼使用者可能會感到很憤怒,卻找不到方法向廠商索取賠償。這些問題可能成為廠商導入數位權利管理時的障礙,因為他們無法控制授權資料多久需要更新一次。
減輕這些問題的關鍵是將部份授權資訊告知使用者,例如在播放歌曲時顯示該首歌曲的授權屆滿日期或還能再播放幾次等資訊,以免使用者措手不及。系統還應提供使用者自行安排預警時間的功能,例如授權期間即將到期時就先發出通知,只不過這些預警通知的次數要適當,不要讓使用者淹沒在一大堆惱人的預警資訊中(例如播放每首歌時都發出預警通知),使他們無法安心欣賞媒體內容。
基本功能之外
數位權利管理的技術障礙不一定會影響效能、使用的簡易性和電池壽命,因此對有意提供這項支援的廠商來說,導入數位權利管理功能已成為一種實際可行的選項。數位權利管理機制雖會增加系統的複雜性,廠商卻只需對基本系統架構做出最小幅度的修改,就能解決這些問題。開發人員只要充份瞭解使用者與媒體播放機的互動模式,就能妥善安排數位權利管理的作業程序,使其幾乎完全不會影響產品的開機、播放和傳送授權資料。
開發商現在所面對的挑戰,已不再是他們能否以高效率和不影響現有架構的方式導入數位權利管理功能,而是如何超越現成次系統所提供的基本功能,發展出具有未來性的強大設計,進而與競爭對手的產品做出區隔。廠商提供的數位權利管理功能除了在開機、播放和傳送資料時以透明化的方式進行授權驗證外,還要能發揮其他更大作用。為了以最有彈性的授權管理機制支援種類最廣泛的數位權利管理協定,開發商需要一套可程式架構以及透過最佳化程式庫或加速硬體協同處理器所提供的完整密碼功能,以便將延遲時間和耗電量減到最少,同時提供廠商最多的選擇。
舉例來說,內容散佈模型(content distribution model)就像數位權利管理標準一樣的變化多端。使用者有時可先與他人隨意分享內容,稍後再購買合法的使用授權,或是同意在每次播放這些內容時,就從網路帳戶支付一次授權費用。超級散佈(Superdistribution)模型則能讓使用者在手機或其他裝置之間很方便地交換內容,同時為其他功能保留有限的無線網路頻寬。新出現的行動通訊虛擬網路營運商(MVNO)標準也很重要,這個標準能讓任何公司向行動電信業者租用空間,使用戶隨時隨地都能存取更豐富的內容;未來,這項服務還會擴大到所有的裝置。
展望未來,最有彈性的廠商將擁有最強大的競爭力。更重要的是,MVNO之類的創新標準不但能讓廠商彈性導入數位權利管理功能,還能讓他們跨出播放器應用領域,走向更廣闊的內容市場,進而提供令人振奮的新應用商機和未來營收潛力。
---本文作者任職於TI德州儀器---