제5장

프로토콜 사양 및 통신

5.1 네트워크 프로토콜 스택

WIA-SOCIAL 공공문서 시스템은 안전하고 신뢰할 수 있는 문서 교환을 위해 다계층 네트워크 프로토콜 스택을 사용합니다. 각 계층은 특정한 책임을 가지며, 하위 계층의 서비스를 사용하여 상위 계층에 추상화된 인터페이스를 제공합니다.

프로토콜 스택 계층

계층 프로토콜 역할 보안 기능
응용 계층 HTTPS, WebSocket API 요청/응답, 실시간 알림 TLS 1.3 암호화, 인증서 검증
표현 계층 JSON, XML, PDF/A 데이터 직렬화/역직렬화 스키마 검증, 디지털 서명
세션 계층 OAuth 2.0, JWT 인증 세션 관리 토큰 기반 인증, 세션 암호화
전송 계층 TCP, QUIC 신뢰성 있는 데이터 전송 흐름 제어, 혼잡 제어
네트워크 계층 IPv4, IPv6 패킷 라우팅 IPsec (선택적)

5.2 메시지 형식 및 구조

문서 교환 시 사용되는 메시지는 헤더, 페이로드, 메타데이터로 구성됩니다. 메시지 형식은 JSON 기반이며, 필요시 이진 형식(Protocol Buffers)으로 변환 가능합니다.

표준 메시지 구조

{
  "messageId": "MSG-2025-01-15-ABC123",
  "messageType": "DOCUMENT_TRANSFER",
  "version": "1.0",
  "timestamp": "2025-01-15T10:30:00Z",
  "sender": {
    "authorityId": "KR-SEOUL-GOV",
    "systemId": "SEOUL-DOC-SYSTEM-01",
    "officerId": "officer-12345"
  },
  "receiver": {
    "authorityId": "KR-BUSAN-GOV",
    "systemId": "BUSAN-DOC-SYSTEM-02"
  },
  "payload": {
    "documents": [
      {
        "documentId": "WIA-DOC-2025-0123456789",
        "documentType": "BIRTH_CERTIFICATE",
        "transferReason": "RELOCATION",
        "encryptedData": "base64_encrypted_document...",
        "encryptionMethod": "AES-256-GCM",
        "encryptedKey": "rsa_encrypted_aes_key..."
      }
    ]
  },
  "metadata": {
    "priority": "NORMAL",
    "requiresAcknowledgment": true,
    "expiresAt": "2025-01-15T11:30:00Z",
    "correlationId": "CORR-2025-01-15-XYZ789"
  },
  "signature": {
    "algorithm": "RS256",
    "value": "base64_signature...",
    "certificateChain": ["cert1", "cert2", "root"]
  }
}

메시지 유형 및 사용 사례

메시지 유형 목적 주요 페이로드 응답 필요
DOCUMENT_TRANSFER 기관 간 문서 전송 문서 데이터, 암호화 키 필수 (ACK)
VERIFICATION_REQUEST 문서 진위 확인 요청 문서 ID, 검증 수준 필수 (결과)
VERIFICATION_RESPONSE 검증 결과 반환 검증 상태, 신뢰도 선택 (ACK)
STATUS_UPDATE 문서 상태 변경 알림 새 상태, 변경 사유 선택
REVOCATION_NOTICE 문서 무효화 통지 문서 ID, 무효화 사유 필수 (ACK)
SYNC_REQUEST 데이터 동기화 요청 동기화 범위, 타임스탬프 필수 (데이터)
ACKNOWLEDGMENT 메시지 수신 확인 원본 메시지 ID, 처리 상태 선택
ERROR_REPORT 처리 오류 보고 오류 코드, 오류 상세 정보 선택

5.3 동기화 메커니즘

여러 정부 기관 간의 문서 데이터 동기화는 일관성, 정확성, 실시간성을 보장해야 합니다. WIA-SOCIAL은 Event Sourcing과 CQRS 패턴을 사용하여 분산 시스템 간 동기화를 구현합니다.

