개요

Planet Security REST API를 사용하면 외부 웹사이트에서 Planet 로그인을 연동할 수 있습니다. 비밀번호 없이, 행성의 실시간 회전 상태 기반 상호 인증으로 로그인합니다.

Planet Security는 암호화가 아닌 일방향 상태 바인딩입니다. 비밀 자체를 생성하지 않으므로 탈취될 수 없습니다. 공격의 유일한 결과는 세션 실패입니다.

빠른 시작 (3단계)

1단계: 앱 등록

아래 양식으로 앱을 등록하면 API Key가 발급됩니다.

2단계: SDK 삽입 (가장 간단한 방법)

HTML에 스크립트 한 줄과 로그인 버튼을 추가하세요.

<!-- Planet Security SDK -->
<script src="https://planet.winnerbrothers.org/api/v1/sdk"></script>

<!-- 로그인 버튼 (자동 렌더링) -->
<div
  data-planet-login
  data-planet-key="YOUR_API_KEY"
  data-planet-theme="dark"
  data-planet-size="medium"
></div>

<!-- 또는 JavaScript로 직접 제어 -->
<script>
PlanetSecurity.init({
  apiKey: 'YOUR_API_KEY',
  onAuth: function(result) {
    if (result.success) {
      console.log('인증 성공:', result.username);
      console.log('행성 검증 정보:', result.planetVerification);
      // 서버에 result.requestId를 보내서 검증
    }
  }
});

// 버튼 렌더링
PlanetSecurity.renderButton('#login-container', {
  theme: 'dark',
  size: 'medium'
});
</script>

3단계: 서버에서 검증

콜백으로 받은 planet_token을 서버에서 검증합니다.

// 콜백 URL로 리다이렉트됨:
// https://myblog.com/auth/callback?planet_token=req_xxx&username=user1

// 서버에서 상태 확인
const response = await fetch(
  'https://planet.winnerbrothers.org/api/v1/auth/status?request_id=' + planet_token,
  {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY'
    }
  }
);

const data = await response.json();
// {
//   requestId: "req_xxx",
//   status: "authenticated",
//   username: "user1",
//   planetVerification: {
//     serverPlanetId: "...",
//     rotationAxis: { x, y, z },
//     angularSpeed: 42.5
//   }
// }

API 레퍼런스

인증 (Authentication)

POST/api/v1/apps/register

외부 앱 등록 (API Key 발급)

Request Body:
{ "name": "My App", "domain": "example.com", "callbackUrl": "https://..." }
Response:
{ "appId": "app_xxx", "apiKey": "pk_xxx" }
POST/api/v1/auth/init

인증 요청 생성 → loginUrl 반환

Header: Authorization: Bearer API_KEY
Request Body:
{ "redirectUrl": "https://..." }
Response:
{ "requestId": "req_xxx", "loginUrl": "...", "expiresAt": ... }
GET/api/v1/auth/status?request_id=req_xxx

인증 상태 확인

Header: Authorization: Bearer API_KEY
Response:
{ "status": "authenticated", "username": "user1", "planetVerification": {...} }

보안 토큰 (OTP 대체)

POST/api/v1/tokens/issue

일회용 보안 토큰 발행 (행성 상태 바인딩)

Header: Authorization: Bearer API_KEY
Request Body:
{ "planetId": "xxx", "purpose": "login-2fa", "ttlSeconds": 300 }
Response:
{ "tokenId": "tok_xxx", "planetStateHash": "...", "expiresAt": ... }
POST/api/v1/tokens/verify

토큰 검증 및 소비 (1회 사용)

Header: Authorization: Bearer API_KEY
Request Body:
{ "tokenId": "tok_xxx" }
Response:
{ "valid": true, "purpose": "login-2fa", "consumedAt": ... }
GET/api/v1/tokens/status?token_id=tok_xxx

토큰 상태 조회 (소비하지 않음)

