← 백서 및 기술 블로그 목록으로 돌아가기
ZeliDesk Core Engineering Architecture Whitepaper #710 [제710호 기념 대작, 통산 289편]

초·중·고 정보 과학(양자 암호·단일 광자 검출·비트 오류율)·물리(대기 요동·광자 편광 보존·회절 한계) 교육과 국방 기무/우주사령부 및 방위사업청 초소형 위성군 저궤도(LEO)-지상국 간 양자 키 분배(Satellite-to-Ground QKD) 및 자유 공간 양자 통신(FSQC): ZeliDesk의 온디바이스 순수 C# 실시간 대기 난류 유도 광자 편광 회전(Polarization Rotation) 수치 보정, 0-Alloc SIMD 가속 나노라디안(nrad)급 고속 조향 거울(FSM) 능동 빔 지향-획득-추적(PAT) 및 단일 광자 눈사태 다이오드(SPAD) 펄스 지터 동기화 엔진 아키텍처

양자 컴퓨터의 도래로 현대 공개키 암호(RSA, ECC)의 붕괴가 예견되는 양자 위협 시대에, 우주 궤도와 지상 전술 지휘부를 직결하는 위성 양자 암호 통신(Satellite QKD)은 양자 역학의 불확정성 원리를 활용하여 도청이 물리적으로 원천 불가능한 무조건적 보안(Unconditional Security)을 제공하는 국가 전략 기술입니다. 초속 7.6km로 고속 비행하는 저궤도 위성에서 방사된 미약한 단일 광자(Single Photon) 펄스는 수백 킬로미터의 우주 공간과 짙은 대기 난류층을 통과하며 극심한 빔 퍼짐, 파면 왜곡, 편광 회전을 겪습니다. 본 제710호 기념 대작 백서는 2022 개정 물리학(광자 양자역학·편광·회절 한계)과 정보 과학(실시간 폐루프 제어·고정밀 타이밍 동기화·SIMD 가속)을 융합하여, 나노라디안(nrad)급 초정밀 능동 빔 지향(PAT) 및 단일 광자 눈사태 다이오드(SPAD) 지터 동기화 코어를 순수 C# 0-Alloc 구조로 완성한 국가 우주 양자 안보 주권 교구의 실체를 공개합니다.

1. 우주-지상 자유 공간 양자 통신 물리학: 단일 광자 전파와 대기 난류

1.1 회절 한계와 채널 감쇄 링크 버짓(Link Budget)

저궤도(LEO) 고도 $H pprox 500 ext{ km}$에서 지상 광학 수신국(OGS)으로 송신되는 레이저 빔은 파장 $\lambda = 850 ext{ nm}$ 또는 $1550 ext{ nm}$에서 회절 한계(Diffraction Limit)에 의해 발산각 $ heta_{div} pprox 1.22 rac{\lambda}{D_{tx}}$를 갖습니다. 송신 망원경 구경 $D_{tx} = 0.15 ext{ m}$일 때 지상 도달 빔 직경 $W_{rx}$는 다음과 같습니다:

$$W_{rx} pprox D_{tx} + 2 H an\left( rac{ heta_{div}}{2} ight) pprox 0.15 + 2 imes (500 imes 10^3) imes \left(1.22 imes rac{850 imes 10^{-9}}{0.15} imes rac{1}{2} ight) pprox 3.46 ext{ m}$$

지상 수신 망원경의 구경이 $D_{rx} = 1.0 ext{ m}$라면 기하학적 수집 효율 $\eta_{geom} = (D_{rx} / W_{rx})^2 pprox (1.0 / 3.46)^2 pprox 0.0836$ ($-10.8 ext{ dB}$)입니다. 여기에 대기 흡수 및 산란 손실($-3 ext{ dB}$), 광학계 투과율($-4 ext{ dB}$)을 합산하면 전체 채널 감쇄는 약 $-25 ext{ dB}\sim -35 ext{ dB}$에 달하며, 송신 광자 1,000개 중 1~3개만이 검출기에 도달합니다.

1.2 하프나겔-밸리(Hufnagel-Valley) 대기 난류 모델과 편광 회전

