동적 허프만 인코더 + 실TLS 서버측 조사 (P4 보완)
개요
같은 날(2026-07-10) 오전 P2에서 만든 libs/gzip.한선(고정 허프만만) + 기존
crowny_tls.c(클라이언트 TLS만)의 두 갭을 보완하는 P4 임무:
- DEFLATE 동적 허프만 인코더(RFC1951 3.2.7) 추가 — 압축률 개선
- 실TLS 서버측 현황 조사(구현 아닌 조사 — 실현가능성 판정)
무엇을 했는지
1. 동적 허프만 인코더 (구현 완료)
libs/gzip.한선에 추가: 빈도통계 → 고전 허프만 트리(선형탐색 2-최소값 병합) →
canonical 코드 배정(RFC1951 3.2.2) → 코드길이 RLE(기호16/17/18) → 단일 동적 블록
(BTYPE=10) 기록. 길이제한(패키지-머지)은 미구현이나, 초과 시 기존 고정 허프만
경로(gzip압축_버퍼_고정로 개명해 보존)로 안전폴백해 항상 유효한 스트림 보장.
압축률: 74,452B corpus 기준 고정 허프만 72.1% → 동적 허프만 78.9%(zlib -6은 85.8%, 격차 13.7%p → 6.9%p로 절반 축소). 잔여 격차는 LZ77 해시체인 미구현(단일후보 탐색) 때문 — 허프만은 이미 근최적.
검증: 74KB 표준 gunzip -t/해제 byte-exact, 한선씨 자체 디코더 왕복 byte-exact, 엣지케이스 4종(빈입력/무반복랜덤/동일바이트반복/2바이트) 전부 gunzip 검증+byte-exact, HTTP gzip 예제(curl --compressed 실제 왕복) 정상, run_all 99/107 무회귀(베이스라인 동일, 회귀 없음).
VM 함정 신규 발견: 그리고/또는이 단락평가(short-circuit)가 아님 — 배열
인덱싱을 가드와 묶으면(동안 (idx<n 그리고 배열[idx]==값)) 가드 실패해도 배열접근이
실행돼 "배열 범위초과" 런타임 에러 발생(버퍼바이트읽기는 조용히 허용해 기존 코드는
증상 없었음). 동안+플래그 중첩 만약으로 분리해 수정. memory 등재 대상.
성능: 74KB 압축 13.65s / 해제 12.59s(합산 26.24s) — 이전 고정허프만 왕복 25.34s와 동급, 트리구성 오버헤드는 무시할 만함(비트 I/O 루프가 여전히 지배적 비용).
2. 실TLS 서버측 조사 (조사만, 구현 안 함)
crowny_tls.c 소스 확인: opcode 800~803 전부 kSSLClientSide만 사용, accept()/
kSSLServerSide/SSLSetCertificate/SecIdentityRef 사용 0건(전 리포지토리 grep
포함). 496~499(TLS_WRAP류)는 진짜 암호화 없는 시뮬레이션(핸들 오프셋 마킹만).
macOS SDK(SecureTransport.h) 확인 결과 kSSLServerSide/SSLSetCertificate는
존재(deprecated지만 기존 클라이언트 코드와 동일한 방식으로 사용 가능) — 즉
"불가능"이 아니라 "미배선" 상태. 기존 libs/게이트웨이TLS코어.한선이 이미
"한선씨/crownyc VM은 TLS 핸드셰이크를 네이티브로 종단 못 함 → stunnel/openssl
s_server에 위임"이라고 명문화해둔 것과 소스레벨로 일치 확인.
P3의 "순수 한선씨 RSA-2048 비현실적" 판정은 이 경로에 적용 안 됨 — 그건 한선씨로 RSA를 직접 구현할 때 얘기고, 이 경로는 Apple 네이티브 SecureTransport C 라이브러리(하드웨어가속)를 그대로 쓰므로 크립토 성능 병목 없음.
결론: 구현 자체는 현실적(C 60~100줄, 신규 opcode 2~3개, 반나절 규모) — 다만 이번 임무는 "C수정 필요라 범위밖" 명시 지시에 따라 실제 구현은 하지 않고 조사· 결론·필요작업만 문서화.
관련 파일
/Users/ef/CrownyOS/crownyc/libs/gzip.한선— 동적 허프만 인코더 추가(신규
gzip압축_버퍼, 기존 로직은 gzip압축_버퍼_고정로 개명·보존)
/Users/ef/CrownyOS/crownyc/pkg/libs/gzip.한선— 하드링크로 자동 동기 확인됨/Users/ef/CrownyOS/crownyc/docs/한선씨-P4보완-20260710/압축TLS검증.md— 상세 검증 로그/Users/ef/CrownyOS/crownyc/crowny_tls.c— 조사만(수정 안 함), 클라이언트 TLS만 확인/Users/ef/CrownyOS/crownyc/libs/게이트웨이TLS코어.한선— 기존 서버TLS 우회 설계 근거(22~28행)- 학습DB 등록:
gzip_동적허프만_인코더(crownycode-learn.sh add 완료, 별칭 gzip)
잔여 이슈
- LZ77 해시체인 미구현(슬롯당 후보 1개) — zlib 대비 잔여 압축률 격차(78.9% vs
- 패키지-머지(길이제한 허프만) 미구현 — 극단편중 빈도에서만 이론상 문제, 발생 시
gzip.rpn.한선동반 보류 —tools/high2rpn.sh가드클로즈 라벨 미방출 버그
feedback_rpn변환기_경로_high2rpn.md) 로 자동변환 실패, 고수준
버전만으로 컴파일·실행·검증 전부 통과.
- 실TLS 서버측 — 구현 시 C 수정 필요(현재 "C 소스 수정 금지 — libs/*.한선만"
그리고/또는비단락평가 VM 함정 — 배열인덱싱과 결합된 다른 기존 파일에도