Header: Authorization: Bearer API_KEY
Response:
{ "status": "active", "purpose": "login-2fa", "expiresAt": ... }

상태 서명 (전자서명 대체)

POST/api/v1/state/capture

행성의 현재 상태 캡처 (쿼터니언 + 좌표)

Header: Authorization: Bearer API_KEY
Request Body:
{ "planetId": "xxx" }
Response:
{ "stateHash": "...", "quaternion": {w,x,y,z}, "coordinates": {...} }
POST/api/v1/state/sign

데이터에 행성 상태 서명 (문서 인증)

Header: Authorization: Bearer API_KEY
Request Body:
{ "planetId": "xxx", "data": "계약서 내용..." }
Response:
{ "signatureId": "sig_xxx", "stateHash": "...", "quaternion": {...} }
POST/api/v1/state/verify

상태 서명 검증

Header: Authorization: Bearer API_KEY
Request Body:
{ "signatureId": "sig_xxx", "data": "계약서 내용..." }
Response:
{ "valid": true, "dataHashMatch": true, "signedAt": ... }

데이터 바인딩 (무결성 보장)

POST/api/v1/data/bind

데이터를 행성 상태에 바인딩

Header: Authorization: Bearer API_KEY
Request Body:
{ "planetId": "xxx", "data": "중요 데이터", "ttlSeconds": 3600 }
Response:
{ "bindingId": "bind_xxx", "stateHash": "...", "expiresAt": ... }
POST/api/v1/data/verify

바인딩된 데이터 무결성 검증

Header: Authorization: Bearer API_KEY
Request Body:
{ "bindingId": "bind_xxx", "data": "중요 데이터" }
Response:
{ "valid": true, "dataIntegrity": "intact" }

보안 메시징

POST/api/v1/messaging/send

상태 바인딩 메시지 전송

Header: Authorization: Bearer API_KEY
Request Body:
{ "senderPlanetId": "xxx", "receiverPlanetId": "yyy", "content": "..." }
Response:
{ "messageId": "msg_xxx", "stateHash": "..." }
POST/api/v1/messaging/verify

수신 메시지 검증

Header: Authorization: Bearer API_KEY
Request Body:
{ "messageId": "msg_xxx", "receiverPlanetId": "yyy" }
Response:
{ "valid": true, "content": "...", "verifiedAt": ... }
GET/api/v1/messaging/history?planet_id=xxx

메시지 이력 조회

Header: Authorization: Bearer API_KEY
Response:
{ "count": 10, "messages": [...] }

Planet Coin (디지털 화폐)

POST/api/v1/coin/wallet

코인 지갑 생성 (행성에 연결)

Header: Authorization: Bearer API_KEY
Request Body:
{ "planetId": "xxx", "owner": "민수" }
Response:
{ "walletId": "wal_xxx", "balance": 0 }
GET/api/v1/coin/wallet?wallet_id=xxx

지갑 조회 (잔액, 행성 정보)

Header: Authorization: Bearer API_KEY
Response:
{ "walletId": "...", "balance": 50000, "balancePCN": 5.0, "planetVolume": ... }
GET/api/v1/coin/wallet?list=true

앱의 전체 지갑 목록

Header: Authorization: Bearer API_KEY
Response:
{ "count": 5, "wallets": [...] }
POST/api/v1/coin/mint

코인 발행 (행성 상태 기반)

Header: Authorization: Bearer API_KEY
Request Body:
{ "walletId": "wal_xxx", "amount": 100.0, "description": "초기 발행" }
Response:
{ "txId": "tx_xxx", "txHash": "...", "newBalancePCN": 100.0 }
POST/api/v1/coin/transfer

코인 전송 (상호 행성 상태 검증)

Header: Authorization: Bearer API_KEY
Request Body:
{ "fromWalletId": "wal_a", "toWalletId": "wal_b", "amount": 5.0, "type": "purchase" }
Response:
{ "txId": "tx_xxx", "txHash": "...", "senderStateHash": "...", "receiverStateHash": "..." }
GET/api/v1/coin/ledger?wallet_id=xxx