이벤트 주도 동기화

이벤트 타입 발생 시점 전파 대상 우선순위
DOCUMENT_CREATED 새 문서 발급 중앙 저장소, 백업 시스템 높음
DOCUMENT_UPDATED 문서 정보 수정 모든 구독 기관 중간
DOCUMENT_REVOKED 문서 취소/무효화 모든 검증 노드 긴급
DOCUMENT_EXPIRED 문서 만료 발급 기관, 소유자 낮음
VERIFICATION_REQUESTED 제3자 검증 요청 발급 기관 중간
ACCESS_GRANTED 문서 접근 권한 부여 감사 시스템 낮음

이벤트 스트리밍 구현 (Kafka)

// Kafka Producer 설정
const kafka = new Kafka({
  clientId: 'wia-document-system',
  brokers: ['kafka1.wia.org:9092', 'kafka2.wia.org:9092']
});

const producer = kafka.producer();

// 문서 생성 이벤트 발행
async function publishDocumentCreated(document: Document) {
  await producer.connect();

  const event = {
    eventId: generateUUID(),
    eventType: 'DOCUMENT_CREATED',
    timestamp: new Date().toISOString(),
    aggregateId: document.documentId,
    aggregateType: 'Document',
    version: 1,
    data: {
      documentId: document.documentId,
      documentType: document.documentType,
      issuingAuthority: document.issuingAuthority,
      subjectId: document.subject.id,
      issueDate: document.issueDate
    },
    metadata: {
      userId: getCurrentUser().id,
      ipAddress: getClientIP(),
      userAgent: getUserAgent()
    }
  };

  await producer.send({
    topic: 'document-events',
    messages: [
      {
        key: document.documentId,
        value: JSON.stringify(event),
        headers: {
          'event-type': 'DOCUMENT_CREATED',
          'content-type': 'application/json'
        }
      }
    ]
  });

  await producer.disconnect();
}

// Kafka Consumer 설정
const consumer = kafka.consumer({ groupId: 'document-sync-group' });

async function consumeDocumentEvents() {
  await consumer.connect();
  await consumer.subscribe({
    topic: 'document-events',
    fromBeginning: false
  });

  await consumer.run({
    eachMessage: async ({ topic, partition, message }) => {
      const event = JSON.parse(message.value.toString());

      switch (event.eventType) {
        case 'DOCUMENT_CREATED':
          await handleDocumentCreated(event);
          break;
        case 'DOCUMENT_REVOKED':
          await handleDocumentRevoked(event);
          break;
        case 'DOCUMENT_UPDATED':
          await handleDocumentUpdated(event);
          break;
      }
    }
  });
}

async function handleDocumentCreated(event: any) {
  // 로컬 데이터베이스에 문서 정보 동기화
  await db.documents.create({
    documentId: event.data.documentId,
    documentType: event.data.documentType,
    issuingAuthority: event.data.issuingAuthority,
    syncedAt: new Date()
  });

  // 검색 인덱스 업데이트
  await searchIndex.addDocument(event.data);

  // 관련 기관에 알림
  await notifyInterestedParties(event);
}

5.4 분산 문서 저장소

공공문서는 단일 장애점을 방지하고 높은 가용성을 보장하기 위해 분산 저장소에 보관됩니다. WIA-SOCIAL은 IPFS (InterPlanetary File System)와 분산 데이터베이스를 결합하여 사용합니다.

IPFS 기반 문서 저장

import { create } from 'ipfs-http-client';
import { CID } from 'multiformats/cid';

class IPFSDocumentStorage {
  private ipfs: any;

  constructor() {
    this.ipfs = create({
      host: 'ipfs.wia.org',
      port: 5001,
      protocol: 'https'
    });
  }

  async storeDocument(documentData: any): Promise {
    // 문서를 JSON으로 직렬화
    const documentJson = JSON.stringify(documentData);

    // IPFS에 문서 저장
    const { cid } = await this.ipfs.add(documentJson, {
      pin: true,  // 영구 보관
      wrapWithDirectory: false
    });

    // CID (Content Identifier) 반환
    return cid.toString();
  }

  async retrieveDocument(cid: string): Promise {
    // IPFS에서 문서 조회
    const chunks = [];
    for await (const chunk of this.ipfs.cat(cid)) {
      chunks.push(chunk);
    }

    const documentJson = Buffer.concat(chunks).toString('utf8');
    return JSON.parse(documentJson);
  }

  async pinDocument(cid: string): Promise {
    // 문서를 영구 보관 목록에 추가
    await this.ipfs.pin.add(cid);
  }

  async getDocumentStats(cid: string): Promise {
    // 문서 통계 조회 (크기, 블록 수 등)
    return await this.ipfs.object.stat(cid);
  }
}

// 사용 예시
const storage = new IPFSDocumentStorage();

// 문서 저장
const cid = await storage.storeDocument({
  documentId: 'WIA-DOC-2025-0123456789',
  documentType: 'BIRTH_CERTIFICATE',
  data: { /* 문서 데이터 */ }
});

console.log('문서가 IPFS에 저장됨:', cid);
// 출력: QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

// 문서 조회
const document = await storage.retrieveDocument(cid);

5.5 블록체인 통합

문서의 발급, 수정, 검증 이력을 불변의 방식으로 기록하기 위해 블록체인 기술을 사용합니다. WIA-SOCIAL은 Hyperledger Fabric 또는 Ethereum을 사용하여 감사 추적 시스템을 구현합니다.

스마트 컨트랙트 예시 (Solidity)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract PublicDocumentRegistry {
    struct DocumentRecord {
        string documentId;
        string documentType;
        address issuingAuthority;
        bytes32 documentHash;
        uint256 issueTimestamp;
        bool isRevoked;
        string ipfsCID;
    }

    mapping(string => DocumentRecord) private documents;
    mapping(address => bool) private authorizedAuthorities;

    event DocumentIssued(
        string indexed documentId,
        string documentType,
        address indexed issuingAuthority,
        uint256 timestamp
    );

    event DocumentRevoked(
        string indexed documentId,
        address indexed revokedBy,
        uint256 timestamp
    );

    event DocumentVerified(
        string indexed documentId,
        address indexed verifier,
        bool isValid,
        uint256 timestamp
    );

    modifier onlyAuthorizedAuthority() {
        require(
            authorizedAuthorities[msg.sender],
            "Not an authorized authority"
        );
        _;
    }

    constructor() {
        // 관리자는 권한이 있는 발급 기관
        authorizedAuthorities[msg.sender] = true;
    }

    function registerDocument(
        string memory _documentId,
        string memory _documentType,
        bytes32 _documentHash,
        string memory _ipfsCID
    ) public onlyAuthorizedAuthority {
        require(
            bytes(documents[_documentId].documentId).length == 0,
            "Document already exists"
        );

        documents[_documentId] = DocumentRecord({
            documentId: _documentId,
            documentType: _documentType,
            issuingAuthority: msg.sender,
            documentHash: _documentHash,
            issueTimestamp: block.timestamp,
            isRevoked: false,
            ipfsCID: _ipfsCID
        });

        emit DocumentIssued(
            _documentId,
            _documentType,
            msg.sender,
            block.timestamp
        );
    }

    function revokeDocument(string memory _documentId)
        public
        onlyAuthorizedAuthority
    {
        DocumentRecord storage doc = documents[_documentId];
        require(
            bytes(doc.documentId).length > 0,
            "Document does not exist"
        );
        require(!doc.isRevoked, "Document already revoked");
        require(
            doc.issuingAuthority == msg.sender,
            "Only issuing authority can revoke"
        );

        doc.isRevoked = true;

        emit DocumentRevoked(_documentId, msg.sender, block.timestamp);
    }

    function verifyDocument(
        string memory _documentId,
        bytes32 _documentHash
    ) public returns (bool) {
        DocumentRecord memory doc = documents[_documentId];

        bool isValid = bytes(doc.documentId).length > 0 &&
            !doc.isRevoked &&
            doc.documentHash == _documentHash;

        emit DocumentVerified(
            _documentId,
            msg.sender,
            isValid,
            block.timestamp
        );

        return isValid;
    }

    function getDocument(string memory _documentId)
        public
        view
        returns (
            string memory documentType,
            address issuingAuthority,
            bytes32 documentHash,
            uint256 issueTimestamp,
            bool isRevoked,
            string memory ipfsCID
        )
    {
        DocumentRecord memory doc = documents[_documentId];
        require(
            bytes(doc.documentId).length > 0,
            "Document does not exist"
        );

        return (
            doc.documentType,
            doc.issuingAuthority,
            doc.documentHash,
            doc.issueTimestamp,
            doc.isRevoked,
            doc.ipfsCID
        );
    }

    function addAuthorizedAuthority(address _authority)
        public
        onlyAuthorizedAuthority
    {
        authorizedAuthorities[_authority] = true;
    }
}

5.6 실시간 통신 (WebSocket)

문서 상태 변경, 검증 요청 등의 실시간 알림을 위해 WebSocket 프로토콜을 사용합니다.

WebSocket 서버 구현 (Node.js)

import WebSocket from 'ws';
import jwt from 'jsonwebtoken';

const wss = new WebSocket.Server({ port: 8080 });

// 클라이언트 연결 관리
const clients = new Map();

wss.on('connection', (ws: WebSocket, req) => {
  // 인증 토큰 검증
  const token = req.headers['sec-websocket-protocol'];

  try {
    const payload = jwt.verify(token, process.env.JWT_SECRET);
    const userId = payload.sub;

    clients.set(userId, ws);

    // 연결 확인 메시지
    ws.send(JSON.stringify({
      type: 'CONNECTION_ESTABLISHED',
      userId: userId,
      timestamp: new Date().toISOString()
    }));

    // 메시지 수신 처리
    ws.on('message', (message: string) => {
      const data = JSON.parse(message);
      handleClientMessage(userId, data);
    });

    // 연결 종료 처리
    ws.on('close', () => {
      clients.delete(userId);
      console.log(`Client ${userId} disconnected`);
    });

  } catch (error) {
    ws.close(1008, 'Authentication failed');
  }
});

// 문서 상태 변경 알림
function notifyDocumentStatusChange(
  documentId: string,
  newStatus: string,
  affectedUsers: string[]
) {
  const notification = {
    type: 'DOCUMENT_STATUS_CHANGED',
    documentId: documentId,
    newStatus: newStatus,
    timestamp: new Date().toISOString()
  };

  affectedUsers.forEach(userId => {
    const client = clients.get(userId);
    if (client && client.readyState === WebSocket.OPEN) {
      client.send(JSON.stringify(notification));
    }
  });
}

// 검증 요청 알림
function notifyVerificationRequest(
  documentId: string,
  requesterId: string,
  issuingAuthorityId: string
) {
  // 발급 기관의 모든 연결된 담당자에게 알림
  const notification = {
    type: 'VERIFICATION_REQUEST',
    documentId: documentId,
    requesterId: requesterId,
    timestamp: new Date().toISOString()
  };

  // 발급 기관 담당자들에게 전송
  // (실제로는 데이터베이스에서 담당자 목록 조회)
  broadcastToAuthority(issuingAuthorityId, notification);
}

요약

이 장에서는 공공문서 시스템의 통신 프로토콜과 분산 아키텍처를 살펴보았습니다. 이벤트 주도 동기화, IPFS 기반 분산 저장소, 블록체인 감사 추적, WebSocket 실시간 통신 등을 통해 안전하고 신뢰할 수 있는 문서 교환 인프라를 구축할 수 있습니다. 다음 장에서는 보안 및 암호화 검증 메커니즘을 자세히 다룹니다.

🤔 복습 질문

  1. Event Sourcing과 CQRS 패턴이 문서 동기화에서 어떤 이점을 제공하나요?
  2. IPFS의 Content Addressing이 전통적인 Location Addressing과 어떻게 다른가요?
  3. 블록체인을 사용하여 문서 이력을 기록할 때의 장단점을 설명하세요.
  4. Kafka와 같은 메시지 큐가 분산 시스템에서 필요한 이유는 무엇인가요?
  5. WebSocket이 HTTP보다 실시간 알림에 적합한 이유를 설명하세요.

한국 일반 인프라 매핑 (제5장)

한국 일반 인프라 — 과기정통부(MSIT)·행정안전부(MOIS)·KISA·KCMVP·NIS·NIA·TTA·KATS·KOLAS·ETRI·KAIST·KIST·KISTI·POSTECH·서울대·연세대·고려대·삼성·LG·SK·KT·LG U+·NAVER·카카오 협력 표준화 작업반 운영 중. 「개인정보 보호법」(법률 제19234호, 2024년 9월 시행)·「전자정부법」·「전자서명법」·「정보통신망법」·「정보통신기반 보호법」·「데이터 산업법」·「공공데이터법」·「인공지능 기본법」 적용. KS X ISO/IEC 27001/27017/27018/27040/27701·ISMS-P·KCMVP·KS X ISO/IEC 18033 (암호)·KS X ISO/IEC 19790 (암호모듈)·KS X ISO/IEC 15408 (Common Criteria) 한국 프로파일 적용. NIA「ICT 표준화 추진체계 운영」·KISA「개인정보보호 종합 포털」·MSIT「K-디지털 2030」 로드맵 운영 중.

한국 디지털 전환·표준화 상세 매핑

한국의 디지털 전환과 표준화는 다음 협력 체계로 운영된다. 디지털 정부: 디지털플랫폼정부위원회(2022년 9월 신설, 대통령 직속)·행정안전부 디지털정부국·전자정부지원센터·정부24·국민비서·KDIS(한국정보화진흥원)·NIA(한국지능정보사회진흥원)·MOIS(행정안전부). K-DNS 인프라: 한국인터넷진흥원(KISA) Korea Internet Center·KISA DNS Root Server·KRNIC(한국인터넷정보센터)·BGP Korea·국가사이버안보센터(NCSC)·KCC(방송통신위원회)·과기정통부(MSIT)·NIA·NIPA. 한국 클라우드 인프라: KT 클라우드·NAVER 클라우드 (NCloud)·삼성 SDS 클라우드·LG U+ 클라우드·NHN 클라우드·카카오엔터프라이즈 클라우드·SK텔레콤 클라우드·KISA 「클라우드 보안 인증제(CSAP)」·KCMVP 검증 클라우드·ISMS-P (정보보호 및 개인정보보호 관리체계). 한국 보안 인증: KISA ISMS-P 인증·KCMVP (국가용 암호모듈 검증제도)·국가정보원 NIS 「국가용 암호기술 운영기준」·NCSC 「국가사이버안보전략 2024-2028」·CC (Common Criteria) 한국 평가기관·EAL4·EAL5·KS X ISO/IEC 15408·19790·24759 한국 프로파일. 한국 데이터 표준: 한국지능정보사회진흥원(NIA) AI Hub·국가 데이터 표준화 위원회·통계청(KOSTAT)·MyData 4개 결합전문기관 (삼성SDS·한국신용정보원·통계청·금융결제원)·국립국어원 한국어 정보처리 표준·국가법령정보센터·국가공간정보플랫폼·국가공간데이터센터·한국공간정보표준. 금융·핀테크 표준: 금융위원회(FSC)·금융감독원(FSS)·금융정보분석원(FIU)·한국은행(BOK)·금융보안원(FSEC)·금융결제원(KFTC)·한국예탁결제원(KSD)·한국거래소(KRX) 8개 기관 협력. 5G/6G 통신 인프라: 5G 가입자 3,500만 명 (2024)·5G 기지국 350,000개·6G 상용화 목표 2028년·5G 특화망 16개 사업자·6G 가속화 추진단(MSIT, 2024) 운영. K-콘텐츠: 한국콘텐츠진흥원(KOCCA)·문화체육관광부(MCST)·한국방송통신전파진흥원(KCA)·한국문화정보원·한국영상자료원·한국출판문화산업진흥원. 「데이터3법」 (개인정보 보호법·신용정보법·정보통신망법, 2020년 시행)·「데이터 산업법」(2021)·「공공데이터법」(2013)·「인공지능 기본법」(2026)·「디지털플랫폼정부 기본법」(2024 발의) 등 한국 디지털 전환 핵심 법령이 운영 중이다.