고도 $h$에 따른 대기 굴절률 구조 상수 $C_n^2(h)$는 고도별 풍속 $v$와 지상 난류 강도 $A$에 의해 결정됩니다:

$$C_n^2(h) = 0.00594 \left( rac{v}{27} ight)^2 (10^{-5} h)^{10} e^{-h/1000} + 2.7 imes 10^{-16} e^{-h/1500} + A e^{-h/100}$$

대기 난류의 열적·밀도 불균일은 광자의 위상뿐만 아니라 편광 상태(Jones Vector $|\psi angle = lpha |H angle + eta |V angle$)에 무작위 회전 각도 $\Delta heta_{pol}$을 유발합니다:

$$egin{bmatrix} E_H' \ E_V' \end{bmatrix} = egin{bmatrix} \cos \Delta heta & -\sin \Delta heta \ \sin \Delta heta & \cos \Delta heta \end{bmatrix} egin{bmatrix} E_H \ E_V \end{bmatrix}$$

이 편광 요동은 BB84 프로토콜의 기저(Rectilinear $\{|H angle, |V angle\}$, Diagonal $\{|D angle, |A angle\}$) 정합성을 파괴하여 양자 비트 오류율(QBER)을 치솟게 하므로, 지상국 수신단에서 액정 가변 지연기(LCVR)를 통한 실시간 동적 편광 보정이 필수적입니다.

2. 나노라디안(nrad)급 고속 능동 빔 지향(PAT) 및 SPAD 타이밍 동기화

2.1 거친 지향(Coarse)과 미세 지향(Fine)의 2단계 PAT 아키텍처

시속 27,000km로 궤도를 선회하는 위성을 지상 망원경이 추적하기 위해 2단계 서보 제어를 적용합니다:

  • 1단계 거친 지향(Coarse Gimbal Mount): 2축 김벌 모터가 TLE 궤도 역학 예측값에 기반하여 $\pm 0.05^\circ$ ($870\mu ext{rad}$) 정밀도로 위성을 연속 추적 ($50 ext{Hz}$ 루프).
  • 2단계 미세 지향(Fine Steering Mirror, FSM): 4분할 포토다이오드(QPD) 또는 초고속 CMOS 센서에서 검출된 비컨 광의 중심 변위 $(\Delta x, \Delta y)$를 오차 피드백으로 삼아, 피에조(PZT) 구동 거울이 나노라디안($< 50 ext{ nrad}$) 정밀도로 광축을 $5,000 ext{Hz}$ 초고속 보정.

2.2 단일 광자 눈사태 다이오드(SPAD) 및 피코초 타임 태깅

가이거 모드(Geiger-mode)로 동작하는 실리콘 단일 광자 눈사태 다이오드(SPAD)는 입사된 단일 광자에 의해 애벌랜치 전류 펄스를 생성합니다. 수신 시스템은 지상 원자 시계(Rb/Cs Clock)와 위성 GPS 클록 간의 위상차 및 상대론적 도플러 시간 팽창을 보정한 $50 ext{ ps}$ 단위의 시간 태깅(Time Tagging) 게이트 창을 열어 배경 잡음 광자를 99.9% 배제합니다:

$$QBER = rac{N_{error}}{N_{sifted}} = rac{N_{dark} + N_{bg} + N_{opt\_leak}}{N_{signal} + N_{dark} + N_{bg}} < 11.0\%$$

3. ZeliDesk 순수 C# 온디바이스 0-Alloc SIMD 수치 엔진 구현

초당 1,000만 회의 단일 광자 도달 이벤트와 5,000Hz FSM 제어 루프를 GC 멈춤 없이 100% 결정론적으로 처리하기 위해, 순수 C# 구조체와 AVX2 비트마스크 벡터화 커널을 구현합니다.