거래 상태 원장 조회

Header: Authorization: Bearer API_KEY
Response:
{ "total": 20, "summary": { "totalMintedPCN": 100, ... }, "entries": [...] }
POST/api/v1/coin/verify

거래 검증

Header: Authorization: Bearer API_KEY
Request Body:
{ "txId": "tx_xxx" }
Response:
{ "valid": true, "txHash": "...", "verification": "..." }

Post-Quantum (양자 내성)

POST/api/v1/pq/keygen

ML-KEM-768 + ML-DSA-65 키쌍 생성

Header: Authorization: Bearer SECRET_KEY
Response:
{ "kem": { "algorithm": "ML-KEM-768", "publicKey": "...", "secretKey": "..." }, "dsa": { "algorithm": "ML-DSA-65", ... } }
POST/api/v1/pq/encapsulate

ML-KEM 키 캡슐화 (공유 비밀 생성)

Header: Authorization: Bearer SECRET_KEY
Request Body:
{ "recipientPublicKey": "base64..." }
Response:
{ "cipherText": "...", "sharedSecret": "256-bit base64" }
POST/api/v1/pq/decapsulate

ML-KEM 키 역캡슐화 (공유 비밀 복원)

Header: Authorization: Bearer SECRET_KEY
Request Body:
{ "cipherText": "base64...", "secretKey": "base64..." }
Response:
{ "sharedSecret": "256-bit base64" }
POST/api/v1/pq/sign

ML-DSA-65 양자 내성 전자서명

Header: Authorization: Bearer SECRET_KEY
Request Body:
{ "data": "서명할 데이터", "secretKey": "base64..." }
Response:
{ "signature": "base64...", "algorithm": "ML-DSA-65" }
POST/api/v1/pq/verify

ML-DSA-65 서명 검증

Header: Authorization: Bearer SECRET_KEY
Request Body:
{ "data": "...", "signature": "base64...", "publicKey": "base64..." }
Response:
{ "valid": true, "algorithm": "ML-DSA-65" }

HSM (Hardware Security Module)

GET/api/v1/hsm/status

HSM 상태 조회 (provider, mode, FIPS 준수)

Header: Authorization: Bearer SECRET_KEY
Response:
{ "provider": "Planet SoftHSM v1.0", "mode": "software", "fipsCompliant": true, "usedSlots": 5 }
POST/api/v1/hsm/store

HSM에 키 저장 (행성 파라미터/서명키)

Header: Authorization: Bearer SECRET_KEY
Request Body:
{ "label": "Planet-A", "keyType": "planet-params", "owner": "user1", "keyData": "..." }
Response:
{ "slotId": "hsm_xxx", "fingerprint": "abc123...", "status": "active" }
GET/api/v1/hsm/list?owner=user1

HSM 키 슬롯 목록 조회

Header: Authorization: Bearer SECRET_KEY
Response:
{ "count": 3, "slots": [{ "slotId": "...", "label": "...", "accessCount": 42 }] }

Galaxy Protocol (분산 행성 네트워크)

POST/api/v1/galaxy/nodes

Galaxy 노드 등록

Header: Authorization: Bearer SECRET_KEY
Request Body:
{ "name": "Seoul-1", "endpoint": "https://seoul.planet.io", "region": "ap-northeast-2" }
Response:
{ "nodeId": "node_xxx", "status": "active" }
GET/api/v1/galaxy/nodes

Galaxy 노드 목록

Header: Authorization: Bearer SECRET_KEY
Response:
{ "count": 3, "nodes": [{ "nodeId": "...", "name": "Seoul-1", "status": "active" }] }
POST/api/v1/galaxy/sync

행성 상태 노드 간 동기화

Header: Authorization: Bearer SECRET_KEY
Request Body:
{ "fromNodeId": "node_a", "toNodeId": "node_b", "planetId": "xxx" }
Response:
{ "syncId": "sync_xxx", "stateHash": "...", "verified": true }
GET/api/v1/galaxy/health

Galaxy 네트워크 헬스체크

Header: Authorization: Bearer SECRET_KEY
Response:
{ "totalNodes": 3, "activeNodes": 3, "networkStatus": "healthy" }

작동 원리

1
외부 사이트 → Planet API
인증 요청(init) → loginUrl 발급
2
사용자 → Planet 로그인 페이지
팝업/리다이렉트로 Planet 로그인. 3-Way 상호 인증 (행성 상태 예측 검증)
3
인증 완료 → 외부 사이트로 복귀
callbackUrl로 리다이렉트 + planet_token 전달
4
외부 서버 → Planet API 검증
planet_token으로 상태 확인 → 인증된 사용자 정보 + 행성 검증 데이터 수신
DEFENSE

방산 / 무기체계 / 위성 통신용 API

무기 시스템·UAV·UGV·위성·전술 통신망에 즉시 통합 가능한 OSF 기반 인증 API입니다. 명령 탈취·재전송·MITM·Hijack·시각 위조 공격을 단일 primitive로 차단합니다 (Theorems 1·2·6).

모든 엔드포인트는 secret key (sk_) 필수. 시연용 API key는 상단 1단계에서 즉시 발급. 1조+ PoC 계약은 official@winnerbrothers.org로 문의.

환경별 시각 윈도우 Δ (Theorem 6)

운영 환경에 맞는 environment 필드를 선택하면 서버가 자동으로 적정 Δ를 적용합니다. Δ 초과 시 명령은 자동 거부 (clock_skew_exceeds_delta).

environmentΔ활용 환경시각 동기 인프라
gps_disciplined100μsPTP 정밀 동기 (위성 페이로드, GNSS 수신기)PTP·GPS-disciplined OCXO
datacenter1ms단일 랙·MEC·GCS 데이터센터고정밀 NTP, 1588 PTP
lan10ms군 내부망·KJCCS·전술 LANNTP
field50ms전술 야전·드론 GCS·전자전 환경NTP fallback, GPS
satellite100msLEO/MEO/GEO 위성-지상국위성 GPS·온보드 클럭
space500ms심우주·GPS-denied (전자전 강한 재밍)관성 항법 + 자체 클럭

대표 활용 시나리오

1. UAV C2 (드론 명령 채널)
GCS ↔ 드론 (MAVLink). 모든 TAKEOFF/HOVER/RTL/LAND 명령에 OSF 서명. 적 EW 환경에서 명령 탈취·Replay 시 즉시 거부. 환경: field Δ=50ms.
2. 위성 ↔ 지상국
LEO 위성 TLM/TC 명령 채널. 명령 위변조·재전송 차단. GPS 기반 시각 동기로 Δ=100ms 운용. 환경: satellite. Forward Secrecy로 K 노출 시에도 과거 세션 보호.
3. UGV / 자율 지상 무인체계
EOD·자율 정찰 차량 원격 제어. CAN/이더넷 위 OSF 서명 layer. 환경: field Δ=50ms. CSPRNG K 격리 (HSM).
4. C4ISR / 합동지휘통제 (KJCCS)
K2/K9/함정/잠수함 명령 링크. Zero Trust 원칙(Continuous Verification) 기반. 인증서·PKI 무관, 양자 컴퓨터 위협(HNDL) 무력화 (Theorem 5, QROM, 79-bit PQ).
5. 보병 생체 인증 / 전술 무전
소형 디바이스 (Cortex-M4), 4KB RAM, <5ms 인증 지연. 휴대 무전기·헬멧 통신·드론 핸드헬드 GCS. 오프라인 동작 (NTP/GPS 시각 동기 필요).
6. V2X / 군용 차량 (K2/K9)
C-V2X 기반 차량 간 통신. ISO 21434 매핑. Brake/Throttle/Turret 명령 무결성 보장. 환경: datacenter(고정밀) ~ field.

