KR101913644B1 - 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법 - Google Patents

메시지 인증이 가능한 부호 기반 암호화 장치 및 방법 Download PDF

Info

Publication number
KR101913644B1
KR101913644B1 KR1020170030981A KR20170030981A KR101913644B1 KR 101913644 B1 KR101913644 B1 KR 101913644B1 KR 1020170030981 A KR1020170030981 A KR 1020170030981A KR 20170030981 A KR20170030981 A KR 20170030981A KR 101913644 B1 KR101913644 B1 KR 101913644B1
Authority
KR
South Korea
Prior art keywords
message
code
hash value
value
matrix
Prior art date
Application number
KR1020170030981A
Other languages
English (en)
Other versions
KR20180104363A (ko
Inventor
임대운
유기순
Original Assignee
동국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 동국대학교 산학협력단 filed Critical 동국대학교 산학협력단
Priority to KR1020170030981A priority Critical patent/KR101913644B1/ko
Publication of KR20180104363A publication Critical patent/KR20180104363A/ko
Application granted granted Critical
Publication of KR101913644B1 publication Critical patent/KR101913644B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key 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/0825Key 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/304Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy based on error correction codes, e.g. McEliece

Abstract

메시지 인증이 가능한 부호 기반 암호화 장치 및 방법이 개시된다. 본 발명에 따른 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법은 원본 메시지 m에 대해 McEliece 기반의 암호화 알고리즘에 따라 암호화하여 데이터 수신 장치로 전송하되, 데이터 암호화에 사용되는 오류 벡터를 상기 원본 메시지의 특성에 종속되도록 생성함으로써, 상기 데이터 수신 장치가 암호화 메시지를 수신하게 되면, 상기 암호화 메시지로부터 상기 원본 메시지를 복원하고, 상기 복원된 원본 메시지로부터 상기 복원된 원본 메시지의 특성에 종속되는 오류 벡터를 생성하도록 하여 상기 복원된 원본 메시지로부터 생성된 오류 벡터의 특성이 상기 암호화 메시지에 포함된 오류 벡터의 특성과 동일한지 여부를 검증하는 방식으로 상기 복원된 원본 메시지에 대한 무결성 검증이 가능하도록 지원할 수 있다.

Description

메시지 인증이 가능한 부호 기반 암호화 장치 및 방법{CODE-BASED ENCRYPTION APPARATUS AND METHOD CAPABLE OF MESSAGE AUTHENTICATION}
본 발명은 비대칭키를 이용하는 부호 기반의 암호화 장치 및 방법에 대한 기술과 관련된다.
최근, 다양한 형태의 정보가 생성되고 유통됨에 따라, 해킹이나 잘못된 경로로의 정보 전달로 인해 중요한 정보가 제3자에게 노출되는 등의 피해가 발생하고 있다.
특히, 정보의 전달과정에서 군사 정보나 개인 정보 등과 같은 중요 정보에 어떠한 방어 기제가 적용되어 있지 않은 상태에서 이러한 중요 정보가 우연히 제3자에게 전달된다면, 제3자가 손쉽게 중요 정보에 접근할 수 있어, 큰 피해가 발생할 수 있다.
최근에는 이러한 중요 정보의 노출을 방지하기 위해, 중요 정보를 소정의 암호화키를 이용하여 암호화한 후 이를 상대방에게 전달하는 기법 등이 도입되고 있다.
일반적인 데이터 암호화 방식은 데이터 전송측과 데이터 수신측이 동일한 비밀키를 공유하고 있다가, 데이터 전송측이 비밀키로 데이터를 암호화해서 전송하면, 데이터 수신측이 동일한 비밀키로 데이터를 복호화하는 방식이 사용된다.
하지만, 이러한 대칭키 기반의 암호화 방식은 비밀키의 전달 및 공유 과정에서 해당 비밀키가 노출될 위험성이 존재한다는 점에서 보안에 취약한 약점이 존재한다.
이러한 대칭키 기반의 암호화 방식의 단점을 해소하기 위해서, 공개키와 개인키라는 비대칭키를 활용한 데이터 암호화 방식이 도입되었다. 비대칭키 기반의 데이터 암호화 방식은 데이터 전송측이 공개키로 데이터를 암호화해서 데이터 수신측으로 전송하면, 데이터 수신측이 상기 공개키에 대응하는 개인키로 데이터를 복호화하거나 데이터 전송측이 개인키로 데이터를 암호화해서 데이터 수신측으로 전송하면, 데이터 수신측이 상기 공개키로 데이터를 복호화하는 방식이 사용된다.
이러한 비대칭키 기반의 데이터 암호화 방식은 데이터 전송측과 데이터 수신측이 서로 다른 암호화키를 가지고 있다는 점에서 암호화키 노출에 따른 위험성을 최소화할 수 있다.
최근에는 이러한 비대칭키 기반의 암호화 방식이 적용된 시스템으로, McEliece 암호화 시스템이 도입되고 있다. McEliece 암호화 시스템은 데이터 전송 장치가 t(t는 자연수)비트의 코드에 대한 오류 정정 능력을 갖는 선형 코드에 대한 "1"과 "0"의 코드 값을 성분으로 포함하는 k x n(k와 n은 자연수) 크기의 생성 행렬 G와 "1"과 "0"의 코드 값을 성분으로 포함하는 k x k 크기의 이진 정칙 행렬(Binary non-singular matrix) S 및 "1"과 "0"의 코드 값을 성분으로 포함하는 n x n 크기의 순열 행렬 P를 활용해서 공개키 Kpub을 만들고, 데이터 수신 장치로 전송할 메시지 m을 상기 공개키 Kpub로 암호화하여 암호화 메시지 c를 생성한 후 상기 암호화 메시지 c를 상기 데이터 수신 장치로 전송하면, 상기 데이터 수신 장치가 메모리 상에 기 저장하고 있는 상기 생성 행렬 G, 상기 이진 정칙 행렬 S 및 상기 순열 행렬 P를 개인키로 활용해서 상기 암호화 메시지에 대한 복호화를 수행함으로써, 상기 메시지 m을 복원하는 시스템이다.
관련해서, McEliece 암호화 시스템에서의 데이터 암호화와 복호화 방식에 대해 간단히 설명하면 다음과 같다.
우선, 데이터 전송 장치가 사용하는 공개키는 Kpub는 하기의 수학식 1과 같이 정의된다.
Figure 112017024431477-pat00001
여기서, 상기 수학식 1에서 생성 행렬 G는 t비트의 코드에 대한 오류 정정 능력을 갖는 (n, k) 선형 코드 C에 대한 k x n 크기의 생성 행렬이고, S는 랜덤하게 결정된 k x k 크기를 갖는 이진 정칙 행렬이며, P는 랜덤하게 결정된 n x n 크기를 갖는 순열 행렬이다.
이때, 데이터 수신 장치는 메모리 상에서 상기 공개키 Kpub에 대응하는 개인키로 상기 생성 행렬 G, 상기 이진 정칙 행렬 S 및 상기 순열 행렬 P를 각각 저장하고 있다.
이러한 상황 하에서 데이터 전송 장치는 상기 데이터 수신 장치로 전송할 k비트의 크기를 갖는 메시지 m에 대해서 하기의 수학식 2에 따른 암호화 연산을 수행함으로써, 암호화 메시지 c를 생성할 수 있다.
Figure 112017024431477-pat00002
여기서, e는 t 이하의 해밍 무게(Hamming Weight)를 가지면서, n비트의 길이를 갖는 랜덤 벡터이고, "
Figure 112017024431477-pat00003
"는 배타적 논리합 연산이다.
그리고, 해밍 무게란 데이터를 구성하는 비트열에서 "1"이라는 비트 값의 개수를 의미한다.
이렇게, 상기 암호화 메시지 c가 생성되면, 상기 데이터 전송 장치는 상기 데이터 수신 장치로 상기 암호화 메시지 c를 전송함으로써, 데이터 암호화 전송을 완료한다.
이렇게, 상기 데이터 전송 장치로부터 상기 암호화 메시지 c가 상기 데이터 수신 장치로 전송되면, 상기 데이터 수신 장치는 메모리 상에 저장되어 있는 상기 생성 행렬 G, 상기 이진 정칙 행렬 S 및 상기 순열 행렬 P를 활용해서 상기 암호화 메시지에 대한 복호화를 수행하게 된다.
관련해서, 상기 데이터 수신 장치는 상기 암호화 메시지 c가 수신되면, 하기의 수학식 3과 같이 상기 암호화 메시지 c에 대해 상기 순열 행렬 P의 역행렬인 P-1을 곱하여 cP-1을 연산한다.
Figure 112017024431477-pat00004
그러고 나서, 상기 데이터 수신 장치는 cP-1로부터 상기 생성 행렬 G를 이용해서 오류 정정을 위한 데이터 디코딩을 수행하여 mS를 연산할 수 있다.
여기서, 상기 e는 t 이하의 해밍 무게를 갖는 벡터이고, P는 순열 행렬이므로, eP-1도 t 이하의 해밍 무게를 갖기 때문에 결론적으로 eP-1은 mSG라는 부호어에서 t개 이하의 비트 값에 대해 오류가 발생한 것으로 볼 수 있어서, 상기 데이터 수신 장치는 메모리 상에 저장되어 있는 t비트의 코드에 대한 오류 정정 능력을 갖는 (n, k) 선형 코드 C의 생성 행렬인 G를 이용하여 eP-1에 대해 오류 정정을 수행함으로써, mS를 디코딩할 수 있다.
이렇게, mS의 연산이 완료되면, 상기 데이터 수신 장치는 하기의 수학식 4와 같이 메모리 상에 저장되어 있는 상기 이진 정칙 행렬 S의 역행렬인 S-1을 mS에 곱함으로써, 원본 메시지인 m을 최종적으로 복호화할 수 있다.
Figure 112017024431477-pat00005
이러한 McEliece 암호화 시스템은 공개키와 비밀키라는 비대칭키를 활용해서, 데이터에 대한 암호화를 수행하도록 구성되어 있지만, 기존의 McEliece 암호화 시스템은 원본 메시지 자체에 대한 무결성을 검증할 수 있도록 하는 기능이 도입되어 있지 않기 때문에, 데이터 전송 과정에서 원본 메시지가 위조 또는 변조되거나, 데이터 전송측의 실수로 인해 원본 메시지가 의도치 않게 변경되어 데이터 수신측으로 전송될 경우, 데이터 수신측이 잘못된 원본 메시지를 수신하게 되는 문제가 발생할 수 있었다.
따라서, McEliece 암호화 시스템에서 원본 메시지의 무결성을 보장할 수 있도록 하는 기술에 대한 연구가 필요하다.
본 발명에 따른 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법은 원본 메시지 m에 대해 McEliece 기반의 암호화 알고리즘에 따라 암호화하여 데이터 수신 장치로 전송하되, 데이터 암호화에 사용되는 오류 벡터를 상기 원본 메시지의 특성에 종속되도록 생성함으로써, 상기 데이터 수신 장치가 암호화 메시지를 수신하게 되면, 상기 암호화 메시지로부터 상기 원본 메시지를 복원하고, 상기 복원된 원본 메시지로부터 상기 복원된 원본 메시지의 특성에 종속되는 오류 벡터를 생성하도록 하여 상기 복원된 원본 메시지로부터 생성된 오류 벡터의 특성이 상기 암호화 메시지에 포함된 오류 벡터의 특성과 동일한지 여부를 검증하는 방식으로 상기 복원된 원본 메시지에 대한 무결성 검증이 가능하도록 지원하고자 한다.
본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 장치는 "1"과 "0"의 코드 값을 성분으로 포함하는 k x k(k는 자연수) 크기의 이진 정칙 행렬 S, t(t는 자연수)비트의 코드에 대한 오류 정정 능력을 가지면서 "1"과 "0"의 코드 값을 성분으로 포함하는 k x n(n은 자연수) 크기의 생성 행렬 G 및 "1"과 "0"의 코드 값을 성분으로 포함하는 n x n 크기의 순열 행렬 P가 곱해진 공개키 Kpub(Kpub=SGP)가 저장되어 있는 공개키 저장부, 데이터 수신 장치로 전송할 k비트의 크기를 갖는 원본 메시지 m을 선정된(predetermined) 해시 함수에 입력으로 인가하여 해시 값을 생성하고, 상기 해시 값으로부터 해밍 무게(Hamming Weight)가 t이면서, "1"과 "0"의 코드 값으로 구성된 크기가 n인 오류 벡터 e를 생성하는 오류 벡터 생성부, 상기 원본 메시지 m에 대해 상기 공개키 Kpub와 상기 오류 벡터 e를 기초로 암호화를 수행하여 암호화 메시지 c를 생성하는 메시지 암호화부 및 상기 암호화 메시지 c를 상기 데이터 수신 장치로 전송하는 메시지 암호화 전송부를 포함한다.
또한, 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 방법은 "1"과 "0"의 코드 값을 성분으로 포함하는 k x k(k는 자연수) 크기의 이진 정칙 행렬 S, t(t는 자연수)비트의 코드에 대한 오류 정정 능력을 가지면서 "1"과 "0"의 코드 값을 성분으로 포함하는 k x n(n은 자연수) 크기의 생성 행렬 G 및 "1"과 "0"의 코드 값을 성분으로 포함하는 n x n 크기의 순열 행렬 P가 곱해진 공개키 Kpub(Kpub=SGP)가 저장되어 있는 공개키 저장부를 유지하는 단계, 데이터 수신 장치로 전송할 k비트의 크기를 갖는 원본 메시지 m을 선정된 해시 함수에 입력으로 인가하여 해시 값을 생성하고, 상기 해시 값으로부터 해밍 무게가 t이면서, "1"과 "0"의 코드 값으로 구성된 크기가 n인 오류 벡터 e를 생성하는 단계, 상기 원본 메시지 m에 대해 상기 공개키 Kpub와 상기 오류 벡터 e를 기초로 암호화를 수행하여 암호화 메시지 c를 생성하는 단계 및 상기 암호화 메시지 c를 상기 데이터 수신 장치로 전송하는 단계를 포함한다.
본 발명에 따른 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법은 원본 메시지 m에 대해 McEliece 기반의 암호화 알고리즘에 따라 암호화하여 데이터 수신 장치로 전송하되, 데이터 암호화에 사용되는 오류 벡터를 상기 원본 메시지의 특성에 종속되도록 생성함으로써, 상기 데이터 수신 장치가 암호화 메시지를 수신하게 되면, 상기 암호화 메시지로부터 상기 원본 메시지를 복원하고, 상기 복원된 원본 메시지로부터 상기 복원된 원본 메시지의 특성에 종속되는 오류 벡터를 생성하도록 하여 상기 복원된 원본 메시지로부터 생성된 오류 벡터의 특성이 상기 암호화 메시지에 포함된 오류 벡터의 특성과 동일한지 여부를 검증하는 방식으로 상기 복원된 원본 메시지에 대한 무결성 검증이 가능하도록 지원할 수 있다.
도 1은 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 장치의 구조를 도시한 도면이다.
도 2와 도 3은 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 장치의 동작을 설명하기 위한 도면이다.
도 4는 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 방법을 도시한 순서도이다.
이하에서는 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명하기로 한다. 이러한 설명은 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였으며, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 본 명세서 상에서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 사람에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다.
도 1은 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 장치의 구조를 도시한 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 장치(110)는 공개키 저장부(111), 오류 벡터 생성부(112), 메시지 암호화부(113) 및 메시지 암호화 전송부(114)를 포함한다.
공개키 저장부(111)에는 "1"과 "0"의 코드 값을 성분으로 포함하는 k x k(k는 자연수) 크기의 이진 정칙 행렬 S, t(t는 자연수)비트의 코드에 대한 오류 정정 능력을 가지면서 "1"과 "0"의 코드 값을 성분으로 포함하는 k x n(n은 자연수) 크기의 생성 행렬 G 및 "1"과 "0"의 코드 값을 성분으로 포함하는 n x n 크기의 순열 행렬 P가 곱해진 공개키 Kpub(Kpub=SGP)가 저장되어 있다.
관련해서, 공개키 저장부(111)에는 하기의 수학식 5에 따른 상기 공개키 Kpub가 저장되어 있다.
Figure 112017024431477-pat00006
여기서, 공개키 저장부(111)는 메시지 인증이 가능한 부호 기반 암호화 장치(110)에 포함될 수 있는 공개키 저장 유지부(미도시)를 통해 유지 및 관리될 수 있다.
오류 벡터 생성부(112)는 데이터 수신 장치(120)로 전송할 k비트의 크기를 갖는 원본 메시지 m을 선정된(predetermined) 해시 함수에 입력으로 인가하여 해시 값을 생성하고, 상기 해시 값으로부터 해밍 무게(Hamming Weight)가 t이면서, "1"과 "0"의 코드 값으로 구성된 크기가 n인 오류 벡터 e를 생성한다.
이때, 본 발명의 일실시예에 따르면, 오류 벡터 생성부(112)는 해시 값 생성부(115), 인덱스 추출부(116) 및 벡터 생성부(117)를 포함할 수 있다.
해시 값 생성부(115)는 상기 원본 메시지 m을 상기 선정된 해시 함수에 입력으로 인가하여 상기 해시 값을 생성한다.
인덱스 추출부(116)는 상기 해시 값으로부터 상기 오류 벡터 e 상에 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 t개의 인덱스 값들을 추출한다.
벡터 생성부(117)는 상기 t개의 인덱스 값들에 기초하여 상기 t개의 인덱스 값들이 지시하는 위치에 "1"의 코드 값을 삽입하고, 나머지 위치에 대해 "0"의 코드 값을 삽입함으로써, "1"과 "0"의 코드 값으로 구성된 크기가 n인 상기 오류 벡터 e를 생성한다.
이때, 본 발명의 일실시예에 따르면, 인덱스 추출부(116)는 상기 해시 값을 구성하는 복수의 "1"과 "0"의 코드 값들을 log2n개의 코드 값들 별로 그룹화하여 log2n개의 코드 값들이 포함되어 있는 t개의 그룹들을 생성한 후, 상기 t개의 그룹들 별로, 상기 t개의 그룹들 내에 포함되어 있는 log2n개의 코드 값들을 십진수로 변환함으로써, 상기 t개의 그룹들을 통해 변환된 t개의 십진수들을 상기 t개의 인덱스 값들로 추출할 수 있다.
이때, 본 발명의 일실시예에 따르면, 오류 벡터 생성부(112)는 변환 해시 값 생성부(118) 및 해시 값 보정부(119)를 더 포함할 수 있다.
변환 해시 값 생성부(118)는 상기 해시 값의 크기가 tlog2n보다 작은 경우, 상기 t개의 인덱스 값들을 추출하기 위해 사용되는 최종 해시 값의 크기가 tlog2n을 초과하기 위해 필요로 하는 추가 해시 값의 개수만큼 상기 원본 메시지 m에 대해 순환 시프트(cyclic shift) 연산을 수행함으로써, 적어도 하나의 변환 메시지를 생성하고, 상기 적어도 하나의 변환 메시지를 상기 선정된 해시 함수에 입력으로 인가하여 적어도 하나의 변환 해시 값을 생성한다.
해시 값 보정부(119)는 상기 해시 값과 상기 적어도 하나의 변환 해시 값을 조합하여 조합 해시 값을 생성한 후 상기 조합 해시 값을 상기 t개의 인덱스 값들을 추출하기 위해 사용하는 상기 최종 해시 값으로 결정한다.
이때, 인덱스 추출부(116)는 상기 최종 해시 값이 결정되면, 상기 최종 해시 값으로부터 상기 오류 벡터 e 상에 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 상기 t개의 인덱스 값들을 추출한다.
메시지 암호화부(113)는 상기 원본 메시지 m에 대해 상기 공개키 Kpub와 상기 오류 벡터 e를 기초로 암호화를 수행하여 암호화 메시지 c를 생성한다.
이때, 본 발명의 일실시예에 따르면, 메시지 암호화부(113)는 상기 원본 메시지 m에 상기 공개키 Kpub를 곱하여 결과 값 c'을 생성하고, 상기 결과 값 c'과 상기 오류 벡터 e에 대해 배타적 논리합 연산을 수행함으로써, 상기 암호화 메시지 c를 생성할 수 있다.
관련해서, 메시지 암호화부(113)는 하기의 수학식 6의 연산에 따라 상기 암호화 메시지 c를 생성할 수 있다.
Figure 112017024431477-pat00007
여기서, "
Figure 112017024431477-pat00008
"는 배타적 논리합 연산을 의미한다.
메시지 암호화 전송부(114)는 상기 암호화 메시지 c를 데이터 수신 장치(120)로 전송한다.
이때, 본 발명의 일실시예에 따르면, 데이터 수신 장치(120)는 메모리 상에 상기 이진 정칙 행렬 S, 상기 생성 행렬 G 및 상기 순열 행렬 P를 상기 공개키에 대응하는 개인키로 저장하고 있고, 상기 암호화 메시지 c가 수신되면, 상기 암호화 메시지 c에 대해 상기 메모리 상에 저장되어 있는 상기 순열 행렬 P의 역행렬 P-1을 곱하여 cP-1을 연산하고, 상기 생성 행렬 G를 기초로 상기 cP-1에 대한 오류 정정을 수행하여 상기 원본 메시지 m과 상기 이진 정칙 행렬 S가 곱해진 mS를 연산한 후 상기 mS에 대해 상기 이진 정칙 행렬 S의 역행렬 S-1을 곱하여 상기 원본 메시지 m을 복호화할 수 있다.
관련해서, 데이터 수신 장치(130)는 상기 암호화 메시지 c가 수신되면, 하기의 수학식 7의 연산에 따라 상기 암호화 메시지 c에 대해 상기 메모리 상에 저장되어 있는 상기 순열 행렬 P의 역행렬 P-1을 곱하여 cP-1을 연산하고, 상기 생성 행렬 G를 기초로 상기 cP-1에 대한 오류 정정을 수행하여 상기 원본 메시지 m과 상기 이진 정칙 행렬 S가 곱해진 mS를 연산한 후 하기의 수학식 8의 연산에 따라 상기 mS에 대해 상기 이진 정칙 행렬 S의 역행렬 S-1을 곱하여 상기 원본 메시지 m을 복호화할 수 있다.
Figure 112017024431477-pat00009
Figure 112017024431477-pat00010
이때, 본 발명의 일실시예에 따르면, 데이터 수신 장치(120)는 상기 메모리 상에 상기 선정된 해시 함수를 추가로 저장하고 있으며, 상기 원본 메시지 m의 복호화가 완료되면, 상기 복호화된 원본 메시지 m을 상기 메모리 상에 저장되어 있는 상기 선정된 해시 함수에 입력으로 인가하여 복호 해시 값을 생성하고, 상기 복호 해시 값으로부터 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 t개의 인덱스 값들을 추출하여 추출된 t개의 인덱스 값들을 기초로 "1"과 "0"의 코드 값으로 구성된 크기가 n인 복호화 오류 벡터 z를 생성한 후 상기 암호화 메시지 c와 상기 복호화 오류 벡터 z에 대해 배타적 논리합 연산을 수행하여 제1 검증 값을 생성하고, 상기 복호화된 원본 메시지 m에 대해 상기 공개키 Kpub를 곱하여 제2 검증 값을 생성한 후 상기 제1 검증 값과 상기 제2 검증 값이 동일한 것으로 판단되면, 상기 복호화된 원본 메시지 m에 대해 무결성이 확인된 것으로 판단할 수 있다.
이하에서는 도 2와 도 3을 참조하여, 본 발명에 따른 메시지 인증이 가능한 부호 기반 암호화 장치(110)의 동작에 대해 예를 들어 상세히 설명하기로 한다.
도 2와 도 3은 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 장치(110)의 동작을 설명하기 위한 도면이다.
우선, t를 "2", k를 "4", n을 "8"이라고 가정하기로 하고, 데이터 수신 장치(120)에 대해 도 2의 도면부호 210에 도시된 바와 같이, "0101"(211)이라는 원본 메시지 m을 암호화해서 전송하는 사항을 가정하기로 한다.
이때, 공개키 저장부(111)에는 "1"과 "0"의 코드 값을 성분으로 포함하는 4 x 4 크기의 이진 정칙 행렬 S, 2비트의 코드에 대한 오류 정정 능력을 가지면서 "1"과 "0"의 코드 값을 성분으로 포함하는 4 x 8 크기의 생성 행렬 G 및 "1"과 "0"의 코드 값을 성분으로 포함하는 8 x 8 크기의 순열 행렬 P가 곱해진 공개키 Kpub가 저장되어 있으므로, 상기 공개키 Kpub는 4 x 8 크기의 "0"과 "1"의 코드 값을 성분으로 포함하는 행렬이 된다.
이때, 오류 벡터 생성부(112)는 "0101"(211)이라는 상기 원본 메시지 m을 해시 함수에 입력으로 인가하여 해시 값을 생성하고, 상기 해시 값으로부터 해밍 무게가 "2"이면서, "1"과 "0"의 코드 값으로 구성된 크기가 8인 오류 벡터 e를 생성할 수 있다.
관련해서, 오류 벡터 생성부(112)에 포함된 해시 값 생성부(115)는 "0101"(211)이라는 상기 원본 메시지 m에 대해 도면부호 220에 도시된 바와 같이 선정된 해시 함수를 적용하여 "001101"(213)이라는 해시 값을 생성할 수 있다.
그리고, 인덱스 추출부(116)는 "001101"(213)이라는 상기 해시 값으로부터 도면부호 230에 도시된 바와 같이 상기 오류 벡터 e 상에 2개의 "1"의 코드 값이 삽입될 위치를 지시하는 2개의 인덱스 값들을 추출할 수 있다.
이때, 인덱스 추출부(116)는 "001101"(213)이라는 상기 해시 값을 구성하는 복수의 "1"과 "0"의 코드 값들을 log2n개의 코드 값들 별로 그룹화하여 log2n개의 코드 값들이 포함되어 있는 2개의 그룹들을 생성한 후, 상기 2개의 그룹들 별로, 상기 2개의 그룹들 내에 포함되어 있는 log2n개의 코드 값들을 십진수로 변환함으로써, 상기 2개의 그룹들을 통해 변환된 2개의 십진수들을 상기 2개의 인덱스 값들로 추출할 수 있다.
관련해서, 본 실시예에서는 n을 "8"로 가정하였기 때문에, 인덱스 추출부(116)는 "001101"(213)이라는 상기 해시 값을 구성하는 복수의 "1"과 "0"의 코드 값들을 도면부호 214와 215에 도시된 바와 같이, 3개의 코드 값들 별로 그룹화하여 3개의 코드 값들이 포함되어 있는 2개의 그룹들인 "001"(214), "101"(215)을 생성할 수 있다.
그러고 나서, 인덱스 추출부(116)는 "001"(214), "101"(215)이라는 이진수의 코드 값들을 각각 "1", "5"라는 십진수로 변환함으로써, 상기 2개의 그룹들로부터 "1"과 "5"라는 2개의 인덱스 값들을 추출할 수 있다.
그 이후, 벡터 생성부(117)는 "1"과 "5"라는 상기 2개의 인덱스 값들에 기초하여 도면부호 240에 도시된 바와 같이, 상기 2개의 인덱스 값들이 지시하는 위치에 "1"의 코드 값을 삽입하고, 나머지 위치에 대해 "0"의 코드 값을 삽입함으로써, "1"과 "0"의 코드 값으로 구성된 크기가 8인 "01000100"(216)이라는 상기 오류 벡터 e를 생성할 수 있다.
이때, 본 발명의 일실시예에 따르면, 해시 값 생성부(115)에서 생성된 상기 해시 값의 크기가 tlog2n보다 작은 경우, 변환 해시 값 생성부(118)는 상기 2개의 인덱스 값들을 추출하기 위해 사용되는 최종 해시 값의 크기가 tlog2n을 초과하기 위해 필요로 하는 추가 해시 값의 개수만큼 상기 원본 메시지 m에 대해 순환 시프트 연산을 수행함으로써, 적어도 하나의 변환 메시지를 생성하고, 상기 적어도 하나의 변환 메시지를 상기 선정된 해시 함수에 입력으로 인가하여 적어도 하나의 변환 해시 값을 생성할 수 있다.
예컨대, 해시 값 생성부(115)에서 생성된 상기 해시 값의 크기가 해시 함수의 특성상 도면부호 213에 도시된 해시 값이 아닌, tlog2n 즉, "6"보다 작은 4비트의 크기를 갖는 해시 값이 생성되었다고 가정하는 경우, 4비트 크기의 해시 값은 3개의 코드 값들 별로 그룹화를 수행하였을 때, 2개의 인덱스 값이 추출될 수 없기 때문에, 4비트 크기의 해시 값을 6비트 이상이 되는 값으로 변경할 필요가 있다.
따라서, 변환 해시 값 생성부(118)는 상기 해시 값의 크기가 "6"보다 작은 경우, 상기 2개의 인덱스 값들을 추출하기 위해 사용되는 최종 해시 값의 크기가 "6"을 초과하기 위해 필요로 하는 추가 해시 값의 개수만큼 "0101"(211)이라는 상기 원본 메시지 m에 대해 순환 시프트 연산을 수행할 수 있다.
즉, 해시 값 생성부(115)에서 4비트의 크기를 갖는 해시 값에 생성되었다고 하는 경우, 2개의 인덱스 값들을 추출하기 위해 필요로 하는 최종 해시 값의 크기인 "6"을 초과하기 위해 필요로 하는 추가 해시 값의 개수는 1개이다.
따라서, 변환 해시 값 생성부(118)는 "0101"(211)이라는 상기 원본 메시지 m에 대해 1회 순환 시프트 연산(본 실시예에서는 우측방향으로 순환 시프트 연산을 수행하는 것으로 가정함)을 수행하여 "1010"이라는 변환 메시지를 생성할 수 있다.
그러고 나서, 변환 해시 값 생성부(118)는 "1010"이라는 변환 메시지를 다시 해시 함수에 입력으로 인가하여 4비트 크기의 변환 해시 값을 생성할 수 있다.
이때, 해시 값 보정부(119)는 상기 4비트 크기의 해시 값과 상기 4비트 크기의 변환 해시 값을 조합하여 8비트 크기의 조합 해시 값을 생성한 후 상기 조합 해시 값을 상기 2개의 인덱스 값들을 추출하기 위해 사용하는 상기 최종 해시 값으로 결정할 수 있다.
이때, 인덱스 추출부(116)는 상기 최종 해시 값이 결정되면, 상기 최종 해시 값으로부터 상기 오류 벡터 e 상에 2개의 "1"의 코드 값이 삽입될 위치를 지시하는 상기 2개의 인덱스 값들을 추출할 수 있다.
관련해서, 상기 최종 해시 값의 크기가 "8"인 경우, 인덱스 추출부(116)는 상기 최종 해시 값에서 좌측에서 우측방향으로 6비트의 코드 값을 선택하고, 상기 선택된 6비트의 코드 값에 대해 상기 2개의 인덱스 값들을 추출하기 위해 2개의 그룹으로 분할한 후 상기 분할된 2개의 그룹으로부터 상기 2개의 인덱스 값들을 추출할 수 있다.
이러한 방식으로, 오류 벡터 생성부(112)는 해시 값 생성부(115)에서 생성된 해시 값의 크기가 tlog2n보다 작은 경우, 인덱스 값의 추출이 어렵기 때문에, 해시 값의 크기가 tlog2n보다 크게 될 수 있도록, 변환 해시 값 생성부(118)를 통해 필요로 하는 추가 해시 값의 개수만큼 원본 메시지 m에 대해 순환 시프트 연산을 수행하고, 그 결과 값들에 대한 추가 해시 값을 생성한 후 해시 값 보정부(119)를 통해 해당 해시 값들을 모두 조합함으로써, 인덱스 추출부(116)가 각 해시 값들이 조합된 최종 해시 값으로부터 오류 벡터 e를 생성하기 위한 인덱스 값을 추출할 수 있도록 지원할 수 있다.
도 2에 도시된 바와 같이, 오류 벡터 생성부(112)를 통해 "01000100"(216)이라는 오류 벡터 e의 생성이 완료되면, 메시지 암호화부(113)는 도면부호 210에 도시된 바와 같이, "0101"(211)이라는 원본 메시지 m에 대해 상기 공개키 Kpub를 곱하여 "01011010"(212)이라는 결과 값 c'을 생성할 수 있다.
그러고 나서, 메시지 암호화부(113)는 도면부호 250에 도시된 바와 같이, "01011010"(212)이라는 결과 값 c'과 "01000100"(216)이라는 오류 벡터 e에 대해 배타적 논리합 연산을 수행함으로써, "00011110"(217)이라는 암호화 메시지 c를 생성할 수 있다.
즉, 메시지 암호화부(113)는 상기 수학식 6의 연산 과정에 따라 "00011110"(217)이라는 암호화 메시지 c를 생성할 수 있다.
이렇게, "00011110"(217)이라는 상기 암호화 메시지 c의 생성이 완료되면, 메시지 암호화 전송부(114)는 상기 암호화 메시지 c를 데이터 수신 장치(120)로 전송한다.
이때, 도 3에 도시된 것처럼, "00011110"(217)이라는 상기 암호화 메시지 c가 데이터 수신 장치(120)에 수신되면, 데이터 수신 장치(120)는 "00011110"(217)이라는 상기 암호화 메시지 c에 대한 복호화를 수행할 수 있다.
관련해서, 데이터 수신 장치(120)는 암호화 메시지에 대한 복호화를 수행하기 위해, 자체의 메모리 상에 상기 이진 정칙 행렬 S, 상기 생성 행렬 G 및 상기 순열 행렬 P를 상기 공개키 Kpub에 대응하는 개인키로 저장하고 있고, 이와 동시에 상기 메모리 상에 해시 값을 생성하기 위해 사용되는 상기 선정된 해시 함수를 저장하고 있을 수 있다.
이때, 데이터 수신 장치(120)는 "00011110"(217)이라는 상기 암호화 메시지 c가 수신되면, 도면부호 310에 도시된 바와 같이, 상기 수학식 7과 8의 연산 과정에 따라 "00011110"(217)이라는 상기 암호화 메시지 c에 대해 상기 메모리 상에 저장되어 있는 상기 순열 행렬 P의 역행렬 P-1을 곱하여 cP-1을 연산하고, 상기 생성 행렬 G를 기초로 상기 cP-1에 대한 오류 정정을 수행하여 "0101"(311)이라는 원본 메시지 m과 상기 이진 정칙 행렬 S가 곱해진 mS를 연산한 후 상기 mS에 대해 상기 이진 정칙 행렬 S의 역행렬 S-1을 곱하여 "0101"(311)이라는 상기 원본 메시지 m을 복호화할 수 있다.
그리고, 데이터 수신 장치(120)는 "0101"(311)이라는 상기 원본 메시지 m의 복호화가 완료되면, 도면부호 320에 도시된 바와 같이, 상기 복호화된 "0101"(311)이라는 원본 메시지 m을 상기 메모리 상에 저장되어 있는 상기 선정된 해시 함수에 입력으로 인가하여 "001101"(312)이라는 복호 해시 값을 생성할 수 있다.
그러고 나서, 데이터 수신 장치(120)는 도면부호 330에 도시된 바와 같이, "001101"(312)이라는 상기 복호 해시 값으로부터 "1"의 코드 값이 삽입될 위치를 지시하는 2개의 인덱스 값들을 추출할 수 있다.
관련해서, 데이터 수신 장치(120)는 "001101"(312)이라는 상기 복호 해시 값을 구성하는 복수의 "1"과 "0"의 코드 값들을 도면부호 313과 314에 도시된 바와 같이, 3개의 코드 값들 별로 그룹화하여 3개의 코드 값들이 포함되어 있는 2개의 그룹들인 "001"(313), "101"(314)을 생성할 수 있다.
그러고 나서, 데이터 수신 장치(120)는 "001"(313), "101"(314)이라는 이진수의 코드 값들을 각각 "1", "5"라는 십진수로 변환함으로써, 상기 2개의 그룹들로부터 "1"과 "5"라는 2개의 인덱스 값들을 추출할 수 있다.
그 이후, 데이터 수신 장치(120)는 추출된 "1"과 "5"라는 2개의 인덱스 값들에 기초하여 도면부호 340에 도시된 바와 같이, 상기 2개의 인덱스 값들이 지시하는 위치에 "1"의 코드 값을 삽입하고, 나머지 위치에 대해 "0"의 코드 값을 삽입함으로써, "1"과 "0"의 코드 값으로 구성된 크기가 8인 "01000100"(315)이라는 복호화 오류 벡터 z를 생성할 수 있다.
이때, 데이터 수신 장치(120)는 "00011110"(217)이라는 상기 암호화 메시지 c와 "01000100"(315)이라는 상기 복호화 오류 벡터 z에 대해 도면부호 350에 도시된 바와 같이, 배타적 논리합 연산을 수행하여 "01011010"(316)이라는 제1 검증 값을 생성하고, 도면부호 360에 도시된 바와 같이, "0101"(311)이라는 상기 복호화된 원본 메시지 m에 대해 상기 공개키 Kpub를 곱하여 "01011010"(317)이라는 제2 검증 값을 생성할 수 있다.
그러고 나서, 데이터 수신 장치(120)는 도면부호 370에 도시된 바와 같이, 상기 제1 검증 값과 상기 제2 검증 값이 서로 동일한지 여부를 판단할 수 있다.
만약, 상기 제1 검증 값과 상기 제2 검증 값이 서로 동일한 것으로 판단된 경우, 데이터 수신 장치(120)는 "0101"(311)이라는 상기 복호화된 원본 메시지 m이 데이터 전송 과정에서 변형되었거나 위조 또는 변조되지 않은 메시지임을 확인할 수 있다.
즉, 본 발명에 따른 메시지 인증이 가능한 부호 기반 암호화 장치(110)는 원본 메시지 m에 대해 McEliece 기반의 암호화 알고리즘에 따라 암호화하여 데이터 수신 장치(120)로 전송하되, 데이터 암호화에 사용되는 오류 벡터를 상기 원본 메시지의 특성에 종속되도록 생성함으로써, 데이터 수신 장치(120)가 암호화 메시지를 수신하게 되면, 상기 암호화 메시지로부터 상기 원본 메시지를 복원하고, 상기 복원된 원본 메시지로부터 상기 복원된 원본 메시지의 특성에 종속되는 오류 벡터를 생성하도록 하여 상기 복원된 원본 메시지로부터 생성된 오류 벡터의 특성이 상기 암호화 메시지에 포함된 오류 벡터의 특성과 동일한지 여부를 검증하는 방식으로 상기 복원된 원본 메시지에 대한 무결성 검증이 가능하도록 지원할 수 있다.
도 4는 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 방법을 도시한 순서도이다.
단계(S410)에서는 "1"과 "0"의 코드 값을 성분으로 포함하는 k x k(k는 자연수) 크기의 이진 정칙 행렬 S, t(t는 자연수)비트의 코드에 대한 오류 정정 능력을 가지면서 "1"과 "0"의 코드 값을 성분으로 포함하는 k x n(n은 자연수) 크기의 생성 행렬 G 및 "1"과 "0"의 코드 값을 성분으로 포함하는 n x n 크기의 순열 행렬 P가 곱해진 공개키 Kpub(Kpub=SGP)가 저장되어 있는 공개키 저장부를 유지한다.
단계(S420)에서는 데이터 수신 장치로 전송할 k비트의 크기를 갖는 원본 메시지 m을 선정된 해시 함수에 입력으로 인가하여 해시 값을 생성하고, 상기 해시 값으로부터 해밍 무게가 t이면서, "1"과 "0"의 코드 값으로 구성된 크기가 n인 오류 벡터 e를 생성한다.
단계(S430)에서는 상기 원본 메시지 m에 대해 상기 공개키 Kpub와 상기 오류 벡터 e를 기초로 암호화를 수행하여 암호화 메시지 c를 생성한다.
단계(S440)에서는 상기 암호화 메시지 c를 상기 데이터 수신 장치로 전송한다.
이때, 본 발명의 일실시예에 따르면, 단계(S430)에서는 상기 수학식 6의 연산에 따라, 상기 원본 메시지 m에 상기 공개키 Kpub를 곱하여 결과 값 c'을 생성하고, 상기 결과 값 c'과 상기 오류 벡터 e에 대해 배타적 논리합 연산을 수행함으로써, 상기 암호화 메시지 c를 생성할 수 있다.
또한, 본 발명의 일실시예에 따르면, 단계(S420)에서는 상기 원본 메시지 m을 상기 선정된 해시 함수에 입력으로 인가하여 상기 해시 값을 생성하는 단계, 상기 해시 값으로부터 상기 오류 벡터 e 상에 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 t개의 인덱스 값들을 추출하는 단계 및 상기 t개의 인덱스 값들에 기초하여 상기 t개의 인덱스 값들이 지시하는 위치에 "1"의 코드 값을 삽입하고, 나머지 위치에 대해 "0"의 코드 값을 삽입함으로써, "1"과 "0"의 코드 값으로 구성된 크기가 n인 상기 오류 벡터 e를 생성을 수행하는 단계를 포함할 수 있다.
이때, 본 발명의 일실시예에 따르면, 상기 인덱스 값들을 추출하는 단계는 상기 해시 값을 구성하는 복수의 "1"과 "0"의 코드 값들을 log2n개의 코드 값들 별로 그룹화하여 log2n개의 코드 값들이 포함되어 있는 t개의 그룹들을 생성한 후, 상기 t개의 그룹들 별로, 상기 t개의 그룹들 내에 포함되어 있는 log2n개의 코드 값들을 십진수로 변환함으로써, 상기 t개의 그룹들을 통해 변환된 t개의 십진수들을 상기 t개의 인덱스 값들로 추출할 수 있다.
이때, 본 발명의 일실시예에 따르면, 단계(S420)에서는 상기 해시 값의 크기가 tlog2n보다 작은 경우, 상기 t개의 인덱스 값들을 추출하기 위해 사용되는 최종 해시 값의 크기가 tlog2n을 초과하기 위해 필요로 하는 추가 해시 값의 개수만큼 상기 원본 메시지 m에 대해 순환 시프트 연산을 수행함으로써, 적어도 하나의 변환 메시지를 생성하고, 상기 적어도 하나의 변환 메시지를 상기 선정된 해시 함수에 입력으로 인가하여 적어도 하나의 변환 해시 값을 생성하는 단계 및 상기 해시 값과 상기 적어도 하나의 변환 해시 값을 조합하여 조합 해시 값을 생성한 후 상기 조합 해시 값을 상기 t개의 인덱스 값들을 추출하기 위해 사용하는 상기 최종 해시 값으로 결정하는 단계를 더 포함할 수 있다.
이때, 상기 인덱스 값들을 추출하는 단계는 상기 최종 해시 값이 결정되면, 상기 최종 해시 값으로부터 상기 오류 벡터 e 상에 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 상기 t개의 인덱스 값들을 추출할 수 있다.
또한, 본 발명의 일실시예에 따르면, 상기 데이터 수신 장치는 메모리 상에 상기 이진 정칙 행렬 S, 상기 생성 행렬 G 및 상기 순열 행렬 P를 상기 공개키 Kpub에 대응하는 개인키로 저장하고 있고, 상기 암호화 메시지 c가 수신되면, 상기 암호화 메시지 c에 대해 상기 메모리 상에 저장되어 있는 상기 순열 행렬 P의 역행렬 P-1을 곱하여 cP-1을 연산하고, 상기 생성 행렬 G를 기초로 상기 cP-1에 대한 오류 정정을 수행하여 상기 원본 메시지 m과 상기 이진 정칙 행렬 S가 곱해진 mS를 연산한 후 상기 mS에 대해 상기 이진 정칙 행렬 S의 역행렬 S-1을 곱하여 상기 원본 메시지 m을 복호화할 수 있다.
이때, 본 발명의 일실시예에 따르면, 상기 데이터 수신 장치는 상기 메모리 상에 상기 선정된 해시 함수를 추가로 저장하고 있으며, 상기 원본 메시지 m의 복호화가 완료되면, 상기 복호화된 원본 메시지 m을 상기 메모리 상에 저장되어 있는 상기 선정된 해시 함수에 입력으로 인가하여 복호 해시 값을 생성하고, 상기 복호 해시 값으로부터 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 t개의 인덱스 값들을 추출하여 추출된 t개의 인덱스 값들을 기초로 "1"과 "0"의 코드 값으로 구성된 크기가 n인 복호화 오류 벡터 z를 생성한 후 상기 암호화 메시지 c와 상기 복호화 오류 벡터 z에 대해 배타적 논리합 연산을 수행하여 제1 검증 값을 생성하고, 상기 복호화된 원본 메시지 m에 대해 상기 공개키 Kpub를 곱하여 제2 검증 값을 생성한 후 상기 제1 검증 값과 상기 제2 검증 값이 동일한 것으로 판단되면, 상기 복호화된 원본 메시지 m에 대해 무결성이 확인된 것으로 판단할 수 있다.
이상, 도 4를 참조하여 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 방법에 대해 설명하였다. 여기서, 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 방법은 도 1을 이용하여 설명한 메시지 인증이 가능한 부호 기반 암호화 장치(110)의 동작에 대한 구성과 대응될 수 있으므로, 이에 대한 보다 상세한 설명은 생략하기로 한다.
본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 방법은 컴퓨터와의 결합을 통해 실행시키기 위한 저장매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다.
또한, 본 발명의 일실시예에 따른 메시지 인증이 가능한 부호 기반 암호화 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
110: 메시지 인증이 가능한 부호 기반 암호화 장치
111: 공개키 저장부 112: 오류 벡터 생성부
113: 메시지 암호화부 114: 메시지 암호화 전송부
115: 해시 값 생성부 116: 인덱스 추출부
117: 벡터 생성부 118: 변환 해시 값 생성부
119: 해시 값 보정부 120: 데이터 수신 장치

Claims (16)

  1. "1"과 "0"의 코드 값을 성분으로 포함하는 k x k(k는 자연수) 크기의 이진 정칙 행렬 S, t(t는 자연수)비트의 코드에 대한 오류 정정 능력을 가지면서 "1"과 "0"의 코드 값을 성분으로 포함하는 k x n(n은 자연수) 크기의 생성 행렬 G 및 "1"과 "0"의 코드 값을 성분으로 포함하는 n x n 크기의 순열 행렬 P가 곱해진 공개키 Kpub(Kpub=SGP)가 저장되어 있는 공개키 저장부;
    데이터 수신 장치로 전송할 k비트의 크기를 갖는 원본 메시지 m을 선정된(predetermined) 해시 함수에 입력으로 인가하여 해시 값을 생성하고, 상기 해시 값으로부터 해밍 무게(Hamming Weight)가 t이면서, "1"과 "0"의 코드 값으로 구성된 크기가 n인 오류 벡터 e를 생성하는 오류 벡터 생성부;
    상기 원본 메시지 m에 대해 상기 공개키 Kpub와 상기 오류 벡터 e를 기초로 암호화를 수행하여 암호화 메시지 c를 생성하는 메시지 암호화부; 및
    상기 암호화 메시지 c를 상기 데이터 수신 장치로 전송하는 메시지 암호화 전송부
    를 포함하는 메시지 인증이 가능한 부호 기반 암호화 장치.
  2. 제1항에 있어서,
    상기 메시지 암호화부는
    상기 원본 메시지 m에 상기 공개키 Kpub를 곱하여 결과 값 c'을 생성하고, 상기 결과 값 c'과 상기 오류 벡터 e에 대해 배타적 논리합 연산을 수행함으로써, 상기 암호화 메시지 c를 생성하는 메시지 인증이 가능한 부호 기반 암호화 장치.
  3. 제2항에 있어서,
    상기 오류 벡터 생성부는
    상기 원본 메시지 m을 상기 선정된 해시 함수에 입력으로 인가하여 상기 해시 값을 생성하는 해시 값 생성부;
    상기 해시 값으로부터 상기 오류 벡터 e 상에 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 t개의 인덱스 값들을 추출하는 인덱스 추출부; 및
    상기 t개의 인덱스 값들에 기초하여 상기 t개의 인덱스 값들이 지시하는 위치에 "1"의 코드 값을 삽입하고, 나머지 위치에 대해 "0"의 코드 값을 삽입함으로써, "1"과 "0"의 코드 값으로 구성된 크기가 n인 상기 오류 벡터 e를 생성하는 벡터 생성부
    를 포함하는 메시지 인증이 가능한 부호 기반 암호화 장치.
  4. 제3항에 있어서,
    상기 인덱스 추출부는
    상기 해시 값을 구성하는 복수의 "1"과 "0"의 코드 값들을 log2n개의 코드 값들 별로 그룹화하여 log2n개의 코드 값들이 포함되어 있는 t개의 그룹들을 생성한 후, 상기 t개의 그룹들 별로, 상기 t개의 그룹들 내에 포함되어 있는 log2n개의 코드 값들을 십진수로 변환함으로써, 상기 t개의 그룹들을 통해 변환된 t개의 십진수들을 상기 t개의 인덱스 값들로 추출하는 메시지 인증이 가능한 부호 기반 암호화 장치.
  5. 제4항에 있어서,
    상기 오류 벡터 생성부는
    상기 해시 값의 크기가 tlog2n보다 작은 경우, 상기 t개의 인덱스 값들을 추출하기 위해 사용되는 최종 해시 값의 크기가 tlog2n을 초과하기 위해 필요로 하는 추가 해시 값의 개수만큼 상기 원본 메시지 m에 대해 순환 시프트(cyclic shift) 연산을 수행함으로써, 적어도 하나의 변환 메시지를 생성하고, 상기 적어도 하나의 변환 메시지를 상기 선정된 해시 함수에 입력으로 인가하여 적어도 하나의 변환 해시 값을 생성하는 변환 해시 값 생성부; 및
    상기 해시 값과 상기 적어도 하나의 변환 해시 값을 조합하여 조합 해시 값을 생성한 후 상기 조합 해시 값을 상기 t개의 인덱스 값들을 추출하기 위해 사용하는 상기 최종 해시 값으로 결정하는 해시 값 보정부
    를 더 포함하고,
    상기 인덱스 추출부는
    상기 최종 해시 값이 결정되면, 상기 최종 해시 값으로부터 상기 오류 벡터 e 상에 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 상기 t개의 인덱스 값들을 추출하는 메시지 인증이 가능한 부호 기반 암호화 장치.
  6. 제4항에 있어서,
    상기 데이터 수신 장치는
    메모리 상에 상기 이진 정칙 행렬 S, 상기 생성 행렬 G 및 상기 순열 행렬 P를 상기 공개키 Kpub에 대응하는 개인키로 저장하고 있고, 상기 암호화 메시지 c가 수신되면, 상기 암호화 메시지 c에 대해 상기 메모리 상에 저장되어 있는 상기 순열 행렬 P의 역행렬 P-1을 곱하여 cP-1을 연산하고, 상기 생성 행렬 G를 기초로 상기 cP-1에 대한 오류 정정을 수행하여 상기 원본 메시지 m과 상기 이진 정칙 행렬 S가 곱해진 mS를 연산한 후 상기 mS에 대해 상기 이진 정칙 행렬 S의 역행렬 S-1을 곱하여 상기 원본 메시지 m을 복호화하는 메시지 인증이 가능한 부호 기반 암호화 장치.
  7. 제6항에 있어서,
    상기 데이터 수신 장치는
    상기 메모리 상에 상기 선정된 해시 함수를 추가로 저장하고 있으며, 상기 원본 메시지 m의 복호화가 완료되면, 상기 복호화된 원본 메시지 m을 상기 메모리 상에 저장되어 있는 상기 선정된 해시 함수에 입력으로 인가하여 복호 해시 값을 생성하고, 상기 복호 해시 값으로부터 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 t개의 인덱스 값들을 추출하여 추출된 t개의 인덱스 값들을 기초로 "1"과 "0"의 코드 값으로 구성된 크기가 n인 복호화 오류 벡터 z를 생성한 후 상기 암호화 메시지 c와 상기 복호화 오류 벡터 z에 대해 배타적 논리합 연산을 수행하여 제1 검증 값을 생성하고, 상기 복호화된 원본 메시지 m에 대해 상기 공개키 Kpub를 곱하여 제2 검증 값을 생성한 후 상기 제1 검증 값과 상기 제2 검증 값이 동일한 것으로 판단되면, 상기 복호화된 원본 메시지 m에 대해 무결성이 확인된 것으로 판단하는 메시지 인증이 가능한 부호 기반 암호화 장치.
  8. "1"과 "0"의 코드 값을 성분으로 포함하는 k x k(k는 자연수) 크기의 이진 정칙 행렬 S, t(t는 자연수)비트의 코드에 대한 오류 정정 능력을 가지면서 "1"과 "0"의 코드 값을 성분으로 포함하는 k x n(n은 자연수) 크기의 생성 행렬 G 및 "1"과 "0"의 코드 값을 성분으로 포함하는 n x n 크기의 순열 행렬 P가 곱해진 공개키 Kpub(Kpub=SGP)가 저장되어 있는 공개키 저장부를 유지하는 단계;
    데이터 수신 장치로 전송할 k비트의 크기를 갖는 원본 메시지 m을 선정된(predetermined) 해시 함수에 입력으로 인가하여 해시 값을 생성하고, 상기 해시 값으로부터 해밍 무게(Hamming Weight)가 t이면서, "1"과 "0"의 코드 값으로 구성된 크기가 n인 오류 벡터 e를 생성하는 단계;
    상기 원본 메시지 m에 대해 상기 공개키 Kpub와 상기 오류 벡터 e를 기초로 암호화를 수행하여 암호화 메시지 c를 생성하는 단계; 및
    상기 암호화 메시지 c를 상기 데이터 수신 장치로 전송하는 단계
    를 포함하는 메시지 인증이 가능한 부호 기반 암호화 방법.
  9. 제8항에 있어서,
    상기 암호화 메시지 c를 생성하는 단계는
    상기 원본 메시지 m에 상기 공개키 Kpub를 곱하여 결과 값 c'을 생성하고, 상기 결과 값 c'과 상기 오류 벡터 e에 대해 배타적 논리합 연산을 수행함으로써, 상기 암호화 메시지 c를 생성하는 메시지 인증이 가능한 부호 기반 암호화 방법.
  10. 제9항에 있어서,
    상기 오류 벡터 e를 생성하는 단계는
    상기 원본 메시지 m을 상기 선정된 해시 함수에 입력으로 인가하여 상기 해시 값을 생성하는 단계;
    상기 해시 값으로부터 상기 오류 벡터 e 상에 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 t개의 인덱스 값들을 추출하는 단계; 및
    상기 t개의 인덱스 값들에 기초하여 상기 t개의 인덱스 값들이 지시하는 위치에 "1"의 코드 값을 삽입하고, 나머지 위치에 대해 "0"의 코드 값을 삽입함으로써, "1"과 "0"의 코드 값으로 구성된 크기가 n인 상기 오류 벡터 e를 생성을 수행하는 단계
    를 포함하는 메시지 인증이 가능한 부호 기반 암호화 방법.
  11. 제10항에 있어서,
    상기 인덱스 값들을 추출하는 단계는
    상기 해시 값을 구성하는 복수의 "1"과 "0"의 코드 값들을 log2n개의 코드 값들 별로 그룹화하여 log2n개의 코드 값들이 포함되어 있는 t개의 그룹들을 생성한 후, 상기 t개의 그룹들 별로, 상기 t개의 그룹들 내에 포함되어 있는 log2n개의 코드 값들을 십진수로 변환함으로써, 상기 t개의 그룹들을 통해 변환된 t개의 십진수들을 상기 t개의 인덱스 값들로 추출하는 메시지 인증이 가능한 부호 기반 암호화 방법.
  12. 제11항에 있어서,
    상기 오류 벡터 e를 생성하는 단계는
    상기 해시 값의 크기가 tlog2n보다 작은 경우, 상기 t개의 인덱스 값들을 추출하기 위해 사용되는 최종 해시 값의 크기가 tlog2n을 초과하기 위해 필요로 하는 추가 해시 값의 개수만큼 상기 원본 메시지 m에 대해 순환 시프트(cyclic shift) 연산을 수행함으로써, 적어도 하나의 변환 메시지를 생성하고, 상기 적어도 하나의 변환 메시지를 상기 선정된 해시 함수에 입력으로 인가하여 적어도 하나의 변환 해시 값을 생성하는 단계; 및
    상기 해시 값과 상기 적어도 하나의 변환 해시 값을 조합하여 조합 해시 값을 생성한 후 상기 조합 해시 값을 상기 t개의 인덱스 값들을 추출하기 위해 사용하는 상기 최종 해시 값으로 결정하는 단계
    를 더 포함하고,
    상기 인덱스 값들을 추출하는 단계는
    상기 최종 해시 값이 결정되면, 상기 최종 해시 값으로부터 상기 오류 벡터 e 상에 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 상기 t개의 인덱스 값들을 추출하는 메시지 인증이 가능한 부호 기반 암호화 방법.
  13. 제11항에 있어서,
    상기 데이터 수신 장치는
    메모리 상에 상기 이진 정칙 행렬 S, 상기 생성 행렬 G 및 상기 순열 행렬 P를 상기 공개키 Kpub에 대응하는 개인키로 저장하고 있고, 상기 암호화 메시지 c가 수신되면, 상기 암호화 메시지 c에 대해 상기 메모리 상에 저장되어 있는 상기 순열 행렬 P의 역행렬 P-1을 곱하여 cP-1을 연산하고, 상기 생성 행렬 G를 기초로 상기 cP-1에 대한 오류 정정을 수행하여 상기 원본 메시지 m과 상기 이진 정칙 행렬 S가 곱해진 mS를 연산한 후 상기 mS에 대해 상기 이진 정칙 행렬 S의 역행렬 S-1을 곱하여 상기 원본 메시지 m을 복호화하는 메시지 인증이 가능한 부호 기반 암호화 방법.
  14. 제13항에 있어서,
    상기 데이터 수신 장치는
    상기 메모리 상에 상기 선정된 해시 함수를 추가로 저장하고 있으며, 상기 원본 메시지 m의 복호화가 완료되면, 상기 복호화된 원본 메시지 m을 상기 메모리 상에 저장되어 있는 상기 선정된 해시 함수에 입력으로 인가하여 복호 해시 값을 생성하고, 상기 복호 해시 값으로부터 t개의 "1"의 코드 값이 삽입될 위치를 지시하는 t개의 인덱스 값들을 추출하여 추출된 t개의 인덱스 값들을 기초로 "1"과 "0"의 코드 값으로 구성된 크기가 n인 복호화 오류 벡터 z를 생성한 후 상기 암호화 메시지 c와 상기 복호화 오류 벡터 z에 대해 배타적 논리합 연산을 수행하여 제1 검증 값을 생성하고, 상기 복호화된 원본 메시지 m에 대해 상기 공개키 Kpub를 곱하여 제2 검증 값을 생성한 후 상기 제1 검증 값과 상기 제2 검증 값이 동일한 것으로 판단되면, 상기 복호화된 원본 메시지 m에 대해 무결성이 확인된 것으로 판단하는 메시지 인증이 가능한 부호 기반 암호화 방법.
  15. 제8항 내지 제14항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
  16. 제8항 내지 제14항 중 어느 한 항의 방법을 컴퓨터와의 결합을 통해 실행시키기 위한 저장매체에 저장된 컴퓨터 프로그램.
KR1020170030981A 2017-03-13 2017-03-13 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법 KR101913644B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170030981A KR101913644B1 (ko) 2017-03-13 2017-03-13 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170030981A KR101913644B1 (ko) 2017-03-13 2017-03-13 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180104363A KR20180104363A (ko) 2018-09-21
KR101913644B1 true KR101913644B1 (ko) 2018-10-31

Family

ID=63720852

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170030981A KR101913644B1 (ko) 2017-03-13 2017-03-13 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101913644B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101942030B1 (ko) * 2018-11-13 2019-01-24 동국대학교 산학협력단 메시지에 대한 무결성 검증이 지원되는 부호 기반의 암호화가 가능한 전자 장치 및 그 동작 방법
KR101942033B1 (ko) * 2018-11-19 2019-01-24 동국대학교 산학협력단 t+a개의 오류 코드가 삽입된 부호 기반의 암호화 데이터의 복호화가 가능한 전자 장치 및 그 동작 방법
KR101942037B1 (ko) * 2018-12-06 2019-01-24 동국대학교 산학협력단 비밀키 암호화를 통한 데이터 통신을 수행하는 자동차 전자 제어 장치 및 그 동작 방법
KR101974345B1 (ko) * 2018-12-06 2019-05-02 동국대학교 산학협력단 전자 서명을 통한 차량 간 보안 통신을 지원하는 커넥티드 차량용 데이터 통신 장치 및 그 동작 방법
CN112054889B (zh) * 2019-06-06 2022-10-18 中国科学院苏州纳米技术与纳米仿生研究所 消息认证码的生成方法及生成装置、计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010530990A (ja) 2007-06-22 2010-09-16 サントル ナシオナル ドゥ ラ ルシェルシェサイアンティフィク(セエヌエールエス) 公開行列に基づき、エラー補正コードのデコーディングを用いて認証を行う方法
JP2011509433A (ja) 2008-01-11 2011-03-24 フランス・テレコム 確率的対称暗号化のための方法およびエンティティ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010530990A (ja) 2007-06-22 2010-09-16 サントル ナシオナル ドゥ ラ ルシェルシェサイアンティフィク(セエヌエールエス) 公開行列に基づき、エラー補正コードのデコーディングを用いて認証を行う方法
JP2011509433A (ja) 2008-01-11 2011-03-24 フランス・テレコム 確率的対称暗号化のための方法およびエンティティ

Also Published As

Publication number Publication date
KR20180104363A (ko) 2018-09-21

Similar Documents

Publication Publication Date Title
KR101913644B1 (ko) 메시지 인증이 가능한 부호 기반 암호화 장치 및 방법
KR101942030B1 (ko) 메시지에 대한 무결성 검증이 지원되는 부호 기반의 암호화가 가능한 전자 장치 및 그 동작 방법
KR101091246B1 (ko) 간단하고 효율적인 원패스 인증 암호화 방법
US9906363B2 (en) Encrypted data verification system, method and recording medium
US10587407B2 (en) Data encryption apparatus and method using an encryption key based on puncturing of a generator matrix
US10270588B2 (en) Method and system for additive homomorphic encryption scheme with operation error detection functionality
EP3167569B1 (en) Method and system for providing a secure update of code on a memory-constrained device
EP2991264B1 (en) Encrypted text matching system, method and program
US10503915B2 (en) Encrypted text verification system, method and recording medium
EP2991265B1 (en) Encrypted text matching system, method and program
KR102096359B1 (ko) 거듭 행렬 기반의 비밀키 암호화가 가능한 데이터 전송 장치 및 그 동작 방법
KR101978684B1 (ko) 재생 공격 방지가 가능한 부호 기반 암호화 장치 및 방법
KR102211648B1 (ko) 신드롬을 기반으로 한 전자 서명을 통해 데이터 통신이 가능한 전자 장치 및 그 동작 방법
EP2991266B1 (en) Encrypted text matching system, method, and computer readable medium
KR101894566B1 (ko) 인증 및 오류 정정이 통합된 부호화가 가능한 데이터 전송 장치 및 방법
KR101440680B1 (ko) 중국인 나머지 정리에 기반한 준동형 암복호화 방법 및 이를 이용한 장치
KR20160109891A (ko) Puf 기반 암호키 생성 방법 및 장치
KR101942033B1 (ko) t+a개의 오류 코드가 삽입된 부호 기반의 암호화 데이터의 복호화가 가능한 전자 장치 및 그 동작 방법
KR20190058884A (ko) 생체 정보 기반의 전자 서명이 가능한 데이터 전송 장치 및 그 동작 방법
KR102326527B1 (ko) 비대칭 암호화 기반의 보안 통신을 수행하는 데이터 전송 장치 및 그 동작 방법
KR20220054059A (ko) 가변 길이 퍼지 데이터를 지원하는 격자 기반 퍼지 추출 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant