제5장
WIA-SOCIAL 공공문서 시스템은 안전하고 신뢰할 수 있는 문서 교환을 위해 다계층 네트워크 프로토콜 스택을 사용합니다. 각 계층은 특정한 책임을 가지며, 하위 계층의 서비스를 사용하여 상위 계층에 추상화된 인터페이스를 제공합니다.
| 계층 | 프로토콜 | 역할 | 보안 기능 |
|---|---|---|---|
| 응용 계층 | HTTPS, WebSocket | API 요청/응답, 실시간 알림 | TLS 1.3 암호화, 인증서 검증 |
| 표현 계층 | JSON, XML, PDF/A | 데이터 직렬화/역직렬화 | 스키마 검증, 디지털 서명 |
| 세션 계층 | OAuth 2.0, JWT | 인증 세션 관리 | 토큰 기반 인증, 세션 암호화 |
| 전송 계층 | TCP, QUIC | 신뢰성 있는 데이터 전송 | 흐름 제어, 혼잡 제어 |
| 네트워크 계층 | IPv4, IPv6 | 패킷 라우팅 | IPsec (선택적) |
문서 교환 시 사용되는 메시지는 헤더, 페이로드, 메타데이터로 구성됩니다. 메시지 형식은 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 | 처리 오류 보고 | 오류 코드, 오류 상세 정보 | 선택 |
여러 정부 기관 간의 문서 데이터 동기화는 일관성, 정확성, 실시간성을 보장해야 합니다. WIA-SOCIAL은 Event Sourcing과 CQRS 패턴을 사용하여 분산 시스템 간 동기화를 구현합니다.
| 이벤트 타입 | 발생 시점 | 전파 대상 | 우선순위 |
|---|---|---|---|
| DOCUMENT_CREATED | 새 문서 발급 | 중앙 저장소, 백업 시스템 | 높음 |
| DOCUMENT_UPDATED | 문서 정보 수정 | 모든 구독 기관 | 중간 |
| DOCUMENT_REVOKED | 문서 취소/무효화 | 모든 검증 노드 | 긴급 |
| DOCUMENT_EXPIRED | 문서 만료 | 발급 기관, 소유자 | 낮음 |
| VERIFICATION_REQUESTED | 제3자 검증 요청 | 발급 기관 | 중간 |
| ACCESS_GRANTED | 문서 접근 권한 부여 | 감사 시스템 | 낮음 |
// 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);
}
공공문서는 단일 장애점을 방지하고 높은 가용성을 보장하기 위해 분산 저장소에 보관됩니다. WIA-SOCIAL은 IPFS (InterPlanetary File System)와 분산 데이터베이스를 결합하여 사용합니다.
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);
문서의 발급, 수정, 검증 이력을 불변의 방식으로 기록하기 위해 블록체인 기술을 사용합니다. WIA-SOCIAL은 Hyperledger Fabric 또는 Ethereum을 사용하여 감사 추적 시스템을 구현합니다.
// 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;
}
}
문서 상태 변경, 검증 요청 등의 실시간 알림을 위해 WebSocket 프로토콜을 사용합니다.
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 실시간 통신 등을 통해 안전하고 신뢰할 수 있는 문서 교환 인프라를 구축할 수 있습니다. 다음 장에서는 보안 및 암호화 검증 메커니즘을 자세히 다룹니다.
한국 일반 인프라 — 과기정통부(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+개 한국 표준화 관련 법령이 운영된다.