빠른 시작 — curl 5분 통합

전체 8개 엔드포인트를 5분 안에 walk-through. 서버에 jq, openssl 필요.

# 1) 1·2단계 키 발급 — GCS와 무인체계 등록
GCS=$(curl -s -X POST $BASE/api/v1/defense/keygen \
  -H "Authorization: Bearer $SK" -H "Content-Type: application/json" \
  -d '{"callsign":"GCS-01","classification":"gcs","environment":"field"}')
UAV=$(curl -s -X POST $BASE/api/v1/defense/keygen \
  -H "Authorization: Bearer $SK" -H "Content-Type: application/json" \
  -d '{"callsign":"EAGLE-01","classification":"uav","environment":"field"}')

GCS_ID=$(echo "$GCS" | jq -r .device.deviceId)
UAV_ID=$(echo "$UAV" | jq -r .device.deviceId)

# 2) 3-Round 상호 인증 (Theorem 2 + 4)
INIT_PUB=$(openssl ecparam -name prime256v1 -genkey -noout | \
  openssl ec -pubout -outform DER 2>/dev/null | tail -c 65 | xxd -p | tr -d '\n')
INIT_HASH=$(echo -n "$INIT_PUB" | openssl dgst -sha256 | awk '{print $2}')
RESP_PUB=$(openssl ecparam -name prime256v1 -genkey -noout | \
  openssl ec -pubout -outform DER 2>/dev/null | tail -c 65 | xxd -p | tr -d '\n')

R1=$(curl -s -X POST $BASE/api/v1/defense/handshake/init \
  -H "Authorization: Bearer $SK" -H "Content-Type: application/json" \
  -d "{\"initiatorDeviceId\":\"$GCS_ID\",\"responderDeviceId\":\"$UAV_ID\",\"initEphemeralPubHash\":\"$INIT_HASH\"}")
HS_ID=$(echo "$R1" | jq -r .handshakeId)

curl -s -X POST $BASE/api/v1/defense/handshake/respond \
  -H "Authorization: Bearer $SK" -H "Content-Type: application/json" \
  -d "{\"handshakeId\":\"$HS_ID\",\"respondEphemeralPub\":\"$RESP_PUB\"}"

curl -s -X POST $BASE/api/v1/defense/handshake/finalize \
  -H "Authorization: Bearer $SK" -H "Content-Type: application/json" \
  -d "{\"handshakeId\":\"$HS_ID\",\"initEphemeralPub\":\"$INIT_PUB\"}"

# 3) 명령 서명 → 전송 → 검증 (Theorem 1, 6)
SIGN=$(curl -s -X POST $BASE/api/v1/defense/command/sign \
  -H "Authorization: Bearer $SK" -H "Content-Type: application/json" \
  -d "{\"handshakeId\":\"$HS_ID\",\"senderDeviceId\":\"$GCS_ID\",\"command\":\"TAKEOFF altitude=50m\"}")
BUNDLE=$(echo "$SIGN" | jq -c .signedCommand)

# 수신자(드론)가 검증 — 위조 advantage <= q_H * 2^-159
curl -s -X POST $BASE/api/v1/defense/command/verify \
  -H "Authorization: Bearer $SK" -H "Content-Type: application/json" \
  -d "$BUNDLE"
# {"valid":true,"advBound":"Adv ≤ q_H · 2⁻¹⁵⁹","skewMs":3,"deltaMs":50,...}

# 같은 번들 재전송 → Replay 거부
curl -s -X POST $BASE/api/v1/defense/command/verify -d "$BUNDLE" $H
# {"valid":false,"reason":"replay_detected"}

전체 스크립트: /samples/curl/quickstart.sh · 8개 시나리오 통합 테스트: scripts/defense-integration-test.mjs

Defense API 엔드포인트 (8개)

GET/api/v1/defense/status

capability matrix·환경별 Δ 테이블·정리(Theorem) 목록·플릿 통계 (Public Key OK)

