KR101984297B1 - 메시지 인코딩 방법, 메시지 암호화 방법 및 장치 - Google Patents
메시지 인코딩 방법, 메시지 암호화 방법 및 장치 Download PDFInfo
- Publication number
- KR101984297B1 KR101984297B1 KR1020190037993A KR20190037993A KR101984297B1 KR 101984297 B1 KR101984297 B1 KR 101984297B1 KR 1020190037993 A KR1020190037993 A KR 1020190037993A KR 20190037993 A KR20190037993 A KR 20190037993A KR 101984297 B1 KR101984297 B1 KR 101984297B1
- Authority
- KR
- South Korea
- Prior art keywords
- message
- matrix
- block
- message block
- bit
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
본 발명의 일 실시예에 따른 메시지 암호화 장치는, 메시지를 인코딩하여 제1 행렬을 생성하는 인코딩부와, (상기 B, 상기 m 및 상기 v 각각은 기지정된 양의 정수)에서 랜덤하게 제2 행렬을 선택하고, (상기 GDs는 기지정된 가우시안 분포, 상기 n은 상기 m보다 작도록 기지정된 양의 정수)에서 랜덤하게 제3 행렬을 선택하고, (상기 k는 m-n 보다 작도록 기지정된 양의 정수)에서 랜덤하게 제4 행렬을 선택하는 행렬 선택부와, 미리 생성된 공개키, 상기 제2 행렬, 및 상기 제3 행렬을 이용하여 암호문의 제1 부분을 생성하고, 상기 공개키, 상기 제1 행렬, 상기 제2 행렬 및 상기 제4 행렬을 이용하여 상기 암호문의 제2 부분을 생성하는 암호문 생성부와, 상기 제1 부분과 상기 제2 부분에 기초하여 상기 암호문을 출력하는 출력부를 포함할 수 있다.
Description
본 발명은 메시지 인코딩 방법, 메시지 암호화 방법 및 장치에 관한 것이다. 보다 구체적으로, 본 발명은 다중 비트 인코딩을 이용한 공개키 기반 메시지 암호화 방법 및 이를 이용한 메시지 암호화 장치에 관한 것이다.
암호화 방법에는 크게 대칭키 암호화 방법과 비대칭키 암호화 방법이 있다. 대칭키 암호화 방법은 암호화에 사용하는 키와 복호화에 사용하는 키가 동일하기 때문에 속도는 빠르지만 키의 분실 등으로 인해 보안성이 담보되지 않는 단점이 있었다. 그러한 문제를 해결하기 위하여 등장한 것이 비대칭키 암호화 방법(이하, '공개키 암호화 방법')이다. 비대칭키 암호화 방법에 의하면 제3자에게 공개하는 공개키와, 사용자 본인만 보유하는 비밀키(개인키)를 사용하며, 암호문을 수신인의 공개키로 암호화하면, 수신인은 암호문을 자신만이 가지고 있는 비밀키로 복호화하게 된다.
비대칭암호화 방법 중에서 대표적인 것이 1978년에 Ron Rivest, Adi Shamir, Leonard Adleman이 제안한 RSA 방식이며, 초기 스킴(scheme)에서 계속 발전하여 현재 가장 상업적으로 널리 사용되고 있다.
그러나 현재 연구가 활발하고 향후 등장할 예정인 양자 컴퓨터가 실용화되면 RSA 방식의 비대칭 암호문은 양자 컴퓨터에 의해 손쉽게 풀릴 수 있기 때문에 그에 대한 대안이 필요해지는 상황이다.
이러한 상황에서, 2005년 Regev에 의해 LWE(Learning With Errors problem) 기반의 공개키 암호 기법이 제안된 바 있다(O. Regev. On lattices, learning with errors, random linear codes, and cryptography. In STOC, LNCS, pages 84-93, 2005). 그 후로도 Regev에 의해 제안된 LWE 기법에 기초하여 공개키 암호화 기술은 지속적으로 발전해 왔다.
그러나, Regev에 의해 제안된 LWE 기법을 이용하는 암호화 방식은 1비트 메시지를 복원하기 위해 1번의 비교 연산을 수행해야 한다. 즉, 메시지가 n비트인 경우, 복호화 과정에서 메시지를 정확하게 복원하기 위해서는 행렬 연산 외에도 n번의 비교 연산을 추가적으로 수행해야 한다. 따라서, n 비트와 같은 다중 비트를 보다 효율적으로 암호화(또는 복호화)하기 위한 방안이 요구된다.
본 발명이 해결하고자 하는 과제는, 다중 비트를 보다 효율적으로 인코딩하거나 디코딩할 수 있는 공개키 암호화 방법 및 장치를 제공하는 것이다.
다만, 본 발명이 해결하고자 하는 과제는 이상에서 언급한 바로 제한되지 않으며, 언급되지는 않았으나 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있는 목적을 포함할 수 있다.
본 발명의 일 실시예에 따른 적어도 하나의 프로세서에 의해 수행되는 적어도 하나의 메시지 블록으로 구성된 메시지의 인코딩 방법에 있어서, 적어도 하나의 프로세서에 의해 수행되는, 적어도 하나의 메시지 블록으로 구성된 메시지의 인코딩 방법에 있어서, 상기 메시지를 상기 적어도 하나의 메시지 블록으로 구분하는 단계와, 상기 적어도 하나의 메시지 블록 각각에 추가 메시지를 연결하는 단계와, 상기 적어도 하나의 메시지 블록 각각에서 발생 가능한 에러의 크기는 d 비트이고, 상기 추가 메시지는 크기가 d+1 비트인 비트 스트링(string)을 포함하며, 상기 비트 스트링은 일 수 있다.
또한, 상기 인코딩된 적어도 하나의 메시지 블록 각각의 추가 메시지는 디코딩되는 과정에서 제거될 수 있다.
본 발명의 일 실시예에 따른 적어도 하나의 프로세서에 의해 수행되는 메시지 암호화 방법에 있어서, 메시지를 인코딩하여 제1 행렬을 생성하는 단계와, (상기 B, 상기 m 및 상기 v 각각은 기지정된 양의 정수)에서 랜덤하게 제2 행렬을 선택하는 단계와, (상기 GDs는 기지정된 가우시안 분포, 상기 n은 상기 m보다 작도록 기지정된 양의 정수)에서 랜덤하게 제3 행렬을 선택하고, (상기 k는 m-n 보다 작도록 기지정된 양의 정수)에서 랜덤하게 제4 행렬을 선택하는 단계와, 미리 생성된 공개키, 상기 제2 행렬, 및 상기 제3 행렬을 이용하여 암호문의 제1 부분을 생성하는 단계와, 상기 공개키, 상기 제1 행렬, 상기 제2 행렬 및 상기 제4 행렬을 이용하여 상기 암호문의 제2 부분을 생성하는 단계와, 상기 제1 부분과 상기 제2 부분에 기초하여 상기 암호문을 출력하는 단계를 포함할 수 있다.
또한, 상기 메시지는 적어도 하나의 메시지 블록으로 구성되고, 상기 제1 행렬을 생성하는 단계는, 상기 메시지를 적어도 하나의 메시지 블록으로 구분하는 단계와, 상기 적어도 하나의 메시지 블록 각각에 추가 메시지를 연결하여 상기 메시지를 상기 제1 행렬로 출력하는 단계를 포함하고, 상기 적어도 하나의 메시지 블록 각각에서 발생 가능한 에러의 크기는 d 비트이고, 상기 추가 메시지는 d+1 비트 크기의 비트 스트링을 포함하며, 상기 비트 스트링은 일 수 있다.
또한, 상기 인코딩된 적어도 하나의 메시지 블록 각각의 추가 메시지는 디코딩되는 과정에서 제거될 수 있다.
또한, 상기 공개키와 상기 비밀키 각각은, (상기 m은 상기 n은 )에서 랜덤하게 선택된 제5 행렬, 에서 랜덤하게 선택된 제6 행렬, 및 에서 랜덤하게 선택된 제7 행렬을 이용하여 산출되는 제8 행렬의 적어도 일부로 이루어질 수 있다.
또한, 상기 제8 행렬은, F = AX+E (mod q) (상기 F는 상기 제8 행렬, 상기 A는 상기 제5 행렬, 상기 X는 상기 제6 행렬, 상기 E는 상기 제7 행렬)일 수 있다.
본 발명의 일 실시예에 따른 메시지 암호화 장치는, 메시지를 인코딩하여 제1 행렬을 생성하는 인코딩부와, (상기 B, 상기 m 및 상기 v 각각은 기지정된 양의 정수)에서 랜덤하게 제2 행렬을 선택하고, (상기 GDs는 기지정된 가우시안 분포, 상기 n은 상기 m보다 작도록 기지정된 양의 정수)에서 랜덤하게 제3 행렬을 선택하고, (상기 k는 m-n 보다 작도록 기지정된 양의 정수)에서 랜덤하게 제4 행렬을 선택하는 행렬 선택부와, 미리 생성된 공개키, 상기 제2 행렬, 및 상기 제3 행렬을 이용하여 암호문의 제1 부분을 생성하고, 상기 공개키, 상기 제1 행렬, 상기 제2 행렬 및 상기 제4 행렬을 이용하여 상기 암호문의 제2 부분을 생성하는 암호문 생성부와, 상기 제1 부분과 상기 제2 부분에 기초하여 상기 암호문을 출력하는 출력부를 포함할 수 있다.
또한, 상기 인코딩부는, 상기 메시지를 적어도 하나의 메시지 블록으로 구분하고, 상기 적어도 하나의 메시지 블록 각각에 추가 메시지를 연결하여 상기 메시지를 상기 제1 행렬로 출력하며, 상기 적어도 하나의 메시지 블록 각각에서 발생 가능한 에러의 크기는 d 비트이고, 상기 추가 메시지는 d+1 비트 크기의 비트 스트링을 포함하며, 상기 비트 스트링은 일 수 있다.
또한, 상기 인코딩된 적어도 하나의 메시지 블록 각각의 추가 메시지는 디코딩되는 과정에서 제거될 수 있다.
본 발명의 실시예에 따른 암호화 방법 및 장치는, 메시지의 가공 과정에서 발생가능한 에러의 크기를 고려하여 다중 비트 인코딩을 수행함으로써, 비교 연산을 최소화여 메시지 암호화 및 복호화의 효율을 향상시키고, 보다 정확하게 메시지가 복호화되도록 할 수 있다.
다만, 본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 암호화 장치에 의해 인코딩 된 메시지를 개념적으로 도시한다.
도 2는 본 발명의 일 실시예에 따른 암호화 장치에 의해 인코딩 된 메시지에 에러가 삽입되는 경우의 예를 도시한다.
도 3은 본 발명의 일 실시예에 따른 암호화 장치의 기능 블록도를 도시한다.
도 4는 본 발명의 일 실시예에 따른 암호화 방법의 각 단계의 흐름을 도시한다.
도 5는 본 발명의 일 실시예에 따른 암호화 방법에서 인코딩 단계의 흐름을 구체적으로 도시한다.
도 2는 본 발명의 일 실시예에 따른 암호화 장치에 의해 인코딩 된 메시지에 에러가 삽입되는 경우의 예를 도시한다.
도 3은 본 발명의 일 실시예에 따른 암호화 장치의 기능 블록도를 도시한다.
도 4는 본 발명의 일 실시예에 따른 암호화 방법의 각 단계의 흐름을 도시한다.
도 5는 본 발명의 일 실시예에 따른 암호화 방법에서 인코딩 단계의 흐름을 구체적으로 도시한다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 범주는 청구항에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명은 본 발명의 실시예들을 설명함에 있어 실제로 필요한 경우 외에는 생략될 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예들을 포함할 수 있는바, 특정 실시예들을 도면에 예시하고 상세한 설명에 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로서 이해되어야 한다.
제 1, 제 2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 해당 구성요소들은 이와 같은 용어들에 의해 한정되지는 않는다. 이 용어들은 하나의 구성요소들을 다른 구성요소로부터 구별하는 목적으로만 사용된다.
어떤 구성요소가 다른 구성요소에 '연결되어' 있다거나 '접속되어' 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 암호화 장치에 의해 인코딩된 메시지를 개념적으로 도시한다.
도 1을 참조하면, 암호화 장치에 의해 인코딩된 메시지는 행렬로 나타날 수 있다. 메시지는 t 비트 크기를 가지는 메시지 블록으로 구성될 수 있으며, 메시지 블록은 도 1에서 도시된 바와 같이 M[1,1] 내지 M[v,k]와 같은 메시지에 대한 행렬의 성분으로 표현될 수 있다.
메시지에 대해 인코딩이 수행되면, 메시지 블록 각각에 메시지 고유의 내용과 관련된 d+1 비트 크기의 추가 메시지가 t 비트에 연결(또는 부가)될 수 있다. d는 메시지 암호화 과정에서 생성되는 에러의 크기로, 미리 지정된 값(또는 미리 공개된 값)일 수 있다. 추가 메시지는 이러한 에러의 크기를 반영하여, 에러의 크기보다 큰 크기를 가지도록 메시지의 인코딩 과정에서 메시지 블록 각각에 추가되는 것일 수 있다.
구체적으로, 추가 메시지는, 형태를 가지는 d+1 크기의 비트 스트링일 수 있다. 이에 따라, 추가 메시지가 추가된 메시지 블록은 도 1과 같이, t 비트에 1의 값을 가지는 한 개의 비트가 연결된 후, 이어서 0의 값을 가지는 d개의 비트가 연결될 수 있다.
도 2는 본 발명의 일 실시예에 따른 암호화 장치에 의해 인코딩 된 메시지에 에러가 삽입되는 경우의 예를 도시한다.
도 2를 참조하면, 추가 메시지가 부가된 메시지 블록의 각각에 에러(ε)가 삽입될 수 있다. 여기서, 에러는 LWE(Learning With Error) 기법에 기초하여, 공개키와 비밀키를 생성하는 단계에서부터 보안을 향상시키기 위해 생성하는 값일 수 있다.
구체적으로, 에러의 생성 범주는 미리 지정되어 있을 수 있으며, 이에 따라 발생 가능한 에러의 크기가 미리 결정되어 있을 수 있다. 예를 들어, 에러는 소정의 표준편차를 가지는 이산 가우시안 분포에서 랜덤하게 산출될 수 있으나, 이에 제한되는 것을 아니다. 에러의 생성과 관련하여서는 통상의 기술자에게 용이한 바 자세한 설명은 생략하겠다.
도 2를 참조하면, 추가 메시지는 d+1 비트 크기를 가지는 일 수 있다. 구체적으로, 추가 메시지는 메시지 블록에 연결되는 라는 값을 가지는 비트 스트링일 수 있다. 한편, 는 같은 개수의 행을 가지는 행렬을 나란히 연결하여 새로운 행렬을 산출하는 기호로, 통상의 기술자에게 용이한 바 자세한 설명은 생략하겠다.
추가 메시지는 메시지를 구성하는 메시지 블록 각각에 연결될 수 있다. i행, j열에서의 메시지 블록 M( i,j )에 대해, 추가 메시지가 연결되면, 메시지 블록은 의 형태로 나타날 수 있다. 추가 메시지는 메시지 블록 각각에 모두 연결되기 때문에, 인코딩 결과 (이하, '출력값')가 출력될 수 있다. 도 2는 출력값을 개념적으로 도시한다.
d는 상술한 바와 같이 기지정된 에러의 크기일 수 있고, 이에 따라, 암호화 과정에서 인코딩에 의한 출력값에 에러가 삽입될 수 있다. 에러가 양수인 경우, 출력값은 제1 형태(11)와 같이 도출될 수 있다. 에러가 음수인 경우, 출력값은 제2 형태(12)와 같이 도출될 수 있다.
보다 구체적으로 설명하면, 에러가 양수인 경우, 발생한 에러는 출력값의 하위 비트 영벡터 부분에 더해지기 때문에 메시지 블록에 어떠한 영향도 주지 않는다. 즉, 메시지 블록 M의 인코딩 출력값과 에러의 덧셈 결과는 가 된다.
에러가 음수인 경우, 발생한 에러는 출력값의 하위 비트 영벡터 부분보다 상위 비트에까지 영향을 주게 된다. 하지만, 추가 메시지의 삽입에 의해 중간에 비트 1이 존재하기 때문에, 메시지에는 에러가 전이되지 않는다. 즉, 메시지의 인코딩 출력값과 에러의 덧셈 결과는 가 된다.
후술하겠으나, 암호화 장치는 추가 메시지를 삽입하여 메시지에 대한 인코딩을 수행하고, 인코딩 결과 출력된 출력값에 에러를 더하는 것에 기초하여 암호화를 수행할 수 있다. 이와 같이 암호화된 암호문의 복호화 과정에서는 추가 메시지 크기만큼의 비트를 제거하기만 하면 되기 때문에, 메시지의 크기만큼의 비트 각각에 대해, 예를 들어 메시지 크기가 20 비트이면 20 비트 각각에 대한 비교 연산을 수행하지 않고 보다 신속하게 복호화를 수행할 수 있다.
도 3은 본 발명의 일 실시예에 따른 암호화 장치의 기능 블록도를 도시한다. 이하 사용되는 '…부'등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어, 또는, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 3을 참조하면, 암호화 장치(100)는 인코딩부(110), 행렬 선택부(120), 암호문 생성부(130), 암호문 출력부(140)를 포함할 수 있다. 인코딩부(110)는 마이크로프로세서(microprocessor)를 포함하는 연산 장치에 의해 구현될 수 있으며, 이는 후술할 행렬 선택부(120), 암호문 생성부(130), 암호문 출력부(140)에 있어서도 같다.
인코딩부(110)는 메시지를 인코딩하여 제1 행렬을 생성할 수 있다. 보다 구체적으로, 인코딩부(110)는 메시지를 적어도 하나의 메시지 블록으로 나눌 수 있다. 적어도 하나의 메시지 블록으로 나누어진 메시지는 행렬의 형태로 나타날 수 있다. 예를 들어, 적어도 하나의 메시지 블록의 수가 개(예: 6개)인 경우, 행렬의 성분의 개수는 개(예: 6개)일 수 있고, 이에 따라 메시지는 적어도 하나의 메시지 블록을 성분으로 가지는 행렬(2x3 행렬, 즉, v열과 k행을 가지는 행렬)로 나타날 수 있다.
인코딩부(110)는 나누어진 적어도 하나의 메시지 블록 각각에 추가 메시지를 연결할 수 있다. 적어도 하나의 메시지 블록 각각에 연결되는 추가 메시지는 (d+1) 크기를 가지는 비트 스트링인 일 수 있다. 여기서, d는 메시지 암호문의 복호화 과정에서 발생 가능한 에러의 크기로, 기지정된 값일 수 있다. 즉, 추가 메시지는 에러의 크기보다 큰 값으로 미리 지정되어, 적어도 하나의 메시지 블록에 연결될 수 있다.
인코딩부(110)는 상술한 바와 같이 적어도 하나의 메시지 블록으로 메시지를 구분하고 추가 메시지를 삽입함으로써 메시지에 대한 인코딩을 수행할 수 있다. 인코딩부(110)는 추가 메시지가 삽입된 적어도 하나의 메시지 블록 각각을 행렬의 성분으로 가지는 메시지에 대한 행렬을 제1 행렬로 출력할 수 있다. 제1 행렬은 인코딩 결과 출력된 출력값일 수 있다.
행렬 선택부(120)는 암호화를 위한 복수의 행렬을 각각 선택할 수 있다. 보다 구체적으로, 행렬 선택부(120)는 (B, m 및 v 각각은 기지정된 양의 정수)에서 랜덤하게 제2 행렬을 선택하고, (GDs는 기지정된 가우시안 분포, n은 m 보다 작도록 기지정된 양의 정수)에서 랜덤하게 제3 행렬을 선택하고, (k는 m-n 보다 작도록 기지정된 양의 정수)에서 랜덤하게 제4 행렬을 선택할 수 있다.
행렬 선택부(120)는 [-B,B]의 범위에서 성분을 가지는 행렬을 제2 행렬로 선택할 수 있다. 예를 들어, 제2 행렬이 에서 랜덤하게 선택되는 경우, 제2 행렬은 m개의 행을 가지고 v개의 열을 가지는 행렬일 수 있으며, 제2 행렬의 성분은 -1, 0 및 1 중에서 랜덤하게 선택된 것일 수 있다. 다시 말해, 제2 행렬은 행렬로 그 성분이 -1, 0 또는 1로 구성된 것일 수 있다. 경우에 따라, m은 n+k를 만족하는 양의 정수 일 수 있고, v는 인코딩되어 출력되는 제1 행렬의 행의 개수로 기지정된 값일 수 있다. 여기서, k는 제1 행렬의 열의 개수일 수 있다.
행렬 선택부(120)는 기지정된 가우시안 분포 GDs에서 v개의 행과 n개의 열을 가지는 제3 행렬과 v개의 행과 k개의 열을 가지는 제4 행렬 각각의 성분을 랜덤하게 선택할 수 있다.
암호문 생성부(130)는 제1 행렬 내지 제4 행렬을 이용하여 암호문을 생성할 수 있다. 보다 구체적으로, 암호문 생성부(130)는 공개키, 제2 행렬, 제3 행렬을 이용하여 암호문의 제1 부분을 생성하고, 공개키, 제2 행렬, 제4 행렬을 이용하여 암호문의 제2 부분을 생성할 수 있다. 여기서, 공개키는 제1 부분과 제2 부분으로 이루어질 수 있으며, LWE 방법에 기초하여 미리 생성된 것일 수 있다.
암호문 출력부(140)는 생성된 암호문을 출력할 수 있다. 보다 구체적으로, 암호문 출력부(140)는 암호문의 제1 부분과 암호문의 제2 부분이 생성되면, 이에 기초하여 암호문을 출력할 수 있다. 예를 들어, 암호문의 제1 부분이 C-1이고, 암호문의 제2 부분이 C2이면, (C1,C2)의 형태로 암호문을 출력할 수 있다. 이와 같이 암호화된 메시지를 포함하는 암호문은 메시지를 전달받고자 하는 다른 사용자에게 전달될 수 있다.
보다 구체적으로 설명하면, 암호문의 제1 부분은 하기의 수학식 1과 같을 수 있다.
수학식 1에서, C1은 암호문의 제1 부분, RT는 R의 전치 행렬(transposed matrix)이며, R은 제2 행렬, A는 공개키의 제1 부분, E1은 제3 행렬, q는 기지정된 정수일 수 있다.
암호문의 제2 부분은 하기의 수학식 2와 같을 수 있다.
수학식 2에서, C-2은 암호문의 제2 부분, B는 공개키의 제2 부분, E2는 제4 행렬, M은 제1 행렬일 수 있다.
이에 기초하여, 암호문 생성부(130)는 (C1, C2)로 암호문을 생성할 수 있다.
한편, 공개키는 LWE 방법에 기초하여 미리 생성된 것일 수 있다. 이러한 공개키와 함께 암호문의 해독을 위한 비밀키가 미리 생성될 수 있다. 도시하지는 않았으나, 경우에 따라 암호화 장치(100)는 키생성부를 더 포함할 수 있고, 공개키와 비밀키는 키생성부에 생성될 수 있다. 구체적으로, 공개키와 비밀키의 생성에 대해 설명하면 다음과 같다.
키생성부는, 부터 범위 내에 속하는 모든 정수들의 집합인 에서 공개키의 제1 부분을 랜덤하게 선택할 수 있다. 키생성부는 에서 비밀키를 랜덤하게 선택하고, 에서 제5 행렬을 랜덤하게 선택할 수 있다. 이에 기초하여 키생성부는 공개키의 제2 부분을 도출하여 최종적으로, 공개키와 비밀키를 생성할 수 있다. 공개키의 제2 부분은 하기의 수학식 3에 의해 도출될 수 있다.
수학식 3에서, B는 공개키의 제2 부분, A는 공개키의 제1 부분, X는 비밀키, E는 제5 행렬, 수학식 1과 2의 q와 대응하는 값으로 미리 지정된 값일 수 있다. 이에 따라, 공개키는 (A, B)로 결정되고, 비밀키는 X로 결정될 수 있다.
한편, 비밀키를 이용하면 암호문 생성부(130)에 의해 생성된 암호문에 대한 복호화가 이루어져 암호화되었던 메시지의 원본이 도출될 수 있다. 후술하겠으나, 이러한 복호화 과정은 별도의 부분(예: 복호화부 또는 복호화 장치)에 의해 수행될 수 있다.
보다 구체적으로, 복호화는 하기의 수학식 4에 의해 이루어질 수 있다.
수학식 4에서, M은 인코딩 된 후 암호화 되기 전의 메시지일 수 있다. 수학식 4를 참조하면, 암호문의 제1 부분, 제2 부분, 비밀키를 이용하여 암호화 되기 전의 메시지가 도출가능함을 알 수 있다.
수학식 4에 의해 암호화되기 전의 메시지는 메시지 블록의 크기(예: t)와 암호화에 이용되었던 기지정된 상수 q를 이용하여, 인코딩되기 전의 메시지, 즉 원본 메시지를 도출할 수 있다. 암호화되기 전의 메시지는 원본 메시지에 대해 메시지 블록 별로 추가 메시지가 삽입된 상태의 메시지로, 인코딩 과정에서 삽입된 추가 메시지를 제거하여 원본 메시지가 도출될 수 있다.
구체적으로 예를 들면, 와 에 대하여, 를 계산하여, 행렬의 (i,j)번째 원소인 M[i,j]의 최상위 t 비트를 메시지 블록 ( )로 치환한 후, 메시지 블록을 이어서 최종적으로 원본 메시지가 도출되도록 할 수 있다. 원본 메시지는, 비트의 메시지, 즉, 일 수 있다.
한편, 도시하지는 않았으나 암호화 장치(100)는 복호화부를 포함할 수 있고, 상술한 복호화 과정은 복호화부에 의해 수행될 수 있다. 그러나, 경우에 따라, 복호화 과정은 암호화 장치와 구분되어 별개로 존재하는 복호화 장치에 의해 독립적으로 수행될 수도 있다.
도 4는 본 발명의 일 실시예에 따른 암호화 방법의 각 단계의 흐름을 도시한다. 또한, 도 4에 도시된 방법의 각 단계는 경우에 따라 도면에 도시된 바와 그 순서를 달리하여 수행될 수 있음은 물론이다.
도 4를 참조하면, 인코딩부(110)는 메시지를 인코딩하여 제1 행렬을 생성할 수 있다(S110). 행렬 선택부(120)는 (상기 B, 상기 m 및 상기 v 각각은 기지정된 양의 정수)에서 랜덤하게 제2 행렬을 선택할 수 있다(S120).
행렬 선택부(120)는 (상기 GDs는 기지정된 가우시안 분포, 상기 n은 상기 m보다 작도록 기지정된 양의 정수)에서 랜덤하게 제3 행렬을 선택하고, (상기 k는 m-n 보다 작도록 기지정된 양의 정수)에서 랜덤하게 제4 행렬을 선택할 수 있다(S130).
암호문 생성부(130)는 공개키, 제1 행렬 내지 제4 행렬을 이용하여 암호문을 생성할 수 있다(S140). 구체적으로, 암호문 생성부(130)는 미리 생성된 공개키, 제2 행렬 및 제3 행렬을 이용하여 암호문의 제1 부분을 생성하고, 공개키, 제1 행렬, 제2 행렬 및 제4 행렬을 이용하여 암호문의 제2 부분을 생성할 수 있다.
암호문 출력부(140)는 생성된 암호문을 출력할 수 있다(S140). 출력된 암호문은 메시지를 전달 받고자하는 다른 사용자에게 전달될 수 있다. 다른 사용자가 도 3을 통해 상술한 복호화 과정의 수행이 가능한 복호화 장치와 비밀키를 가지고 있는 경우, 암호문은 비밀키와 복호화 장치에 기초하여 복호화되어, 원본 메시지가 도출될 수 있다.
도 5는 본 발명의 일 실시예에 따른 암호화 방법에서 인코딩 단계의 흐름을 구체적으로 도시한다. 도 5에 도시된 방법의 각 단계는 경우에 따라 도면에 도시된 바와 그 순서를 달리하여 수행될 수 있음은 물론이다.
도 5를 참조하면, 인코딩부(110)는 메시지를 적어도 하나의 메시지 블록으로 구분할 수 있다(S210). 보다 구체적으로, 인코딩부(110)는 적어도 하나의 메시지 블록이 소정의 크기를 가지도록 메시지를 나눌 수 있다. 예를 들어, 인코딩부(110)는 적어도 하나의 메시지 블록 각각이 t 비트가 되도록 비트의 메시지를 나눌 수 있다.
인코딩부(110)는 적어도 하나의 메시지 블록 각각에 추가 메시지를 연결할 수 있다(S220). 인코딩부(110)는 적어도 하나의 메시지 블록 각각에 d+1 비트의 비트 스트링인 추가 메시지를 연결할 수 있다. 적어도 하나의 메시지 블록 각각에 추가 메시지가 연결되면 인코딩이 완료될 수 있다. 이에 따라, 인코딩된 메시지에 대해 암호화가 수행될 수 있다.
본 발명의 일 실시예에 따른 암호화 장치(100)는 메시지 블록에 추가 메시지를 삽입하여 암호화를 수행함으로써, 복호화 과정에서 추가 메시지를 제거함에 의해 메시지를 복원할 수 있기 때문에, 보다 용이하게 복호화가 수행되도록 할 수 있다. 보다 구체적으로, 암호화 장치(100)에 의해 암호화된 메시지의 복호화 과정에서는 비트 별 비교 연산을 수행될 필요가 없어 보다 신속하고 효율적으로 복호화가 수행될 수 있다.
또한, 본 발명의 일 실시예에 따른 암호화 장치(100)는 추가 연산 없이, 추가 메시지를 삽입하는 방식으로 한번에 t 비트의 메시지 블록을 인코딩할 수 있다. 즉, 암호화/복호화가 t 비트 단위로 수행될 수 있어 비트의 메시지의 경우, 번의 연산만 수행되면 되기 때문에, 번의 연산이 수행되어야 했던 기존의 기법에 비해 보다 효율적으로 암호화/복호화가 수행되도록 할 수 있다.
또한, 본 발명의 일 실시예에 따른 암호화 장치(100)는 메시지 블록에 추가되는 메시지의 크기가 에러의 크기보다 크기 때문에, 에러가 삽입되더라도 메시지에 영향을 미치지 않으며, 에러가 삽입된 추가 메시지만 제거하면 되기 때문에, 보다 정확하고 신속하게 복호화가 수행되도록 할 수 있다.
본 명세서에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 명세서에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 암호화 장치
110: 인코딩부
120: 행렬선택부
130: 암호문 생성부
140: 암호문 출력부
110: 인코딩부
120: 행렬선택부
130: 암호문 생성부
140: 암호문 출력부
Claims (15)
- 제1항에 있어서,
상기 인코딩된 적어도 하나의 메시지 블록 각각의 추가 메시지는 디코딩되는 과정에서 제거되는
메시지 인코딩 방법.
- 적어도 하나의 프로세서에 의해 수행되는 메시지 암호화 방법에 있어서,
메시지를 인코딩하여 제1 행렬을 생성하는 단계와,
(상기 B, 상기 m 및 상기 v 각각은 기지정된 양의 정수)에서 랜덤하게 제2 행렬을 선택하는 단계와,
(상기 GDs는 기지정된 가우시안 분포, 상기 n은 상기 m보다 작도록 기지정된 양의 정수)에서 랜덤하게 제3 행렬을 선택하고, (상기 k는 m-n 보다 작도록 기지정된 양의 정수)에서 랜덤하게 제4 행렬을 선택하는 단계와,
미리 생성된 공개키, 상기 제2 행렬, 및 상기 제3 행렬을 이용하여 암호문의 제1 부분을 생성하는 단계와,
상기 공개키, 상기 제1 행렬, 상기 제2 행렬 및 상기 제4 행렬을 이용하여 상기 암호문의 제2 부분을 생성하는 단계와,
상기 제1 부분과 상기 제2 부분에 기초하여 상기 암호문을 출력하는 단계를 포함하는
메시지 암호화 방법.
- 제5항에 있어서,
상기 인코딩된 적어도 하나의 메시지 블록 각각의 추가 메시지는 디코딩되는 과정에서 제거되는
메시지 암호화 방법.
- 제9항에 있어서,
상기 제8 행렬은,
F = AX+E (mod q) (상기 F는 상기 제8 행렬, 상기 A는 상기 제5 행렬, 상기 X는 상기 제6 행렬, 상기 E는 상기 제7 행렬)이고,
메시지 암호화 방법.
- 메시지를 인코딩하여 제1 행렬을 생성하는 인코딩부와,
(상기 B, 상기 m 및 상기 v 각각은 기지정된 양의 정수)에서 랜덤하게 제2 행렬을 선택하고, (상기 GDs는 기지정된 가우시안 분포, 상기 n은 상기 m보다 작도록 기지정된 양의 정수)에서 랜덤하게 제3 행렬을 선택하고, (상기 k는 m-n 보다 작도록 기지정된 양의 정수)에서 랜덤하게 제4 행렬을 선택하는 행렬 선택부와,
미리 생성된 공개키, 상기 제2 행렬, 및 상기 제3 행렬을 이용하여 암호문의 제1 부분을 생성하고, 상기 공개키, 상기 제1 행렬, 상기 제2 행렬 및 상기 제4 행렬을 이용하여 상기 암호문의 제2 부분을 생성하는 암호문 생성부와,
상기 제1 부분과 상기 제2 부분에 기초하여 상기 암호문을 출력하는 출력부를 포함하는
메시지 암호화 장치.
- 제12항에 있어서,
상기 인코딩된 적어도 하나의 메시지 블록 각각의 추가 메시지는 디코딩되는 과정에서 제거되는
메시지 암호화 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190037993A KR101984297B1 (ko) | 2019-04-01 | 2019-04-01 | 메시지 인코딩 방법, 메시지 암호화 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190037993A KR101984297B1 (ko) | 2019-04-01 | 2019-04-01 | 메시지 인코딩 방법, 메시지 암호화 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101984297B1 true KR101984297B1 (ko) | 2019-05-31 |
Family
ID=66657238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190037993A KR101984297B1 (ko) | 2019-04-01 | 2019-04-01 | 메시지 인코딩 방법, 메시지 암호화 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101984297B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101527979B1 (ko) * | 2007-01-26 | 2015-06-12 | 탈레스 | 정보 송신 보안 방법 |
KR20180056380A (ko) * | 2016-11-18 | 2018-05-28 | 서울대학교산학협력단 | 공개키를 이용하여 암호화하는 연산 장치 및 그 암호화 방법 |
-
2019
- 2019-04-01 KR KR1020190037993A patent/KR101984297B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101527979B1 (ko) * | 2007-01-26 | 2015-06-12 | 탈레스 | 정보 송신 보안 방법 |
KR20180056380A (ko) * | 2016-11-18 | 2018-05-28 | 서울대학교산학협력단 | 공개키를 이용하여 암호화하는 연산 장치 및 그 암호화 방법 |
KR101905689B1 (ko) | 2016-11-18 | 2018-12-05 | 서울대학교산학협력단 | 공개키를 이용하여 암호화하는 연산 장치 및 그 암호화 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170324554A1 (en) | Public Key Cryptosystem Based On Partitioning Of Galois Field Elements | |
US7451310B2 (en) | Parallelizable authentication tree for random access storage | |
US20040078576A1 (en) | Pseudo-random number generator | |
KR20110004474A (ko) | 갈루아 폐체 암호 시스템 | |
US10419207B2 (en) | Cryptographic apparatuses and methods for encrypting and decrypting data using automata | |
KR101913100B1 (ko) | 생성 행렬의 천공에 기초한 암호화키를 사용하는 데이터 암호화 장치 및 방법 | |
KR101942030B1 (ko) | 메시지에 대한 무결성 검증이 지원되는 부호 기반의 암호화가 가능한 전자 장치 및 그 동작 방법 | |
US20040083251A1 (en) | Parallel modulo arithmetic using bitwise logical operations | |
Kim et al. | A secure information transmission scheme with a secret key based on polar coding | |
JP5689826B2 (ja) | 秘密計算システム、暗号化装置、秘密計算装置及びその方法、プログラム | |
US20070277043A1 (en) | Methods for Generating Identification Values for Identifying Electronic Messages | |
US20040078570A1 (en) | Method of protecting a cryptosystem from a multiple transmission attack | |
EP1287641B1 (en) | A method of validating an encrypted message | |
EP1287638B1 (en) | Decoding of cipher polynomials | |
US20040076291A1 (en) | End of message markers | |
Lee et al. | Ciphertext-only attack on linear feedback shift register-based Esmaeili-Gulliver cryptosystem | |
KR101984297B1 (ko) | 메시지 인코딩 방법, 메시지 암호화 방법 및 장치 | |
JP2001282103A (ja) | 暗号化方法 | |
JP2006133380A (ja) | 復号装置と復号プログラム及び暗号通信システム | |
JPH11161164A (ja) | 公開鍵暗号方式と暗号化装置および復号装置 | |
Kumar et al. | A New Digital Encryption Scheme: Binary Matrix Rotations Encryption Algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |