티스토리 뷰
728x90
반응형
TLS 클라이언트 라이브러리(libcurl, mbedTLS)에서 PQC 연동하기
이전 글에서는 OpenSSL 기반 서버에서 Kyber 및 Dilithium 같은 양자 내성 암호(PQC)를 적용해 TLS 키 교환과 하이브리드 인증서를 구성하는 방법을 다뤘습니다.
이번에는 클라이언트 측 라이브러리인 libcurl과 mbedTLS를 통해 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
링크
TAG
- C#.NET
- Build
- OpenSource
- C
- 서귀포블루버블
- C#
- 윈도우
- Sleep
- 블루버블
- CMake
- 스쿠버다이빙
- 현포다이브
- 성산블루버블
- ip
- 암호화
- 울릉도
- 블루버블다이빙팀
- Linux
- 서귀포
- 블루버블다이브팀
- 리눅스
- C# 고급 기술
- Windows
- PowerShell
- C++
- 제주도
- DLL
- 패턴
- 외돌개
- Thread
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형