티스토리 뷰

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)

    1. liboqs 설치:
git clone https://github.com/microsoft/vcpkg.git
.\vcpkg\bootstrap-vcpkg.bat
.\vcpkg\vcpkg install liboqs
  1. 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
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함