Header: Authorization: Bearer pk_...
Response:
{
  "serverTime": 1714888888888,
  "capability": { "classicalSecurityBits": 159, "pqSecurityBits": 79, ... },
  "environments": [
    { "environment": "lan",       "deltaMs": 10,  ... },
    { "environment": "satellite", "deltaMs": 100, ... }
  ],
  "theorems": [
    { "id": 1, "name": "Authentication Unforgeability", "model": "ROM",  "bound": "Adv ≤ q_H · 2⁻¹⁵⁹" },
    { "id": 5, "name": "Post-Quantum (QROM)",           "model": "QROM", "bound": "79-bit PQ" },
    ...
  ],
  "fleet": { "totalDevices": 12, "activeDevices": 11, ... }
}
POST/api/v1/defense/keygen

K=(â, ω, p₀) 트리플 생성 · CSPRNG (FIPS 140-3) · HSM 격리 가정

Header: Authorization: Bearer sk_...
Request Body:
{
  "callsign": "EAGLE-01",
  "classification": "uav",      // gcs | uav | ugv | usv | satellite | weapon | sensor | soldier | vehicle
  "environment":   "field",     // gps_disciplined | datacenter | lan | field | satellite | space
  "ownerOrg": "LIG D&A",
  "hsmAttested": false          // production: true (HSM 증명 첨부)
}
Response:
{
  "success": true,
  "device": { "deviceId": "dev_xxx", "deltaMs": 50, ... },
  "capability": { "classicalSecurityBits": 159, "pqSecurityBits": 79, ... },
  "K": { "planetId": "...", "coordinates": {...}, "rotationAxis": {...}, ... }
}
POST/api/v1/defense/handshake/init

Round 1 — Initiator 시작 + ECDH ephem pub 해시 commit

Header: Authorization: Bearer sk_...
Request Body:
{
  "initiatorDeviceId": "dev_xxx",
  "responderDeviceId": "dev_yyy",
  "initEphemeralPubHash": "sha256(ECDH P-256 pub key hex)"
}
Response:
{
  "success": true,
  "handshakeId": "hs_xxx",
  "handshake": { "initNonce": "...", "initStateHash": "...", "initTimestamp": 1714..., "deltaMs": 50, ... }
}
POST/api/v1/defense/handshake/respond

Round 2 — Responder가 Initiator 상태해시 검증 후 자기 상태해시 + ECDH ephem pub 응답

Header: Authorization: Bearer sk_...
Request Body:
{
  "handshakeId": "hs_xxx",
  "respondEphemeralPub": "ECDH P-256 pub key hex"
}
Response:
{
  "success": true,
  "handshake": { "respondNonce": "...", "respondStateHash": "...", "respondTimestamp": ..., "status": "responded" }
}
POST/api/v1/defense/handshake/finalize

Round 3 — Initiator ECDH ephem pub 공개 (Round 1 commit 검증) → sessionKey 도출

Header: Authorization: Bearer sk_...
Request Body:
{
  "handshakeId": "hs_xxx",
  "initEphemeralPub": "ECDH P-256 pub key hex"
}
Response:
{
  "success": true,
  "sessionKey": "sha256 of full transcript",
  "deltaMs": 50,
  "forwardSecrecy": "ECDH P-256 ephemeral keys ensure past sessions remain confidential ..."
}
POST/api/v1/defense/command/sign

Sender(GCS) 가 명령 페이로드를 sessionKey HMAC-SHA-256 으로 서명

Header: Authorization: Bearer sk_...
Request Body:
{
  "handshakeId": "hs_xxx",
  "senderDeviceId": "dev_gcs",
  "command": "TAKEOFF altitude=50m"
}
Response:
{
  "success": true,
  "signedCommand": {
    "commandId": "cmd_xxx",
    "command": "TAKEOFF altitude=50m",
    "senderStateHash": "...",
    "nonce": "...",
    "timestamp": 1714...,
    "signature": "HMAC-SHA-256(sessionKey, command|stateHash|nonce|ts|cmdId)"
  }
}
POST/api/v1/defense/command/verify

