用于確定自動機是否已經接受了字符串的系統的制作方法
【專利摘要】為了確定字符串是否已經被自動機接受,提供了一種服務器,所述服務器能夠連接到用于輸入字符串的客戶機,并且具有自動機,對于所述自動機,對于每一個前一個狀態和每一個字符已經定義了要轉換到的后一個狀態。所述服務器具有:密鑰鏈產生單元,用于產生用于字符、狀態和用于表達在字符串中的每一個字符的位置的索引的每一個組合的密鑰鏈,所述密鑰鏈是通過使用與所述狀態對應的密鑰來根據字符對與要從當前狀態轉換到的后一個狀態對應的下一個索引加密該密鑰;以及提供單元,用于與客戶機進行通信,并且在對所述客戶機隱藏輸入字符的同時向所述客戶機提供在用于每一個索引的密鑰鏈集合組中的密鑰鏈中的與每一個輸入的字符對應的密鑰鏈。
【專利說明】用于確定自動機是否已經接受了字符串的系統
【技術領域】
[0001] 本發明涉及一種用于認證自動機是否已經接受了字符串的服務器、客戶機、方法 和程序。
【背景技術】
[0002] 已知用于認證由服務器擁有的自動機是否已經接受了由客戶機擁有的字符串的 系統(參見例如,專利文件1)。
[0003] 引用列表
[0004] 專利文獻
[0005] 專利文獻1特開專利公布No. 2009-151757
[0006] 非專利文獻
[0007] 非專利文獻1
[0008] Michael J. Freedman,Kobbi Nissim and Benny Pinkas,''Efficient Private Matching and Set Intersection",Advances in Cryptology EUR0CRYPT2004, Lecture Notes in Computer Science, 2004
[0009] 非專利文獻2
[0010] Even,0·Goldreich,and A.Lempel,"A Randomized Protocol for Signing Contracts",Communications of the ACM,Volume28, Issue6, pg. 637-647, 1985
【發明內容】
[0011] 技術問題
[0012] 然而,在不向服務器公開由客戶機擁有的字符串并且不向客戶機公開由服務器擁 有的自動機的情況下,很難認證自動機是否已經接受了該字符串。
[0013] 解決方案
[0014] 本發明的第一方面提供了 一種服務器,所述服務器能夠連接到用于字符串的輸入 的客戶機,并且具有用于限定每一個狀態和字符的隨后轉換狀態的自動機。所述服務器包 括:密鑰鏈產生單元,用于產生用于索引、字符和用于表達在字符串中的每一個字符的位置 的狀態的每一個組合的密鑰鏈,所述密鑰鏈具有用于下一個索引的加密密鑰,所述下一個 索引對應于基于與當前狀態對應的密鑰根據字符從當前狀態起的隨后轉換狀態;以及提供 單元,用于與客戶機進行通信,并且在對所述客戶機隱藏輸入字符的狀態中向所述客戶機 提供在用于每一個索引的密鑰鏈集合中的與每一個輸入的密鑰對應的密鑰鏈。也提供了一 種用于由這個服務器執行的信息處理的方法和程序。
[0015] 本發明的第二方面提供了一種用于輸入字符串的客戶機,所述客戶機能夠與服務 器進行通信,所述服務器具有用于限定每一個狀態和每一個字符的隨后轉換狀態的自動 機。所述客戶機包括:接收單元,用于與服務器進行通信,并且從所述服務器接收與用于每 一個索引的輸入字符對應的多個密鑰鏈;以及,解密單元,用于通過使用通過與所述索引的 順序中的前一個索引對應的解密處理獲得的密鑰來對于多個接收的密鑰鏈執行解密處理 而獲得與下一個索引對應的密鑰。也提供了一種用于由這個客戶機執行的信息處理的方法 和程序。
[0016] 應當注意,本發明的上面的
【發明內容】
不意欲枚舉本發明所需的所有特征。另外,這 些組的特性的子組合也構成本發明。
【專利附圖】
【附圖說明】
[0017] 圖1示出在本實施例中的認證系統10的配置。
[0018] 圖2示出在本實施例中的服務器20和客戶機30的功能方框配置。
[0019] 圖3示出在本實施例中的由服務器20和客戶機30執行的處理的流程圖。
[0020] 圖4示出用于產生密鑰鏈集合的處理的流程圖。
[0021] 圖5示出用于對于每一個索引產生的各個狀態的密鑰的示例。
[0022] 圖6不出用于自動機的轉換表格以及密鑰表格的不例,該密鑰表格用于為第一索 弓丨、第二索引和第三索引向與每一個狀態和每一個字符對應的隨后狀態中的下一個索引分 配密鑰。
[0023] 圖7示出了對于索引、字符和狀態的每個組合產生的密鑰鏈集合的示例。
[0024] 圖8示出最后狀態信息的示例。
[0025] 圖9示出當輸入二進制字符"0"或"1"時從第一索引向第三索引的索引化的狀態 轉換值的示例。
[0026] 圖10示出與索引化的狀態轉換值相關聯的密鑰鏈集合的示例。
[0027] 圖11示出在本實施例的認證系統10中使用隱私保護集合交叉協議執行的通信處 理的示例。
[0028] 圖12示出在本實施例中的、由客戶機30接收的多個響應密文和通過解密該多個 響應密文而獲得的多個密鑰鏈的示例。
[0029] 圖13示出用于在客戶機30中多個密鑰鏈的順序解密處理的流程圖。
[0030] 圖14示出使用用于在客戶機30中的多個密鑰鏈的順序解密處理獲得的密鑰的示 例。
[0031] 圖15示出變型的認證系統10的配置。
[0032] 圖16示出在所述變型中的由服務器20和客戶機30執行的處理的流程圖。
[0033] 圖17示出用于第一索引的密鑰鏈集合的示例。
[0034] 圖18示出用于第二索引的密鑰鏈集合的示例。
[0035] 圖19示出用于第三索引的密鑰鏈集合的示例。
[0036] 圖20示出從用于每一個索引的密鑰鏈的子集起順序解密的密鑰的示例。
[0037] 圖21示出在所述變型中用于在服務器20和客戶機30之間的密鑰鏈子集的不經 意傳輸的傳遞處理的流程。
[0038] 圖22示出從圖21繼續的流程。
[0039] 圖23示出從圖22繼續的流程。
[0040] 圖24示出在本實施例中的計算機1900的硬件配置的示例。
【具體實施方式】
[0041] 下面是參考本發明的實施例的本發明的說明。然而,本實施例不在權利要求的范 圍中限制本發明。而且,在本發明的技術方案中不必要要求在該實施例中說明的特性的所 有組合。
[0042] 圖1示出在本實施例中的認證系統10的配置。在本實施例中的認證系統10包括 服務器20和客戶機30。服務器20和客戶機30經由網絡彼此連接。在本實施例中的認證 系統10基于向客戶機30輸入的字符串來確定由服務器20擁有的自動機是否已經轉換到 適當的最后狀態。
[0043] 客戶機30從外部單元輸入字符串,在該字符串中包括的字符可以是任何類型的 字符。例如,它們可以是具有"〇"和" 1"的二進制值或由單個字節表示的字符。
[0044] 服務器20具有自動機,該自動機根據接收的字符而進行狀態轉換。該自動機限定 了每一個狀態或每一個字符的隨后轉換狀態。由自動機接收的字符是向客戶機30輸入的 字符。該自動機表示預先注冊的字符串集合(字符串組)的正則表達式。該自動機從首部 起順序接收在字符串中的每一個字符,并且以從在首部的字符起的每一個字符順序轉換到 狀態。在接收最后字符并且進行了轉換后,如果自動機轉換到了適當的最后狀態則該自動 機輸出"接受"。它如果它未轉換到適當的最后狀態則輸出"不接受"。
[0045] 在這樣的服務器20和客戶機30中,對服務器20隱藏由客戶機30輸入的字符串, 并且對客戶機30隱藏由服務器20擁有的自動機。在此,由服務器20擁有的自動機基于向 客戶機30輸入的字符串來確定是否已經存在向適當的最后狀態的轉換。
[0046] 圖2示出在本實施例中的服務器20和客戶機30的功能方框配置。服務器20具有 自動機存儲單元42、密鑰產生單元44、密鑰鏈產生單元46、索引化狀態轉換值產生單元48、 合成單元50和提供單元52。客戶機30具有輸入單元60、索引化字符產生單元62、接收單 元64和解密單元66。
[0047] 客戶機30的輸入單兀60 -次一個地輸入在字符串中的每個字符。輸入單兀60 向索引化字符產生單元62傳遞每一個輸入的字符。
[0048] 索引化字符產生單元62對于在字符串中的每一個字符產生索引化字符。在此,索 引表示在字符串中的字符的位置。換句話說,它表示向自動機提供字符的順序。
[0049] 而且,索引字符是表示一組字符和索引的值。它是例如通過下述方式被獲得的:向 單向函數分配表示字符的值和表示索引的值。索引化字符也可以是從這個值加密或被隱藏 的值使得難以檢測該字符和索引。索引化字符產生單元62向接收單元64傳遞從在字符串 中的每一個字符產生的索引化字符。
[0050] 服務器20的自動機存儲單元42存儲用于確定向客戶機30輸入的字符串是否可 接受的自動機。自動機存儲單元42可以包括例如用于表示狀態轉換的轉換表格、一組可輸 入字符、一組狀態以及初始狀態和最后狀態。
[0051] 在此,自動機根據轉換表格來進行密鑰索引的狀態轉換。換句話說,它在每次從首 部起提供在字符串中的字符時經歷狀態轉換。自動機響應于字符的應用而從前一個狀態向 隨后的狀態的轉換被稱為狀態轉換。在狀態轉換中的狀態、字符和隨后狀態的組合被稱為 狀態轉換關系。
[0052] 服務器20的密鑰產生單元44產生與在自動機中包括的多個狀態對應的每一個索 引的密鑰。密鑰產生單元44也產生與作為最后狀態的每一個狀態對應的密鑰(該最后狀 態源自自動機對于在字符串中的最后字符的接收)。下面將參考圖5和其他附圖來描述由 密鑰產生單元44產生的密鑰的示例。
[0053] 服務器20的密鑰鏈產生單元46產生密鑰鏈,其中,對于索引、字符和狀態的每一 個組合,使用與狀態對應的密鑰,基于來自當前狀態的字符,根據轉換的最后狀態來加密下 一個索引的密鑰。密鑰鏈產生單元46產生密鑰鏈,其中,使用與在對應于字符串的最后字 符的索引中的當前狀態對應的密鑰,基于字符來加密與從當前狀態起的轉換的最后狀態對 應的密鑰。這些密鑰被密鑰產生單元44產生。
[0054] 另外,密鑰鏈產生單元46產生最后狀態信息,其中,加密一個值,該值表達基于與 轉換的最后狀態對應的密鑰的轉換的最后狀態是否是由自動機預先確定的最后狀態。下面 將參考圖4、圖7和圖8來詳細描述密鑰鏈集合和最后狀態信息的示例。
[0055] 服務器20的索引化狀態轉換值產生單元48產生用于每一個狀態轉換關系的索引 化狀態轉換值。在此,索引化狀態轉換值是用于表示被用于每一個狀態轉換的自動機可接 受的一組字符和索引的值。它例如是通過下述方式被獲得的:向單向函數分配表示字符的 值和表示索引的值。在該情況下,該單向函數是相同的用于產生索引化字符的相同單向函 數。索引化狀態轉換值也可以是從這個值加密或被隱藏的值使得難以檢測字符和索引。下 面將參考圖9和其他附圖來描述索引化狀態轉換值的示例。
[0056] 服務器20的合成單元50將由索引化狀態轉換值產生單元48對于每一個索引產 生的索引化狀態轉換值與在由密鑰鏈產生單元46產生的密鑰鏈集合中的每一個密鑰鏈相 關聯。合成單元50產生與索引化狀態轉換值相關聯的密鑰鏈集合。下面將參考圖10和其 他附圖來描述與索引化狀態轉換值相關聯的密鑰鏈集合的示例。
[0057] 服務器20的提供單元52與客戶機30的接收單元64進行通信。客戶機30的接 收單元64也與服務器20的提供單元52進行通信。
[0058] 更具體地,服務器20的提供單元52與客戶機30的接收單元64進行通信,并且對 于每一個索引向客戶機30以隱藏輸入字符的方式提供與來自密鑰鏈集合的每一個輸入字 符對應的密鑰鏈。換句話說,提供單元52僅向接收單元64提供與由輸入單元60輸入的字 符串對應的密鑰鏈。它不向接收單元64提供與未由輸入單元60輸入的字符串對應的密鑰 鏈。
[0059] 客戶機30的接收單元64也與服務器20的提供單元52進行通信,并且對于每一 個索引從服務器20以隱藏自動機的方式接收與輸入字符串對應的密鑰鏈。換句話說,接收 單元64僅從提供單元52接收與由輸入單元60輸入的字符串對應的密鑰鏈。它不從提供 單元52接收與未被輸入單元60輸入的字符串對應的密鑰鏈。
[0060] 在此,提供單元52和接收單元64在檢測在彼此的集合中的共享元素的存在的同 時使用隱藏彼此的集的元素的隱私保護集合交叉協議來傳遞與輸入的字符串對應的密鑰 鏈。以這種方式,提供單元52可以在對客戶機30隱藏自動機的同時向接收單元64提供與 輸入的字符對應的密鑰鏈。另外,接收單元64在對服務器20隱藏輸入的字符序列的同時 從提供單元52接收與輸入字符對應的密鑰鏈。
[0061] 在非專利文獻1中描述了隱私保護集合交叉協議的示例。下面將參考圖11和其 他附圖來描述使用隱私保護集合交叉協議執行的處理的示例。
[0062] 服務器20的提供單元52也向客戶機30的接收單元64提供了與由密鑰鏈產生單 元46產生的初始狀態(S卩,用于與初始狀態對應的第一索引的密鑰)和最后狀態信息對應 的密鑰。而且,客戶機30的接收單元64從服務器20的提供單元52接收與該初始狀態和 最后狀態信息對應的密鑰。
[0063] 解密單元66通過下述方式來獲得與下一個索引對應的密鑰:使用通過對于在索 引的順序的前一個索引執行解密處理而獲得的密鑰來解密由接收單元64接收的所有密鑰 鏈。解密單元66使用從服務器20分離地獲取的用于初始狀態的密鑰來執行用于第一索引 的解密處理。解密單元66可以通過下述方式來解密與轉換的最后狀態對應的密鑰:執行與 對應于在字符串中的最后字符的最后索引對應的解密處理。
[0064] 在獲得與最后狀態對應的密鑰后,解密單元66使用解密密鑰來獲得最后狀態信 息。當已經獲取了最后狀態信息解密的結果和表示最后狀態的值時解密單元66確定是否 存在向適當的最后狀態的轉換。當已經獲取了用于表示最后狀態的值時,解密單元66輸出 用于指示已經通過自動機接受了字符串的信息。當不能接收用于表示最后狀態的值時,它 輸出用于指示自動機尚未接受字符串的信息。
[0065] 圖3示出了在本實施例中由服務器20和客戶機30執行的處理的流程圖。
[0066] 首先,在步驟S11中,客戶機30輸入字符串。客戶機30可以輸入具有預定數量的 字符的字符串,或者可以使用可變長度的字符串。當輸入可變長度的字符串時,客戶機30 向服務器20通知輸入字符的數量(即,索引的數量)。
[0067] 接下來,在步驟S12中,客戶機30產生索引化字符,該索引化字符表示由在輸入字 符串中的每個字符的索引和輸入字符構成的組。索引化字符例如是通過向單向函數分配表 示索引的值和表示輸入字符的值而獲得的值。服務器20和客戶機30預先確定該單向函數 的內容。
[0068] 例如,如下面的方程1所示,客戶機30輸入包括N個字符的字符串(其中,N是等 于或大于2的整數)。
[0069] 方程 1
[0070] XJA …XN
[0071] 在該情況下,例如,客戶機30對于在字符串中的每一個字符向單向函數g()分配 字符的索引(即,從在字符串中的字符首部起的順序)和表示該字符的值,如下面的方程2 中所示。以這種方式,客戶機30可以計算用于表示由索引和輸入字符(索引化字符)構成 的組的值。
[0072] 方程 2
[0073]
【權利要求】
1. 一種服務器,所述服務器能夠連接到用于字符串的輸入的客戶機,并且具有用于限 定每一個狀態和字符的隨后轉換狀態的自動機。所述服務器包括: 密鑰鏈產生單元,用于產生用于索引、字符和用于表達在字符串中的每一個字符的位 置的狀態的每一個組合的密鑰鏈,所述密鑰鏈具有用于下一個索引的加密密鑰,所述下一 個索引對應于基于與當前狀態對應的密鑰根據字符從當前狀態起的隨后轉換狀態;以及, 提供單元,用于與客戶機進行通信,并且在對所述客戶機隱藏輸入字符的狀態中向所 述客戶機提供在用于每一個索引的密鑰鏈集合中的與每一個輸入的密鑰對應的密鑰鏈。
2. 根據權利要求1所述的服務器,其中,所述客戶機包括: 接收單元,用于與所述提供單元進行通信,并且從所述服務器接收與用于每一個索引 的輸入字符對應的多個密鑰鏈,以及 解密單元,用于通過下述方式來解密與下一個索引對應的密鑰:使用通過與所述索引 的順序的前一個索引對應的解密處理獲得的密鑰來對于所述多個接收的密鑰鏈執行解密 處理。
3. 根據權利要求2所述的服務器,其中,所述提供單元從所述客戶機接收已發送密文, 所述已發送密文加密用于表達在所述輸入字符串中的每一個字符的索引和輸入字符的組, 并且所述提供單元基于所述已發送密文來使用加密值向所述客戶機產生和發送響應密文, 其中,加密值當在用于表達一組對應的索引和對應的字符的所述索引化字符集合中包括所 述索引化的狀態轉換值時變為在所述密鑰鏈集合中包括的每一個密鑰鏈,并且當在所述一 組索引化的字符中未包括所述索引化的轉換值時不變為密鑰鏈。
4. 根據權利要求3所述的服務器,其中,所述接收單元對于每一個響應密文執行解密 處理,以獲取多個密鑰鏈,并且其中,所述解密單元使用與所述索引的順序的前一個索引對 應的、在解密處理中解密的密鑰來對于所述多個密鑰鏈執行解密處理,以解密與下一個索 引對應的密鑰。
5. 根據權利要求4所述的服務器,其中,所述提供單元從所述客戶機接收已發送密文, 所述已發送密文使用同態加密方案來加密多項式的各個系數,所述多項式的各個系數當分 配索引化字符時變為零,并且當分配不是索引化字符的值時變為非零,并且所述提供單元 向所述客戶機產生和發送響應密文,所述響應密文使用相同的加密方案來加密在所述密鑰 鏈集合中包括的每一個密鑰鏈的值和通過將所述索引化狀態轉換值乘以在多項式中分配 的值而獲得的值的和。
6. 根據權利要求2所述的服務器,其中,所述提供單元與所述客戶機進行通信,并且經 由不經意傳輸選擇性地向所述客戶機發送用于與從所述客戶機輸入的字符對應的每個索 引的密鑰鏈集合的子集。
7. 根據權利要求6所述的服務器,其中,所述接收單元與所述提供單元進行通信,并且 按照索引經由不經意傳輸從所述服務器選擇性地接收與輸入字符對應的密鑰鏈的子集,并 且所述解密單元通過下述方式來解密與下一個索引對應的密鑰:使用通過與索引的順序的 前一個索引對應的解密處理獲得的密鑰來對于與前一個索引對應的、在所述接收的密鑰鏈 的子集中包括的每一個密鑰鏈執行解密處理。
8. 根據權利要求7所述的服務器,其中,所述提供單元使用與每一個字符對應的加密 密鑰來按照索引加密與在密鑰鏈集合中的每一個字符對應的多個子集,并且預先向所述客 戶機提供所述加密的子集,并且與所述客戶機進行通信,并且向所述客戶機提供在索引中 的每一個字符的加密密鑰中的、與由所述客戶機輸入的字符對應的每一個索引加密密鑰, 在對所述客戶機隱藏輸入字符的同時提供了所述加密密鑰。
9. 根據權利要求8所述的服務器,其中,所述客戶機對于與由所述服務器發送并且由 所述客戶機輸入的字符對應的每一個索引使用與該字符對應的加密密鑰來解密多個先前 接收的子集之一。
10. 根據權利要求6所述的服務器,其中,所述提供單元按照索引排序并且發送多個密 鑰鏈。
11. 根據權利要求1所述的服務器,其中,所述密鑰鏈產生單元產生密鑰鏈,所述密鑰 鏈使用與在對應于所述字符串的最后字符的索引中的當前狀態對應的密鑰來加密與最后 的傳送狀態對應的密鑰,并且所述密鑰鏈產生單元產生最后狀態信息,所述最后狀態信息 加密用于指示使用對應于所述轉換的最后狀態的所述密鑰的最后轉換狀態是否是通過所 述自動機預先確定的最后狀態的值。
12. -種用于輸入字符串的客戶機,所述客戶機能夠與服務器進行通信,所述服務器具 有用于限定每一個狀態和每一個字符的隨后轉換狀態的自動機,所述客戶機包括: 接收單元,用于與服務器進行通信,并且從所述服務器接收與用于每一個索引的輸入 字符對應的多個密鑰鏈;以及, 解密單元,用于通過下述方式而解密與下一個索引對應的密鑰:使用通過與所述索引 的順序的前一個索引對應的解密處理獲得的密鑰來對于所述多個接收的密鑰鏈執行解密 處理。
13. -種在服務器中的信息處理方法,所述服務器能夠連接到用于字符串的輸入的客 戶機,并且具有用于限定每一個狀態和每一個字符的隨后轉換狀態的自動機,所述信息處 理方法包括: 產生用于索引、字符和用于表達在字符串中的每一個字符的位置的狀態的每一個組合 的密鑰鏈,所述密鑰鏈具有用于下一個索引的加密密鑰,所述下一個索引對應于基于與當 前狀態對應的密鑰根據字符從當前狀態起的隨后轉換狀態;以及, 通過與客戶機進行通信來在對所述客戶機隱藏輸入字符的狀態中向所述客戶機提供 在用于每一個索引的密鑰鏈集合中的、與每一個輸入的密鑰對應的密鑰鏈。
14. 一種在用于字符串的輸入的客戶機中的信息處理方法,所述客戶機能夠與服務器 進行通信,所述服務器具有用于限定每一個狀態和每一個字符的隨后轉換狀態的自動機, 所述信息處理方法包括: 通過與所述服務器進行通信來從所述服務器接收與用于每一個索引的輸入字符對應 的多個密鑰鏈;并且 通過下述方式而解密與下一個索引對應的密鑰:使用通過與所述索引的順序的前一個 索引對應的解密處理獲得的密鑰來對于所述多個接收的密鑰鏈執行解密處理。
15. -種程序,用于使得計算機能夠作為權利要求1的服務器。
16. -種程序,用于使得計算機能夠作為權利要求12的客戶機。
【文檔編號】H04L9/10GK104067556SQ201380006069
【公開日】2014年9月24日 申請日期:2013年1月10日 優先權日:2012年1月19日
【發明者】立石孝彰, 渡邊裕治 申請人:國際商業機器公司