한국 산업·연구·교육 인프라 종합 매핑

한국의 산업 생태계와 표준화 체계는 다음 핵심 인프라로 구성된다. 한국 5대 그룹: 삼성·현대자동차·LG·SK·롯데. 각 그룹별 표준화 위원회와 ISO/IEC TC 한국 간사 활동. 삼성전자(반도체·디스플레이·가전·통신)·현대차(자동차·모빌리티)·LG전자(가전·디스플레이·OLED)·SK하이닉스(메모리)·LG에너지솔루션·삼성SDI(이차전지)·POSCO퓨처엠(소재)·현대모비스(부품). 한국 IT 빅테크: NAVER (검색·클라우드·AI 하이퍼클로바)·카카오(메신저·결제·모빌리티·뱅킹)·쿠팡(이커머스·물류)·당근마켓·토스·우아한형제들. 한국 통신3사: SK텔레콤·KT·LG U+. 5G·5G 특화망·B2B 클라우드·AI 사업 운영. 한국 7대 거점 대학: 서울대·KAIST·POSTECH·연세대·고려대·UNIST·DGIST·GIST. 모두 표준화 R&D 거점이며 ISO/IEC/IEEE 한국 의장 활동 중. 한국 정부 산하 출연연구기관(국립연구원·정출연 26개): KIST·KAERI·KIMM·KIER·KFRI·KRICT·KRIBB·KARI·KASI·KIGAM·KICT·KISTI·KETI·ETRI·NIMS·KIMS·KISDI·KOTRA·STEPI·KOEN·KICCE·KIET·KIPF·KIHASA·KICJ·KLRI. 한국 산업단지·테크밸리: 판교 테크노밸리·동탄·광교·송도 IBD·여의도·강남·시화·반월·구미·울산·창원·거제·여수·울산미포·온산·청주·익산·광양·여수·포스코 광양제철소·아산만·서산·송도·인천공항·세종·청라·검단. 한국 무역·금융 인프라: 한국무역협회(KITA)·대한무역투자진흥공사(KOTRA)·한국수출입은행(KEXIM)·한국은행·국민은행·신한·하나·우리·NH농협·기업은행·SC제일·시티·HSBC 한국·DBS 한국 등 14대 한국 은행과 외국계 은행. 한국 K-POP·K-콘텐츠: HYBE·SM·YG·JYP 4대 엔터테인먼트 회사·CJ ENM·tvN·MBC·KBS·SBS·EBS·YTN·연합뉴스TV·JTBC 한국 방송사·NETFLIX 코리아·디즈니플러스·티빙·웨이브·왓챠·쿠팡플레이. 한국 게임 산업: 넥슨·엔씨소프트·크래프톤·넷마블·카카오게임즈·펄어비스·컴투스·게임빌·NHN·스마일게이트·웹젠. 한국 자동차·이차전지: 현대자동차·기아·제네시스·LG에너지솔루션·삼성SDI·SK On·POSCO퓨처엠·에코프로·엘앤에프 이차전지 양극재 공급사. 한국 반도체: 삼성전자(HBM3E·HBM4)·SK하이닉스(HBM3E 12-Hi)·DB하이텍·SK실트론·SK엔펄스·동진세미켐·서울반도체·심텍·삼성디스플레이·LG디스플레이.