Receiver(드론·위성) 가 수신 번들 검증 — 4단계 (replay·시간·상태해시·HMAC)

Header: Authorization: Bearer sk_...
Request Body:
{ ...full signedCommand bundle from /sign... }
Response:
{
  "valid": true,                        // 또는 false + reason
  "advBound": "Adv ≤ q_H · 2⁻¹⁵⁹ (Theorem 1, ROM, 159-bit classical / 79-bit PQ)",
  "deltaMs": 50, "skewMs": 3,
  "theorems": ["T1: Auth Unforgeability", "T2: Transcript Indistinguishability", "T6: Clock-Skew Robustness"]
}
POST/api/v1/defense/heartbeat

디바이스 liveness · 시각 동기 검증 · clock drift 사전 감지

Header: Authorization: Bearer sk_...
Request Body:
{
  "deviceId": "dev_xxx",
  "stateHash": "...", "nonce": "...", "timestamp": 1714...
}
Response:
{
  "healthy": true, "mode": "verified",
  "deltaMs": 50, "skewMs": 2,
  "serverTime": 1714...
}

8개 정식 정리 매핑 (ROM/QROM 게임-홉 증명)

Theorem의미Defense API에서 보장
1Authentication Unforgeability (ROM)위조 advantage ≤ q_H · 2⁻¹⁵⁹
2Transcript Indistinguishability네트워크 관측에서 K 추론 불가
3Mutual Auth Soundness한쪽 침해 시 반대쪽 격리 (Reveal 모델)
4Forward Secrecy (DDH)ECDH P-256 ephemeral · K 노출 시 과거 세션 보호
5Post-Quantum (QROM)Shor 무관 · 79-bit PQ · HNDL 양자 공격 차단
6Clock-Skew RobustnessΔ 윈도우 내 시각 동기 견고 · GPS 재밍 환경 fallback
7Partial State Leakage Resilience부분 노출 시에도 K 전체 미복구
8Multi-OSF Securitym=2 시 318-bit / 158-bit PQ (AES-256 초과)

방산 표준 적합성

FIPS 140-3 / ISO/IEC 19790
CSPRNG(crypto.randomBytes), HSM 격리(hsmAttested), 8 Theorem 정식 증명
ISO 21434 (차량 사이버 보안)
V2X / 군용 차량 (K2/K9) Brake/Throttle/Turret 명령 무결성
C-V2X / 3GPP TS 33.x
OBU/RSU 간 인증 + Replay 차단 + 시각 동기 검증
MIL-STD-188-220C (전술 무선)
시각 동기 호환 · 4KB RAM · Cortex-M4 즉시 통합

방산 PoC / 라이선스 문의

기술 보유사 / Technology Holder
Winner Brothers Group
발명자/출원인: 이정훈 (LEE JUNGHOON)
PCT WO 2025/127469 A1 (2025-06-19 공개)
비즈니스 문의
파일럿 2주 + 전면 계약 협의 가능
국내 영업 위임: (주)휴먼아이씨티

보안 참고

  • Planet API는 Orbital State Function (OSF) 기반 시간-동기식 상호 인증을 제공합니다 (특허 PCT WO 2025/127469).
  • 보안 수준: 159-bit 고전 / 79-bit 양자 — 위조 확률 상한 Adv ≤ qH · 2⁻¹⁵⁹ (수반 논문 Thm 1, ROM).
  • OSF primitive는 정수분해/이산로그 미사용 — Shor 알고리즘 무관 (Thm 5).
  • Transcript(해시 커밋)는 ROM 하 uniform 랜덤과 구별 불가능 (Thm 2) — 네트워크 관측으로 키 정보 누출 0.
  • Secret Key(sk_)는 반드시 서버 측에서만 사용하세요. 클라이언트 코드에 절대 노출 금지.