Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
tls — QUIC용 TLS 1.3의 Zig 구현으로, 외부 의존성 없이 RFC 8446/9001을 준수하며 AEAD 보호, X.509 검증, 1000개 이상의 테스트를 갖추고 있습니다. | Kitploit
도구/GitLabGitLab/devnw/zig/tls
Network SecurityCryptography
GitLabdevnw/zig/tls

tls

QUIC용 TLS 1.3의 Zig 구현으로, 외부 의존성 없이 RFC 8446/9001을 준수하며 AEAD 보호, X.509 검증, 1000개 이상의 테스트를 갖추고 있습니다.

저장소 보기
1개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ztls

Zig로 작성된 QUIC용 TLS 1.3 구현체로, RFC 8446(TLS 1.3) 및 RFC 9001(QUIC-TLS)을 엄격히 준수합니다.

상태

항목정보
API 안정성프로덕션
Zig 버전0.16.0
플랫폼Linux, macOS, Windows

성능 참고

2ms 미만의 핸드셰이크 목표는 Ed25519 및 RSA-2048 인증서 구성에서 검증되었습니다. secp256r1(P-256) 워크로드는 현재 핸드셰이크당 2~3ms로 실행되며, 이는 업스트림 Zig stdlib 제한(PERF-229) 때문입니다. 전체 결정 기록은 ADR-0002를 참조하세요.

특징

✅ RFC 준수 - TLS 1.3(RFC 8446) 및 QUIC-TLS(RFC 9001) 구현 ✅ 제로 종속성 - Zig 표준 라이브러리만 사용 ✅ 상호 운용성 테스트 완료 - BoringSSL 및 OpenSSL에 대한 적합성 테스트 ✅ QUIC 네이티브 - QUIC 통합용으로 설계, 기존 레코드 계층 없음 ✅ 충분히 테스트됨 - 551개 단위 테스트 + RFC 테스트 벡터 + 449개 적합성 테스트

빠른 시작

root@kitploit:~
# 모든 항목 빌드 및 테스트
make

# 또는 수동으로
zig build
zig build test

요구 사항

  • Zig 0.16.0 또는 호환 버전
  • OpenSSL 개발 라이브러리 (선택 사항, 적합성 테스트용)

빌드

이 프로젝트는 유연성을 위해 Makefile과 build.zig를 모두 사용합니다:

Make 사용 (권장)

root@kitploit:~
# 모든 테스트 빌드 및 실행 (기본값)
make

# 빌드만
make build

# 특정 테스트 스위트 실행
make test-unit           # 단위 테스트
make test-vectors        # RFC 8446/9001 테스트 벡터
make test-conformance    # BoringSSL/OpenSSL 적합성 테스트 (libssl-dev 필요)

# 개발 워크플로우
make dev                 # 포맷 + 검사 + 단위 테스트
make clean               # 빌드 아티팩트 정리
make help                # 사용 가능한 모든 타겟 표시

zig build 사용

root@kitploit:~
# 라이브러리 빌드
zig build

# 모든 테스트 실행
zig build test

# 특정 테스트 스위트 실행
zig build test-vectors
zig build test-conformance  # OpenSSL 개발 라이브러리 필요

# 최적화 포함
zig build -Doptimize=ReleaseFast

테스트 결과

root@kitploit:~
Build Summary: All steps succeeded; 1000 tests passed ✅

포괄적인 테스트 커버리지:

  • 551개 단위 테스트 - RFC 하위 섹션 참조가 포함된 모듈별 테스트 (총 553개, 2개 건너뜀)
  • 449개 적합성 테스트 - BoringSSL 및 OpenSSL 동등성 테스트
    • 암호화 작업(HKDF, AEAD, 서명)
    • X.509 인증서 검증 및 체인 구축
    • 고급 X.509 확장(OCSP, CRL, AIA, 이름 제약, 정책)
    • TLS 1.3 프로토콜 준수(확장, 핸드셰이크 흐름)
    • 성능 벤치마크(지연 시간 <2ms, 메모리 <100KB)
    • 보안 테스트(퍼징, 입력 검증)
    • 양자 이후 알고리즘 준비(파싱 전용)

총: 1000개 테스트 - RFC 준수, 암호화 동등성 및 프로덕션 준비 상태 보장

프로젝트 구조

root@kitploit:~
src/
├── lib.zig               # 메인 라이브러리 진입점
├── tls13/                # TLS 1.3 핸드셰이크 상태 머신 (모듈화됨)
├── tls13_full.zig        # 전체 TLS 1.3 메시지 파싱
├── key_schedule.zig      # HKDF 기반 키 유도
├── record.zig            # 레코드 계층 및 AEAD 연산
├── x509.zig              # 인증서 파싱 및 검증
├── sig.zig               # 서명 검증
├── asn1.zig              # ASN.1 DER 디코더
├── alert.zig             # TLS 경고 프로토콜
├── entropy.zig           # 실패-폐쇄 RNG 헬퍼 (SEC-074)
├── zero_rtt.zig          # 0-RTT 지원
└── quic_*.zig            # QUIC 통합 인터페이스

tests/
├── rfc8446_vectors.zig        # RFC 테스트 벡터
├── boringssl_conformance.zig  # BoringSSL 동등성 테스트
└── openssl_conformance.zig    # OpenSSL 적합성 테스트

사용 예시

root@kitploit:~
const std = @import("std");
const tls = @import("ztls");

pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();

    // TLS 컨텍스트 구성
    const config = tls.Config{
        .allocator = gpa.allocator(),
        .role = .client,
        .supported_cipher_suites = &.{.TLS_AES_128_GCM_SHA256},
        .supported_groups = &.{.x25519},
        .alpn_protocols = &.{"h3"},
    };

    // 콜백 설정
    const callbacks = tls.Callbacks{
        .on_secret_available = mySecretCallback,
        .on_handshake_complete = myHandshakeCallback,
    };

    // TLS 컨텍스트 초기화
    var ctx = try tls.Context.init(config, callbacks);
    defer ctx.deinit();

    // QUIC에서 들어오는 CRYPTO 프레임 처리
    try ctx.processCrypto(crypto_data);
}

아키텍처

설계 원칙

  1. 상호 운용성 우선 - 실제 QUIC 구현(quic-go, quinn, msquic)과의 호환성을 위해 표준 TLS 1.3 형식을 자동 감지 및 지원
  2. RFC 기반 개발 - 모든 구현 블록은 관련 RFC 섹션을 인용
  3. 외부 종속성 제로 - Zig stdlib 기본 요소만 사용

주요 구성 요소

  • 키 스케줄 - std.crypto.kdf.hkdf를 사용한 HKDF 기반 키 유도
  • AEAD 보호 - AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305
  • 인증서 검증 - SNI 일치 및 유효성 검사가 포함된 X.509 파싱
  • 서명 검증 - ECDSA (P-256, P-384), RSA-PSS, Ed25519

적합성 테스트

이 프로젝트에는 업계 표준 TLS 구현과의 호환성을 보장하기 위한 포괄적인 적합성 테스트가 포함되어 있습니다:

BoringSSL 적합성

  • HKDF-Extract 및 HKDF-Expand 동등성
  • QUIC 초기 비밀 유도 (RFC 9001)
  • AEAD 암호 호환성
  • 경고 코드 매핑

OpenSSL 3.x 적합성

  • EVP API 호환성
  • 암호 스위트 가용성
  • 해시 함수 동등성
  • 키 업데이트 절차

적합성 테스트 실행:

root@kitploit:~
# 먼저 OpenSSL 개발 라이브러리 설치
make install-deps  # OS 자동 감지

# 적합성 테스트 실행
make test-conformance

관찰 가능성

ztls는 옵트인 OpenTelemetry 시임을 제공합니다. -Dwith_otel=true 빌드 플래그가 설정되면 라이브러리는 TLS 핸드셰이크당 정확히 하나의 스팬(스팬 이름: "TLS handshake")을 내보내며, 완료 시 다음 의미론적 규칙 속성이 첨부됩니다:

  • tls.role -- "client" 또는 "server"
  • tls.protocol.version -- "1.3" (ztls의 경우 항상)
  • tls.cipher_suite -- 협상된 암호 (예: TLS_AES_128_GCM_SHA256)
  • network.protocol.name -- "tls"
root@kitploit:~
# 기본 빌드: otel 심볼 없음, 오버헤드 제로.
zig build test

# 활성화 빌드: 핸드셰이크당 하나의 스팬, OTLP 기본값(http://localhost:4318) 또는
# OTEL_* 환경 변수로 지정된 주소를 통해 내보내짐.
zig build test -Dwith_otel=true

시임은 지연 종속성 뒤에 게이트되어 있으므로 otel 패키지는 플래그가 켜져 있을 때만 가져옵니다. TracerProvider를 설치하려는 애플리케이션 진입점 코드는 ztls.observability_init.Otel.init을 호출한 다음 installGlobals()를 호출해야 합니다. 전체 호스트 애플리케이션 부트스트랩에 대해서는 업스트림 otel 통합 레시피(otel/docs/integration/RECIPE.md)를 참조하세요.

문서

  • BUILD_SYSTEM.md - 상세 빌드 시스템 문서
  • CONFORMANCE_TESTS.md - BoringSSL/OpenSSL 호환성 테스트 문서
  • CLAUDE.md - 프로젝트 개요 및 AI 지원 컨텍스트
  • RFC 참조 - 모든 코드에 RFC 섹션 인용 포함

개발

root@kitploit:~
# 빠른 개발 반복
make dev

# 코드 포맷
make fmt
# 또는
zig fmt src/ tests/

# 구문 검사
make check

# 클린 빌드
make clean build

구현 상태

✅ 완료됨

  • TLS 1.3 핸드셰이크 상태 머신
  • HKDF 키 스케줄 (RFC 8446 §7, RFC 9001 §5.1)
  • AEAD 레코드 보호 (AES-GCM, ChaCha20-Poly1305)
  • X.509 인증서 파싱 및 검증
  • 서명 검증 (ECDSA, RSA-PSS, Ed25519)
  • 경고 프로토콜
  • 0-RTT 재생 방지
  • QUIC 통합 인터페이스

🚧 향후 작업

  • HKDF-Expand-Label 래퍼 (테스트 벡터에서 추적됨)
  • OCSP 스테이플링 및 SCT 지원
  • 전체 인증서 체인 검증
  • 추가 암호 스위트 (AES-256-GCM-SHA384, AES-CCM)
  • 핸드셰이크 후 인증
  • stdlib X.509가 안정화되면 마이그레이션

기여

기능 추가 시:

  1. 소스 파일에 단위 테스트 포함
  2. 모든 프로토콜 로직에 RFC 섹션 인용 추가
  3. RFC 준수에 영향을 미치는 경우 통합 테스트 업데이트
  4. 암호화 작업에 대한 적합성 테스트 추가
  5. 문서 업데이트

라이선스

Apache-2.0 라이선스 - 자세한 내용은 LICENSE를 참조하세요.

참조

  • RFC 8446 - TLS 1.3
  • RFC 9001 - QUIC Transport TLS
  • RFC 9369 - QUIC Version 2
  • RFC 5280 - X.509 Certificates
  • RFC 7301 - ALPN

Zig 0.16.0으로 빌드 | TLS 1.3 | QUIC 네이티브 | RFC 준수

도구 다운로드