고영향 AI
High-Impact AI
한국 AI 기본법에서 정의한 개념. 생명·신체·재산에 중대한 영향을 미칠 수 있는 AI 시스템. 고위험 AI와 유사한 규제 대상.
High-Impact AI
한국 AI 기본법에서 정의한 개념. 생명·신체·재산에 중대한 영향을 미칠 수 있는 AI 시스템. 고위험 AI와 유사한 규제 대상.
고영향 AI(High-Impact AI)는 한국 「인공지능 기본법」(AI 기본법)에서 정의한 개념으로, 사람의 생명·신체의 안전 또는 기본권에 중대한 영향을 미치거나 미칠 우려가 있는 인공지능을 말합니다. EU AI Act의 '고위험 AI(High-Risk AI)'와 유사한 개념이지만, 한국의 법적·사회적 맥락에 맞게 조정되었습니다.
AI 기본법은 2024년 12월 국회를 통과하여 2026년부터 시행될 예정입니다. 이 법은 AI 산업 진흥과 규제의 균형을 추구하며, 고영향 AI에 대해서는 별도의 관리 체계를 마련합니다. 과학기술정보통신부장관이 고영향 AI의 범위를 고시로 정하게 됩니다.
고영향 AI로 분류될 수 있는 영역에는 다음이 포함됩니다:
고영향 AI 개발·운영자는 투명성 확보, 위험 관리, 인간 감독 보장 등의 의무를 부담합니다. EU AI Act보다 상대적으로 유연한 접근을 취하지만, 사전 적합성 평가 등 핵심 규제 요소는 유사합니다. 기업들은 자사 AI 서비스가 고영향 AI에 해당하는지 사전에 검토해야 합니다.
| 구분 | 한국 AI 기본법 (고영향 AI) | EU AI Act (고위험 AI) |
|---|---|---|
| 분류 방식 | 고시 위임 (유연한 범위 조정) | 부속서 명시 (구체적 목록) |
| 시행 시기 | 2026년 예정 | 2024년 8월 (단계적 시행) |
| 적합성 평가 | 자체 평가 + 정부 검토 | 제3자 인증 + CE 마킹 |
| 제재 수준 | 과징금 (매출 기준) | 최대 3,500만 유로 또는 매출 7% |
| 투명성 의무 | 고지 의무, 설명 요청권 | 상세 문서화, 로깅 의무 |
| 인간 감독 | 최종 결정권 보장 | Human-in-the-loop 의무화 |
| 규제 접근 | 진흥과 규제의 균형 | 위험 기반 엄격 규제 |
※ 위 항목 중 하나라도 해당되면 고영향 AI 해당 여부를 면밀히 검토해야 합니다.
# 고영향 AI 사전 영향 평가 도구 (Python) from dataclasses import dataclass, field from enum import Enum from typing import List, Dict from datetime import datetime class ImpactLevel(Enum): LOW = "low" MEDIUM = "medium" HIGH = "high" CRITICAL = "critical" class ImpactCategory(Enum): LIFE_SAFETY = "생명·신체 안전" FUNDAMENTAL_RIGHTS = "기본권" LEGAL_STATUS = "법적 지위" ECONOMIC_IMPACT = "경제적 영향" VULNERABLE_GROUPS = "취약 계층" @dataclass class HighImpactAIAssessment: """한국 AI 기본법 기반 고영향 AI 평가 도구""" system_name: str system_description: str deployment_domain: str assessment_date: datetime = field(default_factory=datetime.now) impact_scores: Dict[ImpactCategory, ImpactLevel] = field(default_factory=dict) def assess_life_safety_impact(self, physical_interaction: bool, health_decisions: bool, safety_critical: bool) -> ImpactLevel: """생명·신체 안전 영향 평가""" score = 0 if physical_interaction: score += 3 # 물리적 상호작용 if health_decisions: score += 4 # 건강/의료 결정 if safety_critical: score += 5 # 안전 필수 시스템 level = self._score_to_level(score) self.impact_scores[ImpactCategory.LIFE_SAFETY] = level return level def assess_rights_impact(self, privacy_processing: bool, discrimination_risk: bool, autonomy_restriction: bool) -> ImpactLevel: """기본권 영향 평가""" score = 0 if privacy_processing: score += 3 # 개인정보 처리 if discrimination_risk: score += 4 # 차별 가능성 if autonomy_restriction: score += 3 # 자율성 제한 level = self._score_to_level(score) self.impact_scores[ImpactCategory.FUNDAMENTAL_RIGHTS] = level return level def assess_legal_impact(self, legal_decisions: bool, access_to_services: bool, contractual_effects: bool) -> ImpactLevel: """법적 지위 영향 평가""" score = 0 if legal_decisions: score += 5 # 법적 결정 영향 if access_to_services: score += 3 # 서비스 접근 영향 if contractual_effects: score += 2 # 계약 관계 영향 level = self._score_to_level(score) self.impact_scores[ImpactCategory.LEGAL_STATUS] = level return level def is_high_impact(self) -> bool: """고영향 AI 해당 여부 판단""" critical_categories = [ ImpactCategory.LIFE_SAFETY, ImpactCategory.FUNDAMENTAL_RIGHTS, ImpactCategory.LEGAL_STATUS ] for cat in critical_categories: if self.impact_scores.get(cat) in [ImpactLevel.HIGH, ImpactLevel.CRITICAL]: return True return False def _score_to_level(self, score: int) -> ImpactLevel: if score >= 8: return ImpactLevel.CRITICAL elif score >= 5: return ImpactLevel.HIGH elif score >= 3: return ImpactLevel.MEDIUM return ImpactLevel.LOW def generate_report(self) -> str: """평가 보고서 생성""" report = f""" ======================================== 고영향 AI 사전 영향 평가 보고서 ======================================== 시스템명: {self.system_name} 평가일자: {self.assessment_date.strftime('%Y-%m-%d')} 적용 분야: {self.deployment_domain} [영향 평가 결과] """ for category, level in self.impact_scores.items(): report += f" • {category.value}: {level.value.upper()}\n" is_high = self.is_high_impact() report += f""" [최종 판정] 고영향 AI 해당 여부: {'⚠️ 해당' if is_high else '✅ 비해당'} [권고 사항] """ if is_high: report += """ 1. AI 기본법 제XX조에 따른 사전 신고 필요 2. 투명성 보고서 작성 및 공개 3. 인간 감독 체계 구축 4. 정기적 위험 모니터링 실시 """ else: report += """ 1. 자율 규제 가이드라인 준수 권고 2. 정기적인 재평가 실시 (연 1회 이상) """ return report # 사용 예시 assessment = HighImpactAIAssessment( system_name="AI 채용 심사 시스템", system_description="이력서 분석 및 면접 평가 지원", deployment_domain="인사/채용" ) assessment.assess_life_safety_impact( physical_interaction=False, health_decisions=False, safety_critical=False ) assessment.assess_rights_impact( privacy_processing=True, discrimination_risk=True, autonomy_restriction=True ) assessment.assess_legal_impact( legal_decisions=True, access_to_services=True, contractual_effects=True ) print(assessment.generate_report())
# 고영향 AI 컴플라이언스 체커 from typing import List, Optional from dataclasses import dataclass from enum import Enum class ComplianceStatus(Enum): COMPLIANT = "준수" PARTIAL = "부분 준수" NON_COMPLIANT = "미준수" NOT_APPLICABLE = "해당 없음" @dataclass class ComplianceRequirement: requirement_id: str description: str legal_basis: str status: ComplianceStatus = ComplianceStatus.NON_COMPLIANT evidence: Optional[str] = None remediation: Optional[str] = None class HighImpactAIComplianceChecker: """한국 AI 기본법 고영향 AI 컴플라이언스 체커""" def __init__(self, system_name: str): self.system_name = system_name self.requirements: List[ComplianceRequirement] = [] self._initialize_requirements() def _initialize_requirements(self): """AI 기본법 기반 요구사항 초기화""" base_requirements = [ # 투명성 요구사항 ComplianceRequirement( requirement_id="TRANS-001", description="AI 시스템 사용 사실 고지", legal_basis="AI 기본법 제X조" ), ComplianceRequirement( requirement_id="TRANS-002", description="AI 의사결정 과정 설명 제공", legal_basis="AI 기본법 제X조" ), ComplianceRequirement( requirement_id="TRANS-003", description="학습 데이터 출처 기록 유지", legal_basis="AI 기본법 제X조" ), # 인간 감독 요구사항 ComplianceRequirement( requirement_id="HUMAN-001", description="인간 최종 결정권 보장", legal_basis="AI 기본법 제X조" ), ComplianceRequirement( requirement_id="HUMAN-002", description="AI 결정 이의신청 절차 마련", legal_basis="AI 기본법 제X조" ), # 위험 관리 요구사항 ComplianceRequirement( requirement_id="RISK-001", description="위험 평가 및 완화 계획 수립", legal_basis="AI 기본법 제X조" ), ComplianceRequirement( requirement_id="RISK-002", description="편향성 테스트 및 모니터링", legal_basis="AI 기본법 제X조" ), ComplianceRequirement( requirement_id="RISK-003", description="사고 대응 절차 마련", legal_basis="AI 기본법 제X조" ), # 데이터 품질 요구사항 ComplianceRequirement( requirement_id="DATA-001", description="학습 데이터 품질 관리 체계", legal_basis="AI 기본법 제X조" ), ComplianceRequirement( requirement_id="DATA-002", description="개인정보 처리 적법성 확보", legal_basis="개인정보보호법 연계" ), ] self.requirements = base_requirements def update_status(self, req_id: str, status: ComplianceStatus, evidence: str = None, remediation: str = None): """요구사항 준수 상태 업데이트""" for req in self.requirements: if req.requirement_id == req_id: req.status = status req.evidence = evidence req.remediation = remediation return def get_compliance_score(self) -> float: """컴플라이언스 점수 계산 (0-100)""" applicable = [r for r in self.requirements if r.status != ComplianceStatus.NOT_APPLICABLE] if not applicable: return 100.0 score_map = { ComplianceStatus.COMPLIANT: 1.0, ComplianceStatus.PARTIAL: 0.5, ComplianceStatus.NON_COMPLIANT: 0.0 } total = sum(score_map.get(r.status, 0) for r in applicable) return (total / len(applicable)) * 100 def get_gaps(self) -> List[ComplianceRequirement]: """미준수 항목 조회""" return [r for r in self.requirements if r.status in [ComplianceStatus.NON_COMPLIANT, ComplianceStatus.PARTIAL]] def generate_gap_report(self) -> str: """갭 분석 보고서 생성""" gaps = self.get_gaps() score = self.get_compliance_score() report = f""" ╔══════════════════════════════════════════════════════════╗ ║ 고영향 AI 컴플라이언스 갭 분석 보고서 ║ ╠══════════════════════════════════════════════════════════╣ ║ 시스템명: {self.system_name:<40}║ ║ 준수 점수: {score:.1f}% {'🟢' if score >= 80 else '🟡' if score >= 50 else '🔴':<37}║ ╚══════════════════════════════════════════════════════════╝ [미준수/부분준수 항목] """ for gap in gaps: status_emoji = "🔴" if gap.status == ComplianceStatus.NON_COMPLIANT else "🟡" report += f""" {status_emoji} [{gap.requirement_id}] {gap.description} 법적 근거: {gap.legal_basis} 현재 상태: {gap.status.value} """ if gap.remediation: report += f" 개선 방안: {gap.remediation}\n" return report # 사용 예시 checker = HighImpactAIComplianceChecker("AI 대출 심사 시스템") # 상태 업데이트 checker.update_status("TRANS-001", ComplianceStatus.COMPLIANT, evidence="서비스 이용약관에 AI 사용 고지 포함") checker.update_status("TRANS-002", ComplianceStatus.PARTIAL, remediation="설명 가능한 AI 모듈 도입 필요") checker.update_status("HUMAN-001", ComplianceStatus.COMPLIANT, evidence="최종 승인은 심사역이 수행") print(checker.generate_gap_report())
# 고영향 AI 위험 매트릭스 도구 from typing import List, Tuple from dataclasses import dataclass from enum import IntEnum class Likelihood(IntEnum): RARE = 1 # 거의 발생하지 않음 UNLIKELY = 2 # 발생 가능성 낮음 POSSIBLE = 3 # 발생 가능 LIKELY = 4 # 발생 가능성 높음 CERTAIN = 5 # 거의 확실 class Severity(IntEnum): NEGLIGIBLE = 1 # 미미 MINOR = 2 # 경미 MODERATE = 3 # 보통 MAJOR = 4 # 심각 CATASTROPHIC = 5 # 치명적 @dataclass class AIRisk: risk_id: str description: str category: str likelihood: Likelihood severity: Severity mitigation: str = "" @property def risk_score(self) -> int: return self.likelihood * self.severity @property def risk_level(self) -> str: score = self.risk_score if score >= 20: return "극심" elif score >= 15: return "높음" elif score >= 8: return "보통" elif score >= 4: return "낮음" return "미미" class AIRiskMatrix: """고영향 AI 위험 매트릭스""" def __init__(self, system_name: str): self.system_name = system_name self.risks: List[AIRisk] = [] def add_risk(self, risk: AIRisk): self.risks.append(risk) def get_high_priority_risks(self) -> List[AIRisk]: """높은 우선순위 위험 조회""" return sorted( [r for r in self.risks if r.risk_score >= 15], key=lambda x: x.risk_score, reverse=True ) def render_matrix(self) -> str: """위험 매트릭스 시각화""" matrix = [ [" " for _ in range(5)] for _ in range(5) ] # 위험을 매트릭스에 배치 for risk in self.risks: x = risk.likelihood - 1 y = 4 - (risk.severity - 1) current = matrix[y][x] if current == " ": matrix[y][x] = risk.risk_id else: matrix[y][x] = "*" # 다중 위험 표시 output = f""" ╔══════════════════════════════════════════════════════════╗ ║ {self.system_name} 위험 매트릭스 ║ ╚══════════════════════════════════════════════════════════╝ 심각도 ↑ 5 │ {matrix[0][0]:^6} │ {matrix[0][1]:^6} │ {matrix[0][2]:^6} │ {matrix[0][3]:^6} │ {matrix[0][4]:^6} │ 치명적 ├────────┼────────┼────────┼────────┼────────┤ 4 │ {matrix[1][0]:^6} │ {matrix[1][1]:^6} │ {matrix[1][2]:^6} │ {matrix[1][3]:^6} │ {matrix[1][4]:^6} │ 심각 ├────────┼────────┼────────┼────────┼────────┤ 3 │ {matrix[2][0]:^6} │ {matrix[2][1]:^6} │ {matrix[2][2]:^6} │ {matrix[2][3]:^6} │ {matrix[2][4]:^6} │ 보통 ├────────┼────────┼────────┼────────┼────────┤ 2 │ {matrix[3][0]:^6} │ {matrix[3][1]:^6} │ {matrix[3][2]:^6} │ {matrix[3][3]:^6} │ {matrix[3][4]:^6} │ 경미 ├────────┼────────┼────────┼────────┼────────┤ 1 │ {matrix[4][0]:^6} │ {matrix[4][1]:^6} │ {matrix[4][2]:^6} │ {matrix[4][3]:^6} │ {matrix[4][4]:^6} │ 미미 └────────┴────────┴────────┴────────┴────────┘ 1 2 3 4 5 → 발생 가능성 희박 낮음 보통 높음 확실 [범례] 🟢 미미(1-3) | 🟡 낮음(4-7) | 🟠 보통(8-14) | 🔴 높음(15-19) | ⚫ 극심(20+) """ return output def generate_mitigation_plan(self) -> str: """위험 완화 계획 생성""" plan = """ ╔══════════════════════════════════════════════════════════╗ ║ 위험 완화 계획 (우선순위순) ║ ╚══════════════════════════════════════════════════════════╝ """ sorted_risks = sorted(self.risks, key=lambda x: x.risk_score, reverse=True) for i, risk in enumerate(sorted_risks, 1): level_emoji = { "극심": "⚫", "높음": "🔴", "보통": "🟠", "낮음": "🟡", "미미": "🟢" }.get(risk.risk_level, "⚪") plan += f""" {i}. [{risk.risk_id}] {risk.description} {level_emoji} 위험 수준: {risk.risk_level} (점수: {risk.risk_score}) 📁 분류: {risk.category} 🛡️ 완화 방안: {risk.mitigation or '수립 필요'} """ return plan # 사용 예시: AI 채용 시스템 matrix = AIRiskMatrix("AI 채용 심사 시스템") matrix.add_risk(AIRisk( risk_id="R01", description="성별/연령 기반 차별적 판단", category="공정성", likelihood=Likelihood.LIKELY, severity=Severity.MAJOR, mitigation="편향성 감사 및 공정성 제약 조건 적용" )) matrix.add_risk(AIRisk( risk_id="R02", description="설명 불가능한 탈락 결정", category="투명성", likelihood=Likelihood.POSSIBLE, severity=Severity.MODERATE, mitigation="SHAP/LIME 기반 설명 생성 모듈 도입" )) matrix.add_risk(AIRisk( risk_id="R03", description="학습 데이터 개인정보 유출", category="프라이버시", likelihood=Likelihood.UNLIKELY, severity=Severity.CATASTROPHIC, mitigation="차분 프라이버시 적용 및 접근 통제" )) print(matrix.render_matrix()) print(matrix.generate_mitigation_plan())
"우리 AI 채용 시스템은 AI 기본법상 '고영향 AI'에 해당될 가능성이 높습니다. 2026년 시행 전까지 투명성 보고서와 위험 관리 체계를 갖춰야 합니다. 예산 약 X억 원과 6개월의 준비 기간이 필요합니다."
"EU AI Act의 '고위험 AI'와 달리 한국법은 고시 위임 방식이라 아직 구체적 범위가 확정되지 않았습니다. 과기정통부 고시를 주시하면서 보수적으로 대비하는 게 좋겠습니다."
"고영향 AI 규제에 대응하려면 모델 카드 생성, 의사결정 로깅, 설명 가능성 모듈 등 기술적 요구사항이 있어요. 지금부터 아키텍처에 반영해야 나중에 재작업을 피할 수 있습니다."
"고영향 AI의 핵심 판단 기준은 '사람에게 미치는 영향의 중대성'입니다. 단순 추천 시스템은 해당되지 않지만, 그 추천이 대출이나 보험 가입에 영향을 미친다면 고영향 AI가 될 수 있습니다."
"AI 기본법의 고영향 AI 대응 프로젝트를 리드한 경험이 있습니다. 영향 평가 프레임워크를 설계하고, 10개 AI 시스템의 분류 작업을 수행했습니다. 특히 채용 AI가 가장 까다로웠는데, 차별 위험과 투명성 요구사항을 동시에 충족해야 했기 때문입니다."
한국 AI 기본법의 고영향 AI와 EU의 고위험 AI는 유사하지만 동일하지 않습니다. 각각의 법률에 맞는 준수 체계가 필요합니다. EU 시장 진출 시 양쪽 규제를 모두 준수해야 합니다.
내부 직원에게만 영향을 미치는 AI(예: 인사 평가 AI, 업무 배정 AI)도 고영향 AI에 해당할 수 있습니다. 적용 대상을 협소하게 해석하지 마세요.
"구체적인 고시가 나올 때까지 기다리자"는 접근은 위험합니다. 법률 시행 전 준비 기간이 충분치 않으면 컴플라이언스 갭이 발생합니다.
고영향 AI 규제는 기술적 요구사항뿐 아니라 조직적·절차적 요구사항도 포함합니다. 거버넌스 체계, 인력 교육, 문서화 등도 함께 준비해야 합니다.
AI 시스템의 영향 범위를 사전에 평가하고, 보수적으로 분류하세요. 법률 시행 전에 투명성, 인간 감독, 위험 관리 체계를 구축하고, 과기정통부 고시를 주시하며 업데이트를 반영해야 합니다.
네덜란드 정부의 아동수당 사기 탐지 AI가 소수 민족과 저소득층을 부당하게 타겟팅하여 약 26,000 가정이 피해를 입었습니다. AI가 이중 국적자와 저소득층에게 더 높은 '사기 위험 점수'를 부여한 것으로 밝혀졌습니다. 많은 가정이 잘못된 판정으로 수당을 환수당하고 재정적 파탄에 이르렀습니다.
Amazon이 개발한 AI 채용 심사 도구가 여성 지원자에게 불리한 점수를 부여하는 것으로 밝혀졌습니다. 과거 10년간의 이력서 데이터로 학습한 결과, 남성 중심 IT 업계의 편향이 그대로 반영되었습니다. "여성"이라는 단어가 포함된 이력서(예: "여성 체스 클럽 회장")에 감점을 부여했습니다.
미국 법원에서 사용된 COMPAS(재범 위험 평가 AI)가 흑인 피고인에게 백인 대비 2배 높은 재범 위험 점수를 부여하는 것으로 ProPublica 조사에서 밝혀졌습니다. 이 점수는 보석, 형량, 가석방 결정에 영향을 미쳤습니다.
✅ 정답: C) AI 기반 대출 심사 시스템은 개인의 경제적 기회와 법적 지위에 중대한 영향을 미치므로 고영향 AI에 해당합니다. 반면 음악 추천, 이미지 필터, 날씨 예보는 개인의 기본권에 중대한 영향을 미치지 않습니다.
✅ 정답: B) 한국 AI 기본법은 고영향 AI의 구체적 범위를 법률이 아닌 과기정통부장관 고시로 위임합니다. 이는 기술 변화에 유연하게 대응하기 위한 방식이지만, EU AI Act의 부속서 명시 방식과 다릅니다.
✅ 정답: C) 소스 코드 전면 공개는 고영향 AI의 의무 사항이 아닙니다. 투명성 의무는 AI 사용 사실 고지, 의사결정 과정 설명 등을 의미하며, 영업 비밀인 소스 코드 공개까지 요구하지는 않습니다.