이하 도면을 참조하여 본 발명의 제 1 실시형태를 설명한다.
도 1은 본 발명의 데이터베이스관리장치의 제 1 실시형태의 구성을 나타내는 도면이다.
본 장치는 행과 열로 이루어지는 매트릭스형식의 데이터베이스를 갖고, 그 데이터베이스를 암호화하여 관리하는 기능과 함께 입력된 검색용 데이터를 암호화하고 그 암호화된 검색용 데이터에 의거하여 데이터베이스를 검색하는 기능을 구비한 것이며, 예를 들면 자기디스크 등의 기록매체에 기록된 프로그램을 판독하고 이 프로그램에 의하여 동작이 제어되는 컴퓨터에 의하여 실행된다.
도 1에 나타내는 바와 같이 본장치에는 CPU(311), 표시장치(312), 입력장치(313), 프로그램기억장치(314), 키기억장치(315), 데이터기억장치(316)가 설치되어 있다.
CPU(311)는 본 장치 전체의 제어를 실시하는 것이며, 프로그램기억장치(314)에 기억된 프로그램을 판독하고 그 프로그램에 따라서 각종 처리를 실행한다. 본 실시형태에 있어서 CPU(311)는 도 2에 나타내는 바와 같은 데이터베이스의 암호화처리나 도 3a∼도 4b에 나타내는 바와 같은 데이터베이스의 검색처리를 실행한다.
표시장치(312)는 데이터를 표시하기 위한 디바이스이다. 예를 들면 LCD(Liquid Crystal Display)나 CRT(Cathode-ray tube) 등이 이용된다. 입력장치(313)는 데이터를 입력하기 위한 디바이스이며, 예를 들면 키보드, 마우스 등이 이용된다.
프로그램기억장치(314)는 예를 들면 ROM 또는 RAM 등으로 구성되고 본 장치에 필요한 프로그램을 기억한다. 본 장치에 필요한 프로그램으로서는 데이터베이스관리프로그램이나 암호화프로그램 등이 있다.
또한 프로그램기억장치(314)는 반도체메모리의 외에 자기적, 광학적 기록매체로 구성할 수 있다. 이 기록매체는 CD-RUM 등의 휴대형의 매체나 하드디스크 등의 고정적인 매체를 포함한다. 또 이 기록매체에 격납하는 프로그램은 그 일부 도는 전부를 서버나 클라이언트로부터 네트워크회선 등의 전송매체를 통하여 전송제어부로부터 수신하는 구성으로 해도 좋고, 또한 상기 기록매체는 네트워크상에 구축된 서버의 기록매체이어도 좋다. 또한 상기 프로그램을 네트워크회선 등의 전송매체를 통하여 서버나 클라이언트에 전송하고 이들의 기기에 인스톨하도록 구축해도 좋다.
키기억장치(315)는 예를 들면 RAM 등으로 구성되고 데이터베이스의 암호화에 이용되는 키(행키와 열키)를 기억한다.
데이터기억장치(316)는 본 장치에 필요한 각종의 데이터를 기억하기 위한 디바이스이며, 예를 들면 RAM 또는 자기디스크장치 등의 외부기억장치로 구성된다. 이 데이터기억장치(316)는 데이터베이스를 격납해두기 위한 데이터베이스격납영역(316a), 데이터베이스를 암호화할 때에 오퍼레이터에 의해 설정된 정보(검색대상항목, 비암호화항목 등)를 격납해두기 위한 암호화설정정보격납영역(316b), 데이터베이스를 검색할 때에 오퍼레이터에 의해 설정된 정보(대상열항목, 검색문자열 등)를 격납해두기 위한 검색설정정보격납영역(316c), 데이터베이스검색시의 비교문자열을 격납해두기 위한 비교문자열격납영역(316d) 등이 설치되어 있다.
여기에서 본 장치의 동작을 설명하기 전에 본 장치에 의하여 실현되는 데이터베이스의 암호화방법에 대하여 설명해둔다.
데이터베이스를 암호화하는 경우에 각 행마다(레코드마다) 다른 키를 이용하여 암호화하면 키의 해독은 곤란하게 되어 시큐어리티성을 높일 수 있다. 그러나 데이터베이스를 검색할 때에 암호화되어 있는 데이터를 각 행마다의 키로 복호화하거나, 또는 검색용으로서 입력된 데이터(키워드)를 각 행마다의 키로 암호화하지 않으면 안되기 때문에 검색결과를 얻는 것에 시간이 걸리게 된다. 한편 각 열마다 다른 키를 이용하여 데이터베이스를 암호화하면 검색대상으로 되는 열항목에 대응한 키만을 이용하여 검색용 데이터를 암호화하면 되므로 데이터베이스검색을 고속으로 실시할 수 있다. 그러나 같은 예 중에서 동일한 데이터가 있으면 암호화결과도 같아져 버리기 때문에 그곳으로부터 키가 해독될 가능성이 높아진다.
그래서 본 발명에서는 데이터베이스를 암호화할 때에 검색에 빈번하게 이용되는 열항목의 데이터에 대해서는 열공통키로 암호화하고 그 외의 열항목의 데이터에 대해서는 각 행마다 다른 키를 주어서 암호화하는 것을 특징으로 한다. 즉 각 행마다 키를 달리 하는 것으로 시큐어리티를 높이는 동시에 검색시에는 검색에 이용되는 항목에 입력된 데이터를 열키로 암호화하고, 데이터베이스상의 암호화데이터와 비교하는 것으로 고속검색을 가능하게 하는 것이다.
도 5는 제 1 실시형태에 있어서의 데이터베이스의 구성을 설명하기 위한 도면이며, 도 5a는 암호화전의 상태, 도 5b는 암호화후의 상태, 도 5c는 복호화후의 상태를 나타내고 있다. 또 도 6은 제 1 실시형태에 있어서의 열키와 행키의 구성을 나타내는 도면이다.
도 5a에 나타내는 바와 같이 본 장치에서는 행과 열로 이루어지는 매트릭스형식의 데이터베이스를 구비하고 있다. 여기에서는 개인데이터를 데이터베이스화한 경우를 나타내고 있다. 이 데이터베이스는 1레코드가 「number」, 「name」, 「state」, 「weight」, 「height」, 「age」, 「phone」의 각 항목으로 구성하도록 하고 있다.
이와 같은 데이터베이스에 대하여 열키와 행키를 이용하여 암호화를 실시한다. 즉 검색에 빈번하게 이용되는 열항목을 「name」, 「state」, 「age」로 한 경우에 이들의 열항목의 각 행의 데이터에 대해서는 도 6에 나타내는 바와 같이 「apple」, 「orange」, 「lemon」이라는 각 열항목에 공통의 열키를 이용하여 암호화하고, 그 외의 열항목 「weight」, 「height」, 「phone」의 각 행의 데이터에 대해서는 각 행마다 고유의 키를 이용하여 암호화한다.
또한 「number」의 열은 암호화를 실시하지 않은 것으로 한다. 행키로서는 「tiger」, 「dog」, 「cat」, 「mouse」, 「elephant」, 「cow」, 「pig」, 「rabbit」, 「lion」이라는 키가 이용된다. 또한 이들의 열키나 행키는 소정의 비선형함수를 결정하고, 암호화(복호화)는 그 함수에 의하여 수학적으로 발생되는 벡터와의 2항연산(2항역연산)에 의하여 실행된다. 이 경우 후술하는 본 발명의 암호복호방식을 이용할 수 있다.
도 5a의 데이터베이스를 열키와 행키를 이용하여 암호화한 결과를 도 5b에 나타낸다. 데이터기억장치(316)의 데이터베이스격납영역(316a)에는 도 5b에 나타내는 바와 같은 상태에서 데이터베이스가 보존되게 된다.
데이터베이스를 검색하는 경우에는 검색에 이용되는 열항목에 대응한 열키를이용하여 검색용 데이터를 암호화하고나서 검색처리를 실시한다. 예를 들면 「State」 중의 「Florida」라는 데이터를 검색하는 경우에는 우선 검색용 데이터로서 입력된 「Florida」를 「state」의 열키 「apple」로 암호화하고 「h*/fDD」를 얻는다. 이 「h*/fDD」라는 데이터를 「state」의 열의 각 행으로부터 검색한다. 이것에 의해 「number2」와 「number8」에 해당하는 데이터가 존재하는 것을 알 수 있다.
또 암호화된 데이터베이스를 원래로 되돌리는 경우에는 암호화시와 같은 열키와 행키를 이용한다. 도 5b의 데이터베이스를 암호화시와 같은 열키와 행키를 이용하여 복호화하면 도 5c에 나타내는 바와 같이 원래의 데이터를 얻을 수 있다.
이하에 본 장치의 동작에 대하여 설명한다.
여기에서는 (a) 데이터베이스를 암호화하는 경우의 처리와, (b) 데이터베이스를 검색하는 경우의 처리로 나누어 설명한다. 또한 도 2에서부터 도 4의 흐름도에서 나타내는 각 기능을 실현하는 프로그램은 CPU가 판독 가능한 프로그램코드의 형태로 상기 프로그램기억장치(314)의 기록매체에 격납되어 있다. 또 이 프로그램은 프로그램코드의 형태로 네트워크회선 등의 전송매체를 통하여 전송할 수도 있다.
(a) 데이터베이스를 암호화하는 경우
도 2는 본 장치에서 실행되는 데이터베이스암호화처리의 동작을 나타내는 흐름도이다. 현재 데이터베이스가 암호화되어 있지 않은 상태로 데이터기억장치의 데이터격납영역(316a)에 기억되어 있는 것으로 한다. 이 상태가 도 5a이다.
우선 도시하지 않은 데이터베이스암호화설정화면에서 암호화대상으로 되는 데이터베이스를 지정한다(스텝G11).
다음으로 그 데이터베이스에 설치된 각 열항목 중에서 검색에 이용하는 열항목과, 암호화를 필요로 하지 않는 열항목을 각각 설정한다(스텝G12). 도 20a의 예에서는 검색에 이용하는 열항목은 「name」, 「state」, 「age」이고, 암호화를 필요로 하지 않는 열항목은 「number」이다. 여기에서의 설정정보는 데이터기억장치(316)의 암호화설정정보격납영역(316b)에 기억된다.
다음으로 해당 데이터베이스의 암호화에 이용하는 행키와 열키를 결정한다(스텝G13). 여기에서 결정된 행키와 열키의 정보는 키기억장치(315)에 기억된다.
이와 같은 설정조작후 데이터베이스 중에서 각 열항목을 차례로 지정해가면(스텝G14) 그 지정된 열항목에 대한 암호화방식이 상기 설정정보에 의거하여 판단된다(스텝G15). 이 경우 데이터베이스 중의 「number」의 열항목에 대해서는 비암호화항목으로서 설정되어 있으므로 아무것도 하지 않는다. 즉 「number」의 항목은 원데이터대로이다.
또 지정된 열항목이 검색에 이용하는 열항목으로서 설정되어 있는 경우에는 키기억장치(315)에 기억된 해당 열항목에 공통의 열키가 판독되고(스텝G15→G16), 해당 열항목의 각 행의 데이터가 그 열키에 의해 암호화된다(스텝G17). 즉 데이터베이스의 「name」, 「state」, 「age」의 각 항목의 각 행의 데이터는 도 6에 나타내는 바와 같이 「apple」, 「orange」, 「lemon」이라는 각 열에 고유의 키를 이용하여 암호화되게 된다.
또 지정된 열항목이 검색에 이용하는 열항목으로서 설정되어 있지 않은 경우, 즉 다른 열항목인 경우에는 키기억장치(315)에 기억된 각 행에 대응한 행키가 판독되고(스텝G15→G18), 해당 열항목의 각 행의 데이터가 각각 고유의 행키에 의해 암호화된다(스텝G19, G20). 즉 데이터베이스 중의 「state」, 「weight」, 「height」의 각 항목의 데이터에 관해서는 도 6에 나타내는 바와 같이 1행재의 데이터는 「tiger」, 2행째의 데이터는 「dog」, 3행째의 데이터는 「cat」, 4행째의 데이터는 「mouse」, 5행째의 데이터는 「elephant」, 6행째의 데이터는 「caw」, 7행째의 데이터는 「pig」, 8행째의 데이터는 「rabbit」, 9행째의 데이터는 「lion」이라는 것과 같이 각 행에 대응한 행키를 이용하여 암호화된다.
이와 같은 암호화처리가 데이터베이스의 각 열항목에 대해 반복하여 실시된다. 모든 열항목의 각 행의 데이터의 암호화가 종료하면 그 암호화데이터베이스가 데이터기억장치(316)의 데이터베이스격납영역(316a)에 상서보존된다(스텝G22). 이 상태가 도 5b이다.
(b) 데이터베이스를 검색하는 경우
도 3a, 3b는 본 장치에서 실행되는 데이터베이스검색처리의 동작을 나타내는 흐름도이다.
현재 상기 (a)에서 설명한 암호화처리에서 데이터베이스가 암호화되어 데이터기억장치(316)에 보존되어 있는 것으로 한다.
우선 도 3a의 흐름도에 나타내는 바와 같이 도시하지 않은 데이터베이스검색용 설정화면에서 검색정보의 입력을 실시한다(스텝H11). 검색정보의 입력이란 검색대상으로 되는 열항목과, 검색용의 문자열(키워드)을 입력하는 것이다. 이들의 입력정보는 데이터기억장치(316)의 검색설정정보격납영역(316c)에 격납된다. 입력장치(313)를 통하여 검색정보가 입력되면 검색전처리가 실행된다(스텝H12).
이 검색전처리에서는 도 3b의 흐름도에 나타내는 바와 같이 검색대상으로서 입력된 열항목이 소정의 열항목인지 아닌지가 판단되고(스텝I11), 소정의 열항목인 것이 판명된 경우에는(스텝I11의 YES) 그 열항목에 공통의 열키로 검색용의 문자열이 암호화된다(스텝I12).
소정의 열항목이란 상기 데이터베이스의 암호화시에 설정된 검색대상항목(검색에 이용되는 항목)이며, 구체적으로는 「name」, 「state」, 「age」의 각 항목이 해당한다. 이 검색대상항목에 관한 정보는 데이터기억장치(316)의 암호화설정정보격납영역(316b)에 격납되어 있다. 따라서 상기 스텝I11에서는 이 암호화설정정보격납영역(316b)를 참조하여 소정의 열항목인지 아닌지의 판단을 실시하게 된다. 또 열항목에 공통의 열키는 키기억장치(315)에 격납되어 있다. 따라서 상기 스텝I12에서는 이 키기억장치(315)로부터 해당 열항목에 대응한 열키를 판독하여 검색용의 문자열을 암호화하게 된다. 예를 들면 지정항목이 「state」이면 「orage」라는 열키를 이용하여 검색용의 문자열을 암호화하게 된다.
또 검색대상으로서 입력된 열항목이 소정의 열항목이 아닌 경우에는(스텝I11의 No) 상기와 같은 검색용 문자열의 암호화는 실시되지 않는다.
이와 같은 검색전처리후 데이터베이스의 검색처리(도 4a 참조)가 실시되고(스텝H13), 그 검색결과로서 얻어진 데이터가 표시장치(312)에 표시된다(스텝H14).
도 4a, 4b에 데이터베이스의 검색처리를 나타낸다.
도 4a, 4b는 상기 스텝H13의 검색처리의 동작을 구체적으로 나타내는 흐름도이다.
우선 도 4a의 흐름도에 나타내는 바와 같이 검색용 문자열이 데이터베이스와의 비교문자열로서 데이터기억장치(316)의 비교문자열격납영역(316d)에 세트된다(스텝J11). 이 경우 상기한 바와 같이 검색대상으로서 입력된 열항목이 소정의 열항목(「name」, 「state」, 「age」)인 경우에는 상기 검색전처리에 의하여 해당 검색용 문자열이 그 열항목에 대응한 열키로 암호화되어 비교문자열격납영역(316d)에 세트된다. 그 외의 열항목의 경우에는 암호화되는 일없이 그대로의 상태로 비교문자열격납영역(316d)에 세트된다.
다음에 데이터기억장치(316)의 데이터베이스격납영역(316a)에 격납된 암호화데이터베이스의 열번호에 의한 암호화방식이 판단된다(스텝J12). 이것에 의해 검색대상이 열키로 암호화된 소정의 열항목에 해당하는 경우에는 그 대상열의 각 행에 있는 데이터가 차례로 주사되고(스텝J12→J13), 지정된 행에 포함된 대상항목의 데이터의 문자열과 상기 비교문자열격납영역(316d)에 세트된 검색용 문자열(암호화된 문자열)과 비교처리가 실시된다(스텝J14).
이 비교처리에서는 도 4b의 흐름도에 나타내는 바와 같이 데이터베이스로부터 꺼내어진 대상항목의 데이터의 암호화문자열과 검색용의 암호화문자열을 비교하고, 양자가 일치하는지 아닌지를 판단한다(스텝K11). 양자가 일치한 경우에는(스텝K11의 Yes) 그 일치한 항목을 포함하는 레코드데이터를 데이터베이스검색결과로서 추출한다(스텝K12).
이 처리를 암호화데이터베이스의 종단까지 반복하여 해당하는 데이터를 차례로 추출하고(스텝J15), 이 추출한 데이터를 검색결과로서 출력한다(스텝J20).
구체적으로 설명하면 도 5b의 암호화데이터베이스의 예에서 예를 들면 「state」의 항목 중의 「Florida」라는 데이터를 검색하는 것이 지정된 경우에는 우선 검색용 데이터로서 입력된 「Florida」를 「state」의 열키 「apple」로 암호화하고 「h*/fDD」를 얻는다. 이 「h*/fDD」라는 데이터를 「state」의 열로부터 검색한다. 이것에 의해 「number2」와 「number8」에 해당하는 데이터가 존재하는 것을 알 수 있다.
한편 검색대상이 행키로 암호화된 그 외의 열항목에 해당하는 경우에는 그 대상열의 각 행에 있는 데이터가 차례로 주사되고(스텝J12→J16), 지정된 행에 포함된 대상항목의 데이터가 각 행에 고유의 행키에 의하여 복호화된 후(스텝J17) 상기 비교문자열격납영역(316d)에 세트된 검색용 문자열(비암호화문자열)과의 비교처리가 실시된다(스텝J18).
이 비교처리에서는 도 4b의 흐름도에 나타내는 바와 같이 데이터베이스로부터 꺼내어진 대상열의 데이터의 복호화문자열과 검색용의 비암호화문자열의 비교에 의해 양자가 일치하는지 아닌지를 판단한다(스텝K11). 양자가 일치한 경우에는(스텝K11의 Yes) 그 일치한 항목을 포함하는 레코드데이터를 데이터베이스검색결과로서 추출한다(스텝K12).
이 처리를 암호화데이터베이스의 종단가지 반복하여 해당하는 데이터를 차례로 추출하고(스텝J19), 이 추출한 데이터를 검색결과로서 출력한다(스텝J20).
구체적으로 설명하면 도 5b의 암호화데이터베이스의 예에서 예를 들면 「weight」의 항목 중의 「163」이라는 데이터를 검색하는 것이 지정되었다고 한 경우에 우선 「weight」의 1행째의 데이터를 「tiger」라는 행키로 복호화한다. 똑같이 하여 2행째의 데이터를 「dog」, 3행째의 데이터를 「cat」, 4행째의 데이터를 「mouse」, 5행째의 데이터를 「elephant」, 6행재의 데이터를 「caw」, 7행째의 데이터를 「pig」, 8행째의 데이터를 「rabbit」, 9행째의 데이터를 「lion」이라는 것과 같이 각 행에 대응한 행키를 이용하여 각각 복호화한 후에 검색용 데이터로서 입력된 「163」에 의거하여 「state」의 예가 해당하는 데이터를 검색한다. 이것에 의해 「number3」와 「number9」에 해당하는 데이터가 존재하는 것을 알 수 있다.
이와 같이 데이터베이스를 암호화할 때에 검색에 이용되는 소정의 열항목에 대해서는 열공통키로 암호화하고, 검색시에는 검색용 데이터를 그 열공통키로 암호화하여 데이터베이스상의 암호화데이터와 비교하는 것으로 고속검색을 실현할 수 있다. 또 소정의 열항목 이외의 열항목에 대해서는 각 행마다 다른 키를 주어서 암호화하는 것으로 시큐어리티를 높인다. 이 경우 검색시에는 각 행마다의 키를 이용한 복호화를 필요로 하기 때문에 상기 소정의 열항목에 대한 검색에 비하여 시간은 걸리지만 검색에 빈번하게 이용되는 항목이 아니므로 문제가 되지는 않는다.
상기 제 1 실시형태에서는 소정의 열항목 이외의 열항목의 데이터에 대해서는 각 행마다 고유의 행키를 이용하여 암호화하도록 했는데, 이하의 제 2 실시형태에서는 더욱 시큐어리티를 높이기 위해 각 행마다 고유의 행키와 해당 열항목에 공통의 열키를 복합적으로 이용하여 암호화하는 것을 특징으로 한다.
도 7은 제 2 실시형태에 있어서의 데이터베이스의 구성을 나타내는 도면이며, 도 7a는 암호화전의 상태, 도 7b는 암호화후의 상태, 도 7c는 복호화후의 상태를 나타내고 있다. 또 도 8은 제 2 실시형태에 있어서의 합성키의 구성을 나타내는 도면이다.
도 7a에 나타내는 바와 같이 본 장치에서는 행과 열로 이루어지는 매트릭스형식의 데이터베이스를 구비하고 있다. 여기에서는 개인데이터를 데이터베이스화한 경우를 나타내고 있다. 이 데이터베이스는 1레코드가 「number」, 「name」, 「state」, 「weight」, 「height」, 「age」, 「phone」의 각 항목으로 구성하도록 하고 있다.
이와 같은 데이터베이스에 대해 합성키를 이용하여 암호화를 실시한다. 즉 검색에 빈번하게 이용되는 열항목을 「name」, 「state」, 「age」로 한 경우에 이들의 열항목의 각 행의 데이터에 대해서는 도 8에 나타내는 바와 같이 「apple」, 「orange」, 「lemon」이라는 각 열항목에 공통의 열키를 이용하여 암호화하고, 그 외의 열항목 「weight」, 「height」, 「phone」의 각 행의 데이터에 대해서는 「banana+행키」, 「lychee+행키」, 「apricot+행키」라는 것과 같이 열키와 행키를 조합하여 암호화한다.
또한 「number」의 열은 암호화를 실시하지 않은 것으로 한다. 행키로서는 「tiger」, 「dog」, 「cat」, 「mouse」, 「elephant」, 「cow」, 「pig」,「rabbit」, 「lion」이라는 키가 이용된다. 또한 이들의 열키나 행키는 소정의 비선형함수를 결정하고, 암호화(복호화)는 그 함수에 의하여 수학적으로 발생되는 벡터와의 2항연산(2항역연산)에 의하여 실행된다. 이 경우 후술하는 본 발명의 암호복호방식을 이용할 수 있다.
도 7a의 데이터베이스를 합성키를 이용하여 암호화한 결과를 도 7b에 나타낸다. 데이터기억장치(316)의 데이터베이스격납영역(316a)에는 도 7b에 나타내는 바와 같은 상태로 데이터베이스가 보존되게 된다.
데이터베이스를 검색하는 경우에 상기 제 1 실시형태와 똑같이 검색에 이용되는 열항목마다 공통의 열키를 이용하여 검색용 데이터를 암호화하고나서 검색처리를 실시하면 좋다. 예를 들면 「state」 중의 「Florida」라는 데이터를 검색하는 경우에는 우선 검색용 데이터로서 입력된 「Florida」를 「state」의 열키 「apple」로 암호화하고, 「h*/fDD」를 얻는다. 이 「h*/fDD」라는 데이터를 「state」의 열의 각 행으로부터 검색한다. 이것에 의해 「number2」와 「number8」에 해당하는 데이터가 존재하는 것을 알 수 있다.
또 암호화된 데이터베이스를 원래로 되돌리는 경우에는 암호화시와 같은 열키와 행키를 이용한다. 도 7b의 데이터베이스를 암호화시와 같은 합성키를 이용하여 복호화하면 도 7c에 나타내는 바와 같이 원래의 데이터를 얻을 수 있다.
또한 데이터베이스를 암호화하는 경우의 처리나 암호화된 데이터베이스를 검색하는 경우의 처리에 대해서는 소정의 열항목 이외의 열항목의 각 행의 데이터에 대해 열키와 행키를 조합하여 암호화하는 점을 제외하고는 상기 제 1 실시형태의처리(도 2∼도 4b)와 똑같기 때문에 여기에서는 그 설명을 생략하는 것으로 한다.
이와 같이 검색에 빈번하게 이용되는 열항목에 대해서는 그 열항목에 공통의 열키를 이용하여 암호화하는 것으로 상기 제 1 실시형태와 똑같이 고속검색을 실현할 수 있는 것이며, 또 다른 열항목에 대해서는 열키와 행키를 복합적으로 이용하여 암호화하는 것으로 더욱 시큐어리티를 강화할 수 있다.
상기 제 1 또는 제 2 실시형태에서는 본 발명을 장치 단체(單體)로 구성했는데, 데이터베이스의 보관장소를 이간시켜두고 별도의 정보단말로부터 네트워크를 통하여 검색을 의뢰하는 것과 같은 데이터베이스시스템을 구축하는 것도 가능하다.
이하에 이와 같은 데이터베이스시스템에 대하여 설명한다.
도 9는 본 발명의 제 3 실시형태에 관련되는 데이터베이스시스템의 구성을 나타내는 블록도이다.
본 시스템은 제 1 단말장치(320)와 제 2 단말장치(330)를 갖는다. 제 1 단말장치(320)와 제 2 단말장치(330)는 네트워크(340)를 통하여 접속되어 있다.
제 1 단말장치(320)는 데이터베이스서비스를 실시하는 서버컴퓨터로서 이용되는 것이며, 데이터베이스의 검색처리를 실시하는 검색장치(321)과 데이터베이스를 보존해두기 위한 데이터기억장치(322)로 구성된다. 제 2 단말장치(330)는 데이터베이스의 검색을 제 1 단말장치(320)에 의뢰하고 그 결과를 제 1 단말장치(320)로부터 받아들이는 클라이언트컴퓨터로서 이용되는 것이며, 검색의뢰장치(331)와 복호화장치(332)로 구성된다.
이와 같은 데이터베이스시스템에 있어서는 제 1 단말장치(320)에 있어서, 도2에 설명한 바와 같이 데이터베이스의 소정의 열항목의 각 행의 데이터를 해당 열향목에 공통의 열키를 이용하여 암호화하고, 그 외의 열항목의 각 행의 데이터에 대해서는 각 행마다 고유의 행키를 이용하여 암호화해서 데이터기억장치(322)에 보존해두는 것으로 한다.
여기에서 제 2 단말장치(330)로부터 제 1 단말장치(320)에 대하여 데이터베이스의 검색을 의뢰할 때에 도 3a의 검색전처리까지 제 2 단말장치(330)측에서 실행한다. 즉 제 2 단말장치(330)의 검색의뢰장치(331)에 의하여 검색대상으로서 입력된 열항목이 소정의 열항목인지 아닌지를 판단하고, 소정의 열항목인 경우에 검색용의 문자열(키워드)을 해당 열항목에 공통의 열키를 이용하여 암호화한다. 그 외의 열항목이 검색대상인 경우에는 이와 같은 암호화는 불필요하다.
검색전처리후 제 2 단말장치(330)로부터 검색용 문자열을 네트워크(340)를 통하여 제 1 단말장치(320)에 보낸다. 제 1 단말장치(320)측에서는 이 검색용 문자열을 받음으로써 도 4a, 4b에서 설명한 바와 같은 검색처리를 실행한다.
즉 제 1 단말장치(320)의 검색장치(321)에 의해 검색대상이 소정의 열항목인지 아닌지를 판단하고, 소정의 열항목이면 제 2 단말장치(330)로부터 취득한 검색용 문자열(암호화문자열)과 데이터기억장치(322)내의 암호화데이터베이스의 해당 열항목의 각 행의 데이터를 비교하여 해당하는 데이터를 추출한다는 처리를 실시한다. 또 검색대상이 소정의 열항목 이외의 열항목이면 데이터기억장치(322)내의 암호화데이터베이스의 해당 열항목의 데이터를 각 행마다의 키로 복호화하고나서 제 2 단말장치(330)로부터 취득한 검색용 문자열(비암호화문자열)과 그 복호화된 각행의 데이터를 비교하여 해당하는 데이터를 추출한다는 처리를 실시한다.
이와 같이 하여 검색결과가 얻어지면 제 1 단말장치(320)는 그 검색결과로서 얻어진 데이터를 암호화의 상태인 채로 네트워크(340)를 통하여 제 2 단말장치(330)에 회신한다. 제 2 단말장치(330)는 제 1 단말장치(320)와 공통의 암호키를 갖고 있다. 따라서 제 1 단말장치(320)로부터 검색결과를 수신하면 내부의 복호화장치(332)에서 그 데이터를 암호키를 이용하여 복호화할 수 있다. 이 경우 제 1 단말장치(320)와 제 2 단말장치(330)의 사이에서 항상 암호화된 상태로 데이터가 주고받아지기 때문에 데이터베이스의 시큐어리티를 확보할 수 있다.
이와 같이 제 1 단말장치(320)측에 데이터베이스를 갖게 하고, 제 2 단말장치(330)로부터의 액세스에 의하여 데이터베이스검색을 실시하도록 한 데이터베이스시스템이어도 검색에 빈번하게 사용하는 열항목의 데이터를 해당 열항목에 공통의 열키를 이용하여 암호화하고, 그 외의 열항목의 데이터에 대해서는 각 행마다 고유의 행키를 이용하여 암호화해두는 것으로 시큐어리티를 높이는 동시에 고속검색을 실현할 수 있다.
또한 상기 소정의 열항목 이외의 열항목의 데이터에 대해서는 상기 제 2 실시형태에서 설명한 바와 같이 각 행마다 고유의 행키와 해당 열항목에 공통의 열키를 복합적으로 이용하여 암호화하는 것이어도 좋고, 이와 같이 하면 더욱 시큐어리티를 강화할 수 있다.
이하에는 본 발명의 데이터베이스관리장치의 다른 실시형태를 설명한다.
도 10은 본 발명의 제 4 실시형태에 관련되는 데이터베이스관리장치의 구성을 나타내는 도면이다.
본 장치는 행과 열로 이루어지는 매트릭스형식의 데이터베이스를 암호화하여 관리하는 기능과 함께 그 암호화된 데이터베이스를 검색하는 기능을 구비한 것이며, 예를 들면 자기디스크 등의 기록매체에 기록된 프로그램을 판독하고, 이 프로그램에 의하여 동작이 제어되는 컴퓨터에 의하여 실현된다.
도 10에 나타내는 바와 같이 본 장치에는 CPU(411), 표시장치(412), 입력장치(413), 프로그램기억장치(414), 키생성장치(415), 데이터기억장치(416), 데이터I/F(417)가 설치되어 있다.
CPU(411)는 본 장치 전체의 제어를 실시하는 것이며, 프로그램기억장치(414)에 기억된 프로그램을 판독하고, 그 프로그램에 따라서 각종 처리를 실행한다. 본 실시형태에 있어서 CPU(411)는 도 17a, 17b에 나타내는 바와 같은 데이터베이스의 암호화처리나 도 18a∼도 19에 나타내는 바와 같은 데이터베이스의 검색처리를 실행한다.
표시장치(412)는 데이터를 표시하기 위한 디바이스이며, 예를 들면 LCD(Liquid Crystal Display)나 CRT(Cathode-ray tube) 등이 이용된다. 입력장치(413)는 데이터를 입력하기 위한 디바이스이며, 예를 들면 키보드, 마우스 등이 이용된다.
프로그램기억장치(414)는 예를 들면 ROM 또는RAM 등으로 구성되고, 본 장치에 필요한 프로그램을 기억한다. 본 장치에 필요한 프로그램으로서는 데이터베이스암호화프로그램이나 데이터베이스검색프로그램 등이 있다.
또한 프로그램기억장치(414)는 반도체메모리의 외에 자기적, 광학적 기록매체로 구성할 수 있다. 이 기록매체는 CD-ROM 등의 휴대형의 매체나 하드디스크 등의 고정적인 매체를 포함한다. 또 이 기록매체에 격납하는 프로그램은 그 일부 또는 전부를 서버나 클라이언트로부터 네트워크회선 등의 전송매체를 통하여 전송제어부로부터 수신하는 구성으로 해도 좋고, 또한 상기 기록매체는 네트워크상에 구축된 서버의 기록매체이어도 좋다. 또한 상기 프로그램을 네트워크회선 등의 전송매체를 통하여 서버나 클라이언트에 전송하고 이들의 기기로 하도록 구성해도 좋다.
키생성장치(415)는 데이터베이스의 암호화에 이용되는 암호화키를 생성하기 위한 디바이스이며, 여기에서는 암호화키로서 기본키, 행키, 열키의 3개의 키를 생성하기 위한 기본키생성부(415a), 행키생성부(415b), 열키생성부(415c)로 구성되어 있다.
데이터기억장치(416)는 본 장치에 필요한 각종의 데이터나 테이블을 기억하기 위한 디바이스이며, 예를 들면 RAM 또는 자기디스크장치 등의 외부기억장치로 구성된다. 이 데이터기억장치(416)에는 기본키파라미터테이블(416a), 기본키기억부(416b), 키스펙테이블(416c), 암호화데이터격납부(416d), 검색문자열격납부(416e)가 설치되어 있다.
기본키파라미터테이블(416a)은 기본키의 파라미터값이 등록된 테이블이다(도 13 참조). 기본키기억부(416b)는 오퍼레이터의 지정조작에 의하여 얻어진 기본키의 파라미터값을 기억한다. 키스펙테이블(416c)은 데이터베이스의 각 열(필드)마다 정의된 암호화방식의 종류(비암호화, 행키, 열키)를 기억하는 테이블이다(도 15 참조). 암호화데이터격납부(416d)는 암호화된 데이터베이스를 격납한다. 검색문자열격납부(416e)는 데이터베이스검색시에 오퍼레이터에 의해 지정된 검색용 문자열을 격납한다.
데이터베이스I/F(417)는 본 장치와는 독립되어 설치된 외부데이터베이스기억장치(418)와의 사이에서 데이터의 수수를 실시하기 위한 인터페이스이다. 이 외부데이터베이스기억장치(418)는 복수의 데이터베이스파일(오리지널데이터)을 갖고 있으며, 이들의 데이터베이스파일은 본 장치로부터의 액세서의 의하여 선택적으로 판독되도록 구성되어 있다.
여기에서 상기의 암호화방식을 본 장치에 있어서의 데이터베이스에 적용하는 방법에 대하여 설명한다.
데이터베이스를 암호화하는 경우에 각 행마다(레코드마다) 다른 키를 이용하여 암호화하면 키의 해독은 곤란하게 되어 시큐어리티성을 높일 수 있다. 그러나 모든 행에 대하여 키를 달리 하면 데이터베이스를 검색할 때에 암호화되어 있는 데이터를 각 행마다의 키로 복호화하거나, 또는 검색용으로서 입력된 데이터(키워드)를 각 행마다의 키로 암호화하지 않으면 안되기 때문에 검색결과를 얻는 것에 시간이 걸리게 된다. 한편 각 열마다(필드마다) 다른 키를 이용하여 데이터베이스를 암호화하면 검색대상으로 되는 열항목에 대응한 키만을 이용하여 검색용 데이터를 암호화하면 되므로 데이터베이스검색을 고속으로 실시할 수 있다. 그러나 같은 열 중에서 동일한 데이터가 있으면 암호화결과도 같아져 버리기 때문에 그곳으로부터키가 해독될 가능성이 높아진다.
그래서 본 발명에서는 데이터베이스를 암호화할 때에 검색에 빈번하게 이용되는 열항목의 데이터에 대해서는 공통의 키(열키)로 암호화하고, 그 외의 열항목의 데이터에 대해서는 각 행마다 다른 키(행키)로 암호화하며, 또한 각 행마다 다른 키(행키)를 각 행에 공통의 별도의 키(기본키)로 암호화하는 것을 특징으로 한다. 기본키에 의한 암호화(복호화)도 소정의 비선형함수를 결정하고 암호화(복호화)는 그 함수에 의하여 수학적으로 발생되는 벡터와의 2항연산(2항역연산)에 의하여 실행된다. 이 경우도 후술하는 본 발명의 암호복호방식을 이용할 수 있다.
도 20에 구체예를 나타낸다.
도 20은 본 장치에 의한 데이터베이스의 구성을 설명하기 위한 도면이며, 도 20a는 암호화전의 상태, 도 20b는 암호화후의 상태, 도 20c는 복호화후의 상태를 나타내고 있다.
도 20a에 나타내는 바와 같이 본 장치에서는 행과 열로 이루어지는 매트릭스형식의 데이터베이스를 암호화대상으로 하고 있다. 여기에서는 개인데이터를 데이터베이스화한 것을 나타내고 있다. 이 데이터베이스에는 「code」, 「name」, 「state」, 「age」, 「phone」의 각 열항목(필드)을 갖는다.
이와 같은 데이터베이스에 대해 열키와 행키를 이용하여 암호화를 실시한다. 즉 검색에 빈번하게 이용되는 열항목을 「state」, 「age」로 한 경우에 이들의 열항목의 각 행의 데이터(레코드)에 대해서는 각 열항목에 공통의 열키를 이용하여 암호화하고, 그 외의 열항목 「name」, 「phone」의 각 행의 데이터(레코드)에 대해서는 각 행마다 고유의 행키를 이용하여 암호화해서 레코드파일에 격납한다. 그 때에 해당 열항목의 암호화에 이용된 행키를 기본키로 암호화하고, 그 암호화된 행키를 각 레코드에 부가하여 격납한다. 또한 「code」의 열항목의 데이터에 대해서는 암호화를 실시하지 않는 것으로 한다.
도 20a의 데이터베이스를 열키와 행키를 이용하여 암호화한 결과를 도 20b에 나타낸다. 이 경우 「line key」라는 열항목이 추가되고, 그곳에 기본키로 암호화된 행키(9658, 9143, 8278…)가 격납된다. 도 10에 나타내는 데이터기억장치(416)의 암호화데이터격납부(416d)에는 도 20b에 나타내는 바와 같은 상태로 데이터베이스가 보존되게 된다.
또 데이터베이스를 검색하는 경우에는 검색에 이용되는 열항목에 대응한 열키를 이용하여 검색용 데이터를 암호화하고나서 검색처리를 실시한다. 예를 들면 「state」 중의 「Florida」라는 데이터를 검색하는 경우에는 우선 검색용 데이터로서 입력된 「Florida」를 「state」의 열키로 암호화하고 「h*/fDD」를 얻는다. 이 「h*/fDD」라는 데이터를 「state」의 열의 각 행으로부터 검색한다. 이것에 의해 「code1002」와 「code1008」에 해당하는 데이터가 존재하는 것을 알 수 있다.
또 암호화된 데이터베이스를 원래로 되돌리는 경우에는 암호화시와 같은 열키, 행키, 기본키를 이용한다. 도 20b의 데이터베이스를 암호화시와 같은 열키, 행키, 기본키를 이용하여 복호화하면 도 20c에 나타내는 바와 같이 원래의 데이터를 얻을 수 있다.
다음으로 이와 같은 데이터베이스의 암호화/복호화를 실현하기 위한 구체적인 구성에 대하여 설명한다.
도 11은 본 장치의 구성을 기능적으로 나타내는 블록도이다.
본 장치를 기능적으로 나타내면 입력처리계는 기본키지정부(421), 기본키설정부(422), 키스펙입력부(423), 키스펙설정부(424)로 구성된다. 또 암호화처리계는 데이터판독부(425), 레코드입력메모리(426), 암호화처리부(427), 암호화레코드기입메모리(428), 데이터기입부(429)로 구성되고, 복호화처리계는 암호화레코드판독메모리(430), 복호화처리부(431), 레코드출력메모리(432), 데이터출력부(433)로 구성된다. 또 이 외에 상기한 기본키파라미터테이블(416a), 기본키기억부(416b), 키스펙테이블(416c), 암호화데이터격납부(416d)가 이용된다. 기본키파라미터테이블(416a)은 기본키설정부(422)에 이용되고, 기본키기억부(416b), 키스펙테이블(416c), 암호화데이터격납부(416d)는 암호화처리부(427) 및 복호화처리부(431)의 양쪽에 이용된다.
또한 도 11에 나타낸 각종의 메모리(426, 428, 430, 432)는 레지스터군이며, 예를 들면 데이터기억장치(416)의 소정의 영역에 설치된다.
이와 같은 구성에 있어서, 데이터베이스의 암호화를 실시하는 경우에는 우선 오퍼레이터의 조작에 의해 기본키지정부(421)를 통하여 기본키를 지정한다. 기본키설정부(422)는 이 기본키지정부(421)에 의하여 지정된 기본키의 파라미터값을 기본키파라미터테이블(416a)로부터 판독하여 기본키기억부(416b)에 세트한다.
구체적으로는 도 12에 나타내는 바와 같은 기본키설정다이얼로그를 통하여기본키의 지정을 실시한다. 기본키설정다이얼로그는 오퍼레이터가 기본키를 임의로 지정하기 위한 화면이며, 그 화면상에 기본키지정버튼부(441), OK버튼(442), 삭제버튼(443)이 설치되어 있다. 기본키지정버튼부(441)는 복수개의 버튼으로 이루어지고, 오퍼레이터가 이들의 버튼 중의 임의의 버튼을 눌러내리면 그 눌러내린 버튼의 위치에 의해 기본키의 파라미터값이 결정된다. 또한 OK버튼(442)은 기본키의 지정을 확보하기 위한 버튼, 삭제버튼(443)은 기본키의 지정을 취소하기 위한 버튼이다.
예를 들면 기본키지정버튼부(441)에 16개의 버튼 「1」∼「16」이 왼쪽으로부터 4개씩 차례로 배열되어 있는 것으로 한다. 도 13에 나타내는 바와 같이 기본키파라미터테이블(416a)에는 이들의 버튼의 위치에 대응시켜서 기본키의 파라미터값이 정의되어 있다. 오퍼레이터가 기본키지정버튼부(441)상의 「1」의 버튼을 눌러내리면 이 기본키파라미터테이블(416a)에 따라서 기본키의 파라미터값으로서 「5」가 결정된다. 똑같이 기본키지정버튼부(441)상의 「2」의 버튼을 눌러내린 경우에는 기본키의 파라미터값으로서 「7」이 결정된다.
다음으로 외부데이터베이스기억장치(418)에 액세스하여 외부데이터베이스기억장치(418)에 격납된 각종 데이터베이스 중에서 암호화대상으로 되는 데이터베이스를 지정한다. 데이터베이스의 지정후 오퍼레이터의 조작에 의해 키스펙입력부(423)를 통하여 해당 데이터베이스의 각 데이터항목에 대한 키스펙을 지정한다. 키스펙설정부(424)는 이 키스펙입력부(423)에 의한 키스펙의 지정조작에 따라서 키스펙테이블(416c)에 키스펙정보의 등록을 실시한다.
구체적으로부터 도 14에 나타내는 바와 같은 키스펙설정다이얼로그를 통하여 키스펙의 지정을 실시한다. 키스펙설정다이얼로그는 오퍼레이터가 데이터베이스의 배열항목(필드)마다 암호화방식(암호화에 이용하는 키의 종류)을 임의로 지정하기 위한 화면이며, 그 화면상에 암호화방식지정란(451), OK버튼(452), 삭제버튼(453)이 설치되어 있다.
암호화방식으로서는 각 행마다 고유의 키(행키)를 이용한 암호화, 각 열마다 공통의 키(행키)를 이용한 암호화가 있다. 여기에서는 비암호화를 포함시키고, 0: 비암호화, 1: 행키, 2: 열키로 하며, 암호화방식지정란(451)에 데이터베이스의 각 열항목에 대한 암호화방식을 수치입력하도록 구성되어 있다. 또한 OK버튼(452)은 키스펙의 지정을 확정하기 위한 버튼, 삭제버튼(453)은 키스펙의 지정을 취소하기 위한 버튼이다. 이 키스펙설정다이얼로그에서 암호화방식을 지정하면 그 지정내용이 각 열항목에 대한 키스펙정보로서 키스펙테이블(416c)에 등록된다.
도 15에 키스펙테이블(416c)의 등록예를 나타낸다.
여기에서는 데이터베이스의 열번호 「1」의 항목에 대하여 비암호화, 열번호 「2」의 항목에 대하여 행키, 열번호 「3」의 항목에 대하여 열키, 열번호 「4」의 항목에 대하여 열키, 열번호 「5」의 항목에 대하여 행키가 등록되어 있다. 열번호 「1」의 항목은 「code」, 열번호 「2」의 항목은 「name」, 열번호 「3」의 항목은 「state」, 열번호 「4」의 항목은 「age」, 열번호 「5」의 항목은 「phone」에 상당한다.
이와 같이 하여 기본키기억부(416b)에 기본키가 설정되고키스펙테이블(416c)에 각 열항목에 대한 키스펙정보가 설정되면 이들의 설정정보를 이용하여 데이터베이스의 암호화가 이하와 같은 순서로 실행된다.
즉 도 11에 나타내는 바와 같이 우선 외부데이터베이스기억장치(418) 중에서 지정된 데이터베이스가 데이터판독부(425)에 의하여 행단위(레코드단위)로 판독되고, 레코드입력메모리(426)에 차례로 격납된다. 암호화처리부(427)는 이 레코드입력메모리(426)에 격납된 레코드를 기본키파라미터테이블(416a) 및 기본키기억부(416b)를 이용하여 암호화한다. 이 때의 암호화처리에 대해서는 후에 도 16을 참조하여 상세히 설명한다.
암호화처리부(427)에서 암호화된 레코드는 암호화레코드기입메모리(428)에 격납된 후 데이터기입부(429)를 통하여 암호화데이터격납부(416d)에 기입된다. 이와 같이 하여 암호화데이터격납부(416d)내에 암호화된 데이터베이스가 작성된다.
한편 데이터베이스의 복호화와 역의 순서로 실시된다.
즉 우선 암호화데이터격납부(416d)에 격납된 암호화데이터베이스가 행단위(레코드단위)로 판독되고, 암호화레코드판독메모리(430)에 차례로 격납된다. 복호화처리부(431)는 이 암호화레코드판독메모리(430)에 격납된 암호화레코드를 키스펙테이블(416c) 및 기본키기억부(416b)를 이용하여 복호화한다. 이 때의 복호화처리에 대해서는 후에 도 16을 참조하여 상세히 설명한다. 복호화처리부(431)에서 복호화된 레코드는 레코드출력메모리(432)에 격납된 후 데이터출력부(433)를 통하여 데이터파일(434)에 출력된다. 이와 같이 하여 데이터파일(434)내에 복호화된 데이터베이스가 작성된다. 또한 데이터파일(434)은 도 10의 데이터기억장치(416)의 소정의 영역에 설치된다.
도 16에 구체예를 나타낸다.
도 16은 본 장치에 있어서의 데이터베이스의 암호화시와 복호화시의 데이터의 흐름을 나타내는 도면이다.
현재 암호화대상으로서 지정된 데이터베이스의 1행째의 레코드가 데이터판독부(425)에 의하여 판독되고, 레크드입력메모리(426)에 격납되었다고 한다. 이 경우 도 20a에 나타내는 데이터베이스를 예로 하면 그 데이터베이스의 1행째의 「1001」, 「John」, 「new York」, 「22」, 「407-228-6611」이라는 5항목으로 이루어지는 데이터가 차례로 레코드입력메모리(426)에 격납되게 된다.
암호화처리부(427)는 이 5항목의 데이터로 이루어지는 레코드에 대하여 키스펙테이블(416c)을 참조하여 각 항목에 따른 암호화를 실시한다. 예를 들면 키스펙테이블(416c)에 설정된 내용이 도 15와 같은 경우에는 열번호 「1」에 상당하는 해당 레코드의 1항목(「code」)의 데이터에 대해서는 암호화하지 않고 그대로 암호화레코드기입메모리(428)에 기입한다.
또 열번호 「2」에 상당하는 해당 레코드의 2항목(「name」)의 데이터에 대해서는 행키를 이용하여 암호화하고 암호화레코드기입메모리(428)에 기입한다. 행키는 해당 행번호와 난수에 의하여 랜덤으로 생성되는 것이며, 각 행마다 다른 값을 갖는다. 열번호 「3」에 상당하는 해당 레코드의 3항목(「state」)의 데이터에 대해서는 열키를 이용하여 암호화한다. 이 열키는 각 열에 공통의 값을 갖는다.
똑같이 하여 열번호 「4」에 상당하는 해당 레코드의 4항목(「age」)의 데이터에 대해서는 열키, 열번호 「5」에 상당하는 해당 레코드의 5항목(「phone」)의 데이터에 대해서는 행키를 이용하고, 각각 암호화하여 암호화레코드기입메모리(428)에 기입한다. 이것에 의해 암호화기입메모리(428)에는 「100i」, 「wjls」, 「noevjolc」, 「jh」, 「jgdltytfhDSk」라는 1행분의 암호화데이터가 생성되게 된다.
또한 암호화처리부(427)는 기본키기억부(416b)에 세트된 파라미터값을 이용하고 각 행에 공통의 기본키로 해당 레코드의 암호화에 이용한 행키를 암호화함으로써, 그 암호화후의 행키를 암호화레코드기입메모리(428)에 부가한다. 도 16의 예에서는 「9568」이라는 데이터가 암호화후의 행키이다.
이상과 같은 처리가 데이터베이스의 각 행에 대해 반복하여 실시되고, 암호화후의 데이터베이스가 암호화데이터격납부(416d)에 격납된다. 이 상태가 도 20b에 상당한다.
한편 복호화시에는 암호화시와 역의 처리가 된다.
즉 암호화데이터격납부(416d)에 격납된 암호화데이터베이스가 레코드단위로 암호화레코드판독메모리(430)에 판독된다. 현재 1행째의 암호화레코드가 암호화레코드판독메모리(430)에 판독된다고 한다. 상기의 예이면 「1001」, 「wjls」, 「noevjolc」, 「jgdltytfhDSk」 및 「9568」이라는 행키를 포함하는 6항목으로 이루어지는 암호화데이터가 차례로 암호화레코드판독메모리(430)에 격납되게 된다.
복호화처리부(431)는 이 6항목의 데이터로 이루어지는 레코드에 대하여 키스펙테이블(416c)을 참조하여 각 항목에 따른 복호화를 실시한다. 도 15의 예에서는열번호 「1」에 상당하는 해당 1항목(「code」)의 데이터에 대해서는 비암호화이기 때문에 그대로 레코드출력메모리(432)에 기입한다.
또 열번호 「2」에 상당하는 해당 레코드의 2항목(「name」)의 데이터에 대해서는 행키를 이용하여 복호화하여 레코드출력메모리(432)에 기입한다. 단 행키에 대해서는 암호화시에 기본키로 암호화되어 있기 때문에 그 기본키를 이용하여 행키 자체를 복호화하여 원래로 되돌리는 처리가 필요하게 된다. 또 열번호 「3」에 상당하는 해당 레코드의 2항목(「name」)의 데이터에 대해서는 열키를 이용하여 복호화하고 레코드출력메모리(432)에 기입한다.
똑같이 하여 열번호 「4」에 상당하는 해당 레코드의 4항목(「age」)의 데이터에 대해서는 열키, 열번호 「5」에 상당하는 해당 레코드의 5항목(「phone」)의 데이터에 대해서는 행키를 이용하고, 각각 복호화하여 레코드출력메모리(432)에 기입한다. 이것에 의해 레코드출력메모리(432)에는 「1001」, 「jhon」, 「New York」, 「22」, 「407-228-6611」이라는 1행분의 복호화데이터(원데이터)가 생성되게 된다.
이상과 같은 처리가 암호화데이터베이스의 각 행에 대해 반복하여 실시되고, 복호화후의 데이터베이스가 데이터파일(434)에 격납된다. 이 상태가 도 20c에 상당한다.
이하 흐름도를 참조하여 본 장치의 동작에 대하여 설명한다.
여기에서는 (a) 데이터베이스를 암호화하는 경우의 처리와, (b) 데이터베이스를 검색하는 경우의 처리로 나누어 설명한다. 또한 이 흐름도에서 나타내는 각기능을 실현하는 프로그램은 CPU가 판독 가능한 프로그램코드의 형태로 상기 프로그램기억장치(414)의 기록매체에 격납되어 있다. 또 이 프로그램은 프로그램코드이 형태로 네트워크회선 등의 전송매체를 통하여 전송할 수도 있다.
(a) 데이터베이스를 암호화하는 경우
도 17a, 17b는 본 장치에서 실행되는 데이터베이스암호화처리의 동작을 나타내는 흐름도이다. 현재 데이터베이스가 암호화되어 있지 않은 상태로 외부데이터베이스기억장치(418)에 기억되어 있는 것으로 한다. 이 상태가 도 17a이다.
데이터베이스의 암호화를 실시하는 경우 우선 도 17a의 흐름도에 나타내는 바와 같이 기본키의 설정을 실시한다(스텝N11). 이 기본키의 설정은 상기한 바와 같이 기본키설정다이얼로그를 통하여 실시한다.
즉 도 17b의 흐름도에 나타내는 바와 같이 데이터베이스의 암호화시에 도 12에 나타내는 바와 같은 기본키설정다이얼로그가 표시장치(412)에 표시된다(스텝O11). 이 기본키설정다이얼로그에는 기본키지정버튼부(441)가 설치되어 있으며, 오퍼레이터는 그 기본키지정버튼부(441)에 배열된 복수개의 버튼 중의 임의의 버튼을 눌러내리는 것으로 기본키의 지정을 실시한다.
오퍼레이터가 기본키지정버튼부(441) 중의 임의의 버튼을 눌러내린 후 OK버튼(452)을 눌러내려서 지정지시를 실시하면(스텝O12) 해당 버튼의 위치에 대응한 기본키의 파라미터값이 도 13에 나타내는 기본키파라미터테이블(416a)로부터 판독되어 기본키기억부(416b)에 세트된다(스텝O13).
다음으로 암호화대상으로 되는 데이터베이스를 지정한다(스텝N12). 본 실시형태에서는 본 장치와는 독립된 외부데이터베이스기억장치(418)에 각종의 데이터베이스(원데이터)를 홀딩하고 있다. 따라서 암호화를 실시하는 경우에는 데이터베이스I/F(417)를 통하여 외부데이터베이스기억장치(418)에 액세스하고 그 중에서 암호화대상으로 되는 데이터베이스를 지정한다는 조작이 필요하게 된다.
암호화대상으로 되는 데이터베이스를 지정후 그 데이터베이스에 설치된 각 열항목 중에서 검색에 이용하는 열항목과, 암호화를 필요로 하지 않는 열항목을 각각 설정하는 동시에(스텝N13) 각 열항목에 대한 암호화키(행키와 열키)를 결정한다(스텝N14).
이들의 설정은 상기한 도 14의 키스펙설정다이얼로그를 통하여 실시한다. 이 키스펙설정다이얼로그는 오퍼레이터가 데이터베이스의 각 열항목(필드)마다 암호화방식(암호화에 이용하는 키의 종류)을 임의로 지정하기 위한 화면이며, 상기 스텝N12에서 암호화대상으로 되는 데이터베이스를 지정했을 때에 표시장치(412)에 표시된다. 여기에서는 비암호화를 포함시키고 , 0: 비암호화, 1: 행키, 2: 열키로 하며, 상기 도 14의 키스펙설정다이얼로그에 설치된 암호화방식지정란(451)에 데이터베이스의 각 열항목에 대한 암호화방식을 수치입력하도록 구성되어 있다.
이 경우 도 20a에 나타내는 데이터베이스에 있어서, 검색에 이용되는 열항목은 3열째의 「state」와 4열째의 「age」이며, 이들의 열항목에 대해서는 열키를 지정하고, 그 외의 항목인 2열째의 「name」와 5열째의 「phone」은 행키를 지정하는 것으로 한다. 또 암호화를 필요로 하지 않는 열항목은 1열째의 「code」이다. 여기에서 설정된 암호화키는 키스펙정보로서 키스펙테이블(416c)에 도 15와 같이등록된다.
이와 같은 설정조작후 데이터베이스의 암호화가 이하와 같이 실행된다.
즉 우선 데이터베이스의 각 행의 데이터가 제1행째로부터 차례로 도 11에 나타내는 레코드입력메모리(426)에 판독된다(스텝N15). 그 때 키생성장치(415)의 행키생성부(415b)에 의하여 해당 행에 할당된 행번호와 난수에 의해 행키가 랜덤으로 생성되고, 데이터기억장치(416)의 소정의 영역에 홀딩된다(스텝N16).
여기에서 레코드입력메모리(426)에 판독된 행데이터의 각 열항목이 1열재로부터 차례로 지정되고(스텝N17), 그 지정된 열항목에 대한 암호화방식이 키스펙테이블(416c)에 기억된 키스펙정보에 의거하여 판단되고(스텝N18), 행키 또는 열키를 이용하여 암호화된다(스텝N19∼N22).
구체적으로 설명하면 데이터베이스 중의 1열째의 항목인 「code」에 대해서는 도 15의 키스펙테이블(416c)에 나타내는 바와 같이 비암호화항목으로서 설정되어 있기 때문에 아무것도 하지 않는다(스텝N18∼N23). 즉 「code」의 항목은 원데이터대로이다.
또 2열째의 항목인 「name」에 대해서는 행키가 설정되어 있기 때문에 상기 스텝N16에서 생성된 해당 행번호에 대응한 행키(각 행마다 고유의 키)가 데이터기억장치(416)의 소정 영역으로부터 판독되고(스텝N18∼21), 그 행키로 2열째의 데이터가 암호화된다(스텝N22).
또 3열째의 항목인 「state」에 대해서는 열키가 설정되어 있기 때문에 해당 열번호에 대응한 열키(각 열마다 공통의 키)가 생성장치(415)의 열키생성부(415c)에 의해 생성되고(스텝N18∼N19), 그 열키로 3열째의 데이터가 암호화된다(스텝N20).
이하 똑같이 하여 4열째의 항목인 「age」에 대해서는 열키로 암호화가 실시되고, 5열째의 항목인 「phone」에 대해서는 행키로 암호화가 실시되게 된다.
암호화된 각 열항목의 데이터는 도 11의 암호화레코드기입메모리(428)에 격납된다. 여기에서 최종항목의 암호화가 종료한 시점에서 해당 행데이터의 2열째 및 3열째의 암호화에 이용된 행키가 기본키로 암호화되어 암호화레코드기입메모리(428)에 추가된다(스텝N25). 이 기본키는 키생성장치(415)의 기본키생성부(415a)에서 생성된다. 기본키생성부(415a)는 상기 도 12의 기본키설정다이얼로그에서 오퍼레이터가 설정한 파라미터값을 기본키기억부(416b)로부터 판독하고 그 파라미터값에 의거하여 기본키를 생성한다.
암호화레코드기입메모리(428)에 1행분의 암호화데이터와 행키를 기본키로 암호화한 데이터가 격납되면 그들의 데이터가 암호화데이터격납부(416d)에 보존된다(스텝N25).
이와 같은 암호화처리가 데이터베이스의 각 행마다에 대해 반복하여 실시된다(스텝N26∼N15). 모든 행의 데이터의 암호화처리가 종료하고 최종적으로 얻어진 암호화데이터베이스의 상태가 도 20b이다. 이 암호화데이터베이스에는 각 행의 최종항목에 행키가 기본키로 암호화된 상태로 부가되어 있다.
(b) 데이터베이스를 검색하는 경우
다음으로 암호화후의 데이터베이스를 검색하는 처리에 대하여 설명한다.
도 18a, 18b는 본 장치에서 실행되는 데이터베이스검색처리의 동작을 나타내는 흐름도이다. 현재 상기 (a)에서 설명한 암호화처리에서 데이터베이스가 암호화되어 암호화데이터격납부(416b)에 보존되어 있는 것으로 한다.
우선 도 18a의 흐름도에 나타내는 바와 같이 도시하지 않은 데이터베이스검색용 설정화면에서 검색정보의 입력을 실시한다(스텝P11). 검색정보의 입력이란 검색대상으로 되는 열항목과 검색용의 문자열(키워드)을 입력하는 것이다. 이들의 입력정보는 데이터기억장치(416)의 소정의 영역에 격납된다. 입력장치(413)를 통하여 검색정보가 입력되면 검색전처리가 실행된다(스텝P12).
이 검색전처리에서는 도 18b의 흐름도에 나타내는 바와 같이 검색대상으로서 입력된 열항목이 소정의 열항목인지 아닌지가 판단되고(스텝Q11), 소정의 열항목인 것이 판명된 경우에는(스텝Q11의 YES) 그 열항목에 공통의 열키로 검색용의 문자열이 암호화된다(스텝Q12).
소정의 열항목이란 상기 데이터베이스의 암호화시에 설정된 검색대상항목이며, 구체적으로는 「state」, 「age」의 각 항목이 해당한다. 이 검색항목에는 열키가 설정되어 있다. 따라서 상기 스텝Q11에서는 키스펙테이블(16c)을 참조하여 해당 열항목에 설정된 키의 종류에 의해 소정의 열항목인지 아닌지의 판단을 실시하게 된다. 소정의 열항목이면 키생성장치(415)의 열키생성부(415c)에 의해 해당 열항목에 대응한 열키를 생성하고, 그 열키로 검색용의 문자열을 암호화하게 된다.
또 검색대상으로서 입력된 열항목이 소정의 열항목이 아닌 경우에는(스텝Q11의 No) 상기와 같은 검색용 문자열의 암호화는 실시되지 않는다.
이와 같은 검색전처리후 데이터베이스의 검색처리(도 19a, 19b 참조)가 실시되고(스텝P13), 그 검색결과로서 얻어진 데이터가 표시장치(412)에 표시된다(스텝P14).
도 19a, 19b에 데이터베이스의 검색처리를 나타낸다.
도 19a, 19b는 상기 스텝P13의 검색처리의 동작을 구체적으로 나타내는 흐름도이다.
우선 도 19a의 흐름도에 나타내는 바와 같이 검색용 문자열이 데이터베이스와의 비교문자열로서 데이터기억장치(416)의 검색문자열격납부(416e)에 세트된다(스텝R11). 이 경우 상기한 바와 같이 검색대상으로서 입력된 열항목(「state」, 「age」)인 경우에는 상기 검색전처리에 의해 해당 검색용 문자열이 그 열항목에 대응한 열키로 암호화되어 검색문자열격납부(416e)에 세트된다. 그 외의 열항목의 경우에는 암호화되는 일없이 그대로의 상태로 검색문자열격납부(416e)에 세트된다.
다음에 데이터기억장치(416)의 데이터베이스격납영역(416a)에 격납된 암호화데이터베이스의 열번호에 의한 암호화방식이 판단된다(스텝R12). 그 결과 검색대상이 열키로 암호화된 소정의 열항목에 해당하는 경우에는 그 대상열의 각 행데이터가 차례로 주사되고(스텝R12∼R13), 그들의 행의 암호화문자열과 상기 검색문자격납부(416e)에 세트된 검색용 문자열(암호화된 문자열)이 비교된다(스텝R14).
이 비교처리에서는 도 19b의 흐름도에 나타내는 바와 같이 데이터베이스로부터 꺼내어진 해당 행의 암호화문자열과 검색용의 암호화문자열을 비교하고, 양자가 일치하는지 아닌지를 판단한다(스텝S11). 양자가 일치한 경우에는(스텝S11의 Yes)그 일치한 항목을 포함하는 레코드데이터를 데이터베이스검색결과로서 추출한다(스텝S12).
이 처리를 암호화데이터베이스의 종단까지 반복하여 해당하는 데이터를 차례로 추출하고(스텝R15), 이 추출한 데이터를 검색결과로서 출력한다(스텝R21).
구체적으로 설명하면 도 20b의 암호화데이터베이스의 예에서 예를 들면 「state」의 항목 중의 「Florida」라는 데이터를 검색하는 것이 지정된 경우에는 우선 검색용 데이터로서 입력된 「Florida」를 「state」의 3열째의 열키로 암호화하고 「h*/fDD」를 얻는다. 이 「h*/fDD」라는 데이터를 「state」의 열로부터 검색한다. 이것에 의해 레코드번호의 「1001」과 「1008」에 해당하는 데이터가 존재하는 것을 알 수 있다.
한편 검색대상이 행키로 암호화된 열항목에 해당하는 경우에는 그 대상열의 각 행데이터가 차례로 주사된다(스텝R12∼R16). 여기에서 이들의 행데이터의 암호화에 이용된 각 행키는 기본키로 암호화되어 있기 때문에 각 행키를 기본키로 복호화한다는 처리가 필요하게 된다(스텝R17). 각 행키가 기본키로 복호화되면 그들의 행키를 이용하여 각 행의 암호화문자열이 복호화되고(스텝R18), 그 복호화의 문자열과 상기 검색문자열격납부(416e)에 세트된 검색용 문자열(비암호화문자열)이 비교된다(스텝R19).
이 비교처리에서는 도 19b의 흐름도에 나타내는 바와 같이 데이터베이스로부터 꺼내어진 해당 행의 복호화문자열과 검색용의 비암호화문자열의 비교에 의해 양자가 일치하는지 아닌지를 판단한다(스텝S11). 양자가 일치한 경우에는(스텝S11의Yes) 그 일치한 항목을 포함하는 레코드데이터를 데이터베이스검색결과로서 추출한다(스텝S12).
이 처리를 암호화데이터베이스의 종단가지 반복하여 해당하는 데이터를 차례로 추출하고(스텝R20), 이 추출한 데이터를 검색결과로서 출력한다(스텝R21).
구체적으로 설명하면 도 20b의 암호화데이터베이스의 예에서 예를 들면 「name」의 항목 중의 「Jhon」이라는 데이터를 검색하는 것이 지정되었다고 한 경우에는 우선 「name」의 1행째에 대응한 행키 「9654」(암호화데이터)를 기본키로 복호화한 후 그 행키를 이용하여 1행째의 「wJIS」를 복호화하여 「Jhon」이라는 데이터를 얻는다. 똑같이 하여 각 행에 대응한 행키(암호화데이터)를 기본키로 복호화한 후 그 행키를 이용하여 각 행째의 데이터를 복호화하여 원래의 데이터를 얻는다. 도 20c에 나타내는 바와 같이 「name」의 항목의 각 행의 데이터를 각 행키로 복원한 후 그 중에서 검색용 데이터로서 입력된 「Jhon」과 일치하는 데이터를 검색한다. 이것에 의해 코드번호의 「1001」에 해당하는 데이터가 존재하는 것을 알 수 있다.
이와 같이 데이터베이스를 암호화할 때에 검색에 이용되는 소정의 열항목에 대해서는 열공통키로 암호화하는 것으로, 검색시에는 검색용 데이터를 그 열공통키로 암호화하고 데이터베이스상의 암호화데이터와 비교하여 고속검색을 실현할 수 있다. 또 소정의 열항목 이외의 열항목에 대해서는 각 행마다 다른 키를 주어서 암호화하고, 또한 그 행키를 기본키로 암호화해두는 것으로 키의 해독을 곤란하게 하여 고시큐어리티화를 실현할 수 있는 것이다.
상기 제 4 실시형태에서는 본 발명을 장치 단위로 구성했는데, 데이터베이스관리를 실시하는 단말과 데이터베이스검색을 실시하는 단말로 나누고, 이들의 단말로 데이터베이스시스템을 구축하는 것도 가능하다.
이하에 본 발명의 제 5 실시형태인 데이터베이스시스템에 대하여 설명한다.
도 21은 본 발명의 제 5 실시형태에 관련되는 데이터베이스시스템의 구성을 나타내는 불록도이다.
본 시스템은 1대의 서버장치(1100)와 복수대(여기에서는 3대만 나타낸다)의 휴대단말(1200a, 1200b, 1200c, …)로 구성된다. 서버장치(1100)와 각 휴대단말(1200a, 1200b, 1200c, …)의 사이는 OFF LINE이고 데이터의 수수는 기록매체(1400a, 1400b, 1400c, …)를 통하여 실시된다.
서버장치(1100)는 데이터베이스서비스를 실시하는 서버컴퓨터로서 이용되는 것이며, 각 단말에 배포하는 데이터의 수집처리를 실시하는 배포데이터수집장치(1101), 데이터베이스의 암호화처리를 실시하는 암호화장치(1102), 각종 어플리케이션소프트(AP)를 격납한 AP소프트격납부(1103), 각종의 데이터베이스를 격납한 데이터베이스격납부(1104)를 구비하고 있다. AP소프트격납부(1103) 및 데이터베이스격납부(1104)는 예를 들면 자기디스크장치 등의 데이터기억장치에 의하여 구성된다. 이 외에 서버장치(1100)에는 특히 도시하지 않지만 범용컴퓨터에 표준장치되어 있는 표시장치, 입력장치 등도 설치되어 있다.
한편 휴대단말(1200a, 1200b, 1200c, …)은 서버장치로부터 데이터베이스의 제공을 받는 클라이언트컴퓨터로서 이용되는 것이다.
휴대단말(1200a)은 암호화된 데이터베이스를 복호화처리하는 복호화장치(1201a), 데이터베이스검색처리를 실시하는 데이터베이스검색장치(1202a)를 구비하고 있다. 휴대단말(1200b, 1200c)에 대해서도 똑같은 구성이며, 각각에 복호화장치(1201b, 1201c), 데이터베이스검색장치(1202b, 1202c)를 구비하고 있다. 또 휴대단말(1200a, 1200b, 1200c)에는 특히 도시하지 않지만 표시장치, 입력장치의 외에 매체판독장치도 설치되어 있다. 이들의 휴대단말(1200a, 1200b, 1200c, …)은 ON LINE상에서 데이터를 열람하기 위한 브라우저기능을 구비하고 있지 않으며, 서버장치(1100)와의 사이의 데이터의 수수는 모두 기록매체(1400a, 1400b, 1400c, …)를 통하여 실시하도록 구성되어 있다.
기록매체(1400a, 1400b, 1400c, …)는 예를 들면 CF카드(컴팩트플래시메모리카드)로 이루어지는 휴대형의 기록매체이다. 카드리더/라이터(1300)는 이들의 기록매체(1400a, 1400b, 1400c, …)에 대한 데이터의 기입이나 판독을 실시하기 위한 디바이이스이며, 서버장치(1100)에 접속되어 있다.
이와 같은 구성에 있어서, 서버장치(1100)측에서는 데이터베이스격납부(1104)내의 각종 데이터베이스 중에서 오퍼레이터가 지정한 데이터베이스를 판독하고, 암호화장치(1102)를 통하여 암호화한다. 이 경우 암호화장치(1102)에서는 상기 제 4 실시형태와 똑같은 방법에 의해 데이터베이스를 암호화한다. 즉 검색에 이용되는 소정의 열항목에 대해서는 열공통키로 암호화하는 동시에 소정의 열항목 이외의 열항목에 대해서는 각 행마다 다른 키를 주어서 암호화하고 또한 그 행키를 기본키로 암호화한다는 처리를 실시한다.
여기에서 암호화장치(1102)에 의하여 암호화된 데이터베이스를 파일에 보존하고, 이 암호화파일을 예를 들면 CF카드 등의 휴대형 기록매체(1400a, 1400b, 1400c, …)에 카드리더/라이터(1300)를 이용하여 격납한다. 이 경우 기록매체(1400a, 1400b, 1400c, …)에 암호화파일을 격납할 때에 도 22에 나타내는 바와 같이 암호화데이터파일(1402)의 외에 키스펙테이블(1403), 기본키파라미터테이블(1404), 또한 어플리케이션프로그램(1401)도 격납해둔다.
키스펙테이블(1403)은 데이터베이스의 각 열(필드)마다 정의된 암호화방식의 종류(비암호화, 행키, 열키)를 기억한 테이블이며, 상기 제 4 실시형태에 있어서의 키스펙테이블(416c)과 똑같은 구성을 갖는다(도 15 참조). 기본키파라미터테이블(1404)은 기본키의 파라미터값이 등록된 테이블이며, 상기 제 4 실시형태에 있어서의 기본키파라미터테이블(416a)과 똑같은 구성을 갖는다(도 13 참조). 이 키스펙테이블(1403) 및 기본키(1404)는 암호화장치(1102)내에 홀딩되어 있었던 것이다. 또 어플리케이션프로그램(1401)은 데이터베이스검색용의 프로그램이며, AP소프트격납부(1103)내에 홀딩되어 있었던 것이다.
이들의 정보가 격납된 기록매체(1400a, 1400b, 1400c, …)는 휴대단말(1200a, 1200b, 1200c, …)을 취급하는 각 사용자에게 각각 배포된다. 각 사용자는 배포된 기록매체(1400a, 1400b, 1400c, …)를 자신이 갖는 단말에 삽입하는 것으로 데이터검색을 실시할 수 있다.
즉 예를 들면 휴대단말(1200a)이면 배포된 기록매체(1400a)를 삽입하는 것으로 그 기록매체(1400a)에 기록되어 있었던 데이터검색용의 어플리케이션프로그램(1401), 암호화데이터파일(1402)의 외에 키스펙테이블(1403), 기본키파라미터테이블(1404)을 판독한다. 그리고 데이터검색용의 어플리케이션프로그램(1401)을 기동하고, 소망의 열항목을 지정하여 암호화데이터파일(1402)에 대한 검색을 실시하고, 그 검색결과로서 얻어진 데이터를 복호화하여 표시한다.
데이터검색은 휴대단말(1200a)에 설치된 데이터베이스검색장치(1202a)에서 실시된다. 이 데이터베이스검색장치(1202a)는 데이터검색용의 어플리케이션프로그램(1401)에 따라서 동작하고, 상기 제 4 실시형태와 똑같은 데이터베이스검색장치를 실행한다. 또 데이터복호화는 복호화장치(1201a)에서 실시된다. 이 복호화장치(1201a)는 키스펙테이블(1403) 및 기본키파라미터테이블(1404)을 참조하여 상기 제 4 실시형태와 똑같은 데이터베이스복호화처리를 실행한다.
이와 같이 데이터베이스관리를 실시하는 단말과 데이터베이스검색을 실시하는 단말로 나누어 데이터베이스시스템을 구축하도록 하면, 예를 들면 고객관리용의 데이터베이스를 암호화하여 기록매체에 기록하고 이것을 영업맨에게 배포하며 영업맨은 별도의 단말을 이용하여 데이터검색을 실시한다는 것과 같은 이용이 가능하게 된다. 이 경우 기록매체에 기록된 데이터베이스는 상기한 바와 같은 방법으로 암호화되어 있기 때문에 그 데이터의 기밀성을 홀딩할 수 있다. 또 기록매체에는 암호화파일 뿐만이 아니라 데이터검색용의 어플리케이션프로그램도 격납되어 있다. 따라서 휴대단말에는 데이터검색용의 어플리케이션프로그램을 탑재해둘 필요는 없고, 간이한 구성의 휴대단말로 본 시스템을 실현할 수 있다는 이점이 있다.
이상 데이터베이스관리장치에 따르면, 데이터베이스를 암화호할 때에 검색에 이용되는 소정의 열항목 이외의 열항목의 데이터에 대해서는 각 행마다 키를 달리 하여 암호화하고, 또한 해당 열항목의 암호화에 이용된 키를 별도의 키로 재암호화하도록 했기 때문에, 키의 해독을 곤란하게 하여 고시큐어티화를 실현할 수 있다.
이하에 상기 데이터베이스관리장치에 사용하는 암호화복호화방식에 대하여 설명한다.
도 23은 암호통신을 실시하는 시스템의 구성을 나타내는 개념도이다. 도면 중 11a, 11b는 퍼스널컴퓨터(이하 PC라 칭한다), 12a, 12b는 시큐어리티디바이스이며, 여기에서는 사용자 A가 소유하는 PC(11a)와 사용자 B가 소유하는 PC(11b)의 사이에서 데이터통신을 실시하는 경우를 상정하고 있다.
PC(11a, 11b)는 범용컴퓨터이며, 각각에 시큐어리티디바이스(12a, 12b)의 접속이 가능하다. 시큐어리티디바이스(12a, 12b)는 IC카드로 이루어진다. 이 시큐어리티디바이스(12a, 12b)에는 공장출하시에 어느 정도의 정보가 기입되어 있다. 어느 정도의 정보란 해당 IC카드의 제조번호, 그룹의 각 멤버의 사용자ID, 암호화키(비밀키(P1, P2))에 관한 정보이다. 이들의 정보는 그룹의 각 멤버에 공통의 정보이며 비공개이다.
도 24는 상기 PC(11a) 및 시큐어리티디바이스(12a)의 회로구성을 나타내는 블록도이다. 또한 PC(11b) 및 시큐어리티디바이스(12b)의 구성에 대해서도 똑같다.
PC(11a)는 범용컴퓨터로 이루어지며, CPU(21)를 구비하고, 주프로그램의 기동에 의해 데이터처리를 실행한다. 이 CPU(21)에는 시스템버스를 통하여 기억장치(22), RAM(23), 키보드(24), 표시부(25), 카드I/F(인터페이스)(26)가 접속되어 있다.
기억장치(22)는 예를 들면 하드디스크장치나 플로피디스크장치, CD-ROM장치 등으로 이루어지며, 각종의 데이터나 프로그램 등을 기억하는 것이고, 여기에서는 암호화의 대상으로 되는 원문데이터나 후술하는 인증파일 등을 기억하고 있다. 또 이 기억장치(22)에는 기록매체(디스크 등)에 기억된 프로그램이 인스톨된다. CPU(21)는 이 기억장치(22)에 인스톨된 프로그램을 판독하고, 동일 프로그램에 따른 처리를 실행한다.
RAM(23)은 본 장치의 메인메모리로서 기능하고, 본 장치의 처리에 필요한 각종 데이터를 기억하는 것이다. 키보드(24)는 데이터의 입력이나 각종 펑션의 지시를 실시하기 위한 입력장치이다. 표시부(25)는 예를 들면 CRT(Cathode Ray Tube)나 LCD(Liquid Crystal Display) 등으로 이루어지며, 데이터의 표시를 실시하기 위한 표시장치이다.
또 카드I/F(26)는 커넥터(27)를 통하여 시큐어리티디바이스(12a)를 접속하고, 그 시큐어리티디바이스(12a)와의 사이에서 데이터의 입출력제어를 실시한다.
한편 시큐어리티디바이스(12a)는 IC카드로 이루어지며, CPU(31)를 구비하고, 부프로그램의 기동에 의해 데이터처리를 실행한다. 이 CPU(31)에는 시스템버스를 통하여 ROM(32), RAM(33), 플래시메모리(36)가 접속되어 있다.
ROM(32)에는 시큐어리티디바이스(12a)로서의 기능을 실현하기 위한 부프로그램을 기억하고 있다. RAM(33)은 시큐어리티디바이스(12a)의 처리에 필요한 각종 데이터를 기억하는 것이며, 여기에서는 PC(11a)로부터 송신된 데이터를 일시 격납해두기 위한 입력버퍼(34)와 PC(11a)에 송신하는 데이터를 일시 격납해두기 위한 출력버퍼(35)를 갖는다.
플래시메모리(36)는 도 25에 나타내는 데이터베이스(41)를 기억해두기 위한 기억장치로서 이용된다. 도 25에 나타내는 바와 같이 이 데이터베이스(41)는 상기한 각 멤버 공통의 정보(비공개정보)와 각 멤버마다 고유의 정보(공개정보)로 구성된다. 각 멤버 공통의 정보(비공개정보)란 제조번호, 그룹의 각 멤버의 사용자ID, 암호화키데이터(비밀키(P1, P2))이다. 각 멤버마다 고유의 정보(공개정보)란 암호화키데이터(공개키(P3, P4))와 패스워드이다. 또한 패스워드는 공개키의 일부로서 이용된다.
또 커넥터(37)는 시큐어리티디바이스(12a)를 PC(11a)에 전기적으로 접속하기 위한 것이다. 여기에서 도 23의 시스템에 있어서 암호통신을 실시하는 경우의 동작을 간단하게 설명해둔다.
우선 IC카드로서 이용되는 시큐어리티디바이스(12a, 12b)를 그룹의 각 멤버에게 건네준다. 이 시큐어리티디바이스(12a, 12b)에는 데이터베이스(41)가 설치되어 있으며, 그 데이터베이스(41)에는 미리 제조번호, 그룹의 각 멤버의 사용자ID, 암호화키데이터(비밀키(P1, P2))가 등록되어 있다.
각 멤버는 이 시큐어리티디바이스(12a, 12b)에 암호화키(공개기(P3, P4))와 패스워드를 기입한다. 여기에서 기입된 정보는 데이터베이스(41)의 공개부분에 격납된다.
여기에서 예를 들면 PC(11a)에서 PC(11b)에 암호통칭하는 경우에는 각 멤버(사용자 A, B)는 시큐어리티디바이스(12a, 12b)를 PC(11a, 11b)에 각각 끼워넣어서 암호화를 실시한다. 이 경우 본 발명에 있어서 암호화의 알고리즘은 후술하는 벡터발생에 의한다.
이 때의 벡터를 발생시키는 비선형함수를 결정하는 파라미터(이하 “정수”라고도 쓴다)를 암호화키(비밀· 공개키)로 결정한다. 암호화된 문서는 공개키와 함께 상대방에게 송신된다. 수신측에서는 받아들인 공개키와 자신이 갖고 있는 비밀키로 그 암호화문서를 같은 비선형함수를 이용하여 생성되는 벡터를 이용하여 복호화한다.
다음으로 동일 실시형태의 동작에 대해서 설명한다. 여기에서는 도 23에 나타내는 PC(11a)와 시큐어리티디바이스(12a)에 착안하여 (a) 사용자등록, (b) 데이터암호화의 2개의 모드로 나누어 각각의 처리동작에 대해서 설명한다.
(a) 사용자등록
우선 사용자는 시큐어리티디바이스(12a)를 이용한 암호통신을 실시할 때에 사용자등록을 실시한다. 이것은 시큐어리티디바이스(12a)(IC카드)를 받은 멤버가 자신의 PC(11a)에 상기 도 25의 공개부분에 관한 정보를 등록하는 것이다.
도 26a, 26b는 사용자등록시의 PC(11a)와 시큐어리티디바이스(12a)의 처리동작을 나타내는 흐름도이다.
사용자는 PC(11a)상의 주프로그램을 통해 사용자인증데이터를 PC(11a)에 입력한다(스텝A11). 이 경우 사용자인증데이터란 사용자ID로 한다. 주프로그램은 여기에서 입력된 사용자ID를 시큐어리티디바이스 (12a)의 입력버퍼(34)에 전송한다(스텝A12). 그리고 제어를 시큐어리티디바이스 (12a)상의 부프램그램에 건네준다.
시큐어리티디바이스(12a)측에서는 부프로그램이 입력버퍼(34)에 데이터가 존재하는 것을 확인하면 그것을 판독한다(스텝B11). 그리고 부프로그램은 시큐어리티디바이스(12a)상의 플래시메모리(36)를 액세스하고, 이 플래시메모리(36)에 설치된 데이터베이스(41) 중에 사용자인증데이터로서 입력된 사용자ID가 등록되어 있는지 아닌지를 체크한다(스텝B12).
그 결과 데이터베이스(41)에 해당 사용자ID가 등록되어 있지 않은 경우에는 (스텝B12의 No) 그룹의 멤버가 아니라고 판단되어 이후의 처리는 중단된다(스텝B13).
한편 데이터베이스(41)에 해당 사용자ID가 등록되어 있는 경우에는(스텝B12의 Yes) 그룹의 멤버라고 판단되어 패스워드 및 암호화키(공개키)의 요구가 PC(11a)에 대해 실시된다(스텝B14).
사용자는 이 요구에 따라서 패스워드 및 암호화키(공개키)를 입력한다(스텝A13). PC(11a)상의 주프로그램은 여기에서 입력된 패스워드 및 암호화키(공개키)를 시큐어리티디바이스(12a)의 입력버퍼(34)에 전송한다(스텝A14). 또한 패스워드는 공개키의 일부로서 이용된다.
이와 같이 하여 그룹멤버로서 인정된 사용자로부터 패스워드 및 암호화키(공개키)가 입력되면 시큐어리티디바이스(12a)의 부프로그램은 그들의 입력정보를 판독하고 필요에 따라서 암호화한 후에 플래시메모리(36)에 설치된 데이터베이스(41)의 공개부분에 기입한다(스텝B15).
이 시점에서 사용자가 암호화에 사용하는 비선형함수가 결정된다. 이 함수 중에서 사용되는 복수의 정수는 키에 의해 고정화되어 있다. 또한 본 발명의 실시형태에서는 이 비선형함수로서 다차원벡터생성함수를 이용하고 있는 것이 특징이나 그것에 대해서는 후에 설명한다.
이들의 정보처리후 부프로그램은 데이터베이스(41)의 레포트를 작성하고(스텝B16) 이것을 시큐어리티디바이스(12a)상의 출력버퍼(35)에 격납한 후 제어를 PC(11a)상의 주프로그램에 건네준다(스텝B17).
여기에서 상기 레포트에는 주프로그램이 사용자인증에 사용하는 데이터가 암호화된 후에 기입되어 있다. PC(11a)측에서는 주프로그램이 시큐어리티디바이스 (12a)상의 출력버퍼(35)에 데이터가 있는 것을 확인한 후에 그것을 판독하고 기억장치(22)에 파일데이터로서 기입한다(스텝A15). 여기에서 기입된 파일데이터는 인증파일로 되고 이후의 암호통신을 실행할 때의 사용자인증에 사용된다(스텝A16).
(b) 데이터암호화
여기에서 말하는 데이터암호화란 실제로 작성문서를 암호화하여 송신하는 것을 가리킨다.
도 27a, 27b는 데이터암호화시의 PC(11a)와 시큐어리티디바이스(12a)의 처리동작을 나타내는 흐름도이다. 사용자는 시큐어리티디바이스(12a)(IC카드)를PC(11a)에 장착한 상태에서 자신의 사용자ID와 패스워드를 입력한다(스텝C11). 이 사용자ID와 패스워드의 입력에 의해 PC(11a)상의 주프로그램은 기억장치(22)에 격납된 인증버퍼를 참조하여 사용자인증을 실시한다(스텝C12).
이 인증결과에 의해(스텝C121) 사용자가 등록사용자가 아닌 경우(C121의 No) 주프로그램은 종료절차에 들어간다(스텝C16). 사용자가 등록사용자인 것을 확인한 경우(C121의 Yes) 주프로그램은 이 때 입력된 사용자ID와 패스워드를 시큐어리티디바이스(12a)에 보낸다(스텝C13).
시큐어리티디바이스(12a)측에서는 부프로그램이 상기 사용자ID와 패스워드를 판독한다(스텝D11). 그리고 부프로그램은 그들의 정보와 플래시메모리(36)에 설치된 데이터베이스(41)의 내용을 비교하여 사용자가 정당한 사용자인 것을 인증한다(스텝D12).
이 사용자인증의 결과 부프로그램은 사용자가 시큐어리티디시스템의 등록자인지 아닌지를 기술한 인증레포트를 작성하고, 이 인증레포트를 시큐어리티디바이스(12a)에 전송하여 제어를 PC(11a)상의 주프로그램에 건네준다(스텝D13).
PC(11a)측에서는 주프로그램이 시큐어리티디바이스(12a)로부터 보내져온 인증레포트를 판독하고, 시큐어리티디바이스(12a)에서 사용자인증이 실시된 것을 확인한다(스텝C14).
여기에서 상기 사용자인증으로 등록사용자인 것이 부정된 경우 즉 인증레포트에 비등록자인 취지가 기술되어 있었던 경우에는(스텝C15의 No) PC(11a)의 주프로그램은 사용자에 그 취지를 통지하고 처리를 중단한다(스텝C16).
또 상기 사용자인증으로 등록사용자인 것이 확인된 경우 즉 인증레포트에 등록자인 취지가 기술되어 있었던 경우에는(스텝C15의 Yes), PC(11a)의 주프로그램은 이하와 같은 암호통신을 실행하게 된다.
즉 주프로그램은 기억장치(22) 중에서 암호화의 대상이 되는 원문데이터(작성문서)를 판독하고, 이것에 상기 인증레포트를 첨부하여 시큐어리티디바이스(12a)의 입력버퍼(34)에 전송하여 제어를 시큐어리티디바이스(12a)상의 부프로그램에 건네준다(스텝C17).
또한 원문서에 인증레포트를 첨부하는 것은 시큐어리티디바이스(12a)가 인증한 등록자로부터의 문서인 것을 시큐어리티디바이스(12a)에 확인시키기 위한 것이다.
시큐어리티디바이스(12a)측에서는 부프로그램이 PC(11a)로부터 보내져온 원문데이터를 판독한다(스텝D14). 그 때 원문데이터에 인증레포트가 첨부되어 있지 않으면(스텝D15의 No) 등록자로부터의 문서가 아니라고 판단되어 이후의 처리는 중단된다(스텝D16).
한편 원문데이터에 인증레포트가 첨부되어 있으면(스텝D15의 Yes) 등록자로부터의 문서라고 판단되어 부프로그램은 후술하는 다차원벡터를 이용한 암호화방식에 의해 해당 원문데이터를 암호화한다(스텝D17). 그리고 부프로그램은 복호키 (공개키)와 함께 암호문데이터(암호화문서)를 시큐어리티디바이스(12a)의 출력버퍼 (35)에 격납하여 이것을 PC(11a)에 송신한다(스텝D18).
PC(11a)상의 주프로그램은 시큐어리티디바이스(12a)로부터의 복호키 및 암호문데이터(암호화문서)를 받아들임으로써(스텝C18) 이것을 PC(11a)의 기억장치(22)상의 파일로서 출력하거나 또는 전자메일 등의 통신용소프트웨어에 제어를 건네주고 외부(도 1의 PC(11b))에 송신한다(스텝C19).
다음으로 시큐어리티디바이스(12a)에서 실행되는 암호화의 처리동작에 대하여 설명한다.
도 28a는 암호화의 처리동작을 나타내는 흐름도이다.
암호화의 대상이 되는 원문데이터(메시지데이터)를 M으로 한다(스텝E11). 이 데이터(M)는 2진데이터이다. 시큐어리티디바이스(12a)상의 부프로그램은 우선 이 데이터(M)에 대하여 bit단위로 스크램블 1을 건다(스텝E12). 이렇게 하여 얻어진 데이터를 M′로 한다(스텝E13).
여기에서 부프로그램은 이 데이터(M′)에 수학적으로 차례로 생성되는 난수를 XOR(배타적 논리합)하여 암호화를 실시한다(스텝E14). 이 때 난수의 발생의 함수에 다차원벡터(r)의 생성함수를 이용한다. 이 경우 다차원벡터(r)를 발생시키는 함수 또는 그 함수에 이용되는 정수는 암호화키(비밀· 공개키)로 결정된다.
즉 부프로그램은 암호화에 대하여 데이터베이스(41)로부터 비밀키(P1, P2) 및 공개키(P3, P4)를 판독하고, 그들의 암호화키를 파라미터정수로서 이용한 함수에 따라서 다차원벡터(r)를 생성하며, M′XORr이라는 논리연산을 실시하여 데이터(M)을 암호화한다. 이렇게 하여 얻은 암호문데이터를 C로 한다(스텝E15).
구체적으로 설명하면 예를 들면 도 29에 나타내는 바와 같이 r이 3차원벡터(x, y, z)이고, 그 벡터성분(x, y, z)의 계산정밀도가 16bit인 것으로 한다. 이 3차원벡터r(x, y, z)를 후술하는 식 (1)에 따라서 r0, r1, r2, r3 …라는 것과 같이 차레로 발생한다.
즉 데이터(M)가 8bit데이터의 열로서 m0 m1 m2 m3 m4 m5 m6 …으로 주어졌을 때(1문자 8bit의 문자열), M은 상기 계산정밀도(16bit)에 의거하여 그 요소의 2개(8bit)씩으로 분해된다. 그리고, 3차원벡터가 r0인 경우에는 데이터(M)와 r0(x0, y0, z0)의 XOR(배타적 논리합)에 의해 (xXORm0m1)(yXORm2m3)(zXORm4m5)…라는 계산이 실시되고, 이 계산결과로서 C0 C1 C2 C3 C4 C5 …라는 암호문데이터(C)가 얻어진다.
부프로그램은 이와 같이 하여 얻어진 데이터(C)에 대하여 또한 bit단위로 스크램블 2를 건다(스텝E16). 이렇게 하여 얻어진 데이터를 C′로 하고 최종적인 암호문데이터로서 출력한다(스텝E17).
또한 상기의 처리에서 C′를 고쳐서 M′로 간주하여 상기 똑같은 암호화를 반복함으로써 부정해독의 곤란함의 레벨을 올릴 수 있다. 또 이 때의 다차원벡터 (r)를 생성하는 함수의 형태를 바꾸면 부정해독의 곤란함은 더욱 증가하게 된다.
다음으로 시큐어리티디바이스(12a)에서 실행되는 복호화의 처리동작에 대하여 설명한다.
도 28b는 복호화의 처리동작을 나타내는 흐름도이다.
복호화는 기본적으로는 상기 암호화처리의 역의 처리를 실시하면 된다. 즉 암호문데이터를 C′로 하면(스텝F11) 시큐어리티디바이스(12a)상의 부프로그램은 우선 이 데이터(C)에 대하여 bit단위로 상기 암호화시에 실시한 스크램블 2와는 역의 스크램블 2를 건다(스텝F12). 이것에 의해 스크램블 2를 걸기 전의 데이터(C)가 얻어진다(스텝F13).
다음으로 부프로그램은 CXORr이라는 계산을 실시하여 데이터(C)를 복호화한다(스텝F14). 이것에 의해 암호화를 실시하기 전의 데이터(M′)가 얻어진다(스텝F15).
그리고 부프로그램은 이 데이터(M′)에 대해서도 bit단위로 상기 암호화시에 실시한 스크램블 1과는 역의 스크램블 1을 건다(스텝F12). 이것에 의해 스크램블 1을 걸기 전의 데이터 즉 원문데이터(M)가 얻어진다(스텝F17).
또한 암호화의 처리에서 C′를 고쳐서 M′로 간주하여 암호화를 반복하거나, 다차원벡터(r)를 생성하는 함수의 형태를 바꾸거나 하는 처리가 가해져 있으면 그 처리에 대응시켜서 복호화의 처리를 실시하는 것으로 한다.
그런데 본 발명의 실시형태에서는 다차원벡터(r)를 이용한 암호화에 있어서, 다차원벡터(r)를 취급하는 함수를 결정하는 파라미터(정수)의 집합(P)을 2개의 부분으로 나누고,
로 나타낸다. 여기에서 Ps는 비밀파라미터이고, 데이터베이스(41)의 비공개부분에 격납되는 암호화키(비밀키(P1, P2))에 상당한다. Pp는 공개파라미터이고, 데이터베이스(41)의 공개부분에 격납되는 암호화키(공개키(P3, P4))에 상당한다. Pp와 Ps는 함께 사용자인증과 데이터의 암호화와 복호화에 사용된다.
또한 본 실시형태에서는 Ps를 2개, Pp를 2개로 하고 있으나, 파라미터의 수는 이것에 한정되지 않는 것은 분명하다.
다음으로 본 발명의 실시형태에 관련되는 암호화방식에 대하여 설명한다.
N(N≥1)차원의 공간을 채우는 벡터를 r로 하고, 그 초기값(r0)에서 수차적으로 새로운 벡터(rj(j=0, 1, 2, 3 …))를 발생하는 행렬을 R로 한다. 이 때 rj는 이하와 같은 식 (1)의 비선형함수로 나타내어진다.
····(1)
여기에서 a는 적당한 정수계수이다. P는 행렬에 사용되는 정수의 집합이고, 데이터베이스(41)의 비공개부분에 격납되는 암호화키(비밀키(P1, P2))와 데이터베이스(41)의 공개부분에 격납되는 암호화키(공개키(P3, P4))가 사용된다. c는 벡터를 병진이동하는 정수벡터이다.
상기 식 (1)에 있어서, 계수(a)는 행렬(R)에 적당한 제약(예를 들면 |R|≤1)을 설치했을 때에 각 벡터가 다차원공간의 폐공간영역내에 존재하기 위한 조건을 준다. 정수벡터(c)는 벡터(rj)가 수렴할 때, 「트리비얼」인 점(예를 들면 r=0)과 같은 무의미한 점)으로 되지 않는 것을 보증한다(물론 c=0도 허가된다).
n차원공간에서는 벡터(r)는 n개의 요소를 갖는다. r=(x1, x2 … xn). 계산기상에서는 수치데이터는 일반적으로 콤파일러가 정의하는 비트길이(m)의 정밀도(예를 들면 8바이트 또는 64비트)로 표현되어 있다. 따라서 벡터의 수차 생성법의 어느 순간에 n×m의 데이터의 정밀도로 벡터(r)를 재현할 수 없으면 그에 계속되는 벡터(r)는 정확하게는 재현할 수 없다(또는 그러한 것과 같은 행렬(R)을정의한다). 이것은 벡터(r)의 초기값(r0)에 대해서도 똑같고, 초기값(r0)을 n×m의 데이터의 정밀도로 재현했을 때에만 그것에 계속되는 벡터(r1, r2, r3…)의 재현성이 보증된다.
본 발명의 실시형태에 따른 암호화는 상기 식 (1)을 이용하여 얻어진 벡터(r)의 성분을 그 데이터정의길이에 따라서 1개 내지 복수개 나열하고 그 총 비트길이에 대응한 문자열(1문자당 8비트가 보통)과 비트마다의 배타논리연산(XOR)을 실시한다. 이것을 제 1 암호화라고 한다. 이것에 대해서는 상기 도 29에서 서술한 바와 같다.
이 절차는 암호해독으로의 대책으로서 2중화하는 것도 가능해진다. 이 경우 다시 식 (1)의 행렬(R)을 바꾸어 새로운 벡터를 발생시키고, 제 1 암호화와 같은 방법에 의해 암호화를 실시해도 좋다. 이것을 제 2 암호화로 한다.
구체적인 예로서 n=2의 경우를 생각한다. 우선 rj-1을 이 평면에 세운 법선의 주위에 θ만큼 회전하는 연산으로서 R을 정의하면 R은 2×2의 매트릭스로 되고, 다음과 같이 나타내어진다.
····(2)
이 경우 θ는 일종의 매개변수로 되어 있다. 즉 매개변수가 ri-1의 함수로서 주어지고,
····(3)
으로 나타내어질 때 상기 식 (2)로 나타내어지는 변수는 형식적으로 상기 식 (1)로 나타내어지고, 이 경우 그 비선형화에 의해 벡터의 생성과정은 복잡화된다.
또한 상기 식 (3)에 있어서, P는 비선형함수(f)에 사용되는 정수의 집합으로서 정의되는 것이며, 데이터베이스(41)의 비공개부분에 격납되는 암호화키(비밀키(P1, P2))와 데이터베이스(41)의 공개부분에 격납되는 암호화키(공개키(P3, P4))가 사용된다.
이와 같이 수차적으로 발생시킨 다차원공간을 채우는 벡터(r)를 암호화에 사용하는 것으로 RSA와 같은 암호화에 비햐여 계산기의 처리정밀도나 처리능력에 의존하지 않는 암호화를 실현할 수 있다.
또 어플리케이션의 추가, 변경도 용히하게 실시할 수 있다. 또한 암호의 해독에는 상기 식 (1)의 정수계수(a), 정수(P(비밀·공개키)), 정수벡터(c), 그리고 벡터의 초기값(r0)을 정확히 줄 필요가 있기 때문에 이것은 거의 불가능에 가깝다.
예를 들면 3차원벡터를 생각하여 P가 5개의 정수를 포함한다고 하면 초기값(r0)로서 주어져야 할 수치의 수는,
1(A) + 5(P) + 3(r0) + 3(c)=12
로 되고, 그 각각이 8자리의 실수인 경우에는 10-96의 확율로 모든 벡터가 재현된다. 이 확율은 거의 0에 가깝고, 암호해독은 불가능에 가까운 것을 의미한다.
또한 본 발명에 이용되는 방법에서는 회전행렬(R)(θ)의 θ를 부여하는함수(f)를 명시적으로 줄 필요가 있고, 이 것이 암호의 부정해독을 보다 복잡하게 하고 있는 것을 의미한다. 또한 상기 실시형태에서는 비밀키 및 공개키를 정의로서 결정되는 함수를 이용해서 벡터를 생성했는데 적어도 공개키를 정의로서 결정되는 함수를 이용하여 벡터를 생성하도록 해도 좋다.
또 벡터발생의 함수를 결정하는 각 정수(a, P, c)는 사용개시시에 결정한 것을 고정적으로 사용하고 함수형도 고정으로 했는데, 예를 들면 함수를 결정하는 정수에 패스워드(공개키의 일부로서 사용되는 암호화키)의 의존성을 갖게 하는 등의 응용도 가능하다. 이하에 그 응용예를 나타낸다.
n(n≥1)차원의 공간의 폐영역내에 정의된 벡터를 수차적으로 생성하고, 그 생성된 각 벡터가 일치하지 않는 것과 같은 함수를 이용한 암호화에 있어서 그 함수를 결정하는 각 정수에 패스워드의 의존성을 갖게 하는 것도 가능하다. 또한 패스워드는 공개키의 일부로서 이용되는 것이다. 또 함수형은 고정으로 한다. 즉 상기 식 (1)에 있어서,
a → a(K)
P → P(K)
c → c(K)
로 한다. 여기에서 a는 정수계수, P는 행렬에 사용되는 정수의 집합(비밀·공개키), c는 벡터를 병진이동하는 정수벡터, 그리고 K는 패스워드이다.
패스워드(K)는 사용자에 의해 입력되고 데이터베이스(41)의 공개부분에 격납되어 있다. 부프로그램은 이 데이터베이스(41)로부터 패스워드(K)를 판독하고 그패스워드(K)에 의거하여 상기 식 (1)의 각 정수(a, P, c)를 결정한다. 그리고 이들의 정수를 이용한 함수에 의해 다차원벡터를 생성하고 데이터의 암호화를 실시한다.
이와 같이 함수를 결정하는 각 정수에 패스워드의 의존성을 갖게 함으로써 각 정수가 고정적인 경우에 비해 암호의 안전성을 더욱 향상시킬 수 있다.
n(n≥1)차원의 공간의 폐영역내에 정의된 벡터를 수차적으로 생성하고, 그 생성된 각 벡터가 일치하지 않는 것과 같은 함수를 이용한 암호화에 있어서, 그 함수를 결정하는 각 정수에 패스워드 및 실시간의 의존성을 갖게 하는 것도 가능하다. 또한 패스워드는 공개키의 일부로서 이용되는 것이다. 또 함수형은 고정으로 한다. 즉 상기 식 (1)에 있어서,
a → a(K, t)
P → P(K, t)
c → c(K, t)
로 한다. 여기에서 a는 정수계수, P는 행렬에 사용되는 정수의 집합(비밀·공개키), c는 벡터를 병진이동하는 정수벡터, 그리고 K는 패스워드, t는 실시간이다.
패스워드(K)는 사용자에 의해 입력되고 데이터베이스(41)의 공개부분에 격납되어 있다. 부프로그램은 이 데이터베이스(41)로부터 패스워드(K)를 판독하고, 그 패스워드(K)와 실시간(t)에 의거하여 상기 식 (1)의 각 정수(a, P, c)를 결정한다. 그리고 이들의 정수를 이용한 함수에 의하여 다차원벡터를 생성하고 데이터의 암호화를 실시한다.
이와 같이 함수를 결정하는 각 정수에 패스워드의 의존성을 갖게 하고, 또한 각 정수에 실시간의 의존성을 갖게 함으로써 각 정수가 패스워드뿐만 아니라 실시간에 의해서도 변화하게 되어, 암호의 안전성을 더욱 향상시킬 수 있다.
또한 n(n≥1)차원의 공간의 폐영역내에 정의된 벡터를 수차적으로 생성하고 그 생성된 각 벡터가 일치하지 않는 것과 같은 함수를 이용한 암호화에 있어서, 그 함수를 결정하는 각 정수에 패스워드 및 실시간의 의존성을 갖게 하고, 또한 함수의 행렬선택에 패스워드의존성을 갖게 하는 것도 가능하다. 또한 패스워드는 공개키의 일부로서 이용되는 것이다. 즉 상기 식 (1)에 있어서,
a → a(K, t)
P → P(K, t)
c → c(K, t)
로 하고, 또한
R → RK
로 한다. 여기에서 a는 정수계수, P는 행렬에 사용되는 정수의 집합(비밀·공개키), c는 벡터를 병진이동하는 정수벡터, 그리고 K는 패스워드, t는 실시간, R은 행렬이다.
패스워드(K)는 사용자에 의하여 입력되고 데이터베이스(41)의 공개부분에 격납되어 있다. 부프로그램은 이 데이터베이스(41)로부터 패스워드(K)를 판독하고그 패스워드(K)와 실시간(t)에 의거하여 상기 식 (1)의 각 정수(a, P, c)를 결정한다.
또 부프로그램은 이들의 정수를 이용하는 행렬(R)을 패스워드(K)에 따라서 선택한다. 그리고 이 선택된 행렬()에 의하여 다차원벡터를 생성하고 데이터의 암호화를 실시한다.
이와 같이 행렬을 결정하는 각 정수에 패스워드의 의존성을 갖게 하고, 또한 각 정수에 실시간의 의존성을 갖게 하며, 또한 행렬을 패스워드에 따라서 선택함으로써 각 정수가 패스워드뿐만 아니라ㅓ 실시간에 의해서도 변화하고, 또한 그들의 정수를 이용하는 함수 자체가 패스워드로 선택되기 때문에 암호화의 정밀도를 더욱더 향상시킬 수 있다.
n(n≥1)차원의 공간의 폐영역내에 정의된 벡터를 수차적으로 생성하고 그 생성된 각 벡터가 일치하지 않는 것과 같은 함수를 이용한 암호화에 있어서, 그 행렬을 결정하는 각 정수에 패스워드 및 실시간의 의존성을 갖게 하는 것도 가능하다. 또한 패스워드는 공개키의 일부로서 이용되는 것이다. 또 함수형의 선택에 패스워드 및 실시간의 의존성을 갖게 한다.
즉 상기 식 (1)에 있어서,
a → a(K, t)
P → P(K, t)
c → c(K, t)
로 하고, 또한
R → RK, t
로 한다. 여기에서 a는 정수계수, P는 행렬에 사용되는 정수의 집합(비밀·공개키), c는 벡터를 병진이동하는 정수벡터, 그리고 K는 패스워드, t는 실시간, R은 행렬이다.
패스워드(K)는 사용자에 의하여 입력되고 데이터베이스(41)의 공개부분에 격납되어 있다. 부프로그램은 이 데이터베이스(41)로부터 패스워드(K)를 판독하고 그 패스워드(K)와 실시간(t)에 의거하여 상기 식 (1)의 각 정수(a, P, c)를 결정한다.
또 부프로그램은 이들의 정수를 이용하는 행렬(R)을 패스워드(K) 및 실시간 (t)에 따라서 선택한다. 그리고 이 선택된 행렬(R)에 의하여 다차원벡터를 생성하고 데이터의 암호화를 실시한다.
이와 같이 행렬을 결정하는 각 정수에 패스워드의 의존성을 갖게 하고, 또한 각 정수에 실시간의 의존성을 갖게 하며, 또한 행렬을 패스워드와 실시간에 따라서 선택함으로써 각 정수가 패스워드뿐만 아니라 실시간에 의해서도 변화하고, 또한 그들의 정수를 이용하는 함수 자체가 패스워드와 실시간에 따라서 선택되기 때문에 암호의 안전성을 더욱더 향상시킬 수 있다.
n(n≥1)차원의 공간의 폐영역내에 정의된 벡터를 수차적으로 생성하고 그 생성된 각 벡터가 일치하지 않는 것과 같은 복수의 함수를 선형결합하여 새로운 함수를 정의 하는 것이며, 그 결합되는 각각의 함수에 대하여 함수를 결정하는 정수에패스워드 및 실시간의 의존성을 갖게 할 수도 있다. 또한 패스워드는 공개키의 일부로서 이용되는 것이다. 또 함수형의 선택에 패스워드 및 실시간의존성을 갖게 한다. 또한 선형결합계수에 패스워드 및 실시간의 의존성을 갖게 한다.
즉 n(n≥1)차원의 공간을 채우는 벡터를 r로 하고, 그 초기값(r0)으로부터 수차적으로 새로운 벡터(rj(j=0, 1, 2, 3 …))를 발생하는 행렬을 Rd(d=0, 1, 2, 3 …)로 했을 때,
····(4)
에 의하여 새로운 벡터를 발생시킨다.
여기에서 a는 정수계수, P는 행렬에 사용되는 정수의 집합(비밀·공개키), c는 벡터를 병진이동하는 정수벡터, 그리고 K는 패스워드, t는 실시간, R은 행렬이다. 또 W는 선형결합계수이다.
패스워드(K)는 사용자에 의하여 입력되고 데이터베이스(41)의 공개부분에 격납되어 있다. 부프로그램은 이 데이터베이스(41)로부터 패스워드(K)를 판독하고 그 패스워드(K)와 실시간(t)에 의거하여 상기 식 (4)의 각 정수(a, P, c)를 결정한다. 부프로그램은 복수의 행렬을 선형결합한 행렬R)을 패스워드(K) 및 실시간(t)에 따라서 선택한다.
또 이 행렬(R)에 이용되는 선형결합계수(Wd)를 패스워드(K) 및 실시간(t)에 의하여 결정한다. 그리고 이 선택된 비선형함수 (4)에 의하여 다차원벡터를 생성하고 데이터의 암호화를 실시한다.
이와 같이 복수 행렬의 선형결합한 새로운 행렬을 이용하여 각각의 행렬에 대해 행렬을 결정하는 정수에 패스워드 및 실시간의 의존성을 갖게 하는 동시에 행렬의 선택에 패스워드 및 실시간의존성을 갖게 하고, 또한 선형결합계수에 패스워드 및 실시간의 의존성을 갖게 하는 것으로 암호의 안전성을 더욱 향상시킬 수 있다.
또한 n(n≥1)차원의 공간의 폐영역내에 정의된 벡터를 수차적으로 생성하고 그 생성된 각 벡터가 일치하지 않는 것과 같은 함수를 이용한 암호화에 있어서, 함수형은 사용자가 임의로 정의하고 본체암호화알고리즘에 사용시에 다이내믹하게 결합하여 사용할 수 있도록 하는 것도 가능하다.
즉 이미 콤파일러완료의 암호화의 「기본프로그램」에 다차원벡터를 수차 발생시키기 위해 사용자가 정의한 함수를 콤파일러한 것을 전 프로그램실행시에 다이내믹하게 링크하여 사용하도록 한다. 이와 같이 하면 해커 등의 악의 있는 사용자에 의한 해독을 거의 불가능하게 한다는 효과가 기대된다.
이상과 같이 n(n≥1)차원의 공간의 폐영역내에 정의된 벡터를 수차적으로 생성하고 암호화의 대상이 되는 원문데이터와 상기 벡터의 성분의 논리연산에 의해 암호문데이터를 생성하도록 했기 때문에 RSA법과 같은 고정밀도의 연산능력을 필요로 하지 않고 암호화 실시할 수 있고, 또한 신뢰성이 높고 어플리케이션의 추가, 변경이 용이한 암호화를 실현할 수 있다. 이상에 의해 여러가지 키를 (1)식의 파라미터집합(P)에 대응시키면 임의의 암호통신방식이 정의되는 것이 분명하게 되었기 때문에, 공통키(비밀키)만에 의한 암호화복호화알고리즘을 설명하면 충분하게된다. 그래서 다음에 본 발명의 실시형태의 암호화복호화방식에 대하여 보다 상세히 설명한다.
도 30은 본 발명의 실시형태에 따른 암호화복호화방식의 원리를 설명하는 도면이다.
동일 도면에 있어서, 송신측과 수신측의 각각의 장치(110, 112)의 내부에 있는 시큐어리티·디바이스, 즉 암호화/복호화엔진에는 공통키(비밀키)가 기억되어 있다. 한쪽의 장치(110)로부터 다른쪽의 장치(112)에 암호통신을 실시하는 경우 장치(110)상의 주프로그램은 제어를 시큐어리티·디바이스상의 부프로그램 또는 전용하드웨어에 건네준다.
송신측의 암호화처리를 실시하는 시큐어리티·디바이스에서는 공통키에 대응하는 파라미터에 따라서 변경 가능한 비선형함수를 이용한다. 즉 n차원의 공간의 폐영역내에 정의된 n차원벡터를 회전병진시키는 비선형함수를 이용하여 카오스적 또는 수차적으로 벡터를 생성하고, 원문데이터와 상기 생성된 벡터의 논리연산을 비트단위로 실시하여 암호화데이터를 생성한다.
또 수신측의 복호화처리를 실시하는 시큐어리티·디바이스에서는 상기 벡터를 송신측과 똑같이 하여 생성하고 이것에 역조작을 실행하여 수신한 암호데이터로부터 원래의 원문데이터를 간이하게 복호한다.
본 암호화복호화방식에서는 상기 다차원벡터를 생성하는 비선형함수를 결정하는 파라미터가 제 3 자에게 비밀로 된다. 이것에 의해 본 발명에서는 상기 n차원벡터의 생성은 적어도 공통키(비밀키)를 정의하여 결정되고, 그것에 따라서 생성되는 각 n차원벡터가 서로 일치하는 일이 없도록 카오스를 발생하는 것이 가능한 비선형함수를 이용하여 해당 n차원벡터를 수차적으로 생성한다.
즉 본 발명은 n(n≥1)차원의 공간의 폐영역내에 정의된 벡터의 각 성분과 파라미터집합(P)에 의하여 결정되는 각도(Ωn)를 이용하고, 상기 벡터를 회전시키는 n차의 회전행렬(Rn)(Ωn)((1) 식의 R에 대응)을 적어도 포함하는 비선형함수((1) 식에 대응)를 이용하여 수차 생성되는 각 벡터가 상기 n차원공간내에서 일치하지 않도록 벡터(rj)를 생성하는 벡터생성수단과, 암호화처리에 있어서 원문데이터와 상기 벡터생성수단에 의하여 생성된 벡터의 성분의 사이에서 2항연산을 실시하여 암호화데이터를 생성하는 2항연산수단을 구비하고, 복호화처리에 있어서 상기 벡터생성수단에 의하여 생성된 벡터(rj)와 상기 암호화데이터를 이용하여 상기 2항연산의 역조작에 대응하는 역2항연산을 실시하여 상기 원문데이터를 생성하는 역2항연산수단을 구비하는 것을 특징으로 한다.
특히 n(n≥1)차원의 공간의 폐영역내에 정의된 벡터의 각 성분과 파라미터집합(P)에 의하여 결정되는 각도(Ωn)를 이용하여 해당 벡터를 회전시키는 n차의 회전행렬(Rn)(Ωn)을 n-1차의 회전행렬(Rn-1)(Ωn-1)을 n-1차소행렬로서 포함하도록 생성하는 회전행렬생성수단과, 적어도 상기 회전행렬 Rn(Ωn)을 포함하는 비선형함수를 이용하여 수차 생성되는 각 벡터(rj(j≥0))가 상기 n차원 공간내에서 일치하지 않도록 해당 벡터(rj)를 생성하는 벡터생성수단과, 원문데이터와 상기 벡터생성수단에 의하여 생성된 벡터(rj)의 성분의 사이에서 2항연산을 실시하여 암호화데이터를 생성하는 2항연산수단을 포함하는 것을 특징으로 한다.
본 암호화복호화방식은 데이터의 송신자, 수신자가 공통의 시큐어리티·디바이스(암호화장치)를 갖고 데이터 통신하는 경우에서의 암호복호화처리에 관한 것이다.
본 암호방식에 있어서는 데이터송신자(암호측)에 있어서 평문메시지를 소정의 공통키에 의거하여 생성된 키계열을 이용하여 비트단위의 소정의 논리연산(일반적으로는 배타적 논리합연산)을 실시하여 암호문을 생성하고, 데이터수신자(복호측)에 있어서 암호문을 소정의 공통키(암호측에서 사용한 키와 동일한 것)에 의거하여 생성된 암호측과 동일한 키계열을 이용하여 비트단위의 소정의 논리연산(암호측에서 사용한 키와 동일한 것)을 실시하여 원래의 평문메시지를 얻는다.
그리고 이와 같은 암호방식에 있어서, 상기의 키계열을 생성하는 난수생성장치로서 본 발명에서는 다차원벡터생성장치를 이용한다. 이 경우 다차원벡터생성장치의 벡터생성함수를 결정하는 각종 파라미터나 초기상태는 공통키로서 부여되도록 한다.
도 30에 본 발명을 적용한 암호시스템의 구성예를 나타낸다. 암호측의 장치 (110)에는 다차원벡터생성기능부(101)와 논리연산처리기능부(102)가 구비되어 있다.
똑같이 복호측의 장치(112)에도 다차원벡터생성기능부(121)와 논리연산처리기능부(122)가 구비되어 있다.
도 30에 있어서, 암호측의 장치(암호화장치)(110)와 복호측의 장치(복호화장치)(112)의 사이에서는 기밀상태하에서 예를 들면 IC카드 등에 의해 공통키가 배포되고 공통키를 공유하고 있는 것으로 한다. 그리고 암호측의 장치(110)에서는 소정의 공통키에 의해 결정되는 함수에 의거하여 다차원벡터를 생성하고 해당 벡터의 성분데이터를 난수계열로서 평문메시지의 배타적 논리합을 취득하여 평문메시지를 암호문으로 변환하고, 그것을 네트워크를 통하여 복호측의 장치(112)에 송신한다.
암호문을 취득한 복호측의 장치(112)에서는 이 암호문에 대하여 암호측의 장치(110)가 구비하는 다차원벡터생성기능부(101)와 동등의 기능을 갖는 다차원벡터생성기능부(122)에 의해 벡터를 생성하고, 이 벡터와 상기와 같이 하여 생성된 난수계열의 배타적 논리합을 취득함으로써 원래의 평문메시지를 복원한다.
또 암호장치(110), 복호장치(112)에서 실시하는 처리는 실질적으로 같기 때문에 실제로는 계산기 등의 처리장치는 암호장치(110)와 복호장치(112)의 양쪽의 기능을 가질 수 있다.
도 31은 암호화·복호화장치(110, 112)가 갖는 암호화·복호화를 위한 프로그램 구성을 나타낸다.
주프로그램(131)은 데이터의 입출력의 관리를 실시하고 데이터가 암호화 또는 복호화가 필요한 데이터인지의 판정을 실시하며, 또 암호화·복호화의 전체 처리의 관리를 실시하는 프로그램으로 구성된다.파라미터리스트생성라이브러리(132)는 IC카드 등에 의해 배포된 공통키를 기억해두고 있으며, 암호화/복호화엔진(133)은 파라미터리스트생성라이브러리(132)로부터 공통키를 파라미터로서 받아들이고 다차원벡터회전함수발생라이브러리(134)가 결정한 행렬에 의거하여 회전벡터를 발생하고 해당 벡터의 성분을 이용하여 평문의 암호화 또는 암호문의 복호화를 실시한다.
이하에서는 다차원벡터의 생성에 대하여 설명해간다.
다차원(n차원)공간내에 정의된 벡터(rj-1)에 대한 회전을 생각하여 일반화된 회전각을 Ωn으로 나타내고, 이 회전에 대응하는 조작을 n×n의 행렬로서 Rn(Ωn)으로 나타낸다. 즉 Rn(Ωn)은 rj-1에 작용하여 이 벡터를 회전시킨다. 여기에서 식 (1)을 회전벡터의 일반식으로서 개서한 다음 식 (5)에 의하여 새로운 벡터(rj)를 정의한다.
····(5)
여기에서 a는 정수이고, |a|≤1을 만족하는 것으로 한다. 또 c는 n차원의 정수벡터이다. 상식은 벡터(rj-1)의 회전과 병진에 의해 새로운 벡터(rj가) 생성되는 것을 의미하고 있다.
본 발명에서는 회전각(Ωn)에 r의존성을 갖게 함으로써 발생되는 r벡터의 계열이 카오스적, 즉 닫혀진 공간 중에서 발생계열이 원래의 계열로 되지 않도록 비선형인 계열을 발생하도록 한다. 즉 Ωn은 형식적으로 다음 식 (6)(식 (3)에 대응)과 같이 파라미터(P)와 벡터(r)의 함수로서 나타내어진다.
····(6)
여기에서 P는 Ωn을 주는 함수 중에서 사용되고 있는 임의개수의 파라미터의 집합을 의미한다.
····(7)
이것은 예를 들면 2차원의 벡터를 생각한 경우 2차원의 회전각(Ω2)이 2차원벡터(r=(x, y))의 성분(x와 y)이고,
Ω2=p1x+p2y+p3
로 표현되는 것을 의미한다(위의 식에서 파라미터(p1, p2, p3)는 임의로 주어진다).
이와 같은 2차원벡터를 도 30의 시스템에서 사용되는 장치(110, 112)에서 처리하는 경우의 구체적인 동작을 도 32의 흐름도를 이용하여 설명한다.
2차원벡터(r)는 직행좌표계의 성분(x, y)을 이용하여 r=(x, y)로 나타내어진다. 이 벡터에 대한 각도(Ω2=θ)의 회전조작은,
····(8)
로 2차원행렬로 나타내어진다.
회전각을 구하는 함수(θ=p1x+p2y+p3)및 구해진 회전각으로 벡터를 회전조작하는 함수가 다차원벡터함수발생라이브러리(134)(도 31 참조)에 기억되어 있다고 하고, r0의 초기값(x0, y0) 및 P의 값, p1=1, p2=1, p3=1이 공통키로서 미리 파라미터리스트생성라이브러리(132)(도 31 참조)에 설정되어 있는 경우를 예로 하고 도 32를 참조하여 설명한다.
2차원벡터를 생성하는 데에는 우선 초기값으로서의 r0(성분데이터(x0, y0)를 포함한다) 및 회전각(θ)을 정의하는 함수의 파라미터(p1, p2, p3)를 파라미터리스트생성라이브러리(132)(도 31 참조)로부터 판독하여 장치(110, 112)의 메모리의 작업영역에 기억한다(스텝21). 그리고 r0의 값x0, y0)을 기초로 하여 각도(θ=p1*xj-1+p2*y1-1+p3(θ=p1*x0+p2*y0+p3))를 계산하고, 그 계산결과를 값(θ)으로서 기억한다(스텝22).
다음으로 회전행렬(R)의 요소의 값을 결정하기 위해 cosθ, sinθ를 구하고, 그들의 값을 각각 cos_t, sin_t로서 기억한다(스텝23).
그리고 다음으로 새로운 벡터(rj)를 rj=aR2(Ω2)rj-1+c로 계산하여 생성한다(스텝24). 즉,
xj=a*(“cos_t”*xj-1-“sin_t”*yj-1)+c_x;
yj=a*(“sin_t”*xj-1+“cos_t”*yj-1)+c_y;
를 계산하고, 새로운 벡터(rj)(성분xj, yj)를 생성한다.
그리고 이 벡터(rj)의 성분을 기초로 다음의 회전각(θ)을 구하고(스텝22), 상기의 스텝23, 24를 반복하는 것으로 수차적으로 벡터를 발생시킨다.
본 암호화복호화방식에서는 이와 같이 회전을 사용함으로써 삼각함수가 도입되고 삼각함수의 곱이 사용되기 때문에, 통상의 카오스함수와 비교하여 비선형성이 증가해서 보다 해독이 곤란해진다는 특징을 구비하고 있다.
다음으로 다차원벡터의 생성을 이용한 데이터의 암호화에 대해서 서술한다.
도 33에 나타내는 바와 같이 암호화처리에 있어서는 우선 n차원회전행렬(Rn)(Ωn)을 생성한다(스텝41). 또한 이 행렬의 생성방법의 상세에 대해서는 후술한다.
그리고 이 n차원회전행렬(Rn)(Ωn)을 포함하는 비선형함수를 이용하여 벡터를 생성한다(스텝42). 여기에서 생성되는 각 벡터(rj)는 상기 n차원공간내에서 일치하지 않도록 수차 생성된다. 다음으로 평문데이터와 상기 벡터생성수단에 의하여 생성된 벡터의 성분의 사이에서 2항연산을 실시하여 암호화데이터를 생성한다(스텝43). 그리고 상기 암호화데이터를 상대방수신장치에 송신한다(스텝44).
여기에서 상기 스텝43에 있어서의 2항연산에 대하여 설명한다.
수차 생성되는 벡터(r)가 N비트로 표현되는 것으로 한다. 예를 들면 성분(x, y)으로 나타내어지는 2차원벡터의 경우 x, y의 데이터값이 각각 16비트로 나타내어지는 것으로 하고, x, y의 데이터를 나열하여 N비트(예를 들면 32비트)로한다.
이 절차에 의하여 얻어지는 벡터열(rj(j=1, 2, 3, ···))과 암호화되어야 할 평문데이터(M)를 N비트마다 나눈 데이터열(Mj(j=1, 2, 3, ···))을 2항연산자(op)로서 배타적 논리합(XOR)으로 처리한 결과(Cj(j=1, 2, 3, ···))가 암호화데이터로서 얻어진다. 즉,
····(9)
상기 2항연산자(op)로서는 각 비트마다의 배타적 논리합(XOR)을 사용하는 것이 일반적이나, 배타적 논리합은 가역성의 성질을 갖는 것으로부터 이것을 그대로 암호화를 위한 연산자로서 사용하는 것은 위험하다. 그래서 배타적 논리합의 이 결점을 보충하기 위해 2항연산자(op)로서 배타적 논리합과 Mj의 비트를 가루차섞음으로 하는 조작(scramble)을 병용하는 것이 바람직하다.
그 경우는
····(10)
으로 된다. 여기에서 S는 Mj의 비트를 가루차섞음으로 하는 스크램블조작을 의미하고, XOR·는 그 후의 배타적 논리합의 조작으로서 정의되는 것을 의미한다. 그리고 Cj=rjopMj로 암호화데이터를 구하도록 한다.
다음으로 복호화처리에 대해서 도 33을 참조하여 설명한다.
복호화처리에 있어서는 암호화와 똑같이 우선 n(n≥1)차원의 공간의 폐영역내에 정의된 벡터를 회전시키는 회전행렬(Rn)(Ωn)을 생성한다(스텝45). 그리고 그 회전행렬(Rn)(Ωn)을 포함하는 비선형함수를 이용하여 생성되는 각 벡터가 상기 n차원공간내에서 일치하지 않도록 벡터(rj)를 수차 생성한다(스텝46).
다음으로 수신한 암호화데이터와 상기 벡터생성스텝46에 의하여 생성된 벡터(rj)의 성분의 사이에서 상기 스텝43에 있어서의 2항연산의 역조작에 대응하는 역2항연산을 실시하여 복호화데이터를 생성한다(스텝47, 48)
이 복호화처리에 있어서는 수신한 암호화문자열(Cj(j=1, 2, 3, ···))을 차례로 꺼내어서 Cj에 대응하는 벡터를 생성하면서 복호연산을 하는데, 이 처리를 도 34의 흐름도를 이용하여 설명한다.
복호화처리는 j=0으로부터 스타트하고(스텝51) 암호화데이터(Cj)를 꺼내어서(스텝52) n차원회전행렬(Rn)(Ωn)을 생성하고(스텝53) 다음에 벡터(rj)를 생성한다(스텝54). 그리고 Mj=rjop-1Cj를 연산하여 복호화데이터(평문Mj)를 산출한다(스텝55). 그리고 암호데이터(C)가 종료해 있지 않으면 j=j+1로 하고(스텝56, 57) 다음의 암호데이터를 꺼내어 Rn(Ωn)을 생성하고, 다음의 벡터(rj)를 생성하는 처리를 반복한다. 이 스텝52∼56의 처리의 반복은 암호데이터(Cj)가 종료할 때까지 실시한다.
여기에서 op-1은 cjXORrj의 연산후에 암호화로 실시한 스크램블(S)의 역조작 S-1을 실시하는 연산이다.
다음으로 상기한 제 1 암호화·복호화의 실시예를 보다 실제에 가까운 암호화처리의 절차로 확장한 제 2 실시예를 설명한다.
우선····(11)
을 구한다. 다음에 C0에 대한 체크합계(Σ0)를 계산한다. 또한 j≥1인 것과 같은 j에 대하여 식 (9)를 다음과 같이 개서한다.
····(12)
체크합계는 예를 들면 산출된 C의 값에 포함되는 1의 수를 rj의 비트수와 같은 비트수의 2진으로 표현한 것이며, Σ0은 암호화데이터(C0)의 값으로부터, Σ1은 C1으로부터, Σ2는 C2로부터 얻는 것으로 다음과 같은 계산순서에 따르게 된다.
즉 송신측은 M0에 대한 암호화데이터(C0)에 대해서는 C0=r0opM0로 C0를 산출하고, 이에 동반하여 C0의 체크합계(Σ0)를 구한다. M1에 대한 암호화데이터(C1)에대해서는 C1=(r1opΣ0) opM1로 C1을 산출한다. 그리고 C1의 체크합계(Σ1)을 구한다. 이후의 데이터(Mj)는 그 전의 데이터로 구한 Σj-1을 가미하고, Cj=(rjopΣj-1) op Mj로 암호화한다. 여기서 rj와 Σj-1은 같은 데이터폭(비트수)으로 산출한다.
복호해야 할 수신측에서는 C0, C1, C2···를 수신하고 우선 C0를 이용하여 M0=r0op-1C0를 계산하는데, 그 수신한 C0로부터 체크합계(Σ0)를 구할 필요가 있다. 이것을 사용하고 C1에 대해서는
····(13)
으로 M1을 계산한다.
그리고 이후의 데이터(Mj)에 대해서는 수신한 Cj-1에 대하여 구한 체크합계(Σj-1)을 이용하고,
····(14)
를 이용하여 복호화해가게 된다.
이와 같은 절차에 의하여 암호화된 데이터는 「키의 틀림」이 전파해가기 때문에 키를 가정하여 복호화하고자 하는 공격에 내성을 갖는다고 할 수 있다.
또한 다차원공간회전방식에서는 차원수가 커지면 회전행렬(R)의 요소도 많아져서 암호화/복호화시의 연산부하가 커지는 문제가 있다. 이와 같은 문제를 해소하는 방법으로서 다차원공간회전방식을 이용한 암호화방식에 있어서의 다차원공간회전행렬을 차수가 적은 유사공간회전행렬로부터 계산하는 방법이 있다.
그래서 다차원공간의 회전에 대한 회전행렬(Rn)(Ωn)의 도출에 대하여 설명한다.
제 1 방법은 (n-1)차원의 회전행렬(Rn-1)(Ωn-1)로부터 n차의 회전행렬(Rn)(Ωn)을 생성하는 것이다. 다차원공간의 회전을 취급하는 방법은 복잡하기 때문에 우선 간단하게 하기 위해 2차원의 경우부터 생각한다. 2차원벡터(r)는 직교좌표계의 성분(x와 y)을 이용하고,
····(15)
로 나타내어진다. 이 벡터에 대한 각도(Ω2=θ)의 회전조작은,
····(16)
으로 2차원행렬로 나타내어진다. 여기에 좌변의 첨자(2)는 조작이 2차원공간으로 정의되어 있는 것을 의미한다. 이 조작은 다음 식의 성질을 만족시키고 있다.
····(17)
····(18)
식 (17)은 회전조작에 의하여 회전한 벡터의 크기가 불변으로 유지되는 것을 보증하고, 식 (18)은 회전한 벡터를 원래로 되돌리는 회전조작이 존재하는 것을 의미하고 있다.
3차원회전으로의 확장을 위해 식 (16)의 우변의 표기를 간략화하고, 형식적으로
····(19)
로 나타내는 것으로 한다. 여기서 α11=α22=cosθ 및 α21=-α12=sinθ이다. 3차원회전을 취급하는 경우 3개의 직교축의 각각을 회전축으로 한 회전부터 출발하는 것이 타당할 것이다. 그것은 이하의 3개의 행렬
····(20-1)
····(20-2)
····(20-3)
의 중의 어느 것인가로 나타내어진다. 이들이 식 (19)에서 주어지는 2차원공간의 회전조작에 대각성분으로서 1을 추가함으로써 얻어지는 것에 주의한다. 또 이들의 조작에 의한 3차원벡터의 회전이 도 37a∼도 37c와 같이 되는 것은 분명하다.
여기에서 위의 행렬((20-1), (20-2), (20-3))은 2차원공간에서의 회전조작을 나타내는 2차원행렬을 포함하는 3차원의 행렬로 되어 있다. 일반화된 3차원회전은이들의 행렬로부터 중복을 허가하고 3개 꺼내어서 그들을 차례로 곱셈함으로써 얻어진다. 3차원공간에서의 일반화된 회전각을,
Ω3=(θ1, θ2, θ3)
로 나타내면 3차원벡터에 대한 회전조작(R3)(Ω3)은 다음식으로 나타내어진다.
····(21)
여기에 i, j, k는 1, 2, 3 의 어는 것이고, 일반적으로는 동일축에 대한 조작이 연속하지 않는 것을 조건으로 중복이 허가된다. 예를 들면 i, j, k가 1, 2, 1이어도 좋다.
다음으로 「역회전각」을 -Ω3=(-θi, -θ2, -θ3)로 나타내면 식 (21)의 회전조작의 역회전조작은 그 의미를 고려하고,
····(22)
로 나타낼 수도 있다. 식 (21)에서 정의된 회전조작은 일반적으로
····(23)
의 형태를 하고 있다. 여기에서 각 행렬요소는 식 (16), (19), (20-1)∼(20-3)과 (21)로부터 일의적(一意的)으로 결정된다. 또 R3(Ω3)에 대하여 이하의 2개의 성질이 만족시켜지는 것도 알 수 있다.
····(24)
····(25)
실제의 3차원의 경우의 벡터의 발생에 대하여 설명한다.
3차원의 경우는 회전행렬의 곱셈의 순서를 거억함으로써 벡터(rj)의 발생이 가능하게 된다. 3차원의 회전의 경우 회전각은 간단화를 위해 xj-1=x, yj-1=y, zj-1=z로 표현하면,
θ1=p11x+p12y+p13z+p14
θ2=p21x+p22y+p23z+p24
θ3=p31x+p32y+p33z+p34
로 되고, 3차원의 회전조작(R3)(Ω3)은 후술하는 방법에 의하여 (21)식에 나타내는 바와 같이 다음의 3개의 회전행렬의 곱셈, 즉,
R3(Ω3)=R3,i(θi)*R3,j(θj)*R3,k(θk)
로 나타내어진다.
여기에서 정수(整數)(i, j, k)는 1, 2, 3의 어느 것이고, 일반적으로 중복이 허가된다. 즉 R3,1(θ1), R3,2(θ2), R3,3(θ3)의 곱셈의 방식은 3×2×2(=12)법이고, 그 곱셈의 순서는 보내는 사람의 파라미터로 결정된다고 한다. 이 암호화처리에 있어서 벡터(rj)의 발생처리의 흐름은 3차원의 경우 도 35에 나타내는 바와 같이된다.
즉 보내는 사람의 파라미터로 지정된 곱셈의 순서에 의거하여 R3(Ω3)을 준비한다(스텝61). 그리고 벡터의 초기값(r0), 회전각(θ1, θ2, θ3)을 산출하기 위한 함수의 파라미터(p11∼p34)를 기억한다(스텝62). 다음으로 r0(rj-1)의 성분 (x, y, z)을 이용하고,
θ1=p11x+p12y+p13z+p14
θ2=p21x+p22y+p23z+p24
θ3=p31x+p32y+p33z+p34
을 계산한다(스텝63)
그리고 R3(Ω3)을 계산하고 새로운 벡터(rj)를 식 (5)로부터 생성한다. 이 때 곱셈의 순서의 지정에 대해서는 상기와 같이 보내는 사람의 파라미터, 예를 들면 보내는 사람의 사원번호 등으로부터 순서를 결정하도록 해도 좋다. 또 회전행렬(R3)(Ω3)에 대해서는 보내는 사람(및 받는 사람)측이 송신할 때마다 지정되는 차례에 의거하여 회전행렬(R3)(Ω3)을 계산하는 것이 아니라, 미리 12종류의 함수를 기억해두고 그 중의 어느 것을 이용하는지를 지정하도록 해도 좋다.
다음으로 상기 2차원회전에서 3차원회전으로의 확장의 절차를 3차원회전에서 4차원회전으로의 확장에 적용하는 방법을 설명한다.
이 경우 식 (23)에 대각성분으로서 1을 추가함으로써 4개의 2차원행렬, R4,i(Ω3) (i=1, 2, 3, 4)를 얻는다. 즉,
····(26-1)
····(26-2)
····(26-3)
····(26-4)
를 얻는다.
또한 4차원공간에서의 회전각(Ω4)에 대한 회전조작을 다음식으로 정의한다.
····(27)
Ω3,i(i=1, 2, 3, 4)는 위에서 정의한 3차원회전각(Ω3)의 다른 것을 의미한다.
이 정의를 반복하여 사용함으로써 일반적으로 n차원공간에서의 회전각(Ωn)에 대한 회전조작(Rn)(Ωn)은 곱셈기호 ∏을 사용하여,
····(28)
로 나타낼 수 있다. 이렇게 얻어지는 회전조작이 다음식 (29), (30)의 성질을 만족시키고 있는 것은 식 (28)의 우변의 곱의 순서까지 고려에 넣어서 용이하게 확인할 수 있다.
····(29)
····(30)
n차원회전행렬(Rn)(Ωn)은 도 36에 나타내는 흐름도의 실행에 의해 생성할 수 있다.
즉 우선 k=2를 설정하고(스텝30) 2차원의 회전행렬(R2)(Ω2)을 생성한다(스텝31). 그리고 k의 값이 n미만인지 판단하고(스텝32) n에 이르러 있지 않으면 k의 값을 “1”증가해서(스텝33) k차의 회전행렬(Rk)(Ωk)을 그것이 k-1차의 회전행렬(Rk-1)(Ωk-1)을 k-1차소행렬로서 포함하도록 하여 생성한다(스텝34).
다음으로 생성된 k개의 k차회전행렬(Rkj1(θj1), Rkj2(θj2), ···Rkjk(θjk))의 곱을 취해 회전행렬(Rk)(Ωk)을 얻는다(스텝35). 그리고 이들의 스텝34, 35를 k=2에서 k=n까지 반복함으로써 n차원회전행렬(Rn)(Ωn)을 생성할 수 있다.
다음의 제 2 방법은 차원수가 적은 복수의 회전행렬을 대각블록으로서 배치하고, 나머지를 0요소로 한 유사회전행렬로 치환하는 것이다. 제 2 방법을 구체적으로 설명한다. 예를 들면 6차원공간에 있어서의 회전행렬(R)의 요소는 식 (37)과 같이 되고 계산량이 팽대하게 증가한다.
····(37)
그래서 이와 같은 회전행렬(R)을 유사회전행렬(Q)로 치환하여 계산한다. 유사회전행렬(Q)은 차수가 적은 복수의 공간회전행렬을 대각블록으로서 배치하고, 나머지의 요소를 0으로 한 유사적인 행렬이다. 예를 들면 6차원공간의 경우에는 식 (38)과 같은 유사회전행렬(Q)를 이용한다.
····(38)
또한 식 (38)에 있어서, A, B는 3차원회전행렬이다.
이 유사회전행렬(Q)과 상기 회전행렬(R)의 요소를 비교하여 보면 Q의 요소에는 0이 많아서 계산량이 적게 완료한다. 또한 암호화로서의 기능도 충분히 완수한다. 일반적으로는 식 (39)와 같이 다차원공간회전행렬(Q)을 설정하면 좋다.
····(39)
(A1, A2, …, Ai는 다차원공간회전행렬)
이와 같이 다차원공간회전방식에 있어서의 회전행렬을 차원수가 적은 복수의 회전행렬을 대각블록으로서 배치하고, 나머지를 0요소로 한 유사회전행렬로 치환하여 계산하는 것으로 계산량을 대폭으로 줄여서 빠르게 암호화 또는 복호화의 처리 실행할 수 있다.
또 다른 방법으로서 치환행렬(S)에 의한 상이변환
····(40)
으로서 얻어지는 P를 새로운 유사공간회전행렬로서 이용해도 좋다.
식 (40)에 있어서 Q는 상기 유사회전행렬이다. S는 치환행렬이고 식 (41)과 같이 각 행 각 열에 1의 요소가 1개 포함된 정방행렬이다.
····(41)
예를 들면 유사회전행렬(Q)이 상기 식(38)로 표현되는 경우(6차원의 경우)에는 유사공간회전행렬(P)는 식 (42)와 같이 나타낼 수 있다.
····(42)
이것은 치환행렬(S)이 식 (43)과 같은 경우이다.
····(43)
이와 같이 다차원공간회전방식에 있어서의 회전행렬을 차원수가 적은 복수의 회전행렬의 요소를 대각으로 배치하고, 나머지를 0요소로 한 유사회전행렬에 치환행렬을 조합할 수 있는 새로운 유사회전행렬로 치환하여 계산하면 계산의 행정이 복잡화하기 때문에 암호의 해독을 더욱 곤란한 것으로 할 수 있다.
본 암호화방식의 특징은 공간차원을 크게 하면 할수록 암호화된 데이터의 부정해독이 곤란해지는 것, 소프트웨어처리에 의해서도 충분히 고속처리 가능하고, 암호화와 복호화를 위해 특별한 하드웨어를 필요로 하지 않는 것, 또한 개인용, 그룹용 등의 계층화나 복호화의 특권(권한)을 자세히 규정할 수 있는 것 등등이다.
이로 인해 본 발명의 응용범위도 개인의 비밀데이터관리, 친전메일수비(守秘), 동보통신데이터수비 등의 다방면에 걸치게 된다. 덧붙여서 인터넷환경에서의 서버내 데이터의 수비의 확실성을 높이는 것도 가능하기 때문에 시스템관리자나 인터넷서비스공급자가 이용하는 것도 가능하다.
본 발명에서는 또한 파라미터(P)와 정수벡터(c)에 시간의존성을 갖게 하고, P를
····(31)
로 하고, c도 c(t)로 한다. 또한 벡터의 초기값(r0(t))에 시간의존성을 갖게 하는 것도 가능하다.
실제의 암호화에 있어서는 식 (5)에서 벡터의 초기값(r0)를 우변의 rj-1(j=1)에 대입한다. 그리고 이렇게 하여 얻어진 새로운 벡터(r1)를 식 (5)의 우변의 rj-1에 다시 대입한다는 절차를 반복해감으로써, 차례차례로 새로운 벡터를 차례로 생성해간다. 식 (31)에서 나타내어지는 시간의존성은 같은 원데이터를 다른 시각에 암호화한 경우에도 동일한 암호화데이터가 얻어지지 않는 것을 보증하고 있다.
식 (6)에 있어서 파라미터의 집합과 함수를 주의깊게 결정하면 식 (5)에 의하여 차례로 발생시켜지는 벡터(rj)가 평형해에 수렴되어 버리는 것을 방지할 수 있다.
카오스 내지는 랜덤계를 사용한 암호는 그곳에서 사용된 키가 알려지지 않는 한 해독이 곤란하다고 말해지고 있다. 본 암호화방식도 이와 같은 성질을 계승하고 있다. 본 암호화방식의 특징은 상기 종래의 암호화방법이 우수한 성질을 구비하는 것에 덧붙여서 자유롭게 암호화의 절차를 변경(customize)할 수 있는 바와 같다. 이 것은 이하의 이유에 의한다.
1. 식 (5)의 회전조작(Rn)(Ωn)의 표현은 임의로 결정할 수 있다.
2. 식 (6)의 우변의 함수(Ωn)(P, rj-1)와 그곳에서 사용되는 파라미터(P)는 함수값이 발산되지 않는다는 조건하에서 임의로 설정할 수 있다.
3. 여러가지의 「초기값」을 임의로 줄 수 있다.
4. 임의의 벡터의 초기값으로부터 출발하고 식 (5)의 조작을 임의로 반복함으로써 얻어지는 벡터(rj)를 고쳐서 암호·복호화에 사용하는 벡터의 초기값으로서 재설정할 수 있다.
5. 부동소수점연산을 실행하는 경우 연산결과가 수치연산프로세서나 콤파일러에 의존하기 때문에 복호화하기 위해서는 암호화환경과 동일한 복호화환경을 가질 필요가 있다.
또한 본 실시예에서 서술한 절차는 모두 정수(整數)화가 가능하다. 이 경우 다차원공간을 격자로 구획짓고, 이산적인 격자점의 좌표에 의하여 나타내어지는 벡터가 회전과 병진에 의하여 변화하게 된다.
본 암호화방식의 다차원회전벡터방식에 의한 암호화의 절차는 임의성이 많고, 다차원벡터회전조작 1개를 취해보아도 일의적으로 결정되는 것이 아니며, 암호(방식)을 해독하고자 시도하는 사람은 회전생성수단의 방법을 재현하고, 또한 일반화된 다차원벡터회전각을 규정하는 함수계를 동정하며, 또한 그곳에서 사용된 파라미터(키)를 정확히 발견하지 않으면 안된다.
파라미터(P)를 키로 하고, 회전벡터(rj-1)의 상태로부터 회전각(Ωn)을 구하는 비선형함수의 설정 및 회전행렬의 구성의 결정방법은 막대한 수로 되기 때문에 그 벡터(rj)를 재현할 수 있는 확율은 극히 낮다. 이로 인해 본 발명을 이용함으로써 암호의 비밀성을 높이는 것이 가능하게 된다.
본 암호화방식은 n차원회전행렬보다 작은 차원의 최전행렬로부터 n차원회전행렬을 생성하기 때문에 수차 처리에 극히 적합하다. 또한 본 발명은 그 n차원회전행렬을 이용하고, n차원의 공간의 폐영역내에 정의된 n차원벡터를 회전병진시켜서 카오스적 또한 수차적으로 벡터를 생성하는 비선형함수는 실수로 정의되어 있기 때문에 디지털표현되는 임의표현데이터에 대하여 암호복호화를 실시할 수 있고, 이것에 의해 광범위한 어플리케이션에 대하여 사용 가능하게 된다.
다음으로 상기한 본 발명의 암호화복호화방식이 어떻게 상기 실시형태의 데이터베이스관리장치에 적용되는지에 대하여 설명한다.
본 발명에서는 데이터베이스의 암호화알고리즘으로서 다차원공간회전방식(다차원공간벡터방식)을 이용한다. 이 다차원공간회전방식은 소정의 함수에 의거하여 다차원공간에 수차 벡터를 발생시키고, 이들의 벡터성분을 암호의 키스트림으로 하는 것이다. 이 다차원공간회전방식에서는 연산능력이 낮은 정보처리장치에서도 계산할 수 있기 때문에 휴대형의 단말에 적용하는 데에 상응한다. 즉 본 발명의 데이터베이스를 외부에서 액세스하는 것과 같은 환경에 있어서 데이터의 비밀성을 홀딩하여 처리하기 위해서는 이와 같은 암호화방식을 채용하는 것이 바람직하다.
이 경우 이 실시예에 의한 데이터베이스의 암호화에서는 열키와 행키는 달라 있다. 따라서 소정의 함수의 파라미터는 적어도 열키와 행키의 1개를 이용하여 결정하도록 하고 그것에 의하여 암호화를 위한 키스트림을 생성하도록 한다.
이것에 의해 각 행렬에 특유의 키스트림이 발생할 수 있다.