공부/보안용어
양자 내성 암호화 - OpenSSL로 시작하는 양자 내성 암호화
-=HaeJuK=-
2025. 4. 10. 18:47
728x90
반응형
[개발자용] OpenSSL로 시작하는 양자 내성 암호화(PQC) 실습 – 리눅스 & 윈도우 대응
양자 컴퓨터 시대를 대비해 양자 내성 암호화(Post-Quantum Cryptography, PQC)에 대한 관심이 높아지고 있습니다. 특히, 미국 NIST가 표준화를 진행 중인 PQC 알고리즘들은 이제 단순한 연구 주제가 아니라 개발자들이 직접 코드에 적용 가능한 기술이 되었습니다.
이번 글에서는 리눅스/윈도우 환경에서 OpenSSL을 활용해 Kyber, Dilithium 등의 PQC 알고리즘을 실습하는 방법을 소개합니다.
1. 개발 환경 준비
✅ OpenSSL의 PQC 지원 현황
OpenSSL의 공식 릴리즈 버전에서는 PQC가 아직 기본으로 포함되어 있지 않지만, Open Quantum Safe (OQS) 프로젝트와 연계된 OpenSSL 버전에서는 Kyber, Dilithium 등 NIST PQC 알고리즘을 지원합니다.
- liboqs: PQC 알고리즘 구현 라이브러리
- oqs-openssl: PQC 지원이 추가된 OpenSSL fork
2. 설치 방법
📦 리눅스 (Ubuntu 기준)
sudo apt update
sudo apt install cmake gcc git libssl-dev
git clone --branch OQS-OpenSSL_1_1_1-stable https://github.com/open-quantum-safe/openssl.git oqs-openssl
git clone https://github.com/open-quantum-safe/liboqs.git
# Build liboqs
cd liboqs
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/liboqs ..
make -j$(nproc)
sudo make install
# Build oqs-openssl
cd ../../oqs-openssl
./Configure linux-x86_64 -lm --prefix=/opt/oqs-openssl --with-oqs=/opt/liboqs
make -j$(nproc)
sudo make install
📦 윈도우 (Visual Studio & vcpkg)
- liboqs 설치:
git clone https://github.com/microsoft/vcpkg.git
.\vcpkg\bootstrap-vcpkg.bat
.\vcpkg\vcpkg install liboqs
- OpenSSL + OQS는 직접 빌드 필요 (CMake 추천)
3. OpenSSL 명령어로 PQC 사용해보기
🔐 PQC 기반 키 생성 (Dilithium)
openssl req -new -newkey dilithium3 -keyout dilithium.key -out dilithium.csr
⚠️ 일반 OpenSSL에서는 동작하지 않으며 OQS OpenSSL에서 실행해야 합니다.
🔐 Kyber 기반 키 교환 테스트
openssl speed kyber512
4. C 코드에서 PQC 사용 예제
#include <openssl/evp.h>
#include <openssl/pem.h>
int main() {
EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_DILITHIUM3, NULL);
EVP_PKEY *pkey = NULL;
if (!ctx) return 1;
if (EVP_PKEY_keygen_init(ctx) <= 0) return 2;
if (EVP_PKEY_keygen(ctx, &pkey) <= 0) return 3;
FILE* fp = fopen("dilithium_private.pem", "w");
PEM_write_PrivateKey(fp, pkey, NULL, NULL, 0, NULL, NULL);
fclose(fp);
EVP_PKEY_free(pkey);
EVP_PKEY_CTX_free(ctx);
return 0;
}
5. Hybrids 방식 (전이중 호환)
실무에서는 기존 RSA/ECC와 PQC를 하이브리드로 병합해 사용하는 것이 유리합니다.
openssl speed p256_dilithium2
6. 실무 적용 시 고려사항
- 📦 라이브러리 크기: 일부 알고리즘은 키/서명 크기가 큽니다.
- ⚡ 성능 테스트:
openssl speed
로 벤치마크 가능 - 🌐 통신 규약: TLS 1.3에서 PQC 적용은 실험 단계
- 🔒 서드파티 인증: 현재 PQC 인증서를 발급하는 CA는 드뭅니다
✅ 마무리
양자 내성 암호화는 이제 실무 개발자가 직접 다뤄야 할 영역입니다. OpenSSL과 OQS 프로젝트를 통해 지금 바로 Kyber, Dilithium 등의 알고리즘을 실험해보세요.
다음 글에서는 TLS 환경에서 PQC 키 교환 구성, 하이브리드 인증서 생성 등을 소개할 예정입니다. 기대해주세요!
728x90