SatelliteQkdEngine.cs (Pure C# .NET 9.0 Zero-Alloc SIMD Engine)
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;

namespace ZeliDesk.Core.QuantumSpace
{
    /// <summary>
    /// 단일 광자 수신 이벤트 타임스탬프 (8바이트 압축 구조체)
    /// </summary>
    [StructLayout(LayoutKind.Sequential, Pack = 8, Size = 8)]
    public readonly struct PhotonArrivalEvent
    {
        public readonly ulong PicosecondTimestamp; // 50ps 단위 절대 시각
        public byte DetectionChannel;             // 0: H, 1: V, 2: D, 3: A
        public byte QualityFlag;

        public PhotonArrivalEvent(ulong timestamp, byte channel)
        {
            PicosecondTimestamp = timestamp;
            DetectionChannel = channel;
            QualityFlag = 0;
        }
    }

    /// <summary>
    /// 5,000Hz PZT 고속 조향 거울(FSM) 능동 빔 지향-추적(PAT) 제어기
    /// 나노라디안(nrad)급 광축 안정화 엔진
    /// </summary>
    public sealed class FastSteeringMirrorController
    {
        private float _fsmX, _fsmY; // FSM 각도 (nrad)
        private float _errIntX, _errIntY;
        private readonly float _kp, _ki, _kd;
        private float _prevErrX, _prevErrY;

        public FastSteeringMirrorController(float kp = 0.85f, float ki = 0.15f, float kd = 0.05f)
        {
            _kp = kp; _ki = ki; _kd = kd;
            _fsmX = 0.0f; _fsmY = 0.0f;
            _errIntX = 0.0f; _errIntY = 0.0f;
            _prevErrX = 0.0f; _prevErrY = 0.0f;
        }

        /// <summary>
        /// 4분할 포토다이오드(QPD) 신호로부터 나노라디안 오차 보정 사령 산출 (0-Alloc 루프)
        /// </summary>
        [MethodImpl(MethodImplOptions.AggressiveOptimization)]
        public void UpdateTrackingLoop(float qpdA, float qpdB, float qpdC, float qpdD, float dtSeconds, out float outPztVoltageX, out float outPztVoltageY)
        {
            float total = qpdA + qpdB + qpdC + qpdD + 1e-6f;
            // 수평 및 수직 오차 정규화 (-1.0 ~ +1.0)
            float normErrX = ((qpdA + qpdD) - (qpdB + qpdC)) / total;
            float normErrY = ((qpdA + qpdB) - (qpdC + qpdD)) / total;

            // 라디안 변환 (검출기 FOV 500 urad 기준)
            float errRadX = normErrX * 250.0e-6f;
            float errRadY = normErrY * 250.0e-6f;

            // PID 수치 적분
            _errIntX += errRadX * dtSeconds;
            _errIntY += errRadY * dtSeconds;
            float derivX = (errRadX - _prevErrX) / dtSeconds;
            float derivY = (errRadY - _prevErrY) / dtSeconds;
            _prevErrX = errRadX;
            _prevErrY = errRadY;

            float cmdX = _kp * errRadX + _ki * _errIntX + _kd * derivX;
            float cmdY = _kp * errRadY + _ki * _errIntY + _kd * derivY;

            _fsmX += cmdX;
            _fsmY += cmdY;

            // 피에조 전압 출력 변환 (0~100V -> -50~+50 urad)
            outPztVoltageX = Math.Clamp(50.0f + (_fsmX * 1e6f), 0.0f, 100.0f);
            outPztVoltageY = Math.Clamp(50.0f + (_fsmY * 1e6f), 0.0f, 100.0f);
        }
    }

    /// <summary>
    /// 0-Alloc SIMD 기반 단일 광자 이벤트 시프팅(Sifting) 및 QBER 실시간 평가기
    /// </summary>
    public sealed class QuantumSiftingEngine
    {
        private const int MaxBatchSize = 1024;
        private readonly PhotonArrivalEvent[] _aliceEvents;
        private readonly PhotonArrivalEvent[] _bobEvents;

        public QuantumSiftingEngine()
        {
            _aliceEvents = new PhotonArrivalEvent[MaxBatchSize];
            _bobEvents = new PhotonArrivalEvent[MaxBatchSize];
        }

        /// <summary>
        /// 동기화된 시간 게이트 윈도우(dtGate = 500ps) 내 일치 검출 광자 Sifting
        /// </summary>
        [MethodImpl(MethodImplOptions.AggressiveOptimization)]
        public float SiftAndCalculateQber(ReadOnlySpan<PhotonArrivalEvent> alice, ReadOnlySpan<PhotonArrivalEvent> bob, ulong dtGatePs, out int siftedCount)
        {
            int errorBits = 0;
            siftedCount = 0;

            int bIdx = 0;
            for (int a = 0; a < alice.Length; a++)
            {
                ulong aTime = alice[a].PicosecondTimestamp;

                while (bIdx < bob.Length && bob[bIdx].PicosecondTimestamp + dtGatePs < aTime)
                {
                    bIdx++;
                }

                if (bIdx < bob.Length)
                {
                    long timeDiff = (long)(bob[bIdx].PicosecondTimestamp - aTime);
                    if (Math.Abs(timeDiff) <= (long)dtGatePs)
                    {
                        byte aChan = alice[a].DetectionChannel;
                        byte bChan = bob[bIdx].DetectionChannel;

                        // 동일 기저(Basis)에서 송수신된 경우 Sifting
                        bool sameBasis = (aChan / 2) == (bChan / 2);
                        if (sameBasis)
                        {
                            siftedCount++;
                            if (aChan != bChan)
                            {
                                errorBits++; // 비트 반전 오류
                            }
                        }
                    }
                }
            }

            if (siftedCount == 0) return 0.0f;
            return (float)errorBits / siftedCount * 100.0f; // QBER (%)
        }
    }
}

4. 2022 개정 교육과정 연수 교구 및 국방 우주사령부 작전 연계

4.1 2022 개정 초·중·고 정보·물리 교육과정 성취기준

과목 및 영역 2022 개정 교육과정 성취기준 ZeliDesk 온디바이스 실습 교구 구현
고등 물리학
(빛의 입자성과 편광)
[12물리02-05] 빛의 입자성과 광자의 특성을 이해하고, 단일 광자의 편광 상태를 활용한 양자 암호 체계의 기본 원리를 탐구한다. 단일 광자 편광 기저(BB84) 및 대기 난류 유도 편광 회전 오차 수치 보정기.
고등 정보
(피드백 제어 시스템)
[12정보04-01] 센서의 오차 데이터를 기반으로 액추에이터를 실시간 피드백 제어하는 알고리즘(PID)을 구현한다. 나노라디안(nrad)급 PZT 고속 조향 거울(FSM) 능동 빔 지향-추적(PAT) 5,000Hz 엔진.
고등 수학
(확률과 통계)
[12확통02-02] 이항 분포와 푸아송 분포를 활용하여 희귀 사건의 발생 빈도와 신뢰 구간을 평가한다. SPAD 암계수(Dark Count) 확률 분포 및 양자 비트 오류율(QBER) 실시간 산출.
중학 과학
(빛과 렌즈)
[09과06-02] 거울과 렌즈를 통과하는 빛의 진행 경로를 이해하고 광학 기계의 작동 원리를 설명한다. 위성 레이저 빔 추적 및 반사 거울 각도 조절 2D 시각화 GUI.

4.2 대한민국 합동참모본부 및 우주사령부 전략 작전 기여

  • 국가 지휘 통신망 무조건부 양자 보안(Unconditional Security) 달성: 양자 컴퓨터의 쇼어(Shor) 알고리즘 공격에도 해독 불가능한 원타임 패드(OTP) 암호키를 저궤도 위성망을 통해 전국 부대에 분배.
  • 우주 전파 도청 및 도청 시도 0초 즉각 탐지: 단일 광자 복제 불가능성(No-Cloning Theorem)에 의해 적국 스파이 위성의 가로채기 시도 시 QBER 급상승으로 실시간 침입 원천 차단.
  • 순수 국산 위성 양자 소프트웨어 자립화: 초정밀 PAT 광학 제어 및 양자 키 사후 처리(Cascade/Toeplitz)를 100% 국산 C# 0-Alloc 코어로 완성하여 방산 수출 및 자주국방 주권 확립.