管窺Lotus Notes/Domino 的安全特性

genusBIT發表於2010-02-02

    【IT168 技術文章】

    Lotus Notes/Domino是業界群件系統的事實標準。尤其是作為大中型企業和事業機關的辦公自動化應用平臺享譽全球。新出的R5已經屢次出現在美國各個計算機雜誌的調查中最受歡迎軟體的行列。Notes的一個重要特性就是其強大可靠的安全機制。我曾經用Notes4.6和Notes R5開發過一些Notes/Domino平臺上的一些應用程式。現就自己的體會和有關資料從資料加密,身份認證和訪問控制兩個方面簡單談一些Notes的安全特性。

    1  Notes/Domino結構和基本概念簡介

    Notes一般用來泛指整個Lotus Notes/Domino平臺,而特指Notes是指Notes工作站客戶平臺,我們在指後者時一般會特意指出來。以R5為例,Notes由DominoR5,DesignerR5,NotesR5和AdministratorR5四個部分組成。前者是伺服器端應用,後三者是客戶端。DesignerR5是Notes平臺上的應用程式開發環境,NotesR5就是工作站應用環境,Administrator R5是用來對伺服器進行管理的客戶端,只有對伺服器有管理員許可權的使用者才可以用之對伺服器進行管理工作。總的來說,Notes是典型的伺服器/客戶端結構,當然,用Domino作Web伺服器,用瀏覽器作客戶端時也可以稱為所謂的B/S結構。值得一提的是,由於Notes伺服器和Web伺服器在Domino中的統一,用Domino作Web伺服器具有安全,開發簡單,動態維護等非常其他Web伺服器難以比擬的優勢。

    Notes邏輯結構中最高層是整個單位機構。通常對應系統中的第一臺Domino伺服器,也是主伺服器,主伺服器產生整個機構的通訊錄,機構驗證者ID。機構驗證者ID用來對個人和附屬伺服器進行註冊,這個ID包含在以後整個機構中所有ID檔案中,它是整個機構所有伺服器和使用者之間進行協同工作時進行相互驗證的信任根。也是本機構使用者在外機構進行交叉認證的信任根。機構驗證者ID也可以註冊子機構驗證者ID,子機構驗證者ID也可以註冊使用者和伺服器,由於子機構驗證者ID包含機構驗證者ID,所以,機構驗證者ID自然繼承下來。這樣,系統的使用者和伺服器的標識形成一個層次結構:使用者名稱/子層機構驗證者名稱/上一層子機構驗證者名稱/更上一層子機構驗證者名稱/……../機構驗證者名稱。

    Notes上的應用程式的基本單位是一個個的文件資料庫。一個應用可以由一個或多個文件資料庫組成。資料庫中的資料以文件為單位,可以看成是關聯式資料庫中的記錄(但是,Notes的文件資料庫在概念上和關聯式資料庫有非常大的區別,二者也幾乎沒有什麼關聯。這裡只是為了說明文件和Notes資料庫的結構關係),文件中有各種型別的資料項(稱為域)可以是文字,數字,時間,也可以是影像,聲音甚至可執行的嵌入物件。因此,也有人稱Notes是非結構化資料庫或物件資料庫,這是相對於關聯式資料庫只能儲存結構化的資料資訊而言的。

    2 Notes中的資料加密

    Notes中的加密主要可以對以下內容進行加密:

    傳送給其他使用者的訊息。在訊息傳輸過程中,未被授權的使用者不能讀取它。也可以加密已儲存的訊息和外來訊息。

    網路埠。加密資訊在Notes工作站和Domino伺服器間或在兩臺 Domino 伺服器間傳送時,未授權的使用者在訊息傳輸過程中無法讀取資料。

    SSL 事務。使用SSL對在Internet 客戶機和 Domino 伺服器間或在 Notes 工作站和 Internet 伺服器間傳送的資訊進行加密時,未授權的使用者在訊息傳輸過程中無法讀取資料。

    域、文件和資料庫。應用程式開發者可以對文件中的域、整個文件以及本地資料庫進行加密。這樣,只有指定的使用者才能讀取這些資訊。

    Notes對每個使用者和伺服器都要進行註冊並分發ID,ID中含有該使用者或伺服器的身份資訊以及註冊伺服器為之生成的唯一的公用金鑰/ 私有金鑰對。公用金鑰儲存在伺服器上的“Domino 通訊錄”資料庫中,凡是對伺服器有訪問許可權的的使用者都可以對該資料庫讀取資訊,但只有使用者本人和該資料庫管理員(通常是機構管理員)可以修改個人文件。這 就有效防止了用假的公用金鑰來冒充某個使用者。Notes中對資料的加密除了對網路埠的加密,都是使用公用/私有金鑰對。Domino 使用兩套公用和私有金鑰:Notes 和 Internet。Notes 公用和私有金鑰用於加密域、文件、資料庫以及傳送給其他 Notes 使用者的訊息。Internet 公用和私有金鑰用於傳送和接收加密的 S/MIME 訊息,還用於加密 Notes 工作站和 Internet 伺服器之間的 SSL 會話。

    2.1 對傳送給其他使用者的訊息進行加密

    主要是對郵件進行加密。郵件加密保護訊息不受到未授權訪問。只有郵件正文能被加密,標頭資訊(例如:“收件人”、“發件人”和“主題”域)不會被加密。

    Notes 使用者可以加密傳送給其他 Notes 使用者的郵件,也可以加密傳送給使用支援 S/MIME 的郵件應用程式(例如:Outlook Express 和 Netscape Communicator)使用者的郵件。使用者可以加密傳送給其他 Notes 使用者的郵件或其他 Notes 使用者收到的郵件,也可以加密“郵件”資料庫中儲存的所有文件。Notes 使用收件人的公用金鑰來加密外出郵件和儲存的郵件,此金鑰儲存在收件人的個人通訊錄或“Domino 目錄”中。通常情況下,傳送給外部網路域使用者的郵件不能被加密。不過,如果郵件的收件人也使用 Notes,並且發件人可以訪問收件人的公用金鑰,那麼發件人就可以加密此郵件訊息。收件人的公用金鑰儲存在發件人可以訪問的“Domino 目錄”中,或者儲存在發件人的個人通訊錄中。Notes 使用者在向使用支援 S/MIME 的郵件程式的使用者傳送郵件時,可以使用 S/MIME 來加密訊息。為了加密訊息,發件人必須擁有收件人的公用金鑰。收件人的公用金鑰儲存在發件人個人通訊錄或“Domino 目錄”的 x.509 驗證字中。

    Notes在傳送郵件之前生成一個隨機加密金鑰。然後用收件人的公用金鑰對該隨機金鑰進行加密。並將加密後的金鑰附加在用該隨即金鑰加密的訊息後。收件人用其私有金鑰解密隨即金鑰並用該金鑰將訊息解密。

    Notes的郵件加密是典型的點對點加密。而網路埠的加密則是典型的面向連結的加密。

    2.2 對網路埠的加密

    在指定埠加密網路資料可以防止可能使用網路協議分析器進行的網路竊聽。網路加密在選定協議的網路傳輸層上進行,並且獨立於其他加密形式。網路資料僅在傳輸時才能被加密。一旦資料被接收和儲存,網路加密就不再有效。只要在網路連線的任一端啟用網路資料加密,就可以進行網路資料加密。例如:如果在某個伺服器的 TCP/IP 埠啟用加密,就不必在與此伺服器相連的工作站或伺服器的 TCP/IP 埠啟用加密。

    2.3 SSL事務中的加密

    SSL加密主要是在伺服器和客戶端通過SSL身份認證後,用Internet公用金鑰對對資料進行資料的加密和解密,以防止傳輸過程中被非授權使用者對資料進行訪問。

    2.4 對資料庫和文件加密

    對資料庫加密的目的有兩種:在具有資料庫所有者使用者識別符號的工作站對本地資料庫進行加密以防止其他使用者使用各自的識別符號訪問工作站上的本地資料庫;具有伺服器識別符號的伺服器。這樣如果 Domino 管理員要訪問資料庫,必須具有對用來加密資料庫的伺服器識別符號的存取許可權。對資料庫加密可以選擇加密強度:普通加密,中等加密,強度加密。

    對文件和域加密可以用有許可權的使用者的公用金鑰加密,也可以首先生成祕密金鑰,再通過Notes的金鑰郵寄,或將金鑰引出檔案分發給使用者,使用者必須將收到的金鑰合成到自己的ID檔案中去,才能夠對加密的文件和域進行加密。而沒有的使用者看不到被加密的文件和文件中被加密的域。

    3 Notes的身份認證和訪問控制

    在第一部分我們曾經提到過,Domino使用兩套公用/私有金鑰:Notes和Internet。對應身份認證也有notes 工作站與Domino的認證和Internet客戶端與Domino的認證。Notes工作站中與Domino的身份認證都是雙向的,伺服器要驗證使用者是 合法使用者,使用者也要驗證向他提供服務的伺服器不是冒充的。它們的信任基礎就是我們前面提過的驗證者ID。驗證過程,雙方還要進行一系列資料加密解密的認 證。比如,一方用對方的公用金鑰加密一條資訊要求對方用自己的私有金鑰解密並用認證方的公用金鑰將訊息加密送回。Internet與Domino的 SSL認證中,客戶端一定要對伺服器端進行認證,而伺服器端不一定要求驗證客戶身份,因為伺服器有時允許Internet上的匿名訪問。SSL認證的信任 基礎,可以是第三方的CA機構,也可以是企業內獨立的Domino權威驗證字伺服器。Notes提供了可以作為認證權威機構的應用資料庫模板,負責用於分 發SSL認證的驗證字。

    Notes 的訪問資源可以劃分為7個層次:伺服器,資料庫,資料夾,檢視,文件,區段,域。使用者可以屬於群組,可以擁有訪問某個資料庫的角色。對伺服器的訪問控制包 括對伺服器是否可訪問,是否可以在伺服器建立資料庫和複本,是否可以執行代理,是否可以執行受限制的Lotuscript和Java代理,是否可以執行無 限制的Lotusscrip和Java代理。對資料庫的訪問取決於資料庫的訪問控制列表(ACL),對資料庫的訪問許可權可以劃分為:管理者,設計者,編輯 者,作者,讀者,存放者,不可訪問者。

   不可訪問者是最低許可權;讀者對資料庫中的文件可讀(但如果文件本身帶有讀者域,且域中不含有該使用者,他還是對文件不 可讀);存放者之可以建立文件,但不能讀到任何資料庫中的文件,包括自己建立的並且已儲存的文件;作者擁有讀者的全部許可權,並可以在資料庫中建立文件,但 沒有編輯文件的許可權;編輯者擁有作者的全部許可權,並且可以編輯已有文件,但是如果文件中設有讀者域和作者域,並且兩個域中都不包含該使用者(即該文件對他不 可讀),則還是不能對該文件進行編輯;管理者擁有對資料庫的最高許可權,可以編輯修改資料庫的存取控制列表,可以對資料庫進行加密。可以編輯,刪除任何對他 可讀的文件,如果文件有讀者域和作者域,並且不包括擁有管理者許可權的使用者,則該使用者對文件還是不可讀,但是隻要兩個域中任一域中包括該管理者使用者,則管理 者就可以進行編輯,刪除。對每個資料夾和檢視均可設定對其進行讀取的使用者,群組和擁有某角色的使用者。

  對文件可以通過對錶單設定建立,讀取某種文件的使用者, 群組和擁有某角色的使用者。每個文件中還可以包括作者,讀者域用以設定對該文件的存取許可權。文件中可以包括存取控制區段,區段可以摺疊展開,而且可以控制區 段中的內容的編輯許可權。文件中的域也可以通過用使用者的公用金鑰進行加密(從而只有這些使用者才可以看到該域內容),實現對該域的訪問控制。

    4 總結

    Notes的安全機制複雜,安全功能強大,它為使用者的協同工作提供非常高效而又安全的

    平臺,同時也為企業釋出資訊,企業之間的必要的資訊交換提供了安全保證。當然,任何安全系統或機制都不是絕對安全的,任何安全系統都是首先在物理安全的基礎上實現的,比如,Notes伺服器Domino的物理安全以及使用者ID的存放安全性都是至關重要。如果這些安全不能保證,上述的安全特性都全無用處。
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14751907/viewspace-626613/,如需轉載,請註明出處,否則將追究法律責任。

相關文章