From 988ebed82279f999b61ef69144a829ce4e4f6008 Mon Sep 17 00:00:00 2001 From: yijun-lee Date: Sat, 20 Jul 2024 07:31:20 +0900 Subject: [PATCH 1/4] Add PQC --- .../Basic Cryptography/Basic Cryptography.md | 2 +- .../Post-Quantum Cryptography.md | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 content/Basic Cryptography/Post-Quantum Cryptography.md diff --git a/content/Basic Cryptography/Basic Cryptography.md b/content/Basic Cryptography/Basic Cryptography.md index 9457581..45e2694 100644 --- a/content/Basic Cryptography/Basic Cryptography.md +++ b/content/Basic Cryptography/Basic Cryptography.md @@ -8,7 +8,7 @@ - [[RSA]] - [[ElGamal]] - [[ECDSA]] -- [[Post quantum cryptography]] +- [[Post-Quantum Cryptography]] - [[Learning with Errors(LWE)]] - [[Ring Learning with Errors(RLWE)]] - [[Module Learning with Errors(MLWE)]] \ No newline at end of file diff --git a/content/Basic Cryptography/Post-Quantum Cryptography.md b/content/Basic Cryptography/Post-Quantum Cryptography.md new file mode 100644 index 0000000..a7bb3c0 --- /dev/null +++ b/content/Basic Cryptography/Post-Quantum Cryptography.md @@ -0,0 +1,19 @@ +# Post-Quantum Cryptography + +## 양자 컴퓨팅과 암호학 +현재 널리 사용되는 공개키 암호 시스템들은 양자 공격에 취약하다. 예를 들어, [[RSA]]는 정수 분해에 의존하는데, 이는 쇼어 알고리즘(Shor’s algorithm)을 사용하여 쉽게 계산할 수 있다. + +## 포스트-양자 암호학 (Post-Quantum Cryptography) +포스트-양자 암호학은 양자 암호 분석 공격에 대해 안전한 암호 알고리즘을 개발하는 것을 목표로 한다. + +## NIST 포스트-양자 암호 표준화 프로그램 +NIST 포스트-양자 암호 표준화 프로그램과 경쟁은 NIST 표준을 포스트-양자 암호학을 포함하도록 업데이트하기 위한 것이다. 이 프로그램은 디지털 서명과 키 캡슐화 메커니즘에 대한 공모를 진행하고 있다. + +## 2020년 NIST의 첫 번째 수상자 발표 +2020년에 NIST는 첫 번째 수상자를 발표했다: +- **CRYSTALS-Kyber (PKE/KEM)** +- **CRYSTALS-Dilithium** +- **FALCON** +- **SPHINCS (Signature)** + +이 중 SPHINCS를 제외한 모든 알고리즘은 lattice-based이다. SPHINCS는 hash-based 알고리즘이다. \ No newline at end of file From 3ebd19d18db5563651846c4b537f34e5c9fbc64e Mon Sep 17 00:00:00 2001 From: yijun-lee Date: Sat, 20 Jul 2024 07:39:53 +0900 Subject: [PATCH 2/4] add LWE docs --- .../Learning with Errors(LWE).md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 content/Basic Cryptography/Learning with Errors(LWE).md diff --git a/content/Basic Cryptography/Learning with Errors(LWE).md b/content/Basic Cryptography/Learning with Errors(LWE).md new file mode 100644 index 0000000..e681612 --- /dev/null +++ b/content/Basic Cryptography/Learning with Errors(LWE).md @@ -0,0 +1,17 @@ +## Intuition + +$y = sx$인 직선을 고려하자. 여기서 $s$는 비밀 키이다. 이 직선 위의 점 $(a_i, b_i)$가 주어지면, 비밀 $s$를 쉽게 복원할 수 있다. Learning With Errors (LWE) 문제는 세 가지 조건을 추가하여 이 문제를 확장한 것이다: + +1. 유한체 $Z_q$ 위에서. + +2. $a_i$와 $s$는 벡터이다 ($s \cdot x$는 내적이다). + +3. 오류가 있는 직선 ($b_i = a_i \cdot s + e_i$). + +LWE는 몇 가지 격자 문제(예: GapSVP 및 SIVP)의 난이도를 가정할 때 계산하기 어렵다. + +## 정의 + +$q$가 소수이고 $n \in \mathbb{Z}_{>0}$라고 하자. $a_i \in \mathbb{Z}_q^n$는 균등한 랜덤 벡터 집합이고, $e_i \in \mathbb{Z}_q$는 작은 랜덤 미지수 집합이며, $s \in \mathbb{Z}_q^n$는 작은 미지수 벡터이고, $b_i = a_i \cdot s + e_i \in \mathbb{Z}_q$이다. 다항식 개수만큼의 쌍 $(b_i, a_i)$가 주어졌을 때, $s$를 찾아라. + +LWE의 보안은 $q$, $n$, $e$와 $s$의 분포에 의존한다. $q$가 작고, $n$이 크고, $e$와 $s$가 클수록 더 나은 보안을 제공한다. 보안을 측정하기 위해 lattice-estimator를 사용할 수 있다. \ No newline at end of file From 58997d749b9c6c179217ceb0187a1ac2c197e9b0 Mon Sep 17 00:00:00 2001 From: yijun-lee Date: Sat, 20 Jul 2024 07:40:46 +0900 Subject: [PATCH 3/4] Add RLWE docs --- .../Ring Learning with Errors(RLWE).md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 content/Basic Cryptography/Ring Learning with Errors(RLWE).md diff --git a/content/Basic Cryptography/Ring Learning with Errors(RLWE).md b/content/Basic Cryptography/Ring Learning with Errors(RLWE).md new file mode 100644 index 0000000..f5aff22 --- /dev/null +++ b/content/Basic Cryptography/Ring Learning with Errors(RLWE).md @@ -0,0 +1,21 @@ +## 정의 + +$q$가 소수이고 $\Phi(X) \in \mathbb{Z}_q[X]$는 $Z_q$ 위의 기약 다항식이라고 하자. $a_i(X) \in \mathbb{Z}_q[X]/\Phi(X)$는 균등한 랜덤 알려진 다항식 집합이고, $e_i(X) \in \mathbb{Z}_q[X]/\Phi(X)$는 작은 랜덤 미지수 다항식 집합이며, $s(X) \in \mathbb{Z}_q[X]/\Phi(X)$는 작은 미지수 다항식이고, $b_i(X) = a_i(X) \cdot s(X) + e_i(X) \in \mathbb{Z}_q[X]/\Phi(X)$이다. 다항식 개수만큼의 쌍 $(b_i, a_i)$가 주어졌을 때, $s$를 찾아라. +## RLWE를 사용한 Symmetric key cryptography 스킴 + +RLWE 샘플을 사용하여 [[Symmetric key cryptography]] 스킴을 정의할 수 있다. +### 암호화 (RLWE Encryption) + +메시지 $m \in R_q = \mathbb{Z}[X]/(X^N + 1)$가 주어졌을 때, $m$의 암호화는 다음과 같이 정의된다: + +$\text{Enc}(m) = (-as + e + m, a) \in R_q^2$ + +여기서 $a$는 균등 랜덤 다항식이고, $s$는 작은 비밀 다항식이며, $e$는 작은 오류 다항식이다. + +### 복호화 (RLWE Decryption) + +RLWE 암호문 $(b, a) \in R_q^2$가 주어졌을 때, $m$의 복호화는 다음과 같이 정의된다: + +$\text{Dec}(m) = b + a \cdot s$ + +암호화 스킴의 보안은 RLWE의 보안에서 비롯된다. \ No newline at end of file From 5f907e7c59050f69e8e7f2f2add439ef85be36a0 Mon Sep 17 00:00:00 2001 From: yijun-lee Date: Sat, 20 Jul 2024 07:41:42 +0900 Subject: [PATCH 4/4] Add MLWE docs --- .../Basic Cryptography/Module Learning with Errors(MLWE).md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 content/Basic Cryptography/Module Learning with Errors(MLWE).md diff --git a/content/Basic Cryptography/Module Learning with Errors(MLWE).md b/content/Basic Cryptography/Module Learning with Errors(MLWE).md new file mode 100644 index 0000000..6e72cc9 --- /dev/null +++ b/content/Basic Cryptography/Module Learning with Errors(MLWE).md @@ -0,0 +1,5 @@ +## 정의 +$\Phi$가 차수 $d$인 기약 다항식이라고 하자. $a \in (\mathbb{Z}_q[X]/\Phi(X))^k$는 균등 랜덤 다항식이고, $e \in \mathbb{Z}_q[X]/\Phi(X)$는 작은 오류 다항식이며, $s \in (\mathbb{Z}_q[X]/\Phi(X))^k$는 작은 비밀 다항식이다. 쌍 $(as + e, a)$는 MLWE 쌍이다. + +## Remarks on MLWE +[[Learning with Errors(LWE)]]는 $d = 1$인 MLWE이다. RLWE는 $k = 1$인 MLWE이다. NIST PQC 1차 라운드 수상자 중 유일한 PKE/KEM인 CRYSTALS-Kyber는 MLWE 기반 키 캡슐화 스킴이다. \ No newline at end of file