티스토리 뷰

728x90
반응형

 

TLS 클라이언트 라이브러리(libcurl, mbedTLS)에서 PQC 연동하기

이전 글에서는 OpenSSL 기반 서버에서 Kyber 및 Dilithium 같은 양자 내성 암호(PQC)를 적용해 TLS 키 교환과 하이브리드 인증서를 구성하는 방법을 다뤘습니다.

이번에는 클라이언트 측 라이브러리인 libcurlmbedTLS를 통해 PQC TLS 통신을 테스트하는 방법을 소개합니다. 실무에서는 REST API 호출, 백엔드 간 통신 등에서 이와 같은 클라이언트 TLS 연동이 매우 중요합니다.

1. libcurl + oqs-openssl 연동

✅ 기본 개념

libcurl은 OpenSSL 또는 다른 TLS 백엔드(NSS, GnuTLS, mbedTLS 등)를 사용할 수 있는 고수준 HTTP 라이브러리입니다. PQC 적용을 위해서는 OpenSSL 대신 oqs-openssl로 빌드된 libcurl이 필요합니다.

🔧 빌드 준비

git clone https://github.com/open-quantum-safe/openssl.git -b OQS-OpenSSL_1_1_1-stable
git clone https://github.com/open-quantum-safe/liboqs.git
git clone https://github.com/curl/curl.git

1️⃣ liboqs 설치

cd liboqs
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/liboqs ..
make -j$(nproc)
sudo make install

2️⃣ oqs-openssl 빌드

cd ../../openssl
./Configure linux-x86_64 --prefix=/opt/oqs-openssl --with-oqs=/opt/liboqs
make -j$(nproc)
sudo make install

3️⃣ curl 빌드

cd ../curl
./buildconf
./configure --with-ssl=/opt/oqs-openssl
make -j$(nproc)

📡 PQC 서버에 curl 요청

./src/curl https://localhost:4433 --ciphers OQS_KEM_default

주의: OQS cipher suites는 서버와 클라이언트 양쪽 모두 oqs-openssl 기반이어야 합니다.

2. mbedTLS에서 PQC 적용하기

✅ 지원 여부

mbedTLS는 현재 공식적으로 PQC를 기본 지원하지 않지만, CRYSTALS Kyber/Dilithium 구현을 직접 통합하거나 커스텀 키 교환 모듈을 삽입하여 테스트할 수 있습니다.

🔬 대안: mbedTLS + 외부 KEM wrapper

liboqs의 C API를 mbedTLS 내부 키 교환 함수에 끼워 넣는 방식으로 커스텀 TLS KEM 연동이 가능합니다.

📁 참고 구조 예시

mbedtls_ssl_handshake_client_step():
    ...
    if (key_exchange_algorithm == MBEDTLS_KEX_KYBER) {
        oqs_kem_encaps(&ciphertext, &shared_secret, peer_public_key);
        mbedtls_ssl_write_record(&ciphertext);
        ...
    }

이 방식은 공식적인 지원은 아니며, 연구/실험 목적의 포팅입니다.

3. 결론 및 정리

라이브러리 PQC 적용 설명
libcurl + oqs-openssl 완전한 실험 환경 가능 (Kyber, Dilithium)
mbedTLS ⚠️ liboqs 연동 필요 / 내부 확장 필요
GnuTLS, NSS PQC 미지원 (2025년 기준)
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
글 보관함
반응형