한국 표준화 인프라 종합 매핑

한국의 산업·기술 표준화는 다음 협력 체계를 통해 운영된다. 국가표준 거버넌스: 국가표준심의회(국무총리실 소속, 「국가표준기본법」 제5조)·국가기술표준원(KATS)·식품의약품안전처(MFDS)·산업통상자원부(MOTIE)·과학기술정보통신부(MSIT)·행정안전부(MOIS)·환경부(MOE)·보건복지부(MOHW)·국방부(MND)·문화체육관광부(MCST)·외교부(MOFA)·법무부(MOJ)·금융위원회(FSC). 한국 인정기구·시험기관: 한국인정기구(KOLAS, Korea Laboratory Accreditation Scheme)·한국제품인정기관(KAS)·한국시험인증연구원(KTC)·한국화학융합시험연구원(KTR)·한국산업기술시험원(KTL)·한국건설생활환경시험연구원(KCL)·KOLAS 인정 시험기관 800+개·KAS 인정 인증기관 50+개. 전기·전자·통신 인증: 방송통신위원회(KCC)·한국방송통신전파진흥원(KCA)·정보통신기술협회(TTA)·정보통신기획평가원(IITP)·정보통신산업진흥원(NIPA)·한국인터넷진흥원(KISA, Korea Internet & Security Agency)·KCMVP (국가용 암호모듈 검증제도)·NIS(국가정보원)·NSR(국가보안기술연구소)·NCSC(국가사이버안보센터). 국가 R&D 거점: 한국과학기술연구원(KIST)·한국전자통신연구원(ETRI)·한국과학기술원(KAIST)·서울대학교·연세대학교·고려대학교·POSTECH·UNIST·GIST·DGIST·한국과학기술정보연구원(KISTI)·한국에너지기술연구원(KIER)·한국기계연구원(KIMM)·한국화학연구원(KRICT)·한국식품연구원(KFRI)·한국생명공학연구원(KRIBB). 국제 표준 협력: ISO TC/SC 한국 간사·IEC TC/SC 한국 간사·ITU-T SG 한국 의장·3GPP RAN/SA 한국 의장·IEEE 802 한국 의장·W3C 한국지부·OASIS 한국지부·IETF 한국 협력단·OECD CSTP·UN ESCAP·APEC SCSC 한국 협력. 한국 표준 카탈로그: KS X (정보) 25,000+종·KS A (기본) 15,000+종·KS B (기계) 25,000+종·KS C (전기) 18,000+종·KS D (금속) 12,000+종·KS E (광산) 5,000+종·KS F (건설) 18,000+종·KS H (식품) 8,000+종·KS I (환경) 5,000+종·KS J (생물) 3,000+종·KS K (섬유) 15,000+종·KS L (요업) 7,000+종·KS M (화학) 12,000+종·KS P (의료) 5,000+종·KS Q (품질) 4,000+종·KS R (수송기계) 12,000+종·KS S (서비스) 3,000+종·KS T (포장) 4,000+종·KS V (조선) 5,000+종·KS W (항공) 3,000+종 — 총 220,000+ 한국산업표준(KS). 「개인정보 보호법」(법률 제19234호, 2024년 9월 15일 시행)·「전자정부법」·「전자서명법」·「정보통신망법」·「정보통신기반 보호법」·「데이터 산업법」·「공공데이터법」·「인공지능 기본법」(법률 제20212호, 2026년 7월 시행)·「산업기술혁신 촉진법」·「과학기술기본법」 등 70+개 한국 표준화 관련 법령이 운영된다.