KR20240038561A - Sat에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 - Google Patents
Sat에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 Download PDFInfo
- Publication number
- KR20240038561A KR20240038561A KR1020230030139A KR20230030139A KR20240038561A KR 20240038561 A KR20240038561 A KR 20240038561A KR 1020230030139 A KR1020230030139 A KR 1020230030139A KR 20230030139 A KR20230030139 A KR 20230030139A KR 20240038561 A KR20240038561 A KR 20240038561A
- Authority
- KR
- South Korea
- Prior art keywords
- clauses
- literals
- value
- solution
- tree
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 152
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 84
- 238000003491 array Methods 0.000 claims description 28
- 238000005538 encapsulation Methods 0.000 abstract description 66
- 239000000243 solution Substances 0.000 description 245
- 230000009977 dual effect Effects 0.000 description 82
- 230000000295 complement effect Effects 0.000 description 45
- 230000008569 process Effects 0.000 description 42
- 230000008859 change Effects 0.000 description 31
- 238000004364 calculation method Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 26
- 238000012026 site acceptance test Methods 0.000 description 22
- 238000002474 experimental method Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 239000000284 extract Substances 0.000 description 9
- 230000000644 propagated effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000000877 morphologic effect Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000010845 search algorithm Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 241000282472 Canis lupus familiaris Species 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 102100040149 Adenylyl-sulfate kinase Human genes 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- XDDAORKBJWWYJS-UHFFFAOYSA-N glyphosate Chemical compound OC(=O)CNCP(O)(O)=O XDDAORKBJWWYJS-UHFFFAOYSA-N 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- 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
-
- 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/0852—Quantum cryptography
-
- 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/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Electromagnetism (AREA)
- Complex Calculations (AREA)
Abstract
본 발명은 Hard SAT 생성 방법 및 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법을 개시한다.
본 발명은 원환형 이항 트리와 모듈러 랜덤 캡슐링 기법을 이용해서 패스워드를 해로 가지는 3-CNF를 생성하는 방법과 이를 이용한 Hard-SAT을 공개키 대용으로 공개하고 이것을 이용하여 암호화 한 후에 Hard-SAT의 해인 패스워드를 아는 경우에만 복호화가 가능한 양자 내성 암호 알고리즘을 생성하는 방법에 관한 것이다.
본 발명은 원환형 이항 트리와 모듈러 랜덤 캡슐링 기법을 이용해서 패스워드를 해로 가지는 3-CNF를 생성하는 방법과 이를 이용한 Hard-SAT을 공개키 대용으로 공개하고 이것을 이용하여 암호화 한 후에 Hard-SAT의 해인 패스워드를 아는 경우에만 복호화가 가능한 양자 내성 암호 알고리즘을 생성하는 방법에 관한 것이다.
Description
Hard SAT은 해를 구하기 어려운, 구체적으로는 해를 구하기 위해서 필요로 하는 시간이 다항시간(polynomial time: 알고리즘의 시간 복잡도가 입력 데이터 개수에 대한 다항식으로 표현됨)을 초과하는 satisfiability problem(SAT)을 의미한다. 본 발명은 Hard SAT 생성 방법 및 Hard SAT에 기반을 둔 양자 내성 암호 알고리즘 생성 방법에 관한 것으로서, 더욱 상세하게는 새롭게 창안된 개념인 원환형 이항 트리(toroidal binomial tree)와 모듈러 랜덤 캡슐링(modular random encapsulation) 기법을 이용해서 패스워드를 해로 가지는 Hard 3-CNF를 생성하는 방법 및 이를 이용한 SAT 문제의 해를 구하는 어려움에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 관한 것이다.
기존의 공개키 기반 알고리즘의 토대가 되었던 소인수분해나 이산로그(discrete logarithms) 문제가 1994년에 발표된 쇼어(Shor) 알고리즘에 의해서 양자컴퓨터를 이용하여 다항시간 안에 풀릴 수 있게 되고 양자컴퓨터 개발 기술이 계속적으로 발전함으로써 이를 적용한 암호화 알고리즘의 안전성을 보장할 수 없게 되었다.
따라서 소인수분해의 어려움이나 이산로그 문제의 어려움을 이용하지 않는 새로운 공개키 기반 알고리즘이 요구됨에 따라 양자 컴퓨터상에서의 연산에서도 안전한 공개키 기반 암호 알고리즘에 관한 연구가 활발하게 이루어지고 있으며, 이러한 암호기술을 양자 내성 암호(quantum-resistant or quantum-safe cryptography) 또는 양자 컴퓨터 이후에도 안전하게 사용할 수 있는 암호라는 의미의 포스트 양자 암호(Post Quantum Cryptography: PQC)로 부른다.
현재까지 양자 내성 암호 알고리즘에는 전자서명에 사용되는 해시 기반 알고리즘을 제외하면 다변수 기반(Multivariable-based), 코드 기반(Code-based), 아이소제니 기반(Isogeny-based), 격자 기반(Lattice-based)의 네 가지 분야로 연구되고 있다.
아이소제니 기반 알고리즘은 연산속도가 느리고 다변수 기반 알고리즘은 복호화 실패율이 높다는 문제점을 가지고 있다. 따라서 PKE(Public Key Encryption)분야에는 격자 기반 알고리즘이나 코드 기반 알고리즘이 주로 쓰인다. 최근에 NIST(National Institute of Standards and Technology)에서 포스트 양자 암호 알고리즘 표준화를 진행하고 있으며 3차 라운드의 PKE 분야에서 최종적으로 격자 기반 알고리즘 3개(CRYSTALS KYBER, NTRU, SABER), 코드 기반 알고리즘 1개(Classic McEliece)가 선정되었다.
격자 기반 암호 알고리즘은 암호화 및 복호화 과정 중에 발생하는 추가적인 정보(전력, 전자파, 시간차, 오류주입 등)를 이용한 부채널 공격에 취약하다는 단점을 가지고 있으며 코드 기반 알고리즘의 경우에는 개인키를 찾지 않고 원본데이터를 복구하는 방법으로 ISD(Information Set Decoding) 기법이 꾸준히 연구되고 있다. 위에서 서술한 양자 내성 암호 알고리즘들뿐만 아니라 현재까지 사용되거나 연구되고 있는 모든 공개키 기반 암호 알고리즘들은 trapdoor one-way function인 공개키와 개인키 간에 수식으로 표현되는 관계식을 가지고 있음으로써 그 관계식을 기반으로 알고리즘의 취약성을 찾아서 개인키 또는 원본 데이터를 획득하거나 복호화를 불가능하게 하려는 공격들이 끊임없이 시도되고 있다.
공개키 기반 암호 알고리즘들은 NP 문제 또는 NP 문제일 것으로 예측되는 문제들을 기반으로 만들어진다. SAT은 가장 먼저 발견된 NP-complete 문제일 뿐만 아니라 SAT을 구성하는 CNF formula를 공개키 대용으로 공개하고 이것을 이용해서 암호화 할 수 있다면 SAT을 표현하는 Boolean expression을 수식 화하는 것은 Boolean variable이 0과 1만 가지기 때문에 극히 제한적이다. 또한 본 특허에서는 수식 화하는 것이 무의미해지도록 모든 변수들을 서로 바꾸어도 동일한 식이 되는 expressional equality를 가지도록 설계된다. 따라서 알고리즘의 안전성은 서치알고리즘 기반인 SAT solver들의 성능에 따라 좌우되며 개인키와 공개키 간에 산술연산에 의한 수식적인 관계식이 존재하지 않으므로 공개키로부터 개인키를 찾으려는 다양한 공격들로부터 자유로워진다. 그러나 현재까지 체계적으로 Hard SAT을 생성하는 방법을 찾을 수 없었고, SAT을 구성하는 Boolean expression을 이용해서 실생활에 적용 가능한 암호화 방법이 연구되지 못했기 때문에 SAT을 이용한 암호 알고리즘이 개발되지 못했다.
현재까지 특정한 방법으로 만들어진 SAT instance가 Hard SAT이라는 것을 수학적으로 증명한 예는 없다. 하나의 SAT instance가 Hard SAT 이라는 것을 증명하기 위해서는 해를 찾기 위해서는 적어도 입력 변수 수의 sub-exponential calculation step 수가 필요하다는 것을 증명해야만 한다. 해를 구하는 데 걸리는 시간이 polynomial boundary를 벗어날 것이라는 가정을 Exponential Time Hypothesis (ETH)로 부르며 ETH가 맞는지 틀리는지를 증명하는 문제가 수학의 7대 난제 중의 하나인 P 대 NP 문제가 된다.
현재까지 개발된 모든 SAT Solver들은 백트래킹(back-tracking: 변수의 값을 가정하고 가정이 틀린 것을 확인했을 때 가정된 단계로 되돌아가서 가정된 변수의 값을 바꾸어서 다시 해를 찾는 기법)에 기초한 DPLL 알고리즘을 기반으로 제작되었다. 본 특허에서의 증명은 현재까지 개발된 모든 back-tracking 기반의 SAT Solver들에 대해서로 한정한다.
본 특허에서 서술하는 싱글 원환형 이항 트리를 모듈러 랜덤 캡슐링해서 생성되는 3-CNF는 basis solution과 complement solution(이하 dual solution으로 칭함)이외에 sub-exponential number 만큼 많은 해들이 존재하며 원하는 해(패스워드)를 찾기 위해서는 적어도 sub-exponential calculation step 수가 필요로 함을 증명한다. 또한 듀얼 원환형 이항 트리를 모듈러 랜덤 캡슐링해서 생성되는 3-CNF는 입력 변수 수가 충분히 크다면 듀얼 솔루션 이외의 해를 가지지 않는다는 것을 증명하며 듀얼 솔루션을 찾기 위해서는 exponential-calculation step 수가 필요로 함을 증명한다.
3-SAT 문제를 풀기위해서 만들어지는 서치 알고리즘은 반드시 back-tracking 기능을 사용해야만 한다는 것이 증명된다면 본 특허에서의 증명은 그동안 가정되어왔던 ETH에 대한 증명이 되며 P가 NP의 진부분집합이라는 것에 대한 증명이 된다. 지금까지 수십 년을 거쳐서 많은 연구자들이 개발해온 SAT Solver들이 모두 back-tracking 기반이라는 것을 상기할 때, 어떤 면에서는 이것은 trivial한 문제일 수도 있으나 back-tracking 기능을 사용하지 않는 새로운 형태의 SAT Solver를 만들 수 있다 또는 없다에 관한 내용 또는 결과는 현 단계에서는 본 특허의 기술성에 중대한 영향을 미치지 않는다고 판단되므로 서술 범위에서 제외시킨다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위하여 창출된 것으로서, Hard SAT을 생성하는 방법과 Hard SAT을 공개키 대용으로 공개하고 이것을 이용하여 암호화 한 후에 Hard SAT의 해인 패스워드를 아는 경우에만 복호화가 가능한 암호 알고리즘 구현 방법을 제공하는데 있다.
[싱글 원환형 트리를 이용한 3-CNF 생성]
상기의 목적을 실현하기 위한 본 발명의 바람직한 일 실시례에 따른 패스워드를 해로 가지는 Hard 3-CNF 생성 방법은, 하기의 (Method 1)을 이용해서 패스워드를 해로 가지는 싱글 원환형 이항 트리를 생성한 후에 하기의 (Method 2)를 이용해서 모듈러 랜덤 캡슐화해서 3-CNF 수식을 도출하는 것에 특징이 있다.
(Method 1)
1) n(n=ixj, i: 트리의 level 수, j: 트리의 column 수) bit의 패스워드를 생성한 후 각 비트마다 변수를 할당.
(예: n=16, i=j=4, 패스워드="kb", k=01101011b, b=01100010b,
x1=0, x2=1, x3=1, x4=0, x5=1, x6=0, x7=1, x8=1, x9=0, x10=1, x11=1, x12=0, x13=0, x14=0, x15=1, x16=0)
2) [도 1]은 unit clause로부터 expressional equality, geometric equality 를 충족시키기 위한 변형 과정을 거쳐서 원환형 이항 트리가 생성되는 절차를 보여준다. [도 1]의 (g)와 같은 원환형 이항 트리 프레임을 생성.
3) 상기 1)에서 할당된 변수들로 구성된 TRUE 값을 가지는 n개의 리터럴 집합 또는 FALSE 값을 가지는 n개의 리터럴 집합을 생성한 후 랜덤하게 정렬.
(예: TRUE 값을 가지는 n개의 리터럴 집합, x7, x2, -x12, -x16, x10, -x4, x3, -x9, -x1, x15, x5, -x13, -x6, -x14, x8, x11)
4) 위 3)에서 만든 n개의 리터럴 집합에서 순서대로 하나씩 꺼내서 맨 좌측열부터 dominant literal 자리에 배치.(열 들을 맨 위부터 아래까지 모두 채우고 다음 열을 채움)
5) Switching literal들의 자리에 들어가는 literal들은 dominant literal들의 보수(complement)로 배치하여 [도 2]와 같은 싱글 원환형 이항 트리를 생성하는 단계;
(Method 2)
1) 상기 (Method 1)에서 생성한 원환형 이항 트리를 구성하는 dominant literal들을 column 단위로 그룹을 만든 후 랜덤하게 정렬.
(예: G1=[x7, x2, -x12, -x16], G2=[x10, -x4, x3, -x9], G3=[-x1, x15, x5, -x13], G4=[-x6, -x14, x8, x11],
랜덤하게 정렬한 후의 dominant literal 그룹들: G1=[x7, -x12, x2, -x16], G2=[x3, -x9, x10, -x4], G3=[-x13, x15, -x1, x5], G4=[-x14, -x6, x11, x8] )
2) 위 1)에서 만들어진 그룹에 속한 모든 literal들의 보수들을 사용하여 대응되는 그룹들을 만든 후 랜덤하게 정렬. 이때 1)에서 랜덤하게 정렬된 그룹과 대응되는 그룹에서 동일한 위치에 동일 변수가 위치하면 재 정렬해서 동일 위치에는 하나의 변수와 그 변수의 보수가 같이 배치되는 것을 방지함
(예: G1=[-x7, -x2, x12, x16], G2=[-x10, x4, -x3, x9], G3=[x1, -x15, -x5, x13], G4=[x6, x14, -x8, -x11],
랜덤하게 정렬한 후의 dominant literal의 보수들의 그룹들: G1=[x12, -x2, x16, -x7], G2=[-x10, -x3, x4, x9], G3=[-x15, x13, -x5, x1], G4=[x6, -x11, -x8, x14])
3) Distance 값, d를 설정. (column 수/2, column 수/2 -1, column 수/2 + 1 등을 선택할 수 있으나 실험 결과에 의하면 hardness를 가장 높이는 d는 column 수/2 -1)
4) 위 1)에서 만든 그룹과 2)에서 만든 대응되는 그룹에서 차례로 하나씩(하나의 literal은 TRUE 값을 가지며 또 다른 literal은 FALSE 값을 가짐) 추출한 후에 d 만큼 떨어진 column을 구성하는 각각의 노드에 포함된 두 개의 절의 random variable 위치에 FALSE 값을 가지는 literal을 왼쪽에 또는 오른쪽에 또는 두 자리중에서 랜덤한 위치에 차례로 추가하여 [도 3]과 같은 random literal들이 포함된 원환형 트리 생성.
5) 모든 노드에서 절들을 추출한 후에 각각의 변수들의 역할을 확인 할 수 없도록 하기 위해서 하나의 절을 구성하는 3개의 literal들을 랜덤하게 재정렬해서 3-CNF 수식을 만드는 모듈러 랜덤 캡슐화 단계;
(예: (수식 1)은 [도 3]의 첫 번째 column의 첫 번째 노드에서 추출된 두 개의 절, (수식 2)는 첫 번째 column의 두 번째 노드에서 추출된 두 개의 절, (수식 3)은 마지막 column의 마지막 번째 노드에서 추출된 두 개의 절, (수식 4)는 각각의 절들을 구성하는 literal들을 랜덤하게 정렬한 뒤에 절들을 AND 연산자로 합쳐서 최종적으로 만들어진 3-CNF를 보여줌)
(수식 1)
(x7∨¬x2∨x6), (x7∨x4∨¬x14)
(수식 2)
(x2∨x12∨¬x11), (x2∨¬x3∨¬x6)
(수식 3)
(x11∨x6∨x1), (x11∨¬x7∨x5)
(수식 4)
(¬x2∨x7∨x6), (¬x14∨x4∨x7)∧ ... ∧(x6∨x11∨x1), (x11∨x5∨¬x7)
[듀얼 원환형 트리를 이용한 3-CNF 생성 절차]
상기의 목적을 실현하기 위한 본 발명의 바람직한 다른 실시례에 따른 패스워드를 해로 가지는 3-CNF 생성 방법은, 하기의 (Method 3)을 이용해서 패스워드를 해로 가지는 듀얼 원환형 이항 트리 생성하고, 이에 하기의 (Method 4)를 이용하여 모듈러 랜덤 캡슐화해서 3-CNF 수식을 도출하는 것에 특징이 있다.
(Method 3)
1) n(n=ixj, i: 트리의 level 수, j: 트리의 column 수) bit의 패스워드를 생성한 후 각 비트마다 변수를 할당.
(예: n=16, i=j=4, 패스워드="kb", k=01101011b, b=01100010b,
x1=0, x2=1, x3=1, x4=0, x5=1, x6=0, x7=1, x8=1, x9=0, x10=1, x11=1, x12=0, x13=0, x14=0, x15=1, x16=0)
2) [도 1]의 (g)와 같은 원환형 이항 트리 프레임을 생성.
3) 상기 1)에서 할당된 변수들로 구성된 TRUE 값을 가지는 n개의 리터럴 집합을 생성한 후 랜덤하게 정렬.
(예: x7, x2, -x12, -x16, x10, -x4, x3, -x9, -x1, x15, x5, -x13, -x6, -x14, x8, x11)
4) 듀얼 원환형 이항 트리를 구성하는 하나의 트리에서 위 3)에서 만든 n개의 리터럴 집합에서 순서대로 하나씩 꺼내서 맨 좌측열부터 dominant literal 자리에 배치.(열 들을 맨 위부터 아래까지 모두 채우고 다음 열을 채움)
5) Switching literal들의 자리에 들어가는 literal들은 dominant literal들의 보수로 배치.
6) 위 1)에서 할당된 변수들로 구성된 FALSE 값을 가지는 n개의 리터럴 집합을 생성한 후 랜덤하게 정렬.
(예: -x8, x6, -x2, -x10, -x3, x1, x13, x12, -x15, x16, -x11, -x7, x9, x14, x4, -x5)
7) 듀얼 원환형 이항 트리를 구성하는 또 다른 트리에서 위 6)에서 랜덤하게 정렬한 n개의 리터럴을 사용하여 위 4)와 5)를 수행하여 [도 4]와 같은 듀얼 원환형 이항 트리를 생성하는 단계;
(Method 4)
1) 상기 (Method 3)에서 생성한 두 개의 트리 중에서 하나의 트리를 구성하는 dominant literal들을 column 단위로 그룹을 만든 후 랜덤하게 정렬.
(예: G1=[x7, x2, -x12, -x16], G2=[x10, -x4, x3, -x9], G3=[-x1, x15, x5, -x13], G4=[-x6, -x14, x8, x11],
랜덤하게 정렬한 후의 dominant literal 그룹들: G1=[x7, -x12, x2, -x16], G2=[x3, -x9, x10, -x4], G3=[-x13, x15, -x1, x5], G4=[-x14, -x6, x11, x8] )
2) 위 1)에서 만들어진 그룹에 속한 모든 literal들의 보수들을 사용하여 대응되는 그룹들을 만든 후 랜덤하게 정렬. 이때 1)에서 랜덤하게 정렬된 그룹과 대응되는 그룹에서 동일한 위치에 동일 변수가 위치하면 재 정렬해서 동일 위치에는 하나의 변수와 그 변수의 보수가 같이 배치되는 것을 방지함
(예: G1=[-x7, -x2, x12, x16], G2=[-x10, x4, -x3, x9], G3=[x1, -x15, -x5, x13], G4=[x6, x14, -x8, -x11],
랜덤하게 정렬한 후의 dominant literal의 보수들의 그룹들: G1=[x12, -x2, x16, -x7], G2=[-x10, -x3, x4, x9], G3=[-x15, x13, -x5, x1], G4=[x6, -x11, -x8, x14])
3) Distance 값, d를 설정.
4) 위 1)에서 만든 그룹과 2)에서 만든 대응되는 그룹에서 차례로 하나씩 추출한 후에 d 만큼 떨어진 column을 구성하는 각각의 노드에 포함된 두 개의 절의 random variable 위치에 FALSE 값을 가지는 literal을 왼쪽에 또는 오른쪽에 또는 두 자리중에서 랜덤한 위치에 차례로 추가
5) 또 다른 트리를 이용해서 상기 1)~4) 과정을 수행하여 [도 5]와 같은 random literal들이 포함된 듀얼 원환형 트리 생성.
6) 모든 노드에서 절들을 추출한 후에 각각의 변수들의 역할을 확인 할 수 없도록 하기 위해서 하나의 절을 구성하는 3개의 literal들을 랜덤하게 재정렬 해서 3-CNF 수식을 만드는 모듈러 랜덤 캡슐화 단계;
(예: [도 5]의 듀얼 원환형 이항 트리 중에서 모든 dominant literal들이 TRUE 값을 가지는 첫 번째 트리에서, 앞에서 서술한 (수식 1)은 첫 번째 column의 첫 번째 노드에서 추출된 두 개의 절, (수식 2)는 첫 번째 column의 두 번째 노드에서 추출된 두 개의 절, (수식 3)은 마지막 column의 마지막 번째 노드에서 추출된 두 개의 절, (수식 4)는 각각의 절들을 구성하는 literal들을 랜덤하게 정렬한 뒤에 절들을 AND 연산자로 합쳐서 만들어진 3-CNF을 나타냄.
모든 dominant literal들이 FALSE 값을 가지는 두 번째 트리에서, (수식 5)는 첫 번째 column의 첫 번째 노드에서 추출된 두 개의 절, (수식 6)은 첫 번째 column의 두 번째 노드에서 추출된 두 개의 절, (수식 7)은 마지막 column의 마지막 번째 노드에서 추출된 두 개의 절, (수식 8)은 각각의 절들을 구성하는 literal들을 랜덤하게 정렬한 뒤에 절들을 AND 연산자로 합쳐서 만들어진 3-CNF을 나타냄. 최종적으로 듀얼 원환형 이항 트리에 모듈러 랜덤 캡슐링해서 생성되는 3-CNF는 (수식 4)와 (수식 8)을 AND 연산자로 합쳐진 형태를 가짐. )
(수식 5)
(¬x8∨¬x6∨x14), (¬x8∨¬x1∨x5)
(수식 6)
(x6∨x2∨x4), (x6∨¬x13∨¬x14)
(수식 7)
(¬x5∨¬x9∨¬x11), (¬x5∨x8∨x15)
(수식 8)
(x14∨¬x8∨¬x6), (¬x1∨x5∨¬x8)∧...∧(¬x11∨¬x5∨¬x9), (x8∨x15∨¬x5)
[3-CNF를 이용한 암호화 및 복호화 알고리즘]
하나의 절을 구성하는 3개의 literal 중에서 하나만 TRUE 값을 가지는 절을 1-TRUE clause, 2개만 TRUE값을 가지는 절을 2-TRUE clause로 정의한다.
본 특허에서 제안하는 3-CNF를 이용한 암호 알고리즘을 적용하기 위해서는 3-CNF는 다음과 같은 3가지 조건을 만족해야 한다.
첫째, 1-TRUE clause와 2-TRUE clause가 동일한 개수로 구성되어야하며
둘째, 패스워드를 해로 가져야하며
셋째, CNF로부터 패스워드를 찾기 어려운 Hard CNF이어야만 한다.
상기의 (Method 1)과 (Method 2)를 이용해서 또는 (Method 3)과 (Method 4)를 이용해서 만들어지는 3-CNF는 위의 3가지 조건을 만족시킨다. 그러나 상기 서술된 방법 말고도 다른 방법으로 만들어진 3-CNF를 사용한다고 하더라도 위의 3가지 조건을 만족시킨다면 아래 서술할 암호화 및 복호화 알고리즘이 적용 가능하다.
상기의 목적을 실현하기 위한 본 발명의 바람직한 일 실시례에 따른 Hard SAT에 기반한 양자 내성 암호 알고리즘 생성 방법은, 상기의 (Method 1)과 (Method 2)를 이용해서 또는 (Method 3)과 (Method 4)를 이용해서 또는 기타 방법으로 위의 3가지 조건을 만족시키는 3-CNF 도출단계;
상기 도출단계에서 생성된 3-CNF를 이루는 절들의 수가 n일때 2-TRUE clause를 q개(q=n/2), 1-TRUE clause를 p(p < q)개 추출해서 p+q개의 절들로 이루어진 새로운 CNF 수식을 만드는 단계;
상기 새롭게 만들어진 CNF 수식을 구성하는 절들 중 2p+1개의 절을 랜덤 추출해서 변수, xk(1<=k<=n, n=패스워드 bit 수)의 개수를 세어서 ak, xk의 보수의 개수를 세어서 bk 값을 설정하는 단계;
평문데이터 1을 암호화하기 위해서 ak를 구성하는 n개의 배열과 bk를 구성하는 n개의 배열을 순차적으로 결합한 2n개의 배열을 기록하고 0을 암호화하기 위해서 ak와 bk를 서로 바꾸어서 bk를 구성하는 n개의 배열과 ak를 구성하는 n개의 배열을 순차적으로 결합한 2n개의 배열을 기록하는 암호화 단계;
암호문을 읽어서 순차적으로 ak, bk 값을 설정한 후에 아래 (수식 9)와 같은 threshold 값, t를 계산하는 수식 생성 단계;
(수식 9)
(수식 9)에 패스워드에서 xk의 값이 TRUE이면 xk=1, ¬xk=0을 대입하고 FALSE이면 xk=0, ¬xk=1을 대입해서 t값을 계산하는 단계;
t 값이 3p+2 보다 크거나 같으면 1로 3p+1 보다 작거나 같으면 0으로 복호화 단계;로 수행되는 것에 특징이 있다.
[암호화 과정 중에 연산량 줄이기 위한 방법]
본 발명의 바람직한 다른 특징으로서, 상기 암호화 시에 연산량을 줄이기 위해서 CNF 수식을 구성하는 모든 절들에서 모든 변수와 그의 보수들의 수를 미리 계산해서 값을 (Ak, Bk)(1<=k<=n, n=패스워드 bit 수)로 표시하는 단계;
상기 단계에 이어서 2p+1개를 뽑지 않고 q-p-1개를 뽑아서 뽑혀진 절들의 모든 변수와 그의 보수들의 수를 계산하고 그 값을 (ck, dk)라고 하여, ak=Ak-ck, bk=Bk-dk의 식을 도출하는 단계;
평문데이터 1을 암호화하기 위해서 ak를 구성하는 n개의 배열과 bk를 구성하는 n개의 배열을 순차적으로 결합한 2n개의 배열을 기록하고 0을 암호화하기 위해서 ak와 bk를 서로 바꾸어서 bk를 구성하는 n개의 배열과 ak를 구성하는 n개의 배열을 순차적으로 결합한 2n개의 배열을 기록하는 암호화 단계;
암호문을 읽어서 순차적으로 ak, bk 값을 확정한 후에 위의 (수식 9)와 같은 threshold 값, t를 계산하는 수식 생성단계;
(수식 9)에 패스워드에서 xk의 값이 TRUE이면 xk=1, ¬xk=0을 대입하고 FALSE이면 xk=0, ¬xk=1을 대입해서 t값을 계산하는 단계;
t 값이 3p+2 보다 크거나 같으면 1로 3p+1 보다 작거나 같으면 0으로 복호화 단계;로 수행되는 것에 특징이 있다.
[동일 패스워드로 연속적으로 CNF formula를 만드는 것을 방지하는 방법]
본 발명의 바람직한 또 다른 특징으로서, 동일한 패스워드로 연속적으로 CNF 수식을 생성하는 것을 방지하기 위하여 상기 (Method 1)의 1)에서, 생성된 패스워드에 생성 시간 정보를 포함하는 것에 특징이 있다.
본 발명의 바람직한 또 다른 특징으로서, 동일한 패스워드로 연속적으로 CNF 수식을 생성하는 것을 방지하기 위하여 상기 (Method 3)의 1)에서, 생성된 패스워드에 생성시간 정보를 포함하는 것에 특징이 있다.
[신원인증 또는 공개키 확인 절차]
본 발명의 바람직한 또 다른 특징으로서, 암호문을 전달할 송신자가 가지고 있는 CNF 수식과 CNF 수식의 생성자이며 암호문을 수신할 수신자가 가지고 있는 CNF 수식과 일치하는 지의 여부와 수신자가 위의 CNF 수식의 해를 알고 있는 CNF formula의 생성자 인지를 하기의 (Method 5)에 의해서 확인하는 단계를 더 수행하는 것에 특징이 있다.
(Method 5)
1) 송신자는 입력 변수 수 크기의 키 값을 생성하되, 이 키 값은 CNF 수식의 해가 아니며 CNF 수식에 대입하면 FALSE를 리턴하는 절들이 생기는 것으로, 이 키 값을 상기 암호 알고리즘으로 암호화 해서 수신자에게 송신,
2) 수신자는 본인의 패스워드로 전달받은 암호문을 복호화 해서 키 값을 확인하고, 이 키 값을 CNF 수식에 대입해서 모든 절들의 리턴 값들을 얻고 순차적으로 송신자에게 송신,
3) 송신자는 생성한 키 값을 보유한 CNF 수식에 대입해서 리턴 값들을 생성한 후에 수신받은 리턴 값들과 생성된 리턴 값들을 비교,
4) 상기 비교된 값들이 같다면 수신자는 CNF 수식의 생성자가 되며, 서로가 같은 CNF 수식을 가지고 있음을 확인하는 단계;로 수행되는 것에 특징이 있다.
본 발명에 따른 패스워드를 해로 가지는 Hard 3-CNF 생성 방법은 원환형 이항 트리의 순환 구조의 특성과 변수들의 구별 불가능성(indistinguishability)의 특성에 의해서, 생성되는 모든 3-SAT 객체(instance)들이 백트랙킹 기반의 알고리즘들에 관해서 해를 찾기 위해서는 적어도 sub-exponential calculation step 수가 필요해짐이 증명되므로 암호화에 사용가능하다. 또한 Hard SAT을 구성하는 CNF 식을 공개하고 이것을 암호화에 사용하고 CNF식의 해인 개인키를 알 경우에만 복호화가 가능한 방법을 제시함으로써 공개키와 개인키 간의 수식적 관계에 의해서 다양한 공격을 받아온 다른 공개키 기반 알고리즘들에 비해서 안전성 측면에서 우위를 가진다.
또한, 본 발명은 기존의 양자 내성 암호화 알고리즘들과 비교했을 때 빠른 연산의 측면과 구현의 편의성 측면 모두에서 향상된 우위를 가짐에 따라 이를 활용한 진보된 암호화 기술을 다양한 분야에 적용시킬 수 있다.
본 발명의 특징 및 이점들은 첨부도면에 의거한 다음의 상세한 설명으로 더욱 명백해질 것이다. 이에 앞서 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이고 사전적인 의미로 해석되어서는 아니 되며, 발명자가 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념을 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합되는 의미와 개념으로 해석되어야만 한다.
도 1은 하나의 literal만으로 구성된 unit clause에서 원환형 이항 트리를 생성하는 과정을 설명하기 위한 개략도,
도 2는 랜덤 변수가 추가 되지 않은 싱글 원환형 이항 트리의 예를 보여주기 위한 도면,
도 3은 랜덤 변수가 추가된 싱글 원환형 이항 트리의 예를 보여주기 위한 도면,
도 4는 랜덤 변수가 추가 되지 않은 듀얼 원환형 이항 트리의 예를 보여주기 위한 도면,
도 5는 랜덤 변수가 추가된 듀얼 원환형 이항 트리의 예를 보여주기 위한 도면,
도 6는 본 발명에 따른 듀얼 원환형 이항 트리의 개념을 설명하기 위한 도면,
도 7은 하나의 변수 값이 바뀔 때 그 영향이 전파되는 것과 unit propagation ( Boolean constraint propagation )을 비교 설명하기 위한 도면,
도 8은 본 발명에 따른 모듈러 랜덤 캡슐화의 개념을 설명하기 위한 도면,
도 9는 본 발명에 따른 새로운 개념인 CDC(Conditional Don't-Care) variable의 개념을 설명하기 위한 도면,
도 10은 TRUE 트리와 FALSE 트리에서 생성되는 순환루프를 찾기 위해서 decision literal과 implied literal들을 선택하는 과정을 설명하기 위한 도면,
도 11은 이전 스텝에서 선정된 decision literal과 implied literal의 보수들이 절에서 지워져서 3개의 literal로 구성된 절들이 2개의 literal로 구성된 절들로 바뀌는 과정을 설명하기 위한 도면,
도 12는 본 발명의 실시례에 따른 듀얼 원환형 이항 트리에 모듈러 랜덤 캡슐링해서 생성된 3-CNF가 입력변수 수가 충분히 크다면 듀얼 솔루션 이외의 해를 가지지 않음을 확인하기 위해서 실시한 실험 결과를 설명하기 위한 도면,
도 13은 본 발명의 실시례에 따른 듀얼 원환형 이항 트리의 크기를 증가시키며 해를 찾는데 걸리는 시간을 측정한 실험 결과를 설명하기 위한 도면,
도 14는 본 발명에 따른 Hard CNF를 사용한 암호화 및 복호화 방법을 설명하기 위한 도면,
도 2는 랜덤 변수가 추가 되지 않은 싱글 원환형 이항 트리의 예를 보여주기 위한 도면,
도 3은 랜덤 변수가 추가된 싱글 원환형 이항 트리의 예를 보여주기 위한 도면,
도 4는 랜덤 변수가 추가 되지 않은 듀얼 원환형 이항 트리의 예를 보여주기 위한 도면,
도 5는 랜덤 변수가 추가된 듀얼 원환형 이항 트리의 예를 보여주기 위한 도면,
도 6는 본 발명에 따른 듀얼 원환형 이항 트리의 개념을 설명하기 위한 도면,
도 7은 하나의 변수 값이 바뀔 때 그 영향이 전파되는 것과 unit propagation ( Boolean constraint propagation )을 비교 설명하기 위한 도면,
도 8은 본 발명에 따른 모듈러 랜덤 캡슐화의 개념을 설명하기 위한 도면,
도 9는 본 발명에 따른 새로운 개념인 CDC(Conditional Don't-Care) variable의 개념을 설명하기 위한 도면,
도 10은 TRUE 트리와 FALSE 트리에서 생성되는 순환루프를 찾기 위해서 decision literal과 implied literal들을 선택하는 과정을 설명하기 위한 도면,
도 11은 이전 스텝에서 선정된 decision literal과 implied literal의 보수들이 절에서 지워져서 3개의 literal로 구성된 절들이 2개의 literal로 구성된 절들로 바뀌는 과정을 설명하기 위한 도면,
도 12는 본 발명의 실시례에 따른 듀얼 원환형 이항 트리에 모듈러 랜덤 캡슐링해서 생성된 3-CNF가 입력변수 수가 충분히 크다면 듀얼 솔루션 이외의 해를 가지지 않음을 확인하기 위해서 실시한 실험 결과를 설명하기 위한 도면,
도 13은 본 발명의 실시례에 따른 듀얼 원환형 이항 트리의 크기를 증가시키며 해를 찾는데 걸리는 시간을 측정한 실험 결과를 설명하기 위한 도면,
도 14는 본 발명에 따른 Hard CNF를 사용한 암호화 및 복호화 방법을 설명하기 위한 도면,
이하에서는 첨부한 도면을 참조하면서 본 발명의 실시례에 대한 구성 및 작용을 상세하게 설명하기로 한다. 다만, 본 발명을 특정한 개시형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 출원에서 "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지 하나 또는 그 이상의 다른 특징들이나 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 즉, 명세서 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
또한, 다르게 정의되지 않는 한 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 구체적인 설명은 본 발명의 요지를 모호하지 않게 하기 위하여 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
먼저, 본 발명은 가장 간단한 절인 unit clause를 구성하는 하나의 literal 값이 satisfiable해지기 위해서는 TRUE 값을 가져야만 한다는 정보를 숨기기 위해서 resolution rule을 적용하고 redundancy clause들을 추가하는 과정을 거쳐서 이항 트리를 만들고, 이항 트리가 가진 expressional inequality의 특성을 제거하기 위해서 트리를 구형체 표면 위에 올려놓고 끝단의 노드들을 연결해서 환형 트리를 만든 후에, 환형 트리가 가진 geometric inequality의 특성을 제거하기 위해서 이항 트리를 하나가 아닌 두 개를 서로 상하 대칭이 되도록 결합한 후에 구형체 표면 위에 올려놓고 상하의 노드들을 서로 연결시키고 좌우의 노드들을 서로 연결시킴으로써 원환형 이항 트리를 생성하는 과정을 설명한다.
그런 후에 위의 원환형 이항 트리가 가진 순환구조의 특성에 의해서 unique dual solution을 가진다는 것을 보여준다. 그러나 원환형 이항 트리로부터 추출된 2-CNF formula는 back-tracking이 일어나지 않아서 SAT Solver에 의해서 쉽게 해가 구해진다. 위의 문제를 해결하기 위해서 랜덤 변수를 추가해서 원환형 이항 트리를 구성하는 절들이 3개의 리터럴들을 가지도록 변형하는 방법으로써 랜덤 캡슐링 기법을 서술하며, 더 나아가 서치알고리즘이 쉽게 해의 부분집합을 구하는 경우를 방지하기 위해서 새롭게 창안된 모듈러 랜덤 캡슐링 기법을 서술한다.
싱글 원환형 트리 또는 듀얼 원환형 트리를 모듈러 랜덤 캡슐링해서 생성된 3-CNF의 특성을 분석하는 과정에서 아래의 4가지를 증명한다. 첫 번째, 생성된 싱글 원환형 이항 트리에 모듈러 랜덤 캡슐링으로 만들어진 3-CNF formula가 sub-exponentially many solution을 가짐을 보여준다. 두 번째, 원환형 이항 트리의 basis solution을 찾기 위해서는 트리의 구조를 분석함으로써 변수들의 역할을 구분해야만 하는데 이를 위해서는 sub-exponential calculation step 수가 필요함을 증명한다. 세 번째, 원환형 이항 트리를 두 개 만들어서 두 개의 트리로부터 3-CNF formula를 생성하면 각각의 트리가 만드는 순환 구조의 특성이 두 개의 트리에 결합되어서 그 결과로 입력 변수 수가 충분히 크다면 unique dual solution을 가짐을 증명한다. 네 번째, unique dual solution을 가진다면 SAT Solver가 해를 구하기 위해서는 exponential calculation step 수가 필요함을 증명한다.
이렇게 생성된 Hard SAT을 암호화 및 복호화에 이용하기 위해서 생성된 Hard 3-CNF formula에서 1-TRUE clause와 2-TRUE clause의 개수가 미세하게 차이가 나는 새로운 CNF formula를 생성한 후에 이를 이용해서 암호화/복호화 시키는 알고리즘을 소개한다. 마지막으로 CNF formula의 생성자의 신원을 온라인에서 확인하기 위한 방법을 서술한다.
이하, 본 발명에서 사용되는 용어에 대한 정의를 설명하기로 한다.
부울 변수(variable) a는 TRUE(1) 또는 FALSE(0)의 값만을 가지며 ¬a, a와 같은 리터럴(literal)을 생성한다. (a∨¬b)와 같이 literal들의 disjunction(v)으로 표현된 식을 절(clause)이라고 부른다. (a∨¬b)∧(b∨¬c)와 같이 절들의 conjunction(∧)으로 표현된 식을 Conjunctive Normal Form(CNF)으로 부른다.
CNF formula를 구성하는 모든 절들을 TRUE 값으로 만드는 literal들의 그룹을 CNF formula의 해로 정의하며 CNF formula의 해가 존재하는지를 찾는 문제를 Satisfiability problem(SAT)으로 부른다. 해가 존재한다면 SAT을 구성하는 CNF formula는 satisfiable하다고 표현한다.
모든 절들이 2개 이하의 literal들로 구성된 CNF formula를 2-CNF로, 3개 이하인 literal들로 구성된 CNF formula를 3-CNF로, 모두가 3개로만 이루어진 CNF formula를 Exact 3-CNF로 표현하며 각각의 CNF formula의 해가 존재하는지를 묻는 문제를 2-SAT, 3-SAT, Exact 3-SAT으로 표현한다.
Yes or No의 대답을 요구하는 문제를 decision problem으로 부르며 SAT은 decision problem에 속한다. 추상적인 컴퓨터 모델은 deterministic Turing machine(DTM)과 non-deterministic Turing machine(NTM)으로 나누어지며, DTM은 이전 단계에서 다음 단계로의 상태의 천이를 하나만 가질 수 있고 NTM은 여러 개를 가질 수 있는 것으로 구분된다. 상태의 천이 수를 step 수로 정의할 때 집합 P는 DTM을 사용하여 polynomial step 수로 문제를 해결하는 알고리즘이 존재하는 decision problem의 집합으로, 집합 NP는 NTM을 사용하여 polynomial step 수로 문제를 해결하는 알고리즘이 존재하는 decision problem의 집합으로 정의되며 SAT은 NP에 속한다. A 문제를 해결하는 알고리즘을 polynomial calculation step 수의 변환과정을 통해서 B 문제를 해결하는 알고리즘으로 대체 가능할 때 A는 B로 polynomial-time reducible하다고 표현하며 모든 NP 문제가 B문제로 polynomial-time reducible할 때 B는 NP-hard 문제라고 정의하며 모든 NP 문제가 B문제로 polynomial-time reducible하면서 B가 NP에 속할 때 B는 NP-complete 문제라고 정의한다. SAT은 가장 먼저 발견된 대표적인 NP-complete 문제가 된다.
SAT의 해를 구하기 위해서 입력 변수 수가 작을 때는 resolution technique을 사용할 수 도 있으나 입력 변수 수가 커지면 SAT의 해를 구하기 위해서 개발된 SAT solver를 사용하며 수십 년간 international SAT competition 대회와 여러 연구자들을 통해서 알고리즘들이 공개되고 계속적으로 성능을 향상시킨 새로운 SAT solver들이 개발되어 왔다.
현재까지 만들어진 모든 SAT solver들은 Davis-Putnam-Logemann- Loveland(DPLL) algorithm을 기초로 제작되었다. 3-SAT이 DPLL 알고리즘에 의해서 어떻게 해집합이 확정되는지에 대해서 살펴보자. Exact 3-SAT은 3개의 literal들을 가진 절들로 구성된다. 하나의 절이 satisfiable하다면 하나 이상의 literal들이 TRUE 값을 가져야만 한다. 하나의 절을 구성하는 3개의 literal들 중에서 두 개의 literal들이 satisfiability에 기여하지 않는다고 가정하고 우리는 두 개의 literal에 FALSE 값을 할당한 후 절에서 지운다. 또는 하나의 절을 구성하는 두 개의 literal 중에서 하나의 literal이 satisfiability에 기여하지 않는다고 가정하고 우리는 하나의 literal에 FALSE 값을 할당한 후 절에서 지운다. 위의 과정으로 하나의 literal만으로 구성되는 unit clause를 만든다. 그런 후에 해를 찾는 과정에서 그 가정이 잘못된 것을 확인했을 때 우리는 변수 값을 FALSE로 가정한 step으로 되돌아가서 변수 값을 수정한다. 이때 unit clause를 만들기 위해서 literal 값을 FALSE로 할당하는 행위를 decision assignment로 표현하고 literal이 FALSE 값을 가지도록 값이 할당된 변수를 decision variable로 정의한다. Unit clause가 satisfiable 하도록, 즉, 문자의 값이 TRUE가 되도록 변수 값을 설정하는 행위를 implied assignment라고 표현하며 unit clause를 구성하는 변수를 implied variable로 정의한다. Implied assignment에 의해서 설정된 변수 값은 다른 절들의 satisfiability를 결정하기 위한 또 다른 변수들의 값에 영향을 준다. 이러한 영향력은 implied literal을 TRUE로 할당할 때 implied literal의 보수가 포함된 절에서 보수를 지우는 행위로 발생된다. 이러한 행위는 implied literal의 보수가 그 절의 satisfiability에 기여하지 않는다고 가정하는 것을 의미하는데 만약 satisfiable solution이 존재하는 데도 불구하고 잔여 literal들 중 하나도 TRUE 값을 할당하지 못하는 절이 생성되면 위의 가정은 올바르지 않으므로 가정을 수정해야 한다. 즉, 다른 변수들의 값이 두 literal 중 적어도 하나는 TRUE가 되어야만 하도록 영향을 준다. 이러한 영향은 implied literal과 그 literal의 보수가 만드는 path를 타고 propagation된다. 이것을 Boolean constraint propagation 또는 unit propagation 으로 표현한다.
Decision literal은 Decision literal은 FALSE 값을 가지도록 할당되고 implied literal은 TRUE 값을 가지도록 할당되므로 하나의 절 안에 포함된 decision literal또는 implied literal의 보수는 satisfiability에 영향을 주지 못하므로 삭제한다. 위의 과정에서 empty clause가 생성되면 conflict가 발생했다고 표현한다. Implied literal의 보수 또는 decision literal을 지웠는데도 한 절에서 두 개 이상의 literal이 남는다면 연속적으로 또 다른 변수를 decision variable로 설정하고 FALSE 값을 할당해야만 한다. 이러한 연속적인 변수 값의 설정은 conflict가 발생했을 때 설정된 값을 수정해야만 하므로 decision variable들이 만드는 이진트리를 구성해서 관리하며 위의 트리 레벨을 decision level이라고 부른다. Decision literal의 보수 또는 Implied literal을 포함하는 절들은 위의 literal들에 의해서 satisfiable해지므로 삭제한다. 위의 과정에서 남은 절이 하나도 없는 상태가 되면 알고리즘은 satisfiable 결과를 리턴하며 unit clause들에 포함된 모든 implied literal들의 집합이 CNF formula의 해(solution)가 된다.
본 발명은 SAT solver들이 풀기 어려운 Hard SAT을 체계적으로 생성하는 방법과 생성된 Hard SAT을 이용해서 암호화 및 복호화 하는 방법에 관한 서술이다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 패스워드를 해로 가지는 3-CNF 생성 방법 및 이를 이용한 SAT에 기반한 양자 내성 암호화 알고리즘 생성 방법을 설명하면 다음과 같다.
도 1은 하나의 literal만으로 구성된 unit clause에서 원환형 이항 트리를 생성하는 과정을 설명하기 위한 개략도를 나타낸다. unit clause를 resolution rule을 적용하고 redundant clause들을 삽입해서 이항 트리를 만든 후에 이항 트리가 가진 expressional inequality를 제거하기 위해서 환형 이항 트리로 변형한 후에 환형 이항 트리가 가진 geometric inequality를 제거하기 위해서 원환형 이항 트리로 변형하는 절차를 보여준다.
도 2는 랜덤 변수가 추가 되지 않은 싱글 원환형 이항 트리의 예를 보여주기 위한 도면이다. TRUE 값을 가지는 literal들을 랜덤하게 정렬한 후 dominant literal들의 자리에 배치했다. Switching literal들은 dominant literal들의 보수(complement)들로 배치했다.
도 3은 랜덤 변수가 추가된 싱글 원환형 이항 트리의 예를 보여주기 위한 도면이다. 도 2에서 생성한 원환형 이항 트리를 구성하는 clause들을 3개의 literal들이 만드는 절들로 바꾸기 위해서 random literal들을 삽입한 형태이며 FALSE 값을 가지는 random literal들을 왼쪽에 배치한 left shift modular random encapsulation 기법을 보여준다.
도 4는 랜덤 변수가 추가 되지 않은 듀얼 원환형 이항 트리의 예를 보여주기 위한 도면이다. 도 2에서 생성한 TRUE tree에 FALSE tree도 함께 추가해서 듀얼 원환형 이항 트리를 생성한 예를 보여준다.
도 5는 랜덤 변수가 추가된 듀얼 원환형 이항 트리의 예를 보여주기 위한 도면이다. 도 4에서 생성한 듀얼 원환형 이항 트리를 구성하는 절들을 3개의 literal들로 구성된 절들로 바꾸기 위해서 random literal이 추가된 형태로 left shift modular random encapsulation 기법을 보여준다.
도 6은 본 발명에 따른 듀얼 원환형 이항 트리의 개념을 설명하기 위한 도면이다. 듀얼 원환형 이항 트리를 구성하는 하나의 변수와 그의 보수가 양쪽 트리에서 모두 dominant literal 역할을 하는 것을 보여준다.
도 7은 하나의 변수 값이 바뀔 때 그 영향이 전파되는 것과 unit propagation ( Boolean constraint propagation )을 비교 설명하기 위한 도면이다. random literal이 dominant literal이나 switching literal과 겹치게 되면 짧은 순환 루프가 생성되는 것을 보여준다.
도 8은 본 발명에 따른 모듈러 랜덤 캡슐화의 개념을 설명하기 위한 도면이다. column 수가 10이고 tree level이 5인 원환형 이항 트리를 모듈러 랜덤 캡슐링하기 위해서 랜덤 변수들을 distance = column 수 /2 -1 로 해서 배치하는 예를 보여준다.
도 9는 본 발명에 따른 새로운 개념인 CDC(Conditional Don't-Care) variable의 개념을 설명하기 위한 도면이다. 가로방향과 세로방향으로 순환 루프가 형성되고 변수들이 연결되어서 CDC를 형성하는 예를 보여준다.
도 10은 TRUE 트리와 FALSE 트리에서 생성되는 순환루프를 찾기 위해서 decision literal과 implied literal들을 선택하는 과정을 설명하기 위한 도면이다. 올바르게 decision literal들과 implied literal들을 선정하면 트리가 가진 고유의 순환 루프를 찾을 수 있음을 보여준다.
도 11은 이전 스텝에서 선정된 decision literal들과 implied literal들의 보수들이 절에서 지워져서 3개의 literal로 구성된 절들이 2개의 literal로 구성된 절들로 바뀌는 과정을 설명하기 위한 도면이다. 그림 (a)는 FALSE 트리에서 dominant literal과 random literal이 지워지는 경우를 그림 (b)는 TRUE 트리에서 switching literal과 random literal이 지워지는 경우를 보여준다.
도 12는 본 발명의 실시례에 따른 듀얼 원환형 이항 트리에 모듈러 랜덤 캡슐링해서 생성된 3-CNF가 입력변수 수가 충분히 크다면 듀얼 솔루션 이외의 해를 가지지 않음을 확인하기 위해서 실시한 실험 결과를 설명하기 위한 도면이다. unique dual solution을 가질 확률의 이론적 예측값과 측정값이 일치하는 것을 확인할 수 있다.
도 13은 본 발명의 실시례에 따른 듀얼 원환형 이항 트리의 크기를 증가시키며 해를 찾는데 걸리는 시간을 측정한 실험 결과를 설명하기 위한 도면이다. free modular 방식이건 shift modular 방식이건 모두 해를 구하는 시간이 입력변수 수에 비례해서 지수 함수적으로 증가하는 것을 보여준다.
,
도 14는 본 발명에 따른 Hard CNF를 사용한 암호화 및 복호화 방법을 설명하기 위한 도면이다. q개의 2-TRUE clause들과 p개의 1-TRUE clause들을 추출해서 새롭게 CNF를 만든 후에 2p+1개의 절들을 랜덤하게 추출한 후에 literal들의 개수를 세어서 암호문을 만들고 암호문에서 literal들의 갯수들을 추출해서 임계치를 확인하기 위한 수식을 만든 후에 패스워드를 대입해서 3p+2보다 크거나 같으면 1로 그렇지 않으면 0으로 복호화 하는 과정을 보여준다.
이상의 도면을 참조하여, 본 발명의 실시를 위한 주요 구성을 상세하게 설명하기로 하되, 먼저 원환형 이항 트리의 생성(toroidal binomial tree generation) 방법에 대해 설명하기로 한다.
주사위나 동전을 던지고 나서 어떤 값이 나오는지 알 수 있는 알고리즘을 만들 수 있는가? 라는 문제를 낸다고 가정하자. A가 나오고 B가 안 나온다는 결론을 내기 위해서는 알고리즘의 내부에서는 A와 B를 구분하는 요소를 가지고 있어야 하지만 던지는 행위에 관해서 A와 B는 서로가 indistinguishable하다. 다시 말하면, 던지는 행위에 관해서 숫자들은 서로가 equality가 성립한다. Indistinguishability로 인해서 해를 구할 수 있는 알고리즘을 만들기 어려우므로 위의 문제는 extremely hard하다고 볼 수 있다.
그래서 문제 해결을 위한 알고리즘을 만들기 어렵게 하는 어떤 개념적인 indistinguishable 공간을 만들고 그 공간에 변수들의 값을 숨김으로써 Hard SAT을 만들기를 원한다. 본 발명에서는 expressional equality, geometric equality를 정의한다.
위의 두 equality의 특성을 가지는 indistinguishable 공간으로써 원환형 이항 트리(toroidal binomial tree)를 만들고 tree를 구성하는 노드들에 랜덤하게 literal 들을 삽입함으로써 Hard SAT을 생성한다. 원환형 이항 트리는 CNF formula의 복잡도를 증가시키는 방향으로 가장 간단한 절인 unit clause를 연속적으로 변형하는 과정에서 생성된다.
[도 1]을 참조하면, (a)는 unit clause를 보여준다. (b)는 unit clause를 두 개의 문자로 구성된 k개의 절들로 변형한 것이고, (c)는 새로운 두 개의 문자로 구성된 redundant 절들을 추가해서 복잡도를 높인 형태이며, (d)는 변수들을 추가해서 resolution rule을 적용할 수 있는 새로운 패스들을 만드는 과정을 보여준다. (e)는 (d)의 추가 과정을 반복해서 생성된 이항 트리를 나타낸다. (f)는 이항 트리로부터 expressional equality를 확보하기 위한 환형 트리 생성 방법을 보여준다. (g)는 환형 트리로부터 geometric equality를 확보하기 위한 원환형 이항 트리 생성 방법을 보여준다. (h)는 원환형 이항 트리의 형상을 보여준다.
SAT 문제를 풀기 위한 하나의 방법으로 resolution technique이 사용된다. Resolution technique에서 절들을 합쳐서 새로운 절들을 만들 때 분해증명법(resolution rule) 이 사용되며 하나의 예는 다음과 같다.
(수식 1)
(a∨¬b)∧(b∨a)⇒a
(수식 1)은 변수 a가 TRUE 값을 가지는 조건은 (a∨¬b)와 (b∨a)인 두 절이 모두 TRUE가 되기 위한 필요조건이 된다는 것을 나타낸다. 관점을 바꾸면 변수 a의 필요조건이 두 개의 절에 숨겨져 있다고 해석할 수 있고 위의 개념을 확장해서 연속적으로 절들의 개수를 늘려서 변수 a의 필요조건을 찾는 것을 어렵게 만들고자 한다. 위의 과정을 쉽게 확인하기 위해서 하나 또는 두 개의 절들의 쌍을 그래프로 표기한다. (x1.1∨¬x2.1)인 경우와 (x1.1∨¬x2.1)∧(x1.1∨¬x2.2) 인 경우에 각각 다음과 같이 하나의 선으로 literal들을 연결하는 형태로 표기한다.
그래프로 표기할 때는 편의상 NOT(¬) 연산자를 -로 표시한다. 두 절을 하나의 그래프로 나타낼 때는 두 절에서 공통으로 들어가는 문자를 앞으로 배치하며 나머지 문자들은 약간 띄워서 뒤에 배치한다. Resolution rule은 한 변수와 그 변수의 보수(complement)가 연결된 path을 따라서 적용되며 [도 1]에서처럼 약간 휘어진 화살표로 나타낸다.
Unit clause인 (x1.1)을 resolution rule을 이용해서 여러 절들로 확장하고 redundant clause들을 추가해서 모든 절들이 TRUE 값을 가지기 위한 x1.1의 필요조건을 찾는 것을 어렵게 만드는 과정을 연속적으로 실행한다. 위의 과정을 그래프로 나타내면 [도 1]의 (e)와 같은 트리가 생성된다.
[도 1]의 (b)와 (c)를 CNF formula로 나타내면 아래의 (수식 2)와 (수식 3)으로 표현된다.
(수식 2)
(x1.1∨¬x2.1)∧(x2.1∨¬x3.1)∧...∧(xK.1∨x1.1)
(수식 3)
A∧B,
A=(x1.1∨¬x2.1)∧(x2.1∨¬x3.1)∧...∧(xK.1∨x1.1),
B=(x1.1∨¬x2.2)∧(x2.1∨¬x3.2)∧...∧(xK.1∨xk+1.2)
상기 (수식 2)는 resolution rule을 적용하면 x1.1의 필요조건이 확인된다. 수식(3)의 CNF formula는 (수식 2)의 CNF formula를 포함하고 있음으로 x1.1의 필요조건이 그대로 유지된다. [도 1]의 (c)에서 ¬x2.1에서 휘어진 화살표로 표현된 연결선이 생성된 것은 두 개의 절, (x1.1∨¬x2.1)과 (x1.1∨¬x2.2) 중에서 (x1.1∨¬x2.1)을 사용해서 resolution rule 을 적용할 수 있음을 나타낸 것이다.
두 개의 절들에 공통으로 속하는 문자(변수)를 dominant literal(variable)로, 나머지 두 문자(변수)를 switching literal(variable)로 정의한다. Switching variable이라는 의미는 resolution rule이 적용 가능한 절을 선택하는 역할을 함을 의미한다.
[도 1]의 (c)에서 resolution rule 적용 시에 선택되지 않은 변수들을 사용하여 다른 스위칭 패스를 만들 수 있도록 변수들의 보수들을 dominant literal로 하는 새로운 절들을 만든다. 이때 사용되는 변수들의 수를 최소화하기 위해서 선택되지 않은 변수들 중에서 하나는 dominant variable로 다른 하나는 switching variable로 할당하고 나머지 하나는 새로운 변수가 할당되는 절들을 생성한다. 그런 후에 화살표로 resolution rule이 적용 가능한 path를 표시하면 [도 1]의 (d)와 같은 연결구조가 만들어지며 위의 과정을 반복하면 [도 1]의 (e)와 같은 트리가 생성된다.
트리 하단에 있는 x1.1을 임의의 위치에 있는 switching literal과 바꾸더라도 resolution path가 만들어져서 x1.1=TRUE인 조건을 확인할 수 있다. 이때 root node에서 특정 child node까지 생성되는 resolution path의 수가 이항 계수로 표현되므로 생성된 트리를 이항 트리(binomial tree)라고 정의한다. 이항 트리는 root node, outer node, inner node들에서 사용되는 dominant literal들의 보수의 개수가 다르다. Root node는 한 번도 사용되지 않았고 outer node들은 한번 사용되었고 inner node들은 두 번씩 사용되었다. 위와 같이 변수들의 사용 횟수가 다른 것을 CNF formula의 형태적 비동등성 (expressional inequality)이라고 표현하자. CNF formula의 형태적 비동등성은 알고리즘이 root node와 inner node들을 쉽게 구분할 수 있게 함으로써 root node에서 inner node 방향이 아닌 inner node에서 root node로의 서치 방향을 선택함으로써 쉽게 해를 찾을 수 있게 한다.
이항 트리가 가진 형태적 비동등성을 없애기 위해서 [도 1]의 (f)와 같이 평면에 펼쳐진 트리를 구형 곡면에 놓는다고 가정한 후에 새로운 노드들을 추가해서 2번 사용되지 않은 switching literal들을 연결시켜보자. [도 1]의 (f)는 이항 트리를 환형 이항 트리(circular binomial tree)로 바꾸는 방법을 설명한다. 삼각형을 이루는 외곽 literal들을 순차적으로 하나씩 모아서 새로운 노드를 만든다. 처음에는 dominant literal을 x5.1으로 스위칭 literal을 ¬x1.1, ¬x5.5으로 하는 두 개의 절을 만들고 차례로 [도 1]의 (f)에 표기된 삼각 면의 화살표 방향을 따라가며 dominant literal과 switching literal들을 추출하여 나머지 4개의 쌍을 만든다. 트리에 나타난 노드들은 3개의 literal들로 표현되어 있지만 두 개의 literal들로 이루어진 절들의 쌍임에 주의하자. 기존의 이항 트리는 root node와 outer node 및 inner node들이 dominant literal들의 보수를 사용한 개수가 달랐지만 환형 이항 트리는 모든 literal들과 그들의 보수들이 모두 2번씩 사용된다. 또한 모든 노드들은 시작점에서 패스를 따라가면 다시 시작점으로 돌아오는 하나 이상의 순환 루프를 가지고 있다.
환형 이항 트리는 변수들과 그의 보수들의 사용 횟수가 동일해서 변수들에 관한 CNF formula의 형태적 동등성을 확보했다. 하지만 트리 구조를 만드는 기하학적 형태로는 시작 노드와 말단 노드가 구분된다. 기하학적 형태의 차이는 한 노드를 시작점으로해서 패스를 따라가면 다시 시작점으로 돌아오는 순환루프가 생성되는데 이때 몇 번 노드를 거쳐서 다시 돌아 왔는지에 대한 개수의 차이를 만든다. 이런 차이를 CNF formula의 기하학적 비동등성(geometric inequality)이라고 표현하자. 환형 이항 트리가 가진 기하학적 비동등성은 서치 알고리즘이 해를 구하기 위해서 필요로 하는 calculation step 수의 차이를 만든다.
CNF formula의 기하학적 동등성을 확보하기 위해서 직각 삼각형 형태로 된 이항 트리 두 개를 위 아래로 포개서 직 사각형 형태의 트리를 만든다. 가로와 세로의 크기가 1 차이가 나는 matrix 가 생기겠지만 개념을 확장해서 가로 세로가 임의의 값을 가지는 m x n matrix 형태로 확장한다. 그런 후에 [도 1]의 (g)처럼 트리의 최 상위 노드들과 최 하위 노드들을 연결하고 양 옆의 노드들을 연결하면 모든 노드들은 상하좌우가 구분되지 않게 되어서 기하학적으로 차이가 없게 된다. 위의 연결 과정을 통해서 [도 1]의 (h)와 같이 원환체(torus) 모양의 트리가 형성되므로 원환형 이항 트리(toroidal binomial tree)로 정의한다. [도 1]의 (h)는 column 수와 레벨 수가 모두 10인 원환형 이항 트리를 표시한 것이며 노드를 작은 구로 표현했다.
이하, 본 발명의 실시를 위한 주요 기술 요소 중 하나인 듀얼 원환형 이항 트리에 대해 설명하기로 한다.
앞서 설명한 원환형 이항 트리의 형태적 동등성과 기하학적 동등성으로 인해서 dominant variable로 사용되는 두 변수를 수식적으로나 기하학적으로 구분하기 어려워졌다. 하지만 한 변수와 그의 보수는 서로 다른 level에 위치함으로써 한 변수가 switching variable로 사용되면 그 변수에서 그 변수의 보수로의 패스가 형성되고 dominant variable로 사용되면 그 변수의 보수에서 그 변수로의 패스가 형성된다. 이것을 directional inequality를 가진다고 표현하자. 원환형 이항 트리가 가진 directional inequality의 특성은 알고리즘이 변수들과 그의 보수들의 역할을 구분하고 트리 구조를 파악할 수 있는 여지를 남긴다.
한 변수와 그 변수의 보수가 방향성을 가지지 않고 어느 것이 상위 레벨에 포함되는지를 구분할 수 없는 directional equality를 가지게 하기 위해서 변수의 수를 고려한 두 개의 원환형 이항 트리를 만든다. 그런 후에 랜덤하게 노드를 선택해서 한 변수가 한쪽 트리에서 dominant variable의 역할을 하도록 배치하고 그 변수의 보수는 다른 쪽 트리에서 dominant variable의 역할을 하도록 배치한다. 이러한 배치에 의해서 하나의 변수와 그의 보수는 전체 CNF formula에서 동일하게 dominant variable과 switching variable의 역할을 하게 되므로 directional equality가 성립된다. 위와 같은 배치에 의해서 생성된 트리를 듀얼 원환형 이항 트리(dual toroidal binomial tree)라고 정의한다.
원환형 이항 트리는 하나의 절을 구성하는 literal이 2개이기 때문에 원환형 이항 트리를 구성하는 모든 절들이 satisfiable하려면 하나의 dominant literal이 FALSE 값을 가지면 같은 절에 위치한 switching literal은 TRUE값을 가져야 하며 이것은 switching literal의 보수(complement)인 하위 레벨에 위치한 dominant literal이 FALSE 값을 가져야 하는 조건을 생성한다.
위의 조건은 순환루프를 타고 전파되어 순환루프를 형성하는 모든 dominant literal들이 FALSE 값을 가져야 하는 조건이 생성된다.
하나의 switching literal이 FALSE 값을 가지면 같은 방식으로 모든 dominant literal들이 TRUE 값을 가져야 하는 조건이 생성된다. 따라서 원환형 이항 트리 또는 듀얼 원환형 이항 트리를 구성하는 2-CNF formula는 모든 dominant literal들이 서로 같은 값을 가지는 dual solution을 가진다. 또한 해집합을 구성하는 literal들 중에서 하나의 literal의 값이 바뀌면 순환루프를 통해서 전체 literal들의 값이 모두 바뀌는 조건이 생성되므로 전체가 바뀐 해는 dual solution의 또 다른 해가 됨으로써 일부만 바뀐 해를 가지지 않는다. 따라서 dual solution 이외의 해를 가지지 않는다.
서두에서 언급한 것처럼 문제 해결을 위한 알고리즘을 만들기 어렵게 하는 개념적인 indistinguishable 공간을 만들고 그 공간에 변수들의 값을 숨김으로써 Hard SAT을 만들기를 원했다. 패스워드를 해로 가지는 (듀얼) 원환형 이항 트리는 아래의 방법으로 생성된다.
(Method 1). Password assignment in a (dual) toroidal binomial tree
1. n bit의 패스워드를 생성한 후 각 비트마다 변수를 할당한다. (예: 1010, x1=1, x2=0, x3=1, x4=0)
2. 패스워드 길이를 고려해서 [도 1]의 (g)와 같은 두 개의 원환형 이항 트리 프레임을 만든다.
3. TRUE 값을 가지는 n개의 literal 집합 또는 FALSE 값을 가지는 n개의 literal 집합을 생성한 후 랜덤하게 정렬한다. (예: TRUE 값을 가지는 n개의 literal 집합인 경우: -x2, x1, x3, -x4)
4. 하나의 트리를 선택한 후에 순서대로 하나씩 꺼내서 맨 좌측열부터 dominant literal 자리에 배치한다. (열 들을 맨 위부터 아래까지 모두 채우고 다음 열을 채운다.)
5. Switching literal들의 자리는 dominant literal들의 complement로 배치한다.
6. 듀얼 원환형 이항 트리를 생성할 경우에는 3번에서 설정된 변수들의 보수를 사용해서 n 개의 literal 집합을 생성한 후 랜덤하게 정렬한다. (예: -x1, x4, -x3, x2)
7. 듀얼 원환형 이항 트리를 생성할 경우에는 듀얼 원환형 이항 트리를 구성하는 또 다른 트리에서 6번에서 생성한 literal 집합을 이용해서 위의 4-5를 실행한다.
상기 (Method 1)에서 사용된 n개의 dominant literal들의 집합을 basis solution이라고 정의한다. 해의 duality 특성에 의해서 basis solution 에 포함되는 모든 literal들의 보수의 집합도 solution이 된다. 위의 해를 complement solution으로 정의한다. basis solution과 complement solution이외의 해를 가지지 않는 경우를 unique dual solution을 가진다고 정의한다. 또한 TRUE 값을 가지는 n개의 literal 집합으로 dominant literal들을 배치한 트리를 TRUE tree로 FALSE 값을 가지는 n개의 literal 집합으로 dominant literal들을 배치한 트리를 FALSE tree로 정의한다.
위에서 우리는 TRUE tree와 FALSE tree를 사용해서 듀얼 원환형 이항 트리를 생성했다. 여기서 두 개의 TRUE tree 또는 두 개의 FALSE tree를 사용해서 더블 원환형 이항 트리(double toroidal binomial tree)를 생성하는 경우에 해를 구하는 어려움에 대해서 생각해보자. 듀얼 원환형 이항 트리는 트리 구조를 파악하려는 시도로 만들어지는 새로운 SAT Solver에서는 트리 구조를 숨기는 데에 있어서 역할을 할 수 있으나 현재까지 만들어진 모든 SAT solver는 이러한 기능을 가지고 있지 않기 때문에 해를 구하는 어려움은 듀얼 원환형 이항 트리나 더블 원환형 이항 트리나 비슷할 것으로 예상된다. 듀얼 원환형 이항 트리를 사용하는 경우와 해를 구하는 어려움이 비슷하다는 것을 실험으로 확인했으며 실험결과는 후술한다.
이하, 본 발명의 실시를 위한 주요 기술 요소 중 하나인 랜덤 캘슐화에 의한 Hard SAT 생성 방법에 대하여 설명하기로 한다.
앞서 설명한, (듀얼) 원환형 이항 트리를 구성하는 절들은 2개의 literal들로 구성되며 해의 duality 특성에 의해서 하나의 literal은 TRUE와 FALSE 값을 모두 가질 수 있다. 따라서 하나의 literal을 선택하고 FALSE로 가정하더라도 그 가정은 항상 참이 된다. 따라서 back-tracking이 일어나지 않기 때문에 SAT solver에 의해서 쉽게 해가 구해진다. SAT solver로 문제를 풀 때 back-tracking이 반드시 일어나는 3-CNF formula로 바꾸기 위해서 basis solution에 포함된 모든 literal들과 그의 보수들을 랜덤하게 정렬한 후에 차례로 (듀얼) 원환형 이항 트리를 이루는 절들에 추가해보자. 이때 두 가지 조건을 만족시키면서 추가한다.
첫째, Exact 3-CNF formula로 만든다. (추가하려는 변수가 한 절을 구성하는 두 변수와 겹치면 랜덤하게 재정렬한다.)
둘째, 하나의 노드를 구성하는 두 개의 절에 추가될 두 literal 중 하나는 basis solution에 포함되는 것을 사용하고 또 다른 하나는 포함되지 않는 것을 사용한다.
이러한 행위를 random encapsulation으로 정의하며 추가되는 문자(변수)를 random literal(variable)로 정의한다. random encapsulation을 실행함으로써 2-CNF formula로 구성되었던 (듀얼) 원환형 이항 트리는 3-CNF formula로 바뀌었으며 하나의 절은 dominant literal, switching literal과 random literal로 구성된다.
그러나 satisfiability는 그대로 유지된다. 이미 모든 절들이 TRUE 값을 가지는 상태에서 OR 연산자로 각각의 절들에 random literal을 추가했기 때문이다. 각각의 절마다 satisfiability에 기여할 수 있는 literal이 하나 더 추가됨으로써 기존의 해보다 더 많은 해를 가지게 된다. 이제 (듀얼) 원환형 이항 트리를 나타내는 그래프의 switching literal들 위에 [도 7]과 같이 추가된 random literal들을 올려놓자. 이때 random literal들을 포함해서 설명을 위해서 필요로 하는 FALSE 값을 가지는 literal 들을 회색으로 표시하자.
[도 7]의 (a)는 TRUE tree를 표현한 것이다. 따라서 basis solution에서 d1은 TRUE 값을 가지고 s1과 s2는 모두 FALSE 값을 가진다. d1의 값이 FALSE로 바뀌었다고 가정하자. random encapsulation 방법의 두 번째 조건에 의해서 r1과 r2 중에서 하나는 FALSE 값을 가져야 한다. r2가 FALSE 값을 가지므로 (d1∨s2∨r2) 절이 satisfiable하기 위해서는 s2가 TRUE로 바뀌어야만 하며 이것은 s2의 보수인 d2가 FALSE로 바뀌어야 하는 조건을 유발한다. 위의 조건은 이전에 바뀐 변수가 나올 때까지 즉, 순환 루프가 형성될 때까지 계속적으로 전파된다. [도 7]의 (a)는 d4 ~ d7이 순환루프를 형성하고 d1이 FALSE로 바뀌는 것에 의해서 d2~ d7이 연속적으로 FALSE로 바뀌어야 하는 경우를 나타낸다.
[도 7]의 (b)는 FALSE tree를 표현한 것이다. 따라서 basis solution에서 d1은 FALSE 값을 가진다. d1의 값이 TRUE로 바뀌었다고 가정하면 d1의 보수인 s1의 값이 FALSE로 바뀐다. 이때 random encapsulation 방법의 두 번째 조건에 의해서 확률적으로 r1과 r2중에서 하나는 FALSE 값을 가져야 한다. r1이 FALSE이므로 d2가 TRUE로 바뀌어야만 하며 이것은 d2의 보수인 switching literal들이 FALSE로 바뀌어야 하는 조건을 유발한다. 위의 조건은 하나의 순환 루프를 형성하는 dominant literal들의 값이 모두 바뀔 동안 계속적으로 전파된다. [도 7]의 (b)는 d1이 TRUE로 바뀌는 것에 의해서 d2~d4가 연속적으로 TRUE로 바뀌어야 하는 경우를 나타낸다. 이때 TRUE와 FALSE 값을 가지는 random literal들을 두 노드를 구성하는 두 개의 절에 임의의 위치에 추가하는 것이 아니라 [도 3]의 (b)에서처럼 일정한 위치(오른쪽)에 배치하면 r1과 r2는 확률적으로 하나가 FALSE 값을 가지는 것이 아니라 반드시 하나는 FALSE 값을 가지고 또 다른 하나는 TRUE 값을 가진다. 이처럼 추가할 FALSE 값을 가지는 random literal들을 왼쪽 또는 오른쪽의 일정한 위치에 배치하는 방식을 left shift random encapsulation 또는 right shift random encapsulation으로 정의하며 랜덤하게 배치하는 경우를 free random encapsulation으로 정의한다.
[도 7]의 (c)는 원환형 이항 트리가 만드는 순환 루프의 최소 길이는 트리의 레벨 수와 같으며 모든 노드들이 하나의 순환 루프에 포함될 수 있음을 보여준다.[도 7]의 (a)와 (b)는 한 변수의 값이 바뀔 때 다른 변수들의 값에 그 영향이 전파되는 것이 원환형 이항 트리가 가진 순환 루프가 형성될 때까지 계속됨을 보여준다. 그러나 [도 7]의 (d)와 같이 랜덤변수(r3)가 이미 값이 바뀐 dominant literal이나 switching literal의 보수와 같아지는 경우에는 랜덤 변수가 순환 루프를 만듦으로써 짧은 순환 루프가 형성되고 더 이상 영향력이 전파되지 않는다.
여기서 중요한 시사점은 한 변수의 값이 바뀌었을 때 영향력이 전파되는 현상이 진행 방향만 바꾸어서 unit propagation에 그대로 적용된다는 점이다. [도 7]의 (e)와 (f)는 올바른 decision variable(di)들을 연속적으로 선택해서 순환루프를 찾는 과정을 보여준다. 순환루프가 생성된다는 것은 이전에 할당된 literal들에 의해서 하나의 절이 지워진다는 것을 의미한다. Conflict를 일으키지 않고 절 하나를 지우는 과정이 순환루프를 찾는 과정이므로 해를 찾는 과정은 모든 순환루프를 찾는 과정이 된다. 이때 최종 순환 루프를 형성하기 위해서 사용된 implied literal이 dominant literal이나 switching literal이 되면 원환형 이항 트리가 가진 순환루프를 형성하며, [도 7]의 (g)와 같이 random literal이 될 경우에는 랜덤 변수가 순환루프를 만듦으로써 짧은 순환루프가 형성되는 것을 보여준다. [도 7]의 (e), (f), (g)에서 생성된 unit propagation path는 방향만 바뀌었을 뿐 [도 7]의 (a), (b), (d)에서 생성된 하나의 변수 값이 바뀌었을 때 영향력이 전파되는 path와 동일한 것을 확인 할 수 있다.
이상에서 살펴보았듯이 random variable이 순환루프에 참여함으로써 짧은 순환 루프가 생성된다. 짧은 순환루프는 DPLL 알고리즘이 작은 calculation step 수를 가지고도 하나의 절을 지울 수 있게 하기 때문에 쉽게 해를 구할 수 있도록 해준다. CNF formula가 암호화에 사용되기 위해서는 어렵게 해를 구하는 것도 중요하지만 우연치 않게 쉽게 해를 구하는 경우를 피해야만 한다. 따라서 생성되는 모든 SAT이 어떤 경우에도 정해진 한계치 이상의 hardness를 확보할 수 있는 방법을 찾기를 원한다.
이하, 본 발명의 실시를 위한 주요 기술 요소 중 하나인 모듈러 랜덤 캡슐화(Modular random encapsulation)에 대해 설명하기로 한다.
앞에서 원환형 이항 트리가 만드는 순환 루프의 최소 길이는 트리의 레벨 수와 같음을 살펴보았다. Random variable들이 순환 루프를 구성하는 변수에 포함되는 것을 방지할 수 있다면 원환형 이항 트리가 가진 본래의 순환 루프를 만들 만큼의 decision level이 형성되어야지만 이전에 할당한 변수들에 의해서 하나의 절이 지워짐으로써 일정 이상의 hardness가 확보된다. dominant variable들과 random variable들이 서로 겹치지 않게 배치함으로써 random variable들이 만드는 짧은 순환루프를 없애는 방법으로써 modular random encapsulation 기법을 소개한다.
먼저, 동일 column에 속하는 dominant literal들을 그룹으로 분리한다. 그런 후에 가장 멀리 떨어진 그룹에 포함된 dominant literal들과 그들의 보수들을 랜덤하게 각각 정렬한 후에 하나씩 꺼내서 random encapsulation 방법으로 하나의 노드를 구성하는 두개의 절에 각각 추가 한다. 원환형 이항 트리는 가로 방향과 세로 방향 모두 순환 루프를 가지므로 두 그룹 간에 가장 멀리 떨어진 거리, distance는 수식적으로 column 수/2, column 수/2-1, column 수/2+1 이 된다. 본 특허를 위한 실험에서는 column 수가 홀수인 경우든 짝수인 경우든 distance를 column 수/2-1 로 설정했다. 짝수인 경우에 column 수/2를 distance로 설정하지 않은 이유는 위와 같은 설정으로 두 그룹 간에 동일한 변수들로 이루어진 절들이 생성될 가능성이 있기 때문이다. 또한 distance가 1인 경우에는 하나의 절을 구성하는 switching variable이 옆 노드의 dominant variable과 겹치므로 2 이상 되도록 설정한다. 따라서 column 수는 5개 이상으로 설정한다.
[도 8]의 (a)는 column수 10, level 수 5 인 원환형 이항 트리를 modular random encapsulation하는 방법을 보여준다. 랜덤 변수가 dominant literal이나 switching literal과 같아지려면 column 수/2 -1만큼의 propagation이 필요하므로 트리 level 수가 k일때 column 수가 2k+1이 되면 트리 level 수만큼의 propagation이 보장된다. Left shift modular encapsulation일 경우에 세로 방향의 전파는 올바른 해를 구하기 위한 최소의 propagation 수를 결정한다. 또한 잘못된 decision assignment를 확인하기 위해서는 decision variable이 포함된 절까지 propagation이 일어나야 하기 때문에 가로방향의 전파는 conflict가 발생한 것을 확인하기 위한 최소의 propagation 수를 결정한다. 따라서 left shift modular인 경우에는 column 수에 상관없이 트리 레벨 수만큼의 세로 방향의 전파가 일어나지만 가로 방향의 전파를 위한 최소의 propagation 수는 conflict 발생 시의 소요 시간을 결정하므로 일정 이상의 hardness를 확보하기 위해서는 가로 방향으로도 임계치 이상 전파되도록 설정할 필요가 있다.
[도 8]의 (b)는 트리를 나타낼 때 표현하는 이등변 삼각형 형태를 왼쪽으로 치우치게 변형한 것을 보여준다. 위의 경우에 left shift인 경우에는 path들이 아랫 방향으로 향하고 right shift인 경우에는 우 하 방향으로 향하지만, (c)처럼 오른쪽으로 치우치게 변형해서 표현하면 left shift인 경우에는 좌 하 방향으로 향하고 right shift인 경우에는 아랫방향으로 향하게 된다. 따라서 트리를 표현하는 것에 차이가 있을 뿐 left shift인 경우는 왼쪽 방향의 path가 선택되고 right shift인 경우는 오른쪽 방향의 path가 선택된다. 또한 basis solution에 포함되는 literal들을 기준으로 left shift이었다면 complement solution에 포함되는 literal들 입장에서는 right shift가 되어서 서로 바뀌는 것에 주의하자. 본 특허를 위한 실험에서는 basis solution을 기준으로 dominant literal들을 배치하기 때문에 left shift modular encapsulation을 사용했다.
모듈러 랜덤 캡슐화(modular random encapsulation)로 만들어진 변수들의 연관 관계 그래프는 2-SAT으로 구성된 원환형 이항 트리 위에 랜덤 변수들에 의해서 노드와 노드를 연결하는 가교가 더 생긴 것으로 볼 수 있다. Unit propagation 실행 시에 unit clause를 생성하기 위해서 랜덤 literal 값을 FALSE로 가정하는 행위, 즉 decision variable로 설정하는 행위는 올바른 가정일 확률이 1/2이므로 모든 노드가 back-tracking의 반환점이 될 수 있다. 따라서 랜덤 변수의 추가가 DPLL 알고리즘의 conflict 유발 횟수를 급격히 증가시킬 것임이 예측된다. 또한 각 노드마다 랜덤 literal들을 올바로 선택해서 FALSE로 설정하는 행위는 각 절마다 추가 되었던 random literal들을 제거하고 2-CNF formula로 구성된 트리에서 unit propagation을 진행하는 것이 된다. 2-CNF formula는 한번의 decision assignment와 연속적인 implied assignment에 의해서 추가적인 decision assignment없이 unit propagation이 진행되지만 3-CNF formula는 매 노드마다 random literal이 FALSE 값을 가지도록 random variable 값을 설정함으로써 decision level을 증가시킨다. 결론적으로 추가된 랜덤 변수는 하나의 노드에서 분기되는 두 개의 패스 중에서 unit propagation이 진행되는 패스를 선택하는 역할을 하며 선택할 때마다 decision level을 하나씩 증가시킨다. Modular random encapsulation 을 사용한 CNF formula 생성 방법을 정리하면 다음과 같다.
(Method 2). CNF formula generation by modular random encapsulation
1. (Method 1)에서 생성한 두 개의 트리 중에서 하나의 트리를 구성하는 dominant literal들을 column 단위로 그룹을 만든 후 랜덤하게 정렬한다.
2. 1번에서 만들어진 그룹에 속한 모든 literal들의 보수들을 사용하여 대응되는 그룹들을 만든 후에 랜덤하게 정렬한다.
*3. Distance 를 설정한다. (예: distance = column 수/2 -1)
4. 1번에서 만든 그룹과 2번에서 만든 대응되는 그룹에서 차례로 literal들을 추출한 후에 distance 만큼 떨어진 그룹에 포함된 각각의 노드를 구성하는 두 개의 절 중에서 FALSE 값을 가지는 literal을 오른쪽에 또는 왼쪽에 또는 임의의 위치에 추가한 후에 TRUE 값을 가지는 literal은 나머지 절에 추가한다.
5. 듀얼 원환형 이항 트리인 경우에는 또 다른 트리를 이용해서 1-4과정을 실행한다.
6. 모든 노드에서 절들을 추출한 후에 각각의 변수들의 역할을 확인 할 수 없도록 하기 위해서 하나의 절을 구성하는 3개의 literal들을 랜덤하게 재 정렬한다
이하 원환형 이항 트리를 모듈러 랜덤 캡슐화해서 생성된 3-SAT의 특성을 살펴보기로 한다.
우리는 indistinguishable 공간으로써 expressional equality, geometric equality를 만족시키는 원환형 이항 트리와 directional equality의 특성 까지도 만족시키는 듀얼 원환형 이항 트리를 생성했다. 트리 프레임을 만든 후에 각각의 노드에 literal들을 랜덤하게 배치했다. 따라서 알고리즘의 관점에서 literal들을 구분할 요소를 가지지 못함으로써 decision assignment를 위해서 literal들을 선택할 때 랜덤하게 선택하는 것이 유일한 방법이 된다. 이때 반복되는 실행으로부터 의미 있는 정보를 누적시킬 수 있다면 해를 구하는데 필요한 calculation step 수를 줄일 수 있으므로 정보가 누적되는지를 확인할 필요가 있다.
Lemma 1. Decision literal들이 랜덤하게 선정된 것이라면 반복 실행할 때마다 back-tracking 실행 횟수를 줄일 수 있는 정보가 누적되지 않는다.
Proof) Conflict가 발생되었을 때, 최종적으로 conflict 를 발생시킨 implied literal이 포함되는 절을 시작으로 관련된 절들에 resolution rule을 연속적으로 적용하면 관련된 implied variable들은 모두 제거되고 decision literal들만 남게 된다. 따라서 conflict-driven clause learning(CDCL) 알고리즘에서 새롭게 생성되는 clause는 남겨진 decision literal들의 disjunction으로 표현된다. Decision literal들이 랜덤하게 선택된 것이기 때문에 새롭게 생성된 절은 이들 중 적어도 하나는 바뀌어야 한다는 정보만을 가지게 된다. 또한 conflict 발생 시마다 특정 변수가 여러 번 decision literal로 선택되었다고 하더라도 랜덤 선택에 의한 것이므로 그 literal이 해집합에 포함될 가능성 또는 포함되지 않을 가능성을 높여준다고 가정할 수 없다. 따라서 decision assignment를 위해서 선정되는 변수들이 랜덤하게 선정된 것이라면 conflict 발생 시마다 생성된 정보들로부터 back-tracking 실행 횟수를 줄일 수 있는 정보가 누적되지 않는다.■
변수들의 indistinguishability 특성은 이전 실행을 통해서 얻을 수 있는 정보를 최소화함으로써 back-tracking 실행 횟수를 최대로 늘려주게 됨을 알 수 있다. 또한 위의 결과는 CDCL 알고리즘에 의해서 생성된 새로운 절이 indistinguishability 특성을 가지는 문제를 해결하는 데 역할을 하지 못함을 의미하며 해를 구하기 위해서는 worst-case 모든 경우의 수만큼 back-tracking을 실행해야만 한다는 것을 의미한다.
이하 싱글 원환형 이항 트리를 모듈러 랜덤 캡슐화해서 생성된 3-SAT의 특성을 살펴보기로 한다.
여기서, 싱글 원환형 이항 트리를 모듈러 랜덤 캡슐링해서 생성된 3-CNF가 얼마나 많은 해를 가지는가에 대해서 살펴보자. Left shift modular random encapsulation이 실행되면 동일한 column 을 구성하는 노드들이 switching literal들이 만드는 패스에 의해서 순환루프를 형성한다. column을 구성하는 dominant literal들의 그룹을 Gj(1<=j<=m, m: column 수)로 표기하고 dominant literal들의 값을 그룹이 대표하는 값으로 표시하자. -G1은 G1에 속한 모든 dominant literal들이 FALSE 값을, G1은 G1에 속한 모든 dominant literal들이 TRUE 값을 가짐을 의미한다. 순환루프는 switching variable에 의해서 형성된 것이며 random variable들의 값이 바뀌지 않는다면 column을 구성하는 dominant variable(또는 switching variable)들은 TRUE 값과 FALSE 값을 모두 가질 수 있으므로 해집합은 basis solution인 (G1,G2,…,Gm)과 complement solution인 (-G1,-G2,…,-Gm)이외에 (G1,-G2,…,Gm),(-G1,-G2,…,Gm)등과 같은 여러 해들을 더 가질 수 있다.
순환루프는 [도 9]의 그림 (1)의 (a)와 같이 switching variable 들에 의해서 column 방향으로 형성될 뿐만 아니라 (b)와 같이 random variable 들에 의해서 row 방향으로도 형성된다. 이때 (c)와 같이 GCD(column 수, distance)=1이라면 row 방향으로의 순환루프의 길이는 column 수가 된다. 또한 level 의 크기가 k일 때 [도 9]의 (b)에서 r1은 G2그룹에 포함된 dominant literal들의 보수들 중 하나이기 때문에 r1이 d1의 보수가 될 확률은 1/k이 된다.
하나의 dominant variable 값이 바뀌면 동일 변수로 만들어진 random variable과 switching variable들의 값도 같이 바뀌기 때문에 하나의 노드를 구성하는 dominant variable은 랜덤 변수가 어떤 값을 가지는 가에 따라서 TRUE 값과 FALSE 값을 모두 가질 수 있는 경우가 발생한다. [도 9]의 (a)에서 순환루프를 형성하는 G5 그룹의 값이 FALSE로 바뀌고 r1과 r2의 값이 바뀐다면, 즉, d4가 TRUE에서 FALSE로 바뀌고, r1과 r2가 각각 FALSE, TRUE에서 TRUE, FALSE로 바뀐다면, d5가 포함된 노드를 구성하는 두 절은 d5의 값에 관계없이 모두 satisfiable해지므로 d5는 TRUE와 FALSE 값을 모두 가질 수 있다. 이러한 경우에 d5를 conditional don't-care(CDC) literal로 정의한다. 하나의 CDC literal은 또 다른 CDC literal을 만든다. D5가 FALSE로 바뀌고 r3,r4의 값이 [도 9]의 (a)와 같이 바뀐다면 d6는 CDC literal이 된다. 우리는 연속적으로 관련된 랜덤 변수가 특정한 값을 가진다는 조건을 추가해가며 CDC literal들의 수를 늘릴 수 있다. 이러한 과정 중에 랜덤 변수들이 특정한 값을 가진다는 조건을 모두 만족시키는 경우가 발생한다면 모든 CDC literal들은 TRUE 값과 FALSE 값을 모두 가질 수 있는 상태가 되며 위의 경우에 CDC literal들이 이루는 집합을 don't-care group(DCG)으로 정의한다.
DCG 개념은 row 방향으로 순환루프가 형성되었을 때에도 적용된다. [도 9]의 (b)는 d1에서 시작해서 d2, d3로 순환루프가 형성되는 것을 보여준다. d3를 포함하는 절에서 그림과 같이 순환 루프를 만드는 패스가 만들어지기 위해서는 r1과 r2의 값이 바뀌지 않아야만 한다. r1과 r2의 값은 위의 값들을 추출한 column의 decision variable들의 값에 따라서 달라질 수 있다. 따라서 (Method 2)에서 distance를 2로 설정하면 G2에 포함된 dominant variable들 중에 r1, r2의 값을 바꾸지 않는 변수들만 선택적으로 CDC literal에 속할 수 있다. d4의 값이 r1,r2의 값을 바꾸지 않는다면 그리고 d2의 값이 r3,r4의 값을 바꾸지 않는다면 d4는 CDC variable이 된다. d4의 값이 FALSE로 바뀌면 d5는 d5가 속한 노드의 랜덤 변수들이 값이 바뀌지 않는다면 CDC literal이 된다. d6와 d7도 순환루프를 형성하는 랜덤 변수들의 값을 바꾸지 않는다면 CDC literal이 된다.
순환루프가 형성되면 DCG의 크기를 늘리거나 줄여서 임의의 크기의 DCG를 만들 수 있으며 하나의 순환루프가 형성되면 DCG의 크기가 얼마나 증가할 수 있는지는 random literal들이 어떻게 분포되어 있느냐에 따라서 결정된다. 우리는 Left shift modular 방식에서 random literal들이 FALSE 값을 가지는 경우는 좌측에 TRUE 값을 가지는 경우는 우측에 배치했다. 그러나 dominant literal의 값이 바뀌면 같은 변수로 만들어진 random literal의 값도 바뀌게 된다. Random literal들 각각은 랜덤하게 배치했으므로 dominant literal의 값이 바뀜으로써 동일한 변수로 만들어진 random literal의 값이 바뀌는 위치도 랜덤하게 된다. 따라서 DCG의 크기와 개수는 각각의 instance들마다 달라진다.
하나의 트리에서 수많은 DCG 들이 형성될 수 있으므로 dual solution 이외의 많은 해를 가질 수 있다. 얼마나 많은 해를 가지는가는 SAT Solver가 전수조사로 패스워드를 찾아내는 방법을 쓸 때 얼마나 많은 시간이 소요되는가를 결정한다. Exponentially-many solution을 가지고 있다는 증명은 쉽지 않으나 sub-exponentially many solution을 가지고 있다는 것은 아래의 Lemma 2로 쉽게 증명된다.
Lemma 2. 싱글 원환형 이항 트리를 Left shift 모듈러 랜덤 캡슐링해서 생성된 3-CNF는 적어도 sub-exponentially many solution을 가진다.
Proof) Basis solution에서 변수들의 값이 바뀌어서 다른 해를 가지는 경우를 생각해보자. 랜덤 변수를 추출한 dominant literal 그룹 값은 바뀌지 않고 랜덤 변수가 할당된 dominant literal 그룹의 변수 값이 모두 바뀌는 경우를 생각해보자. Switching variable을 따라서 column 방향으로 순환루프가 형성되므로 순환루프를 형성하는 모든 literal들의 값이 동시에 바뀌더라도 전체 CNF의 satisfiability는 유지된다. 그러므로 column 수를 m라고 하면 적어도 2m/2개 만큼의 서로 다른 해를 만들 수 있다. Level 수와 column 수가 동일하다면 m2=n(n: 입력변수의 개수)의 관계를 가진다. 따라서 m은 n의 fractional power로 표현된다. 그러므로 위의 값은 sub-exponential number가 되므로 적어도 sub-exponentially many solution을 가진다.■
위의 결과는 SAT Solver가 다항시간 안에 해를 전수 조사해서 패스워드를 찾는 것을 불가능하게 만든다.
다항시간 안에 전수조사가 불가능하므로 SAT Solver가 3-CNF의 해를 구하는 것만으로는 암호해독이 불가능하고 basis solution을 찾아야만 한다. 이때 basis solution을 찾는 행위는 트리 구조를 조사하는 행위가 된다.
먼저 basis solution을 찾는 경우와 basis solution이 아닌 다른 해를 찾는 경우에 해를 찾는 시간을 비교해보자. 우리는 left shift modular 방식에서 하나의 노드를 구성하는 두 개의 절에 랜덤 변수를 할당할 때 basis solution에서 FALSE 값을 가지는 랜덤 변수를 왼쪽으로 삽입했다. 따라서 basis solution인 경우에는 적어도 트리 레벨 수 이상 크기의 순환루프가 형성되지만 다른 해일 경우에는 순환루프의 길이가 더 길어질 수도 있고 더 짧아질 수도 있다. 다른 해인 경우에는 shift modular 방식이 아닌 free modular 방식을 사용한 경우에 해당한다. 따라서 basis solution과는 다른 형태의 순환루프를 가진다. 이것은 basis solution과 basis solution이 아닌 해는 해를 찾는 시간이 다르다는 것을 의미한다.
이제, basis solution을 찾는 방법을 생각해보자. Modular random encapsulation에 의해서 생성된 3-CNF formula는 추가된 랜덤 변수들의 값이 바뀌지 않는다면 basis solution에서 하나의 변수가 값이 바뀌면 적어도 트리 레벨 수 이상의 변수들의 값이 동시에 바뀌어야만 satisfiability가 유지된다는 특징을 가진다. 순환루프를 만드는 패스들은 랜덤 변수가 FALSE 값을 가지는 절에서 생성된다. 우리는 left shift modular 방식에서 하나의 노드를 구성하는 두 개의 절에 랜덤 변수를 할당할 때 basis solution을 기준으로 랜덤 변수가 FALSE 값을 가지는 위치를 왼쪽으로 설정했다. 따라서 basis solution이 아닌 다른 해일 경우에는 basis solution과는 다른 형태의 순환루프를 가진다. (Method 1)에서 우리는 원환형 이항 트리라는 structure에 dominant literal들이 들어갈 공간을 마련해 놓고 그 공간에 랜덤하게 literal들을 배치했다. 그런 후에 (Method 2)에서 modular random encapsulation 기법으로 랜덤 변수들을 추가했다. 이때 랜덤 변수들과 dominant variable들은 서로 다른 그룹에서 추출되었으므로 서로 구분될 수 있을 가능성을 남긴다. 하나의 절은 dominant variable, switching variable, random variable로 구성된다. 변수들을 구분하려는 시도는 변수들의 역할을 찾는 것이며 이것은 트리 구조를 파악하려는 시도가 된다. 동일한 역할을 하는 literal들은 하나의 그룹에서 랜덤하게 뽑아서 배치했으므로 변수들을 서로 구분하기 위해서는 변수들이 어느 그룹에 속하는지를 확인해야 한다. 우리는 column 단위로 변수들을 배치해서 그룹을 만들었으며 가장 먼 그룹의 dominant variable들과 그들의 보수를 추출해서 random variable로 사용했다. 따라서 random literal들의 그룹을 찾기 위해서는 알고리즘은 각각의 column에 속한 변수들로 이루어진 부분집합을 찾을 수 있어야하며 위의 과정은 column 그룹이 만드는 순환루프를 찾는 과정이 된다. Left shift modular random encapsulation이 실행되었을 때 column 그룹이 만드는 순환루프를 찾을 확률은 아래와 같이 구해진다.
Lemma 3. 트리 레벨이 k일 때 DPLL 알고리즘으로 column 그룹을 찾을 확률은 1/(3x6
k-2
)이 된다.
Proof) column 그룹을 찾기 위해서 임의의 literal을 decision literal로 선택하고 선택된 literal에 FALSE 값을 할당한다. 해가 duality의 특성을 가지므로 위의 설정은 항상 올바른 설정이 된다. 따라서 처음 하나의 decision literal을 올바로 선택할 확률은 1이 된다. 하나의 literal을 FALSE로 가정함으로써 duality를 가지는 한 쌍의 해집합에서 찾고자 하는 해는 선택된 literal이 FALSE 값을 가지는 해가 되며 이것은 basis solution이 될 수도 있고 complement solution이 될 수도 있다. CNF formula에서 FALSE 값을 할당한 literal을 지운다. 그러면 2개의 literal만 가지는 절이 [도 10]과 같이 TRUE tree와 FALSE tree에서 각각 3개씩 생성된다. 6개의 절중에서 지워진 literal은 각각 2번씩 dominant literal, switching literal, random literal의 역할을 한다.
[도 10]에서 사각형으로 표시된 것은 처음 선택되어 지워진 decision literal을 의미한다. di로 표시한 것은 i 번째 올바르게 선택된 decision literal을 ii로 표시한 것은 i번째 implied literal을 의미한다. [도 10]의 (a)는 FALSE tree에서 dominant literal 역할을 한 decision literal 2개가 지워진 것을 표시한 것이다. Dominant literal을 그래프로 표시할 때는 동일한 두 개의 literal을 하나로 표시한 것임에 주의하자. (b)는 같은 tree에서 decision literal이 random literal 역할을 한 경우이며 (c)는 TRUE tree에서 switching literal 역할을 한 2개의 decision literal이 지워진 것을 표시한 것이며 (d)는 같은 tree에서 decision literal이 random literal 역할을 한 경우를 나타낸다. 위의 4가지 경우 모두 후속적인 decision literal들을 올바르게 선택하면 [도 10]에 나타낸 것처럼 column 그룹이 만드는 순환 패스가 찾아진다.
두 트리는 확률을 구하기 위해서 동일한 방법이 적용된다. 따라서 트리 종류와 상관없이 2개의 literal로 이루어진 3개의 절이 생성된다. 이때 우리는 많은 해들 중에서 패스워드를 찾는 과정이기 때문에 유일해로 가정할 수 있다. 따라서 decision literal의 값이 해집합인 패스워드에서 FALSE 값을 가지지 않는다면 conflict가 발생하거나 다른 해를 찾게 된다. 패스워드를 찾기 위해서 순환 패스를 따라가는 올바른 선택을 할 가능성은 [도 10]의 (a)와 같이 한 노드를 이루는 두 개의 literal로 구성된 두 개의 절중에 random literal이 FALSE 값을 가지는 절을 선택하고 2개의 literal 중에서 랜덤 literal 을 선택해서 FALSE 값을 할당하는 것이며 위의 확률은 1/3 x 1/2 가 된다. 또 하나의 방법은 [도 10]의 (b)와 같이 지워진 literal이 random literal로 사용된 절을 선택한 후에 dominant literal과 switching literal 중에서 FALSE 값을 가지는 것을 선택하는 방법이고 확률은 1/3 x 1/2 가 된다. 위의 두 선택은 서로 다른 두 개의 순환루프에서 한번씩 unit propagation을 진행시킨다. 따라서 두 개의 decision literal, d1과 d2를 연속적으로 올바로 선택할 확률은 1/3이 된다.
d1과 d2를 선택하면 찾고자 하는 그룹을 형성하는 하나의 노드가 선택된다. d2를 선택해서 FALSE 값을 할당하면 unit clause가 생성되고 implied literal에 TRUE 값을 할당한 후에 implied literal의 보수를 CNF formula에서 지우면 또 다시 2개의 literal로 이루어진 절들이 하나의 트리에서 최대 3개가 생성된다. 이전에 값이 할당된 decision literal과 implied literal들에 의해서 3개의 절들 중에서 지워지는 절들이 몇 개인가에 따라서 확률이 달라진다. 모듈러 랜덤 캡슐링을 통해서 랜덤변수들과 dominant variable들을 겹치지 않게 배치했으므로 트리의 레벨만큼 propagation되는 동안에는 지워지는 절들이 발생하지 않는다. 따라서 6개의 literal 중에서 자신의 column 그룹에 속하는 FALSE 값을 가지는 literal은 1개 (d3)이므로 올바른 decision assignment에 의해서 unit clause를 만들 확률은 1/6이 된다. 따라서 d1~d3를 찾을 확률은 1/(3x6) 이 되며 conflict가 발생하지 않고 k번 올바른 선택을 해서 dk까지 찾을 확률은 1/(3x6k-2)가 된다. k개의 올바른 decision literal들이 찾아지면 처음으로 하나의 절이 지워지며 unit clause를 형성하는 implied literal 또는 implied literal들의 보수의 그룹이 찾고자 하는 column 그룹이 된다.■
Theorem 1. 트리 구조를 파악하려는 새로운 알고리즘이 개발된다고 하더라도 하나의 column 을 형성하는 변수들의 그룹을 찾기 위해서는 적어도 worst-case sub-exponential calculation step 수를 필요로 한다.
Proof) Lemma 3에 의해서 트리 레벨이 k일 때 column 그룹을 찾을 확률은 1/(3x6k-2)의 값이 된다. 가로 방향으로 k 크기의 순환루프가 형성되기 위해서는 column 수는 k 보다는 크거나 같아야 하므로 column 수를 ck(c>=1), 트리 레벨 수를 k 로 놓으면 n=ck2가 된다. 따라서 k 는 n 의 fractional power 로 표현되므로 SAT solver의 back-tracking 실행 횟수는 worst-case sub-exponential calculation step 수를 필요로 한다.■
상기 예에서는 left shift modular의 경우에 해당 했으나 right shift modular의 경우에도 순환루프가 우하방향으로 형성되는데 앞에서 설명한 것처럼 이것은 트리를 표현한 방식 때문이며 left shift인 경우는 왼쪽에 right shift인 경우는 오른쪽 방향으로 순환루프가 형성된다. 따라서 right shift인 경우에도 Lemma 2, Lemma 3 및 Theorem 1이 동일하게 성립한다. Dominant literal과 switching literal이 어떤 값을 가지는가와 관계없이 FALSE 값을 가지는 random literal이 왼쪽, 오른쪽 중에서 어느 곳에 위치하는가에 따라서 순환루프가 다르게 형성된다. 하나의 column 그룹에 속하는 literal들을 랜덤하게 뽑아서 배치했으므로 FALSE 값을 가지는 random literal의 위치가 해를 찾기 위한 유일한 정보가 된다. 이때 만약 free modular random encapsulation을 실행한다면 FALSE 값을 가지는 literal의 위치도 랜덤하게 선정되므로 서로 다른 두 solution을 구분할 방법이 없어지게 된다. 따라서 SAT Solver가 찾은 해가 패스워드인지를 확인할 방법이 없으므로 해를 찾는 것 자체가 무의미해진다. 그러나 랜덤 변수의 위치에 따라서 순환루프의 길이가 달라지므로 free modular의 경우에 Lemma 2를 유도하는 것은 쉽지 않다. Left shift, right shift, free modular의 경우에 어떤 방식으로 캡슐링을 하더라도 평균적으로 해의 개수가 같을 것이며 평균적인 해를 찾는 어려움도 같을 것이라고 예측되지만 이것을 증명하기 위해서 더 연구할 필요가 있다. 후술할 듀얼 원환형 이항 트리의 경우에 shift modular 와 free modular의 두 경우에 있어서 해를 찾는 어려움이 같다는 실험결과는 위의 예측이 맞을 것이라는 것을 뒷받침해준다.
이하 듀얼 원환형 이항 트리에 모듈러 랜덤 캡슐화해서 생성된 3-SAT의 특성을 살펴보기로 한다.
듀얼 원환형 이항 트리는 두 트리가 변수들을 서로 공유한다. 양쪽 트리에서 동일한 literal들로 형성된 DCG가 만들어지고 그 그룹의 변수들의 집합을 G1으로 나머지 변수들의 집합을 G2로 표현하면 basis solution은 (G1,G2),complement solution은 (-G1,-G2)이 되며 위의 두 해 이외에 (-G1,G2)와 (G1,-G2)를 더 가질 수 있다. 그러나 Modular random encapsulation에 의해서 생성된 3-CNF formula는 basis solution에서 하나의 변수의 값이 바뀌면 적어도 트리 레벨 수 이상의 변수들의 값이 동시에 바뀌어야만 satisfiability가 유지된다는 특징은 듀얼 원환형 이항 트리를 이용해서 3-CNF를 만들 때 여러 해가 존재할 확률을 현격히 떨어뜨린다.
여기서 우리의 목적은 dual solution이외의 해를 가질 확률의 최대값을 찾는 것이다. Lemma 2에 의해서 하나의 트리에는 적어도 sub-exponentially many DCG들이 존재한다. 두 개의 트리 중에서 어느 것을 선택해도 논리 전개에서는 동일한 결과를 가져오므로 편의상 TRUE tree에서 수많은 DOG 중에서 하나를 선택했다고 가정하자. 이때 선택된 DCG를 형성하는 모든 변수들이 FALSE tree에서도 DCG를 형성하면 dual solution 이외의 해가 생성된다. TRUE tree에서 추출한 DCG에 포함된 모든 literal들이 FALSE tree에서 DCG를 만들기 위해서는 하나의 순환루프가 만들어지고 순환루프를 형성하는데 관여되지 않은 모든 literal들이 CDC literal들이 되어야만 한다. 따라서 전체 확률은 FALSE tree에서 순환루프가 형성될 확률과 뽑혀진 DCG를 구성하는 남은 literal들이 모두 CDC literal이 될 확률의 곱으로 표현된다. 그러므로 dual solution이외의 해를 가질 확률은 TRUE tree에서 뽑혀진 DCG를 형성하는 literal들의 일부가 FALSE tree에서 순환루프를 만들 확률의 최대값보다는 작다. 우리는 순환루프의 최소길이가 트리 레벨이 되도록 랜덤 변수들을 배치했다. 따라서 트리 레벨의 크기를 k라고 한다면 FALSE tree에서 생성될 수 있는 순환루프의 최소 길이는 k가 된다.
먼저 순환루프를 만들 수 있는 확률을 구해보자. TRUE 트리에서 특정 변수가 순환루프를 만드는 모든 DCG 들의 집합에서 하나를 추출한 후에 dominant variable들의 값을 보수로 바꾸어서 FALSE tree에 대입한다고 가정하자. dual solution 이외의 해를 가지기 위해서는 FALSE tree가 satisfiable해야 한다. FALSE tree가 satisfiable하려면 추출된 DCG의 크기에 상관없이 특정 변수를 시작으로 적어도 k개의 길이를 가지는 연결된 패스가 형성되어야만 한다.
Column 방향 순환 패스를 만들기 위해서는 랜덤 변수들은 값이 바뀌지 않아야 하고 switching 변수들은 값이 바뀌어야만 한다. 추출된 DCG의 크기가 m일 때 랜덤 변수가 값이 바뀌지 않을 확률은 (n-m)/n이며 switching 변수가 값이 바뀔 확률은 m/n 이 된다. 따라서 추출되는 DCG의 길이에 따라서 순환루프가 만들어질 확률이 달라진다. 우리는 하나의 순환루프가 형성되면 변수들을 추가하거나 삭제해서 DCG의 길이를 늘리거나 줄일 수 있음을 살펴보았다. 따라서 순환루프를 형성할 확률의 최대값은 m이 k보다 크거나 같고 n보다는 작은 모든 m에 대해서 (n-m)/n x m/n 의 최대값이 되며 m 값이 n/2일 경우에 최대 값으로 1/4을 가진다. k-1번 연속으로 위의 조건이 만족되어야 하므로 m=n/2 일 때 1/4k-1의 값을 가진다. Row 방향으로 순환패스를 만들 확률은 앞서서 설명한 것처럼 1/(k x4k-1)의 값을 가지며 두 경우는 서로 독립적이므로 순환루프를 만들 전체 확률의 최대값은 (k+1)/ (k x4k-1)이 된다.
n개의 변수에 대해서 순환루프를 형성하는 다른 변수들은 어떤 것이 되어도 상관없으므로 각각의 변수에 대해서 독립적이다. 또한 하나의 변수는 random 변수가 순환루프를 만드는 경우와 switching 변수가 순환루프를 만드는 경우로 나누어지며 두 경우는 중복될 수 없다. 따라서 전체 확률은 모든 입력 변수들에 관한 확률의 합으로 표현되므로 dual solution 이외의 해를 가질 확률은 아리의 (수식 4)로 표현된다.
(수식 4)
(수식 4)는 TRUE tree에서 추출하는 DCG의 길이가 가변적일 때 FALSE tree에서 순환루프를 형성할 확률의 최대값을 사용했다. 따라서 a값은 FALSE tree뿐만 아니라 DCG를 추출한 TRUE tree에서도 순환루프는 유지한 채 변수들을 추가하거나 삭제해서 DCG의 길이가 변경되는 것을 허용했을 때 두 트리에서 동일한 literal들의 그룹으로 형성되는 DCG가 동시에 존재할 확률을 의미한다.
Lemma 4. Column 수와 distance가 서로소의 관계에 있고 column 수와 tree level이 k, 입력 변수 수가 n일 때 basis solution과 complement solution 이외의 해를 가질 확률은 2 n(k+1)/(k4
k-1
)보다 작다.
Proof) (수식 4)에 의해서 증명된다.■
K=20, n=400 인 경우에 위의 값은 약 1/(3.27x108)이 되므로 무시할만한 수치가 된다. 따라서 듀얼 원환형 이항 트리에 modular random encapsulation을 실행해서 생성된 3-SAT은 입력 변수 수가 충분히 크다면 basis solution과 complement solution이외의 해를 가지지 않는다고 가정할 수 있다.
Unique dual solution을 가지면 하나의 변수 값이 바뀌었을 때 그 영향이 모든 변수들에게 미치게 되므로 변수들을 나누어서 두 그룹으로 분리할 수 없다. 따라서 모든 변수들의 값이 확정될 때까지 얼마나 큰 decision level이 형성되는가가 해를 찾는 어려움을 결정한다.
Lemma 5. DPLL 알고리즘으로 원환형 이항 트리를 모듈러 랜덤 캡슐링해서 생성된 3-SAT의 해를 구할 때 입력 변수 수가 n이면 평균적으로 2n/7번의 decision assignment가 실행된다.
Proof) Unit clause인 경우에는 decision assignment없이 implied assignment가 실행되므로 decision variable은 0개 증가하며 implied variable은 1개 증가한다. 두 개의 literal로 이루어진 절은 한번의 decision assignment와 한번의 implied assignment가 실행된다.
해를 구하는 어느 단계에서 k번의 decision assignment가 일어났다고 가정하자. 2개의 literal로 구성된 절에서 한번의 decision assignment이후에 후속적인 implied assignment가 실행되므로 2k개의 변수 값이 확정된다. 확정된 2k개의 decision variable들과 implied variable들에 의해서 unit clause가 생성되고 생성된 unit clause들에 포함된 변수들과 이전에 확정된 변수들이 만드는 unit clause들을 모두 합쳐서 즉 어느 시점에 생성된 모든 unit clause들 중에서 decision assignment가 일어난 절을 제외한 unit clause 개수를 a라고 가정하자. 위의 가정에 의해서 k번의 decision assignment가 일어났을 때 2k+a개의 변수들의 값이 확정된다. n개의 변수에 대해서 한 변수와 그 변수의 보수까지 합치면 총 2n가지의 literal이 생성된다. 위의 2n가지의 literal들 중에서 FALSE 값으로 확정된 literal은 2k+a개가 된다. decision variable 수가 k이며 decision assignment 이후에 생성된 unit clause 안의 implied variable 보수의 수가 k이며 이들에 의해서 생성된 unit clause를 구성하는 implied variable의 보수의 수가 a개가 된다.
이때 2k+a개의 변수가 확정되었을 때 하나의 절이 unit clause가 될 확률은 3개의 literal들 중에서 두 개가 FALSE 값을 가져야하므로, 2n개의 literal들 중에서 FALSE 값으로 확정된 2k+a 개 중에서 임의의 두 개가 하나의 절에 포함될 확률이며 (수식 5)와 같이 계산된다.
(수식 5)
듀얼 원환형 이항트리가 만드는 4n개의 절 중에서 두 개의 literal이 FALSE 값을 가지는 절의 수는 2n개가 된다.
2k+a개의 변수가 확정됐을 때 k개의 decision assignment가 행해진 unit clause들의 수는 k개가 된다. 따라서 2n개 중에서 unit clause가 될 수 있는 남아있는 절들의 수는 2n-k개가 된다. 남아있는 절 중에서 unit clause가 되는 절들의 평균 개수는 (수식 6)과 같이 계산된다.
(수식 6)
확정된 2k개의 변수 값의 decision variable과 implied variable에 의해서 생성되는 unit clause 개수 중에서 decision assignment이후에 생성된 unit clause들의 수를 제외한 개수를 a라고 가정했으므로 (수식 6)의 평균 값은 a와 같아져야 한다.
(수식 7)
2k+a=n이 되면 모든 변수 값이 확정되는 상태가 된다.
(수식 8)
(n-1)/n ≒ 1로 놓고 위의 두 식으로 n과 k의 관계를 구하면 다음과 같다.
(수식 9)
따라서 n개의 모든 변수 값이 확정될 때까지 해를 구하기 위해서는 평균적으로 2n/7번의 decision assignment가 실행된다.■
마지막으로 decision level 값이 정해질 때 올바른 선택으로 해를 구하기 위해서는 어느 정도의 calculation step 수가 필요한가를 확인해보자.
Lemma 6. Unique dual solution을 가진다면 decision level이 k일때 DPLL 알고리즘으로 해를 구하기 위해서는 worst-case 2
k-1
~3
k-1
번의 calculation step 수를 필요로 한다.
Proof) Unit clause를 만들기 위해서 처음에 하나의 literal을 FALSE로 가정하게 된다. 이때 한 쌍의 해집합에서 찾고자 하는 해는 선택된 literal이 FALSE 값을 가지는 해가 된다. Lemma 4에 의해서 unique dual solution을 가정할 수 있으므로 찾고자 하는 해는 basis solution과 complement solution 중에서 하나의 해를 찾게 된다. 따라서 DPLL 알고리즘의 입장에서는 modular random encapsulation에 의해서 생성된 3-SAT은 unique solution을 가진다고 가정할 수 있다.
unit clause를 생성하기 위해서 Decision assignment 과정에서 하나의 literal을 선택해서 FALSE 값을 할당한다. 따라서 unique solution을 가진다면 conflict를 유발하지 않기 위해서는 선택되는 decision literal들이 해집합에서 FALSE 값을 가져야만 한다. 이때 modular random encapsulation에 의해서 생성된 3-SAT이 unique dual solution을 가진다면 한 변수의 값이 바뀌면 모든 변수들의 변수값에 영향을 주기 때문에 unit propagation이 종료되는 시점에서 모든 변수들이 추출된 decision variable 또는 implied variable들의 그룹에 속해야만 한다.
Decision level이 k이므로 k번의 올바른 decision assignment가 실행되어야만 conflict를 유발하지 않고 해가 구해진다. 위의 확률은 다음과 같이 계산된다. 처음에 임의의 literal을 decision literal로 선택하고 선택된 literal에 FALSE 값을 할당한다. 해가 duality의 특성을 가지므로 위의 설정은 항상 올바른 설정이 된다. 따라서 처음 하나의 decision literal을 올바로 선택할 확률은 1이 된다. CNF formula에서 FALSE 값을 할당한 literal을 지운다. 그러면 2개의 literal만 가지는 절이 [도 11]과 같이 6개 생성된다. 6개의 절 중에서 지워진 literal은 각각 2번씩 dominant literal, switching literal, random literal의 역할을 한다.
[도 11]에서 사각형으로 표시된 것은 지워진 decision literal을 의미한다. 이때 처음에 decision literal을 선정할 경우에는 6개의 절이 모두 남아있지만 후속적으로 decision literal과 implied literal을 선정하게 되면 이전에 선정된 decision literal의 보수 또는 implied literal 을 포함하는 절들은 두 literal에 의해서 satisfiable 조건이 성립되므로 삭제된다. 따라서 후속적으로 implied literal의 보수를 지운 절이 몇 개가 남아 있는지 알 수 없다. 6개의 절 중에서 지워진 literal은 각각 2번씩 dominant literal, switching literal, random literal의 역할을 한다. 남아있는 12개의 literal들은 각각 4번씩 dominant literal, switching literal, random literal의 역할을 한다. 이때 random literal에서 두 번, dominant literal과 switching literal에서 각각 1번씩 FALSE 값을 가진다. 따라서 하나도 안 지워진 상황이라면 12개의 literal중에서 FALSE값을 가지는 literal은 4개이므로 올바른 decision assignment를 실행할 확률은 1/3이 되며 모두 지워지고 하나의 절만 남는다면 올바른 선택을 할 확률은 남은 두 literal중 하나는 반드시 TRUE값을 가져야 하므로 1/2이 된다. 따라서 conflict를 유발하지 않고 연속적으로 k번의 올바른 decision assignment가 실행될 확률은 1/3k-1에서 1/2k-1사이의 값이 된다. 그러므로 해를 구하는데 필요로 하는 calculation step 수는 worst-case 2k-1~3k-1이 된다.■
Lemma 1, Lemma 5와 Lemma 6에 의해서 아래의 Theorem 2가 유도된다.
Theorem 2. 듀얼 원환형 트리를 모듈러 랜덤 캡슐링해서 만들어진 3-SAT의 해를 구하기 위해서는 랜덤 선택에 의해서 decision assignment를 실행하는 back-tracking 기반의 알고리즘은 worst-case exponential calculation step 수를 필요로 한다.
Proof) Lemma 5와 Lemma 6에 의해서 입력 변수 수가 n일 때 랜덤 선택에 의해서 해를 구하는데 필요로 하는 calculation step 수는 worst-case 22n/7-1~32n/7-1 이 된다. Lemma 1에 의해서 반복 실행할 때마다 back-tracking 실행 횟수를 줄일 수 있는 정보가 누적되지 않는다. 따라서 worst-case exponential calculation step 수를 필요로 한다.■
트리구조를 파악해서 패스워드를 찾으려는 새로운 알고리즘이 만들어진다고 하더라도 싱글 원환형 이항 트리로 사용한 경우일 때 유도된 Theorem 1이 적용되며 implied assignment이후에 이전에 선정된 변수들에 의해서 삭제되고 남는 두 개의 literal로 이루어진 절들의 수가 싱글 원환형 이항 트리를 사용한 경우보다 더 많아지므로 calculation step 수는 더 늘어난다.
Modular random encapsulation으로 생성된 3-SAT의 expressional equality와 geometric equality의 특성에 의해서 두 변수의 수식적 또는 기하학적 구분을 기반으로 하는 어떠한 알고리즘으로도 해를 찾을 수 없다. 따라서 만약 3-SAT의 해를 찾기 위한 모든 서치 알고리즘이 백트래킹 기능을 포함해야만 한다면 위의 Theorem들에 의해서 P NP 임이 증명된다. 앞에서 서술한 것처럼 백트래킹 기능이라 함은 변수 값에 대해서 가정하는 기능과 가정이 틀린 것을 확인할 수 있는 기능과 틀린 것이 확인되면 이전 가정했던 상태로 되돌아가서 가정된 값을 바꾸어서 다시 실행하는 기능을 의미한다. 현재의 모든 SAT solver들은 백트래킹에 기초한 DPLL 알고리즘을 기반으로 만들어졌으므로 주어진 보안강도를 맞출 수 있는 적절한 입력변수 수(패스워드의 길이)를 설정한다면 암호화에 사용 가능하다.
이하, 본 발명에 따른 생성된 3-SAT이 얼마나 해를 구하기 어려운지에 대한 실험적 검증(Experimental verification of the hardness)을 [도 12]와 [도 13]을 참조하여 설명하기로 한다. [도 12]와 [도 13]의 결과 값을 도출하기 위해 사용한 Sat Solver는 MiniSat_v1.14_cygwin이며 컴퓨터 사양은 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz, Windows10 64bit, Ram 16GB이다.
하나의 트리에 속한 DCG들은 Lemma 2에 의해서 적어도sub-exponentially-many 수를 이루므로 (수식 4)에서 a 값을 수식적으로 구하는 것은 지극히 어려우며 본 논문에서는 실험에 의해서 확인했다. row 방향 순환루프의 길이는 column 수와 distance에 의해서 결정된다. column수와 distance가 서로소의 관계에 있으면 row방향 순환루프의 길이는 column 수가 된다. 랜덤하게 패스워드를 설정한 후에 CNF formula를 생성하고 SAT solver가 CNF formula로부터 해를 찾는 실험을 했다.
실험 결과에 의하면 (수식 4)에서 a 값은 입력 변수 수가 커지면 1/2에 수렴하는 것이 확인된다. 변수들이 서로 겹치지 않게 하기 위해서는 column 수를 5 이상으로 설정해야 하지만 경향을 확인하기 위해서 3과 4인 경우도 테스트했다.
[도 12]는 column 수와 level 수를 3부터 13까지 바꾸어가며 10 만번 실험에서 basis solution과 complement solution이외의 해를 찾은 횟수를 표시한 것이다. Distance = column 수 /2 -1 을 사용했다. k=9,n=81일 경우에 distance를 4로 하면 column수와 distance가 서로소의 관계가 되며 [도 9]의 (b)에서 보여준 row 방향의 순환루프의 길이가 9가 되지만 distance를 3으로 할 경우에는 순환루프의 길이가 3이 되어서 더 짧은 순환루프를 형성함으로써 dual solution 이외의 해를 가질 확률이 더 커진다. 확률 P = a x 2 n(k+1)/ (k x4k-1)라고 할 때 실험 결과에 의하면 a 값은 입력 변수 수가 커지면 1/2에 수렴하는 것이 확인된다. 위의 실험 결과는 Lemma 4의 이론적 결과와 일치함을 보여준다.
듀얼 원환형 이항 트리를 modular random encapsulation해서 만든 3-SAT 이 얼마나 풀기 어려운 문제인지를 실험적으로 확인하기 위해서 랜덤하게 패스워드를 설정한 후에 CNF formula를 생성하고 SAT solver가 CNF formula로부터 패스워드를 찾는 시간을 측정하는 실험을 했다.
[도 13]의 (a)와 (b)는 column 수와 level 수를 동일하게 10~19까지 바꾸어가며 두 개의 트리 모두로부터 절들을 추출한 후 (a)는 free modular random encapsulation으로 (b)는 left shift modular random encapsulation으로 테스트한 결과이며 서로가 큰 차이를 발견할 수 없으며 입력 변수 수의 제곱에 지수함수적으로 증가함이 확인된다. (c)와 (d)는 column수를 2k+1개로 level 수를 k개로 설정하고 k값을 4~13까지 바꾸어가며 두 개의 트리 모두로부터 절들을 추출한 후 (c)는 free modular random encapsulation으로 (d)는 left shift modular random encapsulation으로 테스트한 결과이다. (a), (b)의 경우와 마찬가지로 서로가 큰 차이를 발견할 수 없으며 입력 변수 수의 제곱에 지수함수적으로 증가함이 확인된다. 위의 실험 결과는 Theorem 2의 이론적 결과와 일치함을 보여준다.
듀얼 원환형 이항 트리를 사용할 경우 free modular random encapsulation 기법을 사용한 경우와 shift modular random encapsulation 기법을 사용한 경우 모두에 있어서 변수 수를 29x14=406 개로 테스트한 결과 conflicts 수가 MiniSat_v1.14에서 설정한 232을 초과하게 되는 경우를 확인했다. 이러한 경우에는 10 만초를 초과해도 해를 찾지 못했다.
보안강도 128을 유지하기 위한 입력 변수 수를 다음과 같이 추정할 수 있다. 2.2Ghz를 사용해서 테스트했으므로 초당 2.2x109의 연산을 한다. 보안강도 128을 유지하려면 2128번의 연산으로도 알고리즘의 취약성을 찾을 수 없도록 해야 한다. 따라서 해를 찾는데 2128/2.2x109= 1.5x1029초 이상 소요되어야 한다. 시간 소요의 문제로 샘플 수가 10개씩뿐이 되지 않기 때문에 정확한 예상은 어렵겠으나 입력 변수 수가45x45이면 약 1030초가 소요될 것으로 그래프상에서 확인되므로 2025bits를 사용하면 보안강도 128을 맞출 수 있다. 물론 위의 보안강도는 테스트한 SAT solver를 기준으로 한 것이며 SAT solver의 성능 향상에 따라서 더 큰 bit수가 필요해질 것이다.
Tree의 개수를 늘려가며 3-CNF formular를 추출한 후에 해를 찾는 시간을 측정하는 실험을 했다. TRUE tree하나에서만 CNF formula를 추출하면 각각의 column들마다 순환루프를 형성하고 서로 변수들을 공유하지 않으므로 다중해를 가진다. 따라서 dual solution이 아닌 다른 해들을 쉽게 찾았다.TRUE tree 두 개에서 절들을 추출한 경우에는 TRUE tree와 FALSE tree로 구성된 듀얼 원환형 이항 트리에서 절들을 추출한 경우와 해를 찾는 시간이 유사했다. TRUE tree 3개, 4개에서 절들을 추출한 경우에는 tree 수가 많아질수록 해를 찾는 시간이 급격히 짧아졌다. 이것은 트리의 수가 많아질수록 세 개의 literal로 구성된 (x1∨x2∨x3)∧(x1∨x2∨¬x3)와 같은 두 개의 절이 (x1∨x2) 와 같이 2개의 literal만으로 구성되는 절로 변환 가능한 경우들이 발생할 확률이 높아지기 때문이라고 해석된다. 따라서 트리를 많이 사용할수록 해를 찾는 시간은 줄어든다. 극단적으로 무수히 많은 트리로부터 절들을 추출해서 만들어진3-CNF formula는 2-CNF formula로 바꾸어질 수 있으며 conflict가 발생하지 않고 해가 구해진다. 그러므로 하나인 경우에는 다중해를 가지더라도 반드시 basis solution을 찾아야만 하도록 암호화 알고리즘을 만들어야하며 2개를 사용하는 경우에는 입력변수 수가 충분히 크다면 unique dual solution이 보장되며 가장 해를 찾는 어려움을 증가시켜주며 동일한 basis solution을 가지는 원환형 이항 트리가 3개 이상 사용되면 점점 더 conflict 회수가 줄어들으므로 해가 구해지는 시간이 짧아지므로 동일한 패스워드로 3개 이상 원환형 이항 트리를 만드는 것을 방지하는 방법이 마련되어야만 한다.
이하, 본 발명에 따른 Hard SAT을 사용한 암호화(Cryptography with Hard SAT)와 관련하여 설명하기로 한다.
지금까지 우리는 패스워드를 해로 가지는 Hard SAT 생성 방법을 제안했다. 앞에서 원환형 이항 트리를 모듈러 랜덤 캡슐링해서 생성된 3-SAT은 sub-exponentially-many solution을 가짐으로써 전수조사로 패스워드를 다항시간 안에 찾을 수 없고, shift modular인 경우에는 패스워드를 찾는 시간도 다항 시간을 초과함을 보여주었다. 또한 free modular를 사용하게 되면 패스워드와 일반 해를 구분할 요소가 없어져서 해를 찾는 것 자체가 무의미해진다는 것도 설명했다. 따라서 CNF formula가 공개된다 하더라도 그 정보로부터 다항시간 안에 패스워드를 찾을 수는 없다.
여기서 정보 노출 정도와 암호화 강도에 대해서 생각해보자.
우리가 패스워드를 구성하는 n개의 bit들의 값을 임의로 정하더라도 n개의 변수가 만드는 2n개의 리터럴 집합에서 반은 TRUE 값을 가지고 반은 FALSE 값을 가진다. 여기서 리터럴 들을 추출해서 m개의 literal 들 중에서 k개가 TRUE 값을 가지고 m-k개가 FALSE 값을 가지는 집합을 만든다고 가정하자. 이항 계수의 합은 아래의 수식으로 표현된다.
(수식 10)
만약 TRUE 값을 가지는 literal들의 수가 k라는 사실이 알려지지 않으면, 즉, 정보 누출이 전혀 없으면 m개의 literal 집합에서 TRUE 값을 가지는 literal은 하나도 없을 수도 있고 모두 TRUE 값을 가질 수도 있다. 따라서 위의 경우의 수를 모두 더하면 m+1 개의 이항 계수들을 모두 더한 값이 2m이 되고 위의 값은 전수조사 실행 횟수가 된다. k개가 TRUE 값을 가진다는 사실을 알려주는 행위는 m+1개의 이항 계수들 중에서 하나의 경우에만 해당한다는 것을 알려주는 행위가 된다. 평균적으로 mCk 만큼의 전수조사가 필요해지므로 해를 구하기 위한 평균적인 전수조사 실행 횟수는 줄어든다. 그렇지만 위의 값도 polynomial boundary를 벗어난다. 따라서 전체 중에 몇 개가 TRUE 값을 가지는 지를 알려주는 것은 해를 구하는데 필요한 일부 정보를 알려줌으로써 암호화 강도를 낮추어주지만 전수조사 실행 횟수가 polynomial boundary를 벗어나므로 그 정보만으로는 해를 다항 시간 안에 찾을 수 없다.
원환형 이항 트리를 random encapsulation해서 생성되는 CNF formula는 해집합이 duality의 특성을 가진다. 따라서 3개의 literal들이 모두 TRUE 값을 가질 수 없다. 왜냐하면 모든 literal들을 보수로 바꾸어도 satisfiable해야 되는데 3개 모두 TRUE인 절은 보수를 취하면 unsatisfiable해지기 때문이다. 또한 3개의 literal 중 하나만 TRUE 값을 가지는 절과 두 개만 TRUE 값을 가지는 절이 동일한 수이어야만 한다. 모든 literal을 보수로 바꾸면 하나의 literal만 TRUE 값을 가지는 절이 2개의 literal이 TRUE값을 가지는 절로 바뀌기 때문이다. Basis solution을 대입했을 때 1개만 TRUE 값을 가지는 절을 1-TRUE clause로 2개만 TRUE 값을 가지는 절을 2-TRUE clause로 정의하자.
앞에서 2n개의 literal들 중에서 TRUE 값을 가지는 literal 수와 FALSE 값을 가지는 literal 수에 차이를 두고 추출해서 m개의 literal 집합을 만든 것처럼 2n개의 clause들 중에서 1-TRUE clause와 2-TRUE clause의 개수에 차이를 두고 추출해서 m개의 clause 집합을 만든다. Dominant literal과 switching literal로 구성된 원환형 이항 트리를 구성하는 2개의 literal들로 구성된 절들은 모두 하나만 TRUE 값을 가지므로 random literal의 값에 따라서 2-TRUE clause 또는 1-TRUE clause인지가 결정된다. 따라서 random literal과 clause들을 1대1 대응시킬 수 있다. 그러므로 추출된 clause들이 만드는 새로운 CNF를 공개하고 2-TRUE clause가 그 중에 k개라는 것을 공개하는 행위는 추출된 m개의 리터럴 집합을 공개하고 k개가 TRUE 값을 가진다고 알려주는 것과 동일한 정보 노출 강도를 가진다. 따라서 새롭게 구성된 CNF로부터 패스워드를 찾는 행위는 암호화 강도는 낮아졌지만 해를 찾기 위한 전수조사 실행 횟수가 polynomial boundary를 벗어나게 된다. 우리는 이렇게 새롭게 생성된 CNF formula를 이용해서 암호화에 사용하고자 한다.
위에서 1-TURE clause와 2-TRUE clause들의 개수에 차이를 두어서 새롭게 생성된 3-CNF formula에서 다항시간 안에 패스워드를 찾을 수 없음을 살펴보았다. 이제 CNF formula를 배포해서 공개 키처럼 사용하는 방법을 서술하면 다음과 같다.
원환형 이항 트리와 모듈러 랜덤 캡슐링을 통해서 n개의 입력 변수로 생성된 CNF formula는 2n개의 절들로 구성된다. 2-TRUE clause를 q개(q=n), 1-TRUE clause를 p(p < q)개 추출해서 p+q개의 절들로 이루어진 새로운 CNF formula를 만들었다고 가정하자. 어느 절이 1-TRUE clause인지를 알려주지 않고 p 값만 알려준다. 이들 중 2p+1개의 절을 랜덤 추출해서 변수들과 변수들의 보수의 개수를 세어서 아래와 같은 threshold 값, t를 계산하는 수식을 생성한다.
(수식 11)
(수식 11)에서 ak는 xk의 개수를 더한 값이며 bk는 ¬xk의 개수를 더한 값이다. (수식 11)에 해집합(basis solution)에서 xk의 값이 TRUE이면 xk= 1, ¬xk=0을 대입하고 FALSE이면 xk= 0, ¬xk=1을 대입한다. 그러면 (수식 11)의 t 값은 3p+2 보다 크거나 같게 된다. 왜냐하면 1-TRUE clause 모두가 추출되더라도 위의 절들에서 TRUE 값을 가지는 literal의 개수는 p개이고 추출된 나머지 절들은 모두 한 절에서 2개의 literal들이 TRUE 값을 가지기 때문이다. 모든 변수들을 그의 보수로 바꾸는 것은 위의 수식에서 ak와 bk를 서로 바꾸는 것과 동일하다. 모든 변수들을 보수로 바꾸면 1-TRUE clause는 2-TRUE clause로 2-TRUE clause는 1-TRUE clause로 바뀌게 된다. 따라서 (수식 11)에서 ak와 bk를 서로 바꾸고 해 집합에서 xk가 TRUE이면 xk= 1, ¬xk=0을 대입하고 xk가 FALSE이면 xk= 0, ¬xk=1을 대입한다면 (수식 11)의 값은 3p+1 보다 작거나 같게 된다. 왜냐하면 2-TRUE clause들이 모두 추출되더라도 2p개의 TRUE 값을 가지는 literal들이 포함되고 나머지 절들은 모두 TRUE 값을 한 개만 가지기 때문이다. 그러므로 평문데이터 1을 암호화하기 위해서는 ak를 구성하는 n개의 배열과 bk를 구성하는 n개의 배열을 순차적으로 결합한 2n개의 배열을 기록하고 0을 암호화하기 위해서 ak와 bk를 서로 바꾸어서 bk를 구성하는 n개의 배열과 ak를 구성하는 n개의 배열을 순차적으로 결합한 2n개의 배열을 기록한다.
수신단에서는 전송되는 암호문으로부터 literal들의 개수를 추출해서 (수식 11)를 생성하고 패스워드를 대입해서 그 값이 3p+2 보다 크거나 같으면 1로 3p+1 보다 작거나 같으면 0으로 복호화시킨다. [도 14]는 CNF formula를 이용한 암호화, 복호화 과정을 나타낸다.
이때 연산량을 줄이기 위해서 CNF formula를 구성하는 모든 절들에서 모든 변수와 그의 보수들의 수를 미리 계산한다. 위의 값을 (Ak, Bk), 1<=k<=n로 표시하자. 그런 후에 2p+1개를 뽑지 않고 q-p-1개를 뽑아서 뽑혀진 절들의 모든 변수와 그의 보수들의 수를 계산한다. 위의 값을 (ck, dk)라고 하면 ak=Ak-ck, bk=Bk-dk의 식이 성립한다. 1000개 중에서 p가 490개이고 q가 500인 경우에 2p+1개를 뽑으면 981개가 되지만 q-p-1개를 뽑으면 9개가 되므로 CNF formula를 구성하는 절들의 수가 늘어난다 하더라도 적은 수의 절들만 추출해서 변수들의 개수만 세면되므로 어떤 플랫폼에서도 실시간 연산이 가능하다.
여기서 q-p의 크기를 어느 정도로 설정해야 적당한가를 살펴보자. 1000개의 절들이 2%의 차이로 2-TRUE clause를 500개, 1-TRUE clause를 490개로 구성되었을 때 9개를 뽑는 경우의 수는 1000C9이 되어서 약 2.6x1021이나 되는 큰 수가 된다. 따라서 q-p의 크기가 약간만 늘어나도 서로 다르게 랜덤 추출되는 샘플들의 수가 기하급수적으로 늘어난다. 그러나 만약 q-p=1이라면 우리는 추출되지 않은 절이 무엇인지 알 수 있다. 원환형 이항 트리는 모든 변수들과 변수들의 보수가 동일하게 3번씩 사용되므로 ak와 bk를 구하면 2인 literal이 3개, 듀얼 원환형 이항 트리는 모든 변수들과 변수들의 보수가 동일하게 6번씩 사용되므로 ak와 bk를 구하면 5인 literal이 3개가 나올 것이다. 위의 literal들로 이루어진 절이 추출되지 않은 절이 된다. 다시 말하면 여러 절들에 포함된 literal들이 섞인 상태에서 각각의 literal들의 개수의 총합이 공개되므로 q-p값이 작을수록 literal들이 섞이기 이전의 절들을 찾을 가능성이 커진다. 또한 q-p-1개를 랜덤 추출해서 literal들의 수를 세므로 q-p가 커지면 그만큼 암호화 속도가 늦어진다. 따라서 q-p 값의 크기는 샘플링 데이터의 풍부성을 떨어뜨리지 않는 범위에서 최대한 작게 설정해야만 한다. 본 논문을 위한 실험에서는 p=0.9 x q 로 설정했다. 또 다른 하나로 형태적 동등성에 대해서 생각해보자. 우리는 0을 암호화할 때 모든 절들에서 변수들을 그의 보수로 바꾸었는데 이것이 형태적 동등성을 해치는 지를 확인할 필요가 있다. 랜덤 추출했으므로 변수들과 그의 보수들의 사용 횟수는 횟수의 동등성이 유지된다. 또한 dual solution을 가지기 때문에 해집합을 이루는 literal들에 모두 보수를 취해도 해집합에 속한다는 점을 생각하면 형태적 동등성을 해치지 않을 것임을 알 수 있다.
듀얼 원환형 이항 트리는 입력 변수 수가 충분히 크다면 unique dual solution을 가진다. 원환형 이항 트리의 수가 2개 이상 되면 점점 많아질수록 unique dual solution을 가지지만 2-CNF formula로 reduced 될 수 있는 pair 절들이 증가함에 따라 해를 찾는 시간이 급속도록 빨라진다. 동일 패스워드로 만들어진 CNF formula들을 계속적으로 더해서 하나의 CNF formula를 만들게 되면 3개의 literal로 이루어진 절들이 합쳐져서 두 개의 리터럴로 이루어진 절들이 생성되는 횟수가 늘어나며 극단적으로 무수히 많은 것들을 합치면 모든 절들이 2개의 literal들로 구성된 절들로 바뀌게 된다. 해를 구하는 어려움은 decision level의 크기에 의해서 결정되므로 점점 더 decision level을 줄이고 결국은 decision level이 1이 되도록 만든다.
따라서 사용자가 반복적으로 동일한 basis solution을 가지는 CNF formula를 생성하면 이들을 합쳐서 basis solution을 쉽게 찾을 수 있는 위험성이 있다. 이것을 방지하기 위해서 하나의 실시례로써 사용자의 패스워드 뒤에 생성 시간과 같은 생성될 때마다 서로 다른 값을 가지는 식별코드를 추가해서 basis solution을 생성하는 방식을 사용한다. 이러한 방식은 동일한 개인키를 가지더라도 반복적으로 동일한 basis solution을 가지는 CNF formula가 생성되는 것을 방지한다.
이하, 본 발명에 따른 식별(Identification) 과정에 대해 설명하기로 한다.
송신자가 가지고 있는 CNF formula와 수신자가 가지고 있는 CNF formula가 일치하는 지의 여부와 수신자가 위의 CNF formula의 해를 알고 있는 CNF formula의 생성자 인지를 확인하는 과정이 필요하다. 아래와 같은 절차에 의해서 CNF formula 생성자 인지와 동일한 CNF formula 를 가졌는지를 확인할 수 있다.
(Method 3). Identification
송신자는 입력 변수 수 크기의 키 값을 생성한다. 이 값은 CNF formula의 해가 아니며 CNF formula에 대입하면 FALSE를 리턴하는 절들이 생긴다.
1) 키값을 암호화 해서 수신자에게 보낸다.
2) 수신자는 자신의 패스워드로 복호화 해서 키 값을 알아낸다.
3) 키 값을 CNF formula에 대입해서 모든 절들의 리턴 값들을 얻고 순차적으로 송신자에게 보낸다.
4) 송신자는 생성한 키 값을 보유한 CNF formula에 대입해서 돌아오는 리턴 값들과 생성된 리턴 값들을 비교한다.
5) 같다면 수신자는 CNF formula의 생성자가 되며 서로가 같은 CNF formula를 가지고 있음이 확인된다.
CNF formula 는 개인 또는 단체의 온라인 신원확인증 역할을 하며 서로가 암호화된 데이터를 받기 위해서는 서로의 CNF formula를 상대방 측으로 보내고 상대방의 CNF formula를 이용해서 데이터를 암호화시킨 후에 전송한다
상기 원환형 이항 트리의 순환구조는 expressional equality를 유지하면서 repeated pair와 triangle pair들이 발생하지 않도록 해주며, 이로 인해서 SAT solver 내부의 unit propagation step 수를 최대한 늘려주게 되고 decision level을 증가시킴으로써 해를 구하는데 필요한 calculation step 수를 늘려준다.
본 발명에서 제안하는 암호화 알고리즘은 SAT 기반으로 소인수분해나 이산로그문제의 어려움에 기반을 두지 않으므로 quantum resistant 인 것은 명백하다. 하나의 절은 3개의 변수로 이루어진다. 변수의 수가 215개 이하라면 2byte를 할당해서 하나의 변수와 그의 보수를 나타내는 것이 가능하다. 따라서 하나의 절은 6 byte로 나타낼 수 있고 clause 수가 m인 CNF formula를 사용한다면 6 x m byte가 공개키의 길이가 된다. 하나의 트리에서 하나의 변수는 dominant variable 2번, switching variable 2번, random variable 2번 총 6번이 사용된다.
따라서 싱글 원환형 트리를 구성하는 하나의 변수의 사용 회수는 6이되고 듀얼 원환형 트리를 구성하는 하나의 변수의 사용 회수는 12가 되므로 4bit로 표현 가능하다. 입력 변수 수가 1000이면 모든 변수들과 그의 보수들의 계수를 표현해야 하기 때문에 암호화된 데이터 길이는 1k byte 가 된다.
따라서 제안하는 암호화 알고리즘은 공개키 사이즈와 암호화된 데이터 사이즈가 크다는 단점을 가진다. 그러나 공개키와 개인키 간의 관계가 CNF formula로 표현됨으로써 소인수분해나 이산로그문제를 쉽게 풀 수 있는 현재의 양자알고리즘뿐만 아니라 향후에 개발될 수식 기반의 알고리즘들에 대해서도 자유롭다는 장점을 가진다.
또한 암호화 과정이 랜덤추출 후 변수의 개수를 더하는 것이 모두 이므로 그 어떤 알고리즘보다도 빠른 연산이 가능하다. 복호화 과정 또한 덧셈 연산으로 끝나므로 실시간 암호화 복호화가 가능할 뿐만 아니라 큰 수를 이용한 연산 과정이 없으므로 어떠한 플랫폼에서도 구현 가능하다는 장점을 가진다.
공개키를 이용한 암호화는 주로 비밀키를 암호화 시키는 용도로 사용하므로 공개키와 암호문 사이즈가 커지는 것은 암호 시스템 구현에 있어서 심각한 문제를 초래하지 않는다. 또한 포스트 양자 암호 알고리즘으로 채택된 격자기반 알고리즘이 가진 부채널 공격으로부터도 자유로우며 코드 기반 알고리즘이 가진 ISD 공격으로부터도 자유로우므로 향후 양자내성 공개키 기반 알고리즘을 이끌 새로운 알고리즘으로 기대된다.
한편, 본 발명은 기재된 실시례에 한정되는 것은 아니고, 적용 부위를 변경하여 사용하는 것이 가능하고, 본 발명의 사상 및 범위를 벗어나지 않고 다양하게 수정 및 변형을 할 수 있음은 이 기술 분야에서 통상의 지식을 가진 자에게는 자명하다. 따라서, 그러한 변형예 또는 수정예들은 본 발명의 특허청구범위에 속한다 해야 할 것이다.
Claims (3)
- 패스워드를 해로 가지고 있으며 1-TRUE clause와 2-TRUE clause의 개수가 동일한 3-CNF 수식으로부터 상기 1-TRUE clause와 2-TRUE clause의 개수에 차이를 두로 추출해서 새롭게 3-CNF 수식을 생성하는 단계,
상기 3-CNF 수식으로부터 2-TRUE clause를 q개(q=n/2, n: 절들의 수), 1-TRUE clause를p(p < q)개 추출해서 p+q개의 절들로 이루어진 새로운 CNF 수식을 만드는 단계;
상기 새롭게 만들어진 CNF 수식을 구성하는 절들 중 2p+1개의 절을 랜덤 추출해서 변수들과 변수들의 보수의 개수를 세어서 ak와 bk(1<=k<=n, n=패스워드 bit 수) 값을 설정하는 단계;
평문데이터 1을 암호화하기 위해서는 ak를 구성하는 n개의 배열과 bk를 구성하는 n개의 배열을 순차적으로 결합한 2n개의 배열을 기록하고 0을 암호화하기 위해서는 ak와 bk를 서로 바꾸어서 bk를 구성하는 n개의 배열과 ak를 구성하는 n개의 배열을 순차적으로 결합한 2n개의 배열을 기록하는 암호화 단계;
상기 2n개의 배열을 기록한 암호문을 읽어서 순차적으로 ak, bk(1<=k<=n, n=패스워드 bit 수)값을 확정한 후에 하기의 (수식 1)와 같은 threshold 값, t를 계산하는 수식 생성 단계;
(수식 1)
위 (수식 1)에 패스워드로부터 도출된 xk의 값이 TRUE이면 xk= 1, ¬xk=0을 대입하고 FALSE이면 xk= 0, ¬xk=1을 대입해서 t값을 계산하는 단계;
t 값이 3p+2 보다 크거나 같으면 1로 3p+1 보다 작거나 같으면 0으로 복호화 단계;로 수행되는 것을 특징으로 하는 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법.
- 제 1항에 있어서, 암호문을 전달할 송신자가 가지고 있는 CNF 수식과 CNF 수식의 생성자이며 암호문을 수신할 수신자가 가지고 있는 CNF 수식이 일치하는 지의 여부와 수신자가 위의 CNF 수식의 해를 알고 있는 CNF 수식 생성자 인지를 하기의 (Method 1)에 의해서 확인하는 단계;를 포함하는 것을 특징으로 하는 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법.
(Method 1)
1) 암호문을 전달할 송신자는 입력 변수 수 크기의 키 값을 생성하되, 이 키 값은 공개키 대용으로 사용하는 CNF 수식의 해가 아니며 CNF 수식에 대입하면 FALSE를 리턴하는 절들이 생기는 것으로, 이 키 값을 상기 암호 알고리즘으로 암호화해서 수신자에게 송신.
2) CNF 수식의 생성자이며 암호문을 전달 받을 수신자는 자신의 패스워드로 복호화 해서 키 값을 확인하고, 이 키 값을 CNF 수식에 대입해서 모든 절들의 리턴 값들을 도출하고 순차적으로 송신자에게 송신.
3) 송신자는 생성한 키 값을 자신이 보유한 CNF 수식에 대입해서 돌아오는 리턴 값들과 생성된 리턴 값들을 비교,
4) 상기 비교된 값들이 같다면 수신자는 CNF 수식의 생성자가 되며, 서로가 같은 CNF 수식을 가지고 있음을 확인.
- 제 1항에 있어서, 상기 패스워드에 생성시간 정보를 포함하는 것을 특징으로 하는 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230030139A KR20240038561A (ko) | 2022-09-16 | 2023-03-07 | Sat에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220117170A KR102657596B1 (ko) | 2022-09-16 | 2022-09-16 | Hard SAT 생성 방법 및 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 |
KR1020230030139A KR20240038561A (ko) | 2022-09-16 | 2023-03-07 | Sat에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220117170A Division KR102657596B1 (ko) | 2022-09-16 | 2022-09-16 | Hard SAT 생성 방법 및 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240038561A true KR20240038561A (ko) | 2024-03-25 |
Family
ID=90275366
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220117170A KR102657596B1 (ko) | 2022-09-16 | 2022-09-16 | Hard SAT 생성 방법 및 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 |
KR1020230030139A KR20240038561A (ko) | 2022-09-16 | 2023-03-07 | Sat에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220117170A KR102657596B1 (ko) | 2022-09-16 | 2022-09-16 | Hard SAT 생성 방법 및 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 |
Country Status (2)
Country | Link |
---|---|
KR (2) | KR102657596B1 (ko) |
WO (1) | WO2024058298A1 (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180082344A (ko) | 2017-01-09 | 2018-07-18 | 삼성전자주식회사 | 가중치 비트 감축을 위한 반복적인 딥 러닝 양자화 알고리즘 및 방법 |
KR20200059600A (ko) | 2018-11-21 | 2020-05-29 | 주식회사 크립트앤텍 | 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법 |
KR20210081859A (ko) | 2019-12-24 | 2021-07-02 | 한국과학기술원 | 오류가 있는 고전적 학습 표본에 대한 패리티 학습 양자 알고리즘, 양자 회로 및 이를 이용한 시스템 |
KR20220012851A (ko) | 2019-05-30 | 2022-02-04 | 김봉만 | 대칭 키 암호화/교환을 위한 양자 내성 암호화 및 진보된 암호화 및 키 교환(aeke) 방법 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2563294A (en) * | 2017-06-01 | 2018-12-12 | Zwipe As | Progressive key encryption Algorithm |
WO2020172234A1 (en) * | 2019-02-19 | 2020-08-27 | Massachusetts Institute Of Technology | Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques |
-
2022
- 2022-09-16 KR KR1020220117170A patent/KR102657596B1/ko active IP Right Grant
- 2022-09-22 WO PCT/KR2022/014158 patent/WO2024058298A1/ko unknown
-
2023
- 2023-03-07 KR KR1020230030139A patent/KR20240038561A/ko active Search and Examination
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180082344A (ko) | 2017-01-09 | 2018-07-18 | 삼성전자주식회사 | 가중치 비트 감축을 위한 반복적인 딥 러닝 양자화 알고리즘 및 방법 |
KR20200059600A (ko) | 2018-11-21 | 2020-05-29 | 주식회사 크립트앤텍 | 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법 |
KR20220012851A (ko) | 2019-05-30 | 2022-02-04 | 김봉만 | 대칭 키 암호화/교환을 위한 양자 내성 암호화 및 진보된 암호화 및 키 교환(aeke) 방법 |
KR20210081859A (ko) | 2019-12-24 | 2021-07-02 | 한국과학기술원 | 오류가 있는 고전적 학습 표본에 대한 패리티 학습 양자 알고리즘, 양자 회로 및 이를 이용한 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR102657596B1 (ko) | 2024-04-15 |
KR20240038399A (ko) | 2024-03-25 |
WO2024058298A1 (ko) | 2024-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sahoo et al. | A multiplexer-based arbiter PUF composition with enhanced reliability and security | |
Vazirani et al. | Certifiable quantum dice: or, true random number generation secure against quantum adversaries | |
Machida et al. | A new arbiter PUF for enhancing unpredictability on FPGA | |
CN105723651B (zh) | 可验证装置 | |
US11569978B2 (en) | Encrypting and decrypting information | |
Cherif et al. | An easy-to-design PUF based on a single oscillator: The loop PUF | |
EP2987267B1 (en) | System and methods for encrypting data | |
Megha Mukundan et al. | Hash‐One: a lightweight cryptographic hash function | |
Mittelbach et al. | The theory of hash functions and random oracles | |
EP3091470B1 (en) | Apparatus and method for processing digital value | |
Semenov et al. | Translation of algorithmic descriptions of discrete functions to SAT with applications to cryptanalysis problems | |
CN106576047A (zh) | 使密码操作免受恶意修改 | |
Applebaum et al. | Cryptography by cellular automata or how fast can complexity emerge in nature? | |
Zhang et al. | ECC2: Error correcting code and elliptic curve based cryptosystem | |
CN116305197A (zh) | 一种数据加密方法、装置及可读存储介质 | |
WO2016063512A1 (ja) | Macタグリスト生成装置、macタグリスト検証装置、macタグリスト生成方法、macタグリスト検証方法およびプログラム記録媒体 | |
KR102657596B1 (ko) | Hard SAT 생성 방법 및 SAT에 기반을 둔 양자 내성 암호 알고리즘 구현 방법 | |
US10333697B2 (en) | Nondecreasing sequence determining device, method and program | |
Alagic et al. | Partial-indistinguishability obfuscation using braids | |
Plesch et al. | Device-independent randomness amplification with a single device | |
Plesch et al. | 1-out-of-2 oblivious transfer using a flawed bit-string quantum protocol | |
KR20140037155A (ko) | 코드 보안 검사를 위한 방법 및 회로 장치 | |
JP7274155B2 (ja) | 計算システム及び計算方法 | |
Kindberg | A usability study of post-quantum algorithms | |
Klauck | One-way communication complexity and the Nečiporuk lower bound on formula size |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A302 | Request for accelerated examination |