本發明的實施例涉及一種加密技術。
背景技術:
::現有的白盒密碼算法的實現方式根據成為基礎的對稱密鑰密碼算法的內部特征而不同,并且因為依靠基礎算法所以難以提供普適性,并且為了保護基礎算法的密鑰而需要插入較多的額外運算,所以于相比基礎算法,而導致降低幾十倍的效率。另外,現有的白盒密碼算法無法提供與設計者的初衷相匹配的足夠的安全性,并且實時暴露于密鑰復原攻擊下。現有技術文獻專利文獻(專利文獻0001)韓國公開專利第10-2012-0030335號(2012.03.28)技術實現要素:本發明的實施例用于提供一種加密裝置以及方法。根據本發明的一實施例的加密裝置包括:密鑰表生成部,生成由種子值導出的任意值,并生成包含所生成的所述任意值的密鑰表(Keytable);以及加密部,生成具有輪函數的菲斯特爾結構(Feistel)的塊加密算法,并利用所生成的所述塊加密算法而對明文數據塊進行加密,所述輪函數應用所生成的所述密鑰表。所述種子值可以是能夠用比特串表示的初始輸入值。所述種子值可以是密鑰、計算器值以及初始化向量中的一個。所述密鑰表生成部可以基于用于加密的可用存儲器的大小來確定所述任意值的大小。所述加密部可以基于所述明文數據塊的大小以及所述任意值的大小來確定所述菲斯特爾結構的分支數,并且生成具有所確定的所述分支數的菲斯特爾結構的塊加密算法。所述加密部可以利用如下的數學式確定所述分支數:(其中,b為分支數,n為所述明文數據塊的大小,k所述任意值的大小)。所述加密部可以基于安全強度來確定所述菲斯特爾結構的輪數,并且可以生成具有所確定的所述輪數的菲斯特爾結構的塊加密算法。根據本發明的一實施例的加密方法,包括如下步驟:生成由種子值導出的任意值;生成包含所生成的所述任意值的密鑰表;生成具有輪函數的菲斯特爾結構的塊加密算法,該輪函數應用所生成的所述密鑰表;利用生成的所述塊加密算法加密明文數據塊。所述種子值可以是可以用比特串表示的初始輸入值。所述種子值可以是密鑰、計算器值以及初始化向量中的一個。生成所述任意值的步驟可以包括以下步驟:基于用于加密的可用存儲器的大小來確定所述任意值的大小;生成具有所確定的所述任意值的大小的任意值。生成所述塊加密算法的步驟可以包括以下步驟:基于所述明文數據塊的大小以及所述任意值的大小來確定所述菲斯特爾結構的分支數;以及生成具有所確定的所述分支數的菲斯特爾結構的塊加密算法。在所述確定分支數的步驟中,可以利用如下的數學式而確定所述分支數:(其中,b為分支數,n為所述明文數據塊的大小,k為所述任意值的大小)。生成所述塊加密算法的步驟可以包括如下的步驟:基于安全強度來確定所述菲斯特爾結構的輪數;以及生成具有所確定的所述輪數的菲斯特爾結構的塊加密算法。根據本發明的一實施例的儲存于計算機可讀記錄介質的計算機應用程序,該應用程序與硬件結合以執行以下步驟:生成從種子值導出的任意值;生成包含所生成的所述任意值的密鑰表;生成具有輪函數的菲斯特爾結構的塊加密算法,該輪函數應用所生成的所述密鑰表;利用所生成的所述塊加密算法而對明文數據塊進行加密。根據本發明的實施例,通過利用可以在白盒環境內保護密鑰的密鑰表應用于輪函數的菲斯特爾結構的加密算法,可以沒有用于保護密鑰的額外運算步驟的情況下在白盒環境下實現安全的數據加密。并且,使密鑰表大小以及菲斯特爾結構的分支數和輪數可以根據加密應用環境而被可變地調整,從而可以構成對應用環境最優的加密算法。附圖說明圖1為根據本發明的一實施例的加密裝置的構成圖。圖2為根據本發明的一實施例的密鑰表生成部的詳細構成圖。圖3為示出運算部中使用的輪函數的例子的圖。圖4為示出根據本發明的一實施例而生成的塊加密算法的菲斯特爾(Feistel)結構的圖。圖5為根據本發明的一實施例的加密方法的流程圖。圖6為示出根據本發明的一實施例的塊加密算法的生成步驟的流程圖。符號說明100:加密裝置110:密鑰表生成部111:密鑰生成部113:運算部130:加密部具體實施方式以下,將參考附圖而對本發明的具體實施形態進行說明。以下的詳細的說明是為幫助包括對本說明書中描述的方法、裝置以及/或者系統的理解而提供的。然而這僅僅為示例,本發明并不局限于此。在說明本發明的實施例時,如果判斷為對與本發明相關的公知技術進行的具體說明會給本發明的主旨帶來不必要的混亂,則將省略對其的詳細說明。并且,下述的術語為考慮到本發明中的作用而給出定義的術語,其可以根據用戶、適用者的意圖或者習慣等而不同。所以,其需要基于本說明書的整體內容來做出定義。在詳細的說明中使用的術語只是用于敘述本發明的實施例的,而并不具有限制作用。在沒有明確的反例時,單數形態的表現形式包括復數形態的含義。本說明書中,要理解“包括”或者“具有”等表述指某些特征、數字、步驟、操作、要素以及它們的部分或者組合,不能理解成排除所敘述的之外的一個或以上的其他特征、數字、步驟、操作、要素以及它們的部分或者組合的存在或者可能性。圖1為根據本發明的一實施例的加密裝置的構成圖。參考圖1,根據本發明的一實施例的加密裝置100包括密鑰表生成部110以及加密部130。密鑰表生成部110利用種子值(seedvalue)生成由種子值導出的任意值,并生成包含所生成的任意值的密鑰表(Keytable)。此時,密鑰表可以是以由種子值導出的任意值組成的查找表(lookuptable)。并且,種子值可意指能夠用比特串(bitstring)表示的初始輸入值。例如,種子值可以包括密鑰、塊加密(BlockCipher)的操作模式中使用的計數器值、由任意比特串組成的初始化向量等。另外,根據本發明的一實施例,由密鑰表生成部110生成的密鑰表的各個任意值的大小可根據在應用加密裝置100的計算環境內可為加密而得到利用的可用存儲器的大小來確定。加密部130生成包含輪函數的菲斯特爾(Feistel)結構的塊加密算法,并且可以利用所生成的塊加密算法而對明文數據塊進行加密,其中輪函數應用由密鑰表生成部110生成的密鑰表。具體地,加密部130確定菲斯特爾結構的分支(branch)數以及輪數,并且可以將密鑰表應用于菲斯特爾結構的各個輪函數而生成塊加密算法。此時,根據本發明的一實施例,由加密部130構成的塊加密算法可以基于具有菲斯特爾結構的現有的塊加密算法(例如,DES算法)來生成。例如,加密部130可以基于DES算法來將密鑰表應用于DES算法的菲斯特爾結構的各個輪函數,并且改變菲斯特爾結構的分支數和輪數,據此生成塊加密算法。另外,根據本發明的一實施例,菲斯特爾結構的分支數可以根據將被加密的明文數據塊的大小以及構成密鑰表的任意值的大小而確定。具體地,加密部130例如可以基于如下的數學式1來確定菲斯特爾結構的分支數b。【數學式1】數學式1中,b指分支數,n指所要加密的明文數據塊的大小(bit),k指構成密鑰表的任意值的大小(bit)。另外,根據本發明的一實施例,菲斯特爾結構的輪數可以根據應用加密裝置100的環境內的安全強度而確定。圖2為根據本發明的一實施例的密鑰表生成部110的詳細構成圖。參考圖2,密鑰表生成部110可以包括:密鑰生成部111,由種子值生成多個子密鑰;運算部113,利用所生成的各個子密鑰生成密鑰表。具體地,密鑰生成部111接收種子值并生成子密鑰后,可以由前一個所生成的子密鑰重復生成新的子密鑰。例如,如果假設生成三個子密鑰,則密鑰生成部111可以由所接收到的種子值生成隨機數而生成第一個子密鑰。之后,密鑰生成部111由所生成的第一個子密鑰生成隨機數而生成第二個子密鑰,并且由所生成的第二個子密鑰生成隨機數而生成第三個子密鑰。運算部113由在密鑰生成部111中生成的各個子密鑰生成用于構成密鑰表的任意值,并可生成包含所生成的任意值的密鑰表。具體地,運算部113可以利用用于由所輸入的子密鑰生成任意值的輪函數而在每一輪均將各個子密鑰應用于輪函數,由此生成任意值。具體地,圖3為示出運算部113中應用的輪函數的例子的圖。參照圖3,如圖示的例子那樣,運算部113可以對密鑰生成部111中生成的子密鑰ki以及具有與子密鑰ki相同大小的任意的值a進行XOR運算(異或運算),然后將XOR運算結果分成兩個部分并將其分別應用于S盒S-box。之后,運算部113可以對兩個S盒S-box的輸出結果值進行矩陣運算Matrix而產生任意值ri。此時,矩陣運算可以使用例如,利用MDS(MaximumDistanceSeparable)矩陣的矩陣運算等具有能夠使針對輸入值的擴散效果最大化的性質的多種形態的矩陣運算。另外,密鑰表生成部110中進行的密鑰表的生成并不一定要局限于圖2以及圖3中示出的例子。例如,密鑰表生成部110除了圖2以及圖3中示出的例子之外,還可以利用具有單向特性的多種方式而從種子值生成任意值后,生成包含所生成的任意值的密鑰表。圖4為示出根據本發明的一實施例而生成的塊加密算法的菲斯特爾結構的圖。圖4中,假設所要加密的明文數據塊的大小和構成密鑰表的任意值的大小分別為64bit和16bit。加密部130例如可以如根據所述數學式1而示出的例子,具有四個分支,并且構成將密鑰表作為輪函數利用的四輪的基本結構,并且根據基于安全強度來確定的輪數(圖示的例子中為32輪)而構成菲斯特爾結構,以使四輪的基本結構重復執行。另外,在示出的基本結構中,在第一輪中以左側為基準,向第一個分支輸入的塊的值被轉換成密鑰表中對應的任意值,并且轉換的任意值通過XOR運算而與向第二個分支輸入的的塊的值結合。之后,在第二輪中通過第一輪而生成的值被轉換為密鑰表中對應的任意值,并且所轉換的任意值通過XOR運算而與向第三個分支輸入的塊的值結合。之后,通過相同的方式進行第三輪和第四輪,并且在第四輪中,通過密鑰表轉換的任意值通過XOR運算而與向第一個分支輸入的塊的值結合。另外,圖4中示出的菲斯特爾結構為示例性的結構,所以需要注意根據本發明的一實施例的菲斯特爾結構不局限于圖4中示出的例子。即,根據本發明的實施例的菲斯特爾結構可以根據成為基礎的塊密碼算法而具有不同的形態。并且,在圖4中示出的例子中,例示為菲斯特爾結構的各輪的輪函數利用密鑰表的情形,但是并不限于此。例如,各輪的輪函數可以是將成為基礎的塊密碼算法中利用的輪函數的一部分轉換為密鑰表的函數。另外,在一實施例中,圖1中示出的密鑰表生成部110以及加密部130可以在包括一個以上的處理器以及與該處理器連接的計算機可讀記錄介質的一個以上的計算裝置上實現。計算機可讀記錄介質可以位于處理器的內部或者外部,并且可以通過公知的多種手段而連接到處理器。計算裝置內的處理器可以使各個計算裝置照著本說明書中記載的示例性的實施例運轉。例如,處理器可以執行計算機可讀記錄介質中儲存的指令,計算機可讀記錄介質中儲存的指令在由處理器執行時,可以使計算裝置執行根據本說明書中敘述的示例性的實施例的操作。圖5為根據本發明的一實施例的加密方法的流程圖。圖5中示出的方法例如可以借助于圖1中示出的加密裝置100而執行。參考圖5,加密裝置100生成由種子值導出的任意值(510)。之后,加密裝置100生成包含所生成的任意值的密鑰表(520)。此時,構成密鑰表的任意值的大小可以根據可用存儲器的大小而確定。之后,加密裝置100生成包含應用所生成的密鑰表的輪函數的菲斯特爾結構的塊加密算法(530)。之后,加密裝置100利用所生成的塊加密算法對明文數據塊進行加密(540)。圖6為示出根據本發明的一實施例的塊加密算法生成步驟的流程圖。參考圖6,加密裝置100基于明文數據塊的大小以及構成密鑰表的任意值的大小來確定菲斯特爾結構的分支數(610)。之后,加密裝置100基于加密安全強度來確定菲斯特爾結構的輪數(620)。之后,加密裝置100生成具有所確定的分支數以及輪數的菲斯特爾結構的塊加密算法(630)。另外,在如圖5以及圖6所示的流程圖中將所述方法分成了多個步驟而進行了圖示,然而還可以由如下的方式來執行:交換至少一部分步驟而執行;與其他步驟結合而一起執行;省略或分為細分的步驟而執行;或者附加未圖示的一個以上的步驟而執行。另外,本發明的一實施例可以包括計算機可讀記錄介質,其包括用于在計算機上執行本說明書中記載的方法的程序。所述計算機可讀記錄介質可以單獨地或者組合地包括程序命令、本地數據文件、本地數據結構等。所述介質可以是為本發明而特別地設計并構成的介質,或者可以是在計算機軟件領域中通常被使用的介質。計算機可解碼存儲介質的示例包括:磁介質,如硬盤、軟盤以及磁帶等;光記錄介質,如CD-ROM、DVD等;磁-光介質,軟盤等;以及ROM、RAM、閃存等為了儲存命令并執行程序命令而特別構成的硬件裝置。作為程序命令的例,不僅包括如利用編譯器制作的計算機語音代碼,還可以包括可利用翻譯器等由計算機執行的高級語言代碼。以上,對本發明的具有代表性的實施例進行了詳細的說明,然而在本發明所屬的
技術領域:
:中具有基本知識的人員可以理解對上述的實施例可在不脫離本發明的范圍的限度內進行多種變形。因此,本發明的權利范圍并不局限于上述的實施例,本發明的權利范圍需要根據權利要求書的范圍以及與該權利要求書均等的范圍來確定。當前第1頁1 2 3 當前第1頁1 2 3