用於執行安全通信的系統和方法與流程
2023-09-11 11:32:15 1

本申請要求2014年1月31日提交的美國臨時申請no.61/934,341、2014年8月18日提交的美國臨時申請no.62/038,589和2014年12月11日提交的美國臨時申請no.62/090,632的優先權,以引證方式將其全部內容組合於此。
背景技術:
隨著越來越多的數據在基於網絡的系統中收集和維護,因此數據安全及其重要。安全的一個重要方面是設備間的安全通信。具體而言,每分鐘在網絡連接的設備之間交換大量的數據。這種交換採取設備間傳遞的消息、文檔和其他數據的形式,包括電子郵件、附件、即時消息、文件和其他形式。
當今,包括電子郵件和文檔的大量數據是以極低的安全性進行通信,這意味著,這種通信極易被惡意第三方設備截取(intercepted)和盜用(misappropriated)。雖然存在確保這種通信安全的機制,但這些機制通常難以使用並且相對容易失敗。例如,用於安全通信的大多數現有系統依賴於非對稱加密方法,其中使用公共可用密鑰來加密,並使用私鑰來解密。非對稱加密方法的問題在於,它們不能提供與對稱加密一樣強的保護。此外,由於公鑰/私鑰對保持不變,因此一旦一個密鑰對被攻破,就可用對大量的通信進行破譯。
對稱加密方法還用於確保提供比非對稱方法強的保護的通信的安全。然而,這些方法使用較為繁瑣。例如,這些方法通常涉及帶外密鑰交換,從而使得設置或更新密鑰較為繁瑣,因此不頻繁執行。因而,需要用於提供強保護且易用的安全通信的系統和方法。
技術實現要素:
本發明的目的在於提供消除或減少現有技術的上述缺點的至少一個的用於安全通信的新穎的伺服器和方法。
本發明的多個方面和優點將在下面變得更加清楚,在充分描述和聲明的構造和操作的細節中進行了說明,參照作為本發明一部分的附圖,其中通篇用相似的附圖標記指代相似的部件。
附圖說明
圖1示出了根據實施方式的用於安全通信的系統的實施方式的框圖;
圖2示出了根據實施方式的提供用於圖1的系統的安全通信的增強公鑰的方法;
圖3示出了根據實施方式的在執行圖2的方法的過程中圖1的系統的框圖;
圖4示出了根據實施方式的在執行圖2的方法的過程中圖1的系統的框圖;
圖5示出了根據實施方式的在執行圖2的方法的過程中圖1的系統的框圖;
圖6示出了根據實施方式的在執行圖2的方法的過程中圖1的系統的框圖;
圖7示出了根據實施方式的在執行圖2的方法的過程中圖1的系統的框圖;
圖8示出了根據實施方式的在執行圖2的方法的過程中圖1的系統的框圖;
圖9示出了根據實施方式的在歸一化過程中增強的公鑰的框圖;
圖10示出了根據實施方式的在執行圖2的方法的過程中圖1的系統的框圖;
圖11示出了根據實施方式的圖1的系統的公鑰添加方法;
圖12示出了根據實施方式的在執行圖11的方法的過程中圖1的系統的框圖;
圖13示出了根據實施方式的在執行圖11的方法的過程中圖1的系統的框圖;
圖14示出了根據實施方式的在執行圖11的方法的過程中圖1的系統的框圖;
圖15示出了根據實施方式的在執行圖11的方法的過程中圖1的系統的框圖;
圖16示出了根據實施方式的在執行圖11的方法的過程中圖1的系統的框圖;
圖17示出了根據實施方式的在執行圖11的方法的過程中圖1的系統的框圖;
圖18示出了根據實施方式的包含示例性消息的圖1的系統的框圖;
圖19示出了根據實施方式的圖1的系統接收安全通信的方法;
圖20示出了根據實施方式的在執行圖19的方法的過程中圖1的系統的框圖;
圖21示出了根據實施方式的在執行圖19的方法的過程中圖1的系統的框圖;
圖22示出了根據實施方式的在執行圖19的方法的過程中圖1的系統的框圖;
圖23示出了根據實施方式的在執行圖19的方法的過程中圖1的系統的框圖;
圖24示出了根據實施方式的在執行圖19的方法的過程中圖1的系統的框圖;
圖25示出了根據實施方式的圖1的系統發送安全通信的方法;
圖26示出了根據實施方式的在執行圖25的方法的過程中圖1的系統的框圖;
圖27示出了根據實施方式的在執行圖25的方法的過程中圖1的系統的框圖;
圖28示出了根據實施方式的在執行圖25的方法的過程中圖1的系統的框圖;以及
圖29示出了根據實施方式的在執行圖25的方法的過程中圖1的系統的框圖。
具體實施方式
圖1示出了用於安全通信的系統100的框圖。至少一個安全通信終端(安全通信終端104-1和104-2)可以經由網絡108連接至公鑰伺服器112。安全通信終端104-1和104-2稱為安全通信終端104,並且統稱為安全通信終端104。在說明書的其他地方也使用該命名方法。安全通信終端104可以基於任何適當的計算環境,並且不對類型特別加以限制,只要每個安全通信終端104能夠接收、處理和發送安全通信。在本實施方式中,安全通信終端104被構造成至少執行能夠與公鑰伺服器112所提供(host)的網絡服務進行交互以建立安全通信的指令。雖然在圖1的示例性示例中,僅示出了兩個安全通信終端,但應當理解的是,在其他實施方式中,可以存在更多或更少的安全通信終端104。
每個安全通信終端104包括連接至例如存儲器的非瞬時計算機可讀存儲介質的至少一個處理器。該處理器允許或執行存儲在存儲器中的操作指令或應用,以執行用於安全通信終端104的多種功能。處理器包括一個或更多個微處理器、微控制器、數位訊號處理器(DSP)、狀態機、邏輯電路、或者基於存儲在存儲器中的操作或編程指令而對信息進行處理的任何一個設備或多個設備。根據這些實施方式,處理器對與執行數據加密、解密和安全通信相關聯的多種功能和數據進行處理。
存儲器可以是易失(例如隨機存取存儲器(「RAM」))和非易失(例如,只讀存儲器(「ROM」)、電可擦除可編程只讀存儲器(「EEPROM」)、快閃記憶體、磁計算機存儲設備或光碟)存儲器的任意適當組合。在一個實施方式中,存儲器包括用於持久存儲計算機可讀指令和其他數據的非易失存儲器、以及用於短時存儲在執行計算機可讀指令期間的這種計算機可讀指令和其他數據的非易失存儲器。在一些實施方式中還可以想到可以去除或者外置於安全通信終端104的其他類型計算機可讀存儲介質,例如安全數字(SD)卡及其變型。外置或可去除計算機可讀存儲介質的其他示例包括壓縮盤(CD-ROM、CD-RW)和數字視頻盤(DVD)。
每個安全通信終端104還可以包括可操作連接至處理器的通信接口。通信接口能夠使安全通信終端104例如經由網絡108與其他計算設備進行通信。因此,可以將通信接口選擇為與網絡108適配。在系統100的其他實施方式中,安全通信終端104可以在沒有介於期間的網絡108的情況下連接至公鑰伺服器112和/或直接彼此連接,例如安全通信終端104通過有線通用串行總線(USB)連接或者無線藍牙連接而連接至公鑰伺服器112和/或另一個安全通信終端104。這些連接可以在通過網絡108的連接以外或者代替通過網絡108的連接而建立。
網絡108可以包括能夠將公鑰伺服器112與安全通信終端104連結在一起的任何網絡,並且可以包括有線和/或無線網絡的任何適當組合,包括但不限於例如網際網路的廣域網(WAN)、區域網(LAN)、蜂窩電話網、Wi-FiTM網絡、WiMAXTM網絡等。
一般而言,公鑰伺服器112可以包括能夠輔助安全通信性能的任何平臺。在本實施方式中,公鑰伺服器112是被構造成用於接收、維持和提供公鑰的伺服器。公鑰伺服器112可以基於包括一個或更多個中央處理單元(CPU)的適當構造的伺服器型計算環境,該一個或更多個中央處理單元構造成控制並與計算機存儲器或存儲設備形式的非短時計算機可讀介質交互。計算機存儲器或存儲設備可以包括例如隨機存取存儲器(RAM)之類的易失存儲器,以及例如硬碟驅動器或閃速驅動器之類的非易失存儲器,或者廉價磁碟冗餘陣列(RAID)或基於雲的存儲。公鑰伺服器112還可以包括一個或更多個網絡或通信接口,用於連接至網絡108或安全通信終端104。公鑰伺服器112還可以構造成包括例如鍵盤或指點設備的輸入設備或者例如監視器或顯示器或者它們之中任意一個或全部的輸出設備,以允許本地交互。
還可以想到用於公鑰伺服器的其他類型硬體構造。例如,公鑰伺服器112可以實現為基於雲的計算解決方案的一部分,由此公鑰112的功能實現為在單一數據中心或者在多個數據中心之間執行的一個或更多個虛擬機。公鑰伺服器112還可以實現為在可操作地在例如網絡108的網絡上連接的多個計算設備之間分布的分布式伺服器。公鑰伺服器112的計算環境的軟體方面還可以包括代替或除了任何本地輸入設備或本地輸出設備以外的遠程訪問能力。
在公鑰伺服器112的計算環境中可以使用任何期望的或適當的操作環境。因而可以利用適當的作業系統和應用來構造該計算環境以實現此處討論的功能。本領域技術人員將認識到,公鑰伺服器112不一定要實現為單機設備,而是可以實現為多目的伺服器的一部分或者實現為虛擬機。
公鑰伺服器112可操作用於接收、存儲和發送與一個或更多個客戶帳戶相關聯的公鑰。公鑰伺服器112可以進一步操作用於確定所上傳的密鑰不是先前上傳密鑰的副本。此外,公鑰伺服器112可以操作用於確認提供密鑰的客戶帳戶,並驗證所上傳的密鑰確實是由客戶帳戶生成。在變型例中,可以存在超過一個公鑰伺服器112。
在一些實施方式中,安全通信終端104被構造成與客戶帳戶相關聯。例如,如圖1所示,安全通信終端104-1與客戶帳戶A相關聯,而安全通信終端104-2與客戶帳戶B相關聯。通常基於所提供的例如用戶姓名、電子郵件地址、密碼之類的憑證和/或其本領域技術人員能夠想到的其他憑證來獲得對客戶帳戶的訪問。在一些變型例中,超過一個帳戶可以與安全通信終端104相關聯。在另外的變型例中,一個帳戶可以與超過一個安全通信終端104相關聯。在其他變型例中,可以不使用帳戶,而是,憑證可以是與不被其他人所知的安全通信終端104相關聯的唯一憑證,例如與設備相關聯的唯一序列號。在這些變型例中,與安全通信終端104相關聯的客戶帳戶憑證相反,基於設備憑證執行下面描述的安全通信。
基於所維持的客戶帳戶,安全通信終端可以構造成與客戶帳戶相關聯地生成對稱和非對稱密鑰、生成消息,對所生成的消息和其他數據進行加密,將生成的消息發送到其他安全通信終端104、從其他安全通信終端104接收消息,並且對所接收的消息進行解密。與客戶帳戶相關聯的由安全通信終端104執行的加密可以基於該客戶帳戶先前生成並傳送到另一個客戶帳戶作為先前發送消息的一部分的密鑰或密鑰標識符。例如,在一些實施方式中,共享對稱密鑰SSK和共享密鑰標識符SSKID可以由客戶帳戶生成並被包含作為發送到另一個客戶帳戶的消息的一部分。可以基於任何期望的密鑰生成方法來生成共享對稱密鑰SSK。因而,當客戶帳戶接收包含該共享對稱密鑰標識符SSKID的後續消息時,該客戶帳戶能夠基於包含該SSKID而確定該消息至少部分是由譜寫該消息的其他客戶帳戶使用共享對稱密鑰SSK加密的。因此,為了對所接收消息的至少一部分進行解密,客戶帳戶可以基於該共享對稱密鑰標識符SSKID而識別共享對稱密鑰SSK,並使用識別出的共享對稱密鑰SSK對所接收消息的部分進行解密。由此,在兩個客戶帳戶之間發送的每個消息可以由在對消息進行交換的該兩個客戶帳戶之間共享的不同的對稱密鑰進行加密。在變型例中,可以使用SSK和SSKID來加密一組消息。因此,即使共享對稱密鑰被第三方攻破,也只能解密一個或一組消息。
在變型例中,客戶帳戶可以使用不與其他客戶帳戶共享的對於該客戶帳戶而言唯一的另一個對稱密鑰(唯一客戶密鑰UCK)來減少共享對稱密鑰標識符SSKID被不是消息發送方或接收方的第三方客戶截取並解密的可能性。在一些變型例中,可以使用隨機數發生器利用客戶帳戶憑證來生成唯一客戶密鑰UCK,諸如密碼作為種子。由此,可以在客戶帳戶所在的多種設備上統一生成唯一客戶密鑰UCK。雖然唯一客戶密鑰UCK對於客戶帳戶而言是唯一的,但在變型例中,其可以例如隨時間或者基於對客戶帳戶憑證的改變而變化。
為了能夠對不同的消息或不同組消息使用不同的共享對稱密鑰,提供了生成並在兩個客戶帳戶之間對共享密鑰進行共享的方法。因而,客戶帳戶生成的共享對稱密鑰SSK只與一個其他客戶帳戶共享,並用於加密從該其他帳戶發送到生成該對稱共享密鑰SSK的客戶帳戶的消息密鑰。在變型例中,共享對稱密鑰可以與一組其他客戶帳戶共享。
在一些實施方式中,除了使用共享對稱密鑰以外,與接收方客戶帳戶相關聯的公鑰PuK還可以由另一個客戶帳戶使用,來對目的地為該接收方客戶帳戶的消息的至少部分進行加密。此外,在將消息發送到接收方客戶帳戶之前,公鑰PuK可以由該另一個客戶帳戶包含來作為該消息的一部分。在這些實施方式中,該另一個客戶帳戶可以從公鑰伺服器112接收公鑰PuK,下面對此進行更詳細說明。公鑰PuK在包含到消息中之前,可以由另一個客戶帳戶例如使用先前接收的共享對稱密鑰SSK進行加密。因而,當接收方客戶帳戶接收該消息時,其可以使用共享對稱密鑰SSK對公鑰PuK進行解密,並識別與公鑰PuK相對應的私鑰PrK。在一些變型例中,可以使用增強公鑰,使得可以以加密形式包括與公鑰PuK相對應的私鑰PrK作為增強公鑰的一部分,下面將對此進行更詳細說明。隨後,可以使用相應的私鑰PrK對利用公鑰PuK加密的消息的部分進行解密。在變型例中,可以使用共享對此密鑰SSK和公鑰PuK兩者對消息的至少一部分進行加密。在變型例中,可以獲得不同的公鑰PuK對基於使用增強公鑰而創建的每個新消息或一組新消息進行加密。將公鑰PuK的使用限定在對一個或一組消息進行加密,限制了由於針對由破解的公鑰加密的一個或一組消息的公/私密鑰對的破解而導致的任何攻破。此外,使用變化的共享對稱密鑰和變化的非對稱密鑰二者也可以增大消息交換的安全性,並解決例如中間人問題之類的問題。
為了能夠對不同的消息使用不同的公鑰,提供了生成和共享與每個客戶帳戶相關聯的多個增強公鑰的方法。因而,在變型例中,每個客戶帳戶能夠生成超過一個公/私非對稱密鑰對。客戶帳戶生成的增強公鑰可以上傳到公鑰伺服器112並與該客戶帳戶相關聯地存儲。隨後,在交換新消息時,任何客戶帳戶都可以請求與客戶帳戶相關聯的增強公鑰。在變型例中,所生成的增強公鑰可以包括數據的一部分,使得公鑰伺服器能夠驗證提供給它並與客戶帳戶相關聯的增強公鑰確實是該客戶帳戶生成的。此外,增強公鑰還可以包括第二數據部分,使得將新的增強公鑰上傳到公鑰伺服器112的客戶帳戶能夠驗證公鑰伺服器112是可信的(與例如攔截者試圖攻破該公鑰相反)。
在一些進一步的實施方式中,消息的至少一部分可以由對稱消息密鑰MK來加密。由MK加密的部分例如可以是消息內容或其他消息數據。MK可以由發送消息的客戶帳戶生成,並包含在該消息中。MK可以由消息所發送到的客戶帳戶的SSK和/或PuK加密。
現在參照圖2,在200處指示了提供用於安全系統通信的增強公鑰的方法。為了輔助解釋該方法,假設使用如圖1中所示的系統100操作該方法200。此外,下面的對方法200的討論可以進一步理解系統100。然而,應當理解的是,系統100和方法200是可以改變的,並且不一定需要彼此結合完全如此處所述地工作,並且這種變化處在保護範圍內。
在205處開始,客戶帳戶在安全通信終端104生成一組公/私鑰對。在圖1的本示例中,客戶帳戶A根據已有的非對稱密鑰生成方法而生成如圖3所示分別包含非對稱公鑰PK1和非對稱私鑰PKR1的一個公/私鑰對。此外,安全通信終端104-1維持對於客戶A而言唯一的先前生成的唯一客戶密鑰UCKA。可以使用客戶終端A的憑證(例如其密碼)基於隨機數發生器而生成該唯一客戶密鑰UCKA。
在210處繼續方法200,同樣如圖3所示,還生成並加密帳戶確認碼。例如,可以使用隨機數發生器生成帳戶確認碼ACC1。公鑰伺服器112可以使用帳戶確認碼ACC1來驗證發送新公鑰的客戶帳戶確實是該公鑰要關聯的客戶帳戶。帳戶確認碼ACC1可以由其自身加密,從而得到帳戶確認碼ACC1的第一加密形式(EACC1)。此外,如圖4所示,還可以用我唯一客戶密鑰UCKA對帳戶確認碼ACC1進行加密,從而得到帳戶認證碼ACC1的第二加密形式(EACC2)。隨後,第一加密帳戶認證碼EACC1和第二加密帳戶認證碼EACC2可以與非對稱公鑰PK1組合在一起作為形成公鑰的增強版本的一部分,即增強公鑰PuK1。組合過程可以採取多種形式,例如級聯(concatenation)。
再參照圖2,在215處,例如使用隨機數發生器生成伺服器認證碼(SAC1)並對其進行加密。例如,客戶帳戶A可以使用伺服器認證碼SAC1來確認公鑰伺服器是可信的。伺服器認證碼SAC1可以由帳戶認證碼ACC1進行加密,從而得到伺服器認證碼SAC1的第一加密形式(ESAC1)。此外,還可以使用唯一客戶密鑰UCKA對SAC1進行加密,從而得到SAC1的第二加密形式(ESAC2)。隨後,SAC1的第一加密形式ESAC1和SAC1的第二加密形式ESAC2可以與增強公鑰PuK1的內容的其餘部分組合,如圖5所示。組合過程可以採取多種形式,例如級聯(concatenation)。
繼續方法200,在220處,客戶帳戶憑證被添加到增強公鑰。例如,可以將用於創建客戶帳戶A的電子郵件地址(emailA)添加到增強公鑰PuK1,如圖6所示。在一些變型例中,可以對憑證進行加密。
繼續方法200,在225處,使用唯一客戶碼UCKA對在205處生成的與公鑰PK1相對應的私鑰PKR1進行加密,以生成私鑰的加密形式(EPKR1)。隨後將私鑰的加密形式EPKR1添加到增強公鑰PuK1,如圖7所示。通過包含使用PKR1的加密版本,可以使得客戶帳戶不必在安全通信針對104上維持使用。
再參照圖2,可以將附加信息添加到增強公鑰PuK1。例如,可以將用於生成增強公鑰的公鑰發生器的版本號附接至增強公鑰PuK1。另選地,或者另外地,還可以附接增強公鑰PuK1的生成日期以及增強公鑰PuK1的失效日期。此外,在增強公鑰PuK1中還可以包括非對稱公鑰PK1的例如以比特為單位的大小SizeP,如圖8中所示,在該情況下為512比特。
繼續方法200,在235處,對增強公鑰進行歸一化。歸一化使得能夠根據現有的非對稱公鑰標準來使用增強公鑰。為了執行歸一化,將組合以形成增強公鑰PuK1的數據劃分為具有等於PuK1中的sizeP欄位的比特長度的行,例如在該示例中為512比特。在該示例中,增強的公鑰被劃分為三行,R1、R2和R4。行R1包括非對稱公鑰的大小SizeP、與非對稱公鑰PK1相對應的加密私鑰EPKR1以及客戶帳戶的電子郵件地址emailA。另一方面,行R2包括第二加密伺服器認證碼ESAC2、第一加密伺服器認證碼ESAC1、第二加密帳戶確認碼EACC2和第一加密帳戶確認碼EACC1。行R4包括非對稱公鑰PK1。行一被保留以用於下面將要討論的歸一化處理。應當主要的是,雖然在本例中,目前為主包含在PuK1中的信息正好形成了512比特的三行,但在變型例中,它們可以形成比兩行多或少。此外,在其他變型例中,至少存在一行小於512比特。在這種情況下,使用零將少於512比特的行填充到512比特。應當理解的是,包含在增強公鑰PuK1中的信息以及這些行並不重要,並且在不同的實施方式中,順序可能發生變化。
為了執行歸一化,三行R1、R2和R4與調節行R3組合以形成矩陣900。行3包含調整值AdjustP。調整值AdjustP基於包含在增強公鑰PuK1中的信息來確定,包括非對稱公鑰PK1。例如,在該示例中,可以通過確定行R1和R2的異或(其結果是與行R4的異或)來計算調整值AdjustP。隨後,將所確定的調整值AdjustP添加到增強公鑰PuK1,如圖10所示。在一些變型例中,增強公鑰的散列值(hash)可以被生成並包含在提供附加錯誤校驗機制的增強公鑰中。
在後續使用增強公鑰PuK1時,為了基於此對任何數據進行加密,可以基於包含在增強公鑰PuK1中的調整值AdjustP和信息的其餘部分來確定非對稱公鑰PK1。例如,在該情況下,參照圖9,為了利用增強公鑰PuK1對數據進行加密,可以根據增強公鑰PuK1再次構建矩陣900,對行R1和R2進行異或操作,其結果進一步與調整值AdjustP進行異或操作以得到隨後用來對數據進行加密的非對稱公鑰PK1。此外,為了解密利用從增強公鑰PuK1得到的非對稱公鑰PK1加密的數據,只要增強公鑰PuK1與加密數據一起被傳送到客戶帳戶A,相應的私鑰PKR1就不必存儲在客戶帳戶A處。這是因為增強公鑰PuK1包括相應的私鑰PKR1。
增強公鑰PuK1一旦在安全通信終端104生成,就被傳送到公鑰伺服器112,使得其能夠被例如客戶帳戶B的其他客戶帳戶使用。現在參照圖11,在1100示出了公鑰添加方法。為了幫助解釋該方法,假設使用如圖1中所示的系統100操作該方法1100。此外,下面的對方法1100的討論可以進一步理解系統100。然而,應當理解的是,系統100和方法1100是可以改變的,並且不一定需要彼此結合完全如此處所述地工作,並且這種變化處在保護範圍內。
在1105處開始,客戶帳戶A通過安全通信終端104-2使用安全通信終端104-2的通信接口訪問公鑰伺服器112,並請求與客戶帳戶A相關聯的當前增強公鑰。在接收到先前與方法200相關聯生成並通過先前執行方法1100而上傳到公鑰伺服器112的當前增強公鑰PuK2時,從該當前增強公鑰PuK2得到伺服器認證碼SAC2和帳戶確認碼ACC2。具體來說,如圖12所示,第二加密伺服器認證碼ESAC22和第二加密帳戶確認碼EAC22從增強公鑰PuK2中提取出來並解密以使用客戶帳戶A的唯一客戶密鑰UCKA分別獲得伺服器認證碼SAC2和帳戶確認碼ACC2。本領域技術人員將理解的是,由於客戶帳戶A的唯一客戶密鑰UCKA不與任何其他客戶帳戶共享,因此僅客戶帳戶A能夠執行該解密。
一旦從增強公鑰PuK2獲得了伺服器認證碼SAC2和帳戶確認碼ACC2,就將他們存儲在安全通信終端104-1中,如圖13所示。繼續方法1100,在1120處,帳戶確認碼ACC2與新的增強公鑰PuK1一起發送到公鑰伺服器112,如圖14所示。在1125,公鑰分期112對客戶帳戶進行驗證。例如,如圖15所示,公鑰伺服器112從當前增強公鑰PuK2中提取包含第一加密帳戶確認碼EACC2的信息,並使用接收的帳戶確認碼ACC2對提取的信息進行解密。本領域技術人員將會想到,由於所接收的帳戶確認碼ACC2最初是使用帳戶確認碼ACC2本身作為密鑰加密的,因此僅當在1120提供對比密鑰的客戶帳戶與提供當前增強公鑰的客戶帳戶相同時,第一加密帳戶確認碼EACC2的解密才會成功。因而,當通過解密EACC2獲得的帳戶確認碼與所接收的帳戶確認碼ACC2相匹配時,客戶帳戶被認證並且新的公鑰被接受。因此,方法1100進行到1130。另一方面,當通過解密EACC1獲得的帳戶確認碼與所接收的帳戶確認碼ACC1不匹配時,則方法1100進行到1135,並拒絕新的增強公鑰PuK2。
繼續參照圖11,在1135,通過從提供給安全通信中的104-1的增強公鑰獲得伺服器認證碼,在公鑰伺服器112處,安全通信中的104發起公鑰伺服器112的認證。具體來說,如圖16所示,公鑰伺服器112通過從當前增強公鑰PuK2提取出第一加密伺服器認證碼ESAC2並使用帳戶確認碼ACC2對第一加密伺服器認證碼ESAC2進行解密而獲得伺服器認證碼SAC2。
在1140,通過公鑰伺服器112的通信接口將從當前增強公鑰PuK2提取的伺服器認證碼SAC2發送到安全通信終端104-1,如圖17所示。在1145,基於所接收的伺服器認證碼對公鑰伺服器112的真實性進行驗證。具體來說,將所接收的伺服器認證碼SAC2與在1110獲得的伺服器認證碼SAC2進行比較。當比較的碼匹配時,伺服器的真實性被認證,並且不採取進一步的行動。另一方面,當比較的碼不匹配時,則確定公鑰伺服器112不是可信的,並在1150生成警告。在變型例中,可以在該點而非在1110處從當前增強公鑰PuK2獲得伺服器認證碼SAC2。
在變型例中,公鑰添加方法可以根據需要重複多次,並且添加到公鑰伺服器112的多個增強公鑰可以緩存在伺服器112。緩存器的大小可以是不同的。此外,公鑰伺服器112在刪除增強公鑰或使其對公開提供不可用之前,可以提供每個增強公鑰一次,或者有限次數。在一些變型例中,增強公鑰如果在經過預定時段未使用則過期。過期日期或時段可以包含在每個增強公鑰中,或者可以確定為公鑰伺服器的策略。在其他變型例中,例如,公鑰伺服器112僅維持一個增強公鑰的情況下,可以使用方法1100來改變增強公鑰而不是向其添加。
一旦通過公鑰伺服器112生成了用於客戶帳戶的增強公鑰並使其可用,則客戶帳戶可以參與與其他客戶帳戶的安全通信。例如,可以從安全通信終端104發出和接收安全通信。在一些變型例中,通信可以是發送和接收消息的形式。消息可以包括多個不同的組成。圖18示出了包括多種組成的非限制性示例性消息的示例。客戶帳戶B在安全通信終端104-2處將消息(消息MSG1)的成分組合在一起。
圖18的示例性消息MSG1包含ESSKID1,即作為共享對稱密鑰SSKA1的標識符的對稱共享密鑰標識符SSKIDA1的加密形式。對稱共享密鑰標識符SSKIDA1與共享對稱密鑰SSKA1是由與客戶帳戶A相關聯的安全通信終端104先前生成作為密鑰對,對稱共享密鑰標識符SSKIDA1是使用客戶帳戶A的唯一客戶密鑰UCKA加密。可以基於任何期望的對稱密鑰生成方法來生成對稱共享密鑰。隨後,按照以下結合方法2500描述的方式,作為對稱共享密鑰標識符SSKIDA2和共享對稱密鑰SSKA2的加密形式,密鑰對(SSKA1和ESSKIDA1)發送到客戶帳戶B作為發送到客戶帳戶B的先前消息的一部分。通過向客戶帳戶B提供密鑰對,客戶帳戶A使得客戶帳戶B能夠使用所提供的密鑰對隨後加密到達客戶帳戶A的消息。因而,在圖18的示例性消息MSG1中,已接收到密鑰對的安全通信終端104-2使用共享對稱密鑰SSKA1對消息MSG1的一部分進行加密,並包括所加密的對稱共享密鑰標識符ESSKIDA1以驗證確實是用來對消息MSG1的一部分進行加密的共享對稱密鑰SSKA1。應當注意的是,密鑰對SSKIDA1和SSKA1不一定在安全通信終端104-1處生成,因此可以在與客戶帳戶相關聯的任何安全通信終端104處生成。進一步應當注意的是,由於對稱共享密鑰標識符SSKIDA1是使用唯一客戶密鑰UCKA加密的,因此僅客戶帳戶A能夠訪問其未加密形式,因此使得消息MSG1的任何第三方攔截者都不能訪問共享對稱密鑰SSKA1。此外,由於僅客戶帳戶A具有解密所加密的對稱共享密鑰標識符ESSKIDA1的能力,進一步地,由於共享對稱密鑰SSKA1未包含在利用共享對稱密鑰SSKA1加密的消息MSG1中,因此僅能夠使用密鑰對ESSKIDA1和SSKIDA1對發送到客戶帳戶A的消息(例如消息MSG1)進行加密。
圖18的示例性消息MSG1進一步包括密鑰對ESSKB2和ESSKIDB2,其是共享對稱密鑰SSKB1和共享對稱密鑰SSKB1的對稱共享密鑰標識符SSKIDB1的加密形式。該密鑰對由安全通信終端104-2生成並被客戶帳戶A用來對在接收到消息MSG1後將要從客戶帳戶A發送到客戶帳戶B的消息的至少一部分進行加密。安全通信終端104-2通過使用客戶帳戶A的對稱密鑰SSKA1和公鑰PuK1對共享對稱密鑰SSKB1進行加密而生成加密共享對稱密鑰ESSKB1。安全通信終端104-2使用客戶帳戶B的唯一客戶密鑰UCKB來加密對稱共享密鑰標識符SSKIDB1,以生成加密的對稱共享密鑰標識符ESSKIDB1。在變型例中,可以進一步利用公鑰PuKA1和共享對稱密鑰SSKIDA1密鑰來對加密的對稱共享密鑰標識符ESSKIDB1進行加密。
圖18的示例性消息MSG1附加地包括加密的消息密鑰EMK1。安全通信終端104-2使用消息密鑰MK1對消息數據(例如消息內容)進行加密以生成加密數據EData。安全通信終端104-2使用客戶帳戶A的共享對稱密鑰SSKA1和公鑰PuKA1對消息密鑰MK1進行加密。
圖18的示例性消息MSG1還包括客戶帳戶A的加密公鑰EPuKA1。在該示例中,客戶帳戶B從公鑰伺服器112獲得如上所述客戶帳戶A在安全通信終端104處生成的增強公鑰PuKA1。增強公鑰PuKA1用來對消息MSG1的多個部分進行加密,如上所述。使用共享對稱密鑰SSKA1對增強公鑰PuKA1進行加密。在變型例中,針對要發送到客戶帳戶A的每個消息或每組消息獲得不同的增強公鑰(對該消息是唯一的)。在這種變型例中,公鑰伺服器112可以刪除或者將所提供的公鑰PuKA1標記成不可用,從而防止將相同的公鑰提供多次。在進一步的變型例中,可以完全不使用公鑰對消息進行加密,而是依賴於共享對稱密鑰、唯一客戶密鑰和消息密鑰。在其他另選方式中,所使用的公鑰可以不是增強的(例如對於每個消息或每組消息是變化的),而可以對於目的地為客戶帳戶的所有消息使用相同的公鑰,直到該公鑰過期。在這種變型例中,公鑰可以不包含在消息MSG1中。
參照圖19,在1900處總體指示了接收安全通信的方法。為了輔助解釋該方法,假設使用如圖1中所示的系統100操作該方法1900。此外,下面的對方法1900的討論可以進一步理解系統100。然而,應當理解的是,系統100和方法1800是可以改變的,並且不一定需要彼此結合完全如此處所述地工作,並且這種變化處在保護範圍內。
開始於1905,如圖20所示,在與客戶帳戶A相關聯的終端104-1處從客戶帳戶B接收消息MSG1。一旦接收到消息,就進行解密。因而,在1910,使用對於客戶帳戶A而言唯一的客戶密鑰UCKA對加密的對稱共享密鑰標識符ESSKIDA1進行解密,如圖21所示。在1915,使用對稱共享密鑰標識符SSKIDA1對用於加密消息MSG1的共享對稱密鑰SSKA1進行驗證。應當理解的是,可以用多種方式對SSKIDA1進行驗證。例如,先前生成的所有密鑰對可以存儲在表中,基於針對相應標識符的查找而獲得的特定對稱共享密鑰。另選地,可以基於該標識符而生成特定的對稱共享密鑰。本領域技術人員容易想到和設想其他方法。
再參照圖19,在1920處繼續方法1900,對包含在所接收的消息中的公鑰進行解密。具體來說,如圖22所示,使用共享對稱密鑰SSKA1對加密的公鑰EPuKA1進行解密以獲得公鑰PuKA1。在1925處,基於相應的公鑰PuKA1識別出私鑰PKRA1。在一些變型例中,私鑰可以存儲在與客戶帳戶A相關聯的安全通信終端114中。在變型例中,所接收的公鑰可以是如上所述增強的公鑰,而私鑰PKRA1可以實際存儲在所接收的增強公鑰中。
繼續參照圖19,在1930處,對包含在所接收的消息中的附加密鑰進行解密。在該示例中,如圖23所示,使用客戶帳戶A的共享對稱密鑰SSKA1和公鑰PuKA1對共享對稱密鑰SSKB1和消息密鑰EMK1的加密形式進行解密。加密的對稱共享密鑰標識符SSKIDB1是由客戶B使用客戶B的唯一客戶密鑰UCKB加密,因此在不進行解密的情況下從消息MSG1中提取出來。該密鑰對是由客戶帳戶B在安全通信終端104-2如上所述地生成,並被客戶帳戶A用來加密在未來時間點將從客戶帳戶A發送到客戶帳戶B的消息的至少一部分。
再參照圖19,在1935,對所接收的消息的加密數據部分進行解密。在該示例中,如圖24所示,使用對於消息MSG1而言唯一的先前解密的消息密鑰MK1對加密數據EData進行解密,因為其僅被用來對消息MSG1的數據(Data)進行加密。
參照圖25,在2500總體指示了發送安全通信的方法。為了輔助解釋該方法,假設使用如圖1中所示的系統100操作該方法2500。此外,下面的對方法2500的討論可以進一步理解系統100。然而,應當理解的是,系統100和方法2500是可以改變的,並且不一定需要彼此結合完全如此處所述地工作,並且這種變化處在保護範圍內。
在方法2500的開始,作為執行方法1800以接收消息MSG1形式安全通信的結果,安全通信終端104-1維持若干個加密和未加密密鑰,在圖26中示出了其相關部分。為了準備要發送到帳戶B的新的安全消息MSG2,在2505生成對於消息MSG2而言唯一的新消息密鑰MK2。在變型例中,該密鑰可以用於多個消息。可以基於例如隨機數發生器使用已有方法生成該消息密鑰。要作為通信的一部分發送的數據(Data)被獲得並使用消息密鑰MK2加密,並被置於消息MSG2中作為Edata2,如圖26所示。
繼續方法2500,在2510,通信終端104-1請求並接收與客戶帳戶B相關聯的新公鑰PuKB1,並使用先前接收的客戶帳戶B的共享對稱密鑰SSKB1對其進行加密,如圖27所示,將加密的公鑰EPuKB1添加到消息MSG2中。
在2515,安全通信終端104-2生成要由客戶帳戶B使用的下一個密鑰對,用於對要發送到客戶帳戶A的後續消息的至少一部分進行加密。該密鑰對包括與相應的共享對稱密鑰SSKA2一起的對稱共享標識符SSKIDA2。在2520,使用唯一客戶密鑰UCKA加密對稱共享密鑰標識符SSKIDA2以生成ESSKIDA2,其被進一步包含在消息MSG2中,如圖28所示。
再參照圖25,在2525,使用共享對稱密鑰SSKB1和公鑰PuKB1對共享對稱密鑰SSKA2和消息密鑰MK2加密並添加到消息MSG2中,如圖29所示。在2530,還將先前加密的ESSKIDB1添加到消息MSG2,以指示用於對消息MSG2的部分進行加密的共享對稱密鑰。在2535,消息MSG2被發送到安全通信終端104-2。
在一些變型例中,在執行任意上述方法之前,創建客戶帳戶。因而,當創建客戶帳戶時,安全通信終端104獲得與該客戶帳戶相關聯的用戶憑證,基於此生成新創建帳戶的唯一客戶密鑰。例如,可以基於密碼而生成唯一客戶密鑰。此外,當新創建的帳戶試圖將第一增強公鑰上傳到公鑰伺服器112時,公鑰伺服器112可以通過將確認請求發送到可以包含在增強公鑰中的帳戶憑證而請求帳戶的確認。當接收到該請求的答覆時,滿足確認。
上述實施方式僅作為示例,並且在不脫離主要由所附權利要求限定的範圍的情況下,本領域技術人員可以左側另選和修改。例如,所討論的方法和系統可以全部或部分地改變或組合。
權利要求書(按照條約第19條的修改)
1.一種用於確保系統通信安全而由安全通信終端提供新的增強公鑰的方法,該安全通信終端具有可操作地連接至存儲器和通信接口的處理器,該方法包括以下步驟:
由所述處理器生成用於對客戶帳戶進行驗證的第一部分;
由所述處理器生成用於對公鑰伺服器進行認證的第二部分;
由所述處理器生成非對稱公鑰和相應的非對稱私鑰;
由所述處理器將所述第一部分、所述第二部分和所述非對稱公鑰組合以形成新的增強公鑰;
由所述處理器基於所述非對稱公鑰的大小對所述新的增強公鑰進行歸一化。
2.根據權利要求1所述的方法,其中
生成所述第一部分的步驟進一步包括:
由所述處理器基於隨機數發生器生成帳戶確認碼;
由所述處理器基於由該處理器使用所述帳戶確認碼對該帳戶確認碼的加密而生成第一加密帳戶確認碼;以及
由所述處理器基於由該處理器使用唯一客戶密鑰對所述帳戶確認碼的加密而生成第二加密帳戶確認碼;並且其中
將所述第一部分組合的步驟進一步包括:
由所述處理器將所述第一加密帳戶確認碼和所述第二加密帳戶確認碼組合。
3.根據權利要求1至2中任一項所述的方法,其中
生成所述第二部分的步驟進一步包括:
由所述處理器基於隨機數發生器生成伺服器認證碼;
由所述處理器基於由該處理器使用所述帳戶確認碼對所述伺服器認證碼的加密而生成第一加密伺服器認證碼;以及
由所述處理器基於由該處理器使用唯一客戶密鑰對所述伺服器認證碼的加密而生成第二加密伺服器認證碼;並且其中
將所述第二部分組合的步驟進一步包括:
由所述處理器將所述第一加密伺服器認證碼和所述第二伺服器認證碼組合。
4.根據權利要求1至3中任一項所述的方法,所述方法進一步包括:
由所述處理器將與客戶帳戶相關聯的帳戶憑證添加到所述新的增強公鑰。
5.根據權利要求4所述的方法,所述方法進一步包括:
在所述存儲器中維持與所述帳戶憑證相關聯的唯一客戶密鑰;
由所述處理器通過使用所述唯一客戶密鑰對所述非對稱私鑰進行加密而生成加密非對稱私鑰;
由所述處理器將所述加密非對稱私鑰添加到所述新的增強公鑰。
6.根據權利要求1至5中任一項所述的方法,其中,所述非對稱公鑰具有密鑰大小的大小,並且其中,歸一化的步驟進一步包括:
由所述處理器將所述新的增強公鑰劃分為具有等於所述密鑰大小的長度的多個行,所述多個行中的一行包括所述非對稱公鑰;
由所述處理器基於所述多個行確定調整行,該調整行具有等於所述密鑰大小的大小;並且
由所述處理器將所述調整行添加到所述新的增強公鑰。
7.根據權利要求6所述的方法,所述方法進一步包括:
通過所述通信接口從公鑰伺服器接收當前增強公鑰;
由所述處理器從所述當前增強公鑰中提取所述當前增強公鑰的用於對所述客戶帳戶進行驗證的第一部分並使用所述唯一客戶密鑰對所述第一部分進行解密;以及
通過所述通信接口將所述當前增強公鑰的用於對所述客戶帳戶進行驗證的經解密的所述第一部分連同所述新的增強公鑰一起發送到所述公鑰伺服器。
8.根據權利要求7所述的方法,所述方法進一步包括:
通過所述通信接口從所述公鑰伺服器接收用於對所述公鑰伺服器進行認證的碼;
從所述當前增強公鑰中提取所述當前增強公鑰的用於對所述公鑰伺服器進行認證的第二部分並使用所述唯一客戶密鑰對所述第二部分進行解密;以及
當用於對公鑰伺服器進行認證的碼與所述當前增強公鑰的用於對公鑰伺服器進行認證的經解密的部分不匹配時,確定所述公鑰伺服器是不可信的。
9.一種用於確保系統通信安全而由公鑰伺服器接收增強公鑰的方法,該公鑰伺服器具有可操作地連接至存儲器和通信接口的處理器,該方法包括以下步驟:
在存儲器中維持當前增強公鑰;
通過所述通信接口將與客戶帳戶相關聯的該當前增強公鑰發送到所述客戶帳戶;
通過所述通信接口和與所述客戶帳戶相關聯的新的增強公鑰一起接收所述當前增強公鑰的用於對所述客戶帳戶進行驗證的經解密的第一部分;
由所述處理器從所述當前增強公鑰中提取所述當前增強公鑰的用於對所述客戶帳戶進行驗證的第二部分並使用所接收的所述當前增強公鑰的用於對所述客戶帳戶進行驗證的經解密的第一部分對所述第二部分進行解密;以及
當所接收的所述當前增強公鑰的用於對客戶帳戶進行驗證的經解密的第一部分與所述當前增強公鑰的用於對客戶帳戶進行驗證的經解密的第二部分相匹配時,在所述存儲器中緩存所述新的增強公鑰。
10.根據權利要求9所述的方法,所述方法進一步包括:
由所述處理器從所述當前增強公鑰中提取所述當前增強公鑰的用於對所述公鑰伺服器進行認證的第三部分並使用所接收的所述當前增強公鑰的用於對所述客戶帳戶進行驗證的經解密的第一部分對所述第三部分進行解密;以及
通過所述通信接口發送所述當前增強公鑰的用於對所述公鑰伺服器進行認證的經解密的第三部分。
11.根據權利要求9至10中任一項所述的方法,所述方法進一步包括:
通過所述通信接口從第二客戶帳戶接收針對與所述客戶帳戶相關聯的一個增強公鑰的請求;以及
響應於所述請求通過所述通信接口提供所述新的增強公鑰;以及
使得所述新的增強公鑰不可用於公共提供。
12.一種在具有處理器和可操作地連接到該處理器的存儲器的第一安全通信終端接收安全通信的方法,該方法包括以下步驟:
維持與第一客戶帳戶的關聯;
從第二安全通信終端從第二客戶帳戶接收消息,所述消息的至少一部分經共享對稱密鑰加密;
從所述消息中提取密鑰標識符;
基於包含在所述消息中的所述密鑰標識符獲得所述共享對稱密鑰,所述共享對稱密鑰和所述密鑰標識符先前由所述第一客戶帳戶生成並被包含作為發送到所述第二客戶帳戶的先前消息的一部分;
使用所述共享對稱密鑰對所述消息的第一部分進行解密以獲得消息密鑰;以及
使用所述消息密鑰對所述消息的至少一部分進行解密。
13.根據權利要求12所述的方法,其中,對所述消息的所述第一部分進行解密的步驟進一步包括:
使用所述第一客戶帳戶的私鑰對所述消息的所述第一部分進行解密。
14.根據權利要求13所述的方法,所述方法進一步包括:
從所述消息中提取加密增強公鑰;
使用共享對稱密鑰對所述加密增強公鑰進行解密以獲得增強公鑰;以及
基於所述增強公鑰獲得所述私鑰。
15.根據權利要求14所述的方法,其中,獲得所述私鑰的步驟進一步包括:
從所述增強公鑰中提取所述私鑰。
16.根據權利要求14至15中任一項所述的方法,其中,所述增強公鑰對於所述消息是唯一的。
17.根據權利要求12至16中任一項所述的方法,所述方法進一步包括:
在所述存儲器中維持針對所述第一客戶帳戶的唯一客戶密鑰;以及
使用所述唯一客戶密鑰對所述密鑰標識符進行解密。
18.根據權利要求12至17中任一項所述的方法,其中,所述消息密鑰對於所述消息是唯一的。
19.根據權利要求12至18中任一項所述的方法,其中,所述消息進一步包括加密密鑰對,該加密密鑰對包括第二客戶帳戶共享密鑰和相應的第二客戶帳戶密鑰標識符,所述加密密鑰對由所述第二客戶帳戶生成以用於由所述第一客戶帳戶來加密要發送到所述第二客戶帳戶的後續消息。
20.一種在具有處理器和可操作地連接到該處理器的存儲器的第一安全通信終端發送安全通信的方法,該方法包括以下步驟:
維持與第一客戶帳戶的關聯;
從第二客戶帳戶接收先前消息;
從所述先前消息中提取先前由所述第二客戶帳戶生成的先前共享密鑰和先前共享密鑰標識符;
生成消息密鑰並使用所述消息密鑰對消息內容進行加密;
使用所述先前共享密鑰對所述消息密鑰進行加密;
將經加密的消息密鑰、經加密的消息內容和所述先前共享密鑰標識符組合以形成新消息;以及
將所述新消息發送到與所述第二客戶帳戶相關聯的第二安全通信終端。
21.根據權利要求20所述的方法,所述方法進一步包括:
除了使用所述先前共享密鑰對所述消息密鑰加密外,還使用所述第二客戶帳戶的公鑰對所述消息密鑰進行加密。
22.根據權利要求21所述的方法,其中,所述公鑰是增強公鑰,所述方法進一步包括:
從公鑰伺服器接收所述增強公鑰;
使用所述先前共享密鑰加密所接收的增強公鑰;以及
將經加密的增強公鑰伺服器添加到所述新消息。
23.根據權利要求22所述的方法,其中,所接收的增強公鑰對於所述新消息是唯一的。
24.根據權利要求20至23中任一項所述的方法,其中,所述消息密鑰對於所述新消息是唯一的。
25.根據權利要求20至24中任一項所述的方法,所述方法進一步包括:
生成包含下一共享密鑰和相應的下一密鑰標識符的加密密鑰對,該加密密鑰對用於對要由所述第二客戶帳戶發送到所述第一客戶帳戶的後續消息進行加密;以及
將所述加密密鑰對添加到所述新消息。
26.根據權利要求25所述的方法,所述方法進一步包括:
在所述存儲器中維持所述第一客戶帳戶的唯一客戶密鑰;以及
使用所述唯一客戶密鑰對所述下一密鑰標識符進行加密。
27.一種被構造成執行根據權利要求1至8和13至26中任一項所述的方法的安全通信設備。
28.一種被構造成執行權利要求9至11中任一項所述的方法的公鑰伺服器。