부정학습, 왜 근절이 어려운가
원격훈련의 가장 큰 과제는 학습자가 실제로 교육에 참여했는지를 증명하는 것입니다. 오프라인 교육에서는 강사가 직접 확인할 수 있지만, 온라인 환경에서는 기술적 수단에 의존할 수밖에 없습니다.
부정학습은 단순한 편법이 아닙니다. HRD-Net 보고 기준에 미달하면 훈련비 환수, 과정 인정 취소, 심한 경우 기관 지정 취소까지 이어질 수 있습니다. 기관의 책임이 학습자 개인의 행위에까지 미치기 때문에, 시스템 차원의 방지 체계가 필수입니다.
부정학습의 4가지 유형
유형 1: 배속 재생
동영상 교육 콘텐츠를 2배속, 4배속으로 재생하여 실제 학습 시간보다 빠르게 진도를 올리는 방식입니다.
감지 방법
브라우저의 playbackRate 속성을 실시간으로 모니터링합니다. HTML5 Video API의 ratechange 이벤트를 감지하면, 즉시 재생을 일시정지하고 1배속으로 복원합니다. 개발자 도구를 통한 우회 시도에 대비하여, 서버 사이드에서도 심박 간격과 콘텐츠 재생 위치를 교차 검증합니다.
예를 들어, 10초 간격으로 심박이 전송되는데 콘텐츠 재생 위치가 20초씩 증가한다면, 배속 재생이 의심됩니다.
유형 2: 탭 전환 (화면 이탈)
동영상을 재생해 놓고 다른 탭이나 다른 프로그램으로 전환하여 실제로는 학습하지 않는 방식입니다.
감지 방법
브라우저의 Page Visibility API를 활용합니다. document.visibilityState가 hidden으로 변경되면 탭 이탈로 판정합니다.
- 이탈 즉시: 영상 일시정지
- 이탈 시간 기록: 서버에 이탈 시작/종료 타임스탬프 전송
- 이탈 구간: 학습 시간에서 자동 제외
- 반복 이탈: 3회 이상 시 경고 메시지 표시, 5회 이상 시 학습 세션 종료
추가로 window.blur 이벤트를 병행 감시하여, 브라우저 자체를 최소화하거나 다른 애플리케이션으로 전환하는 경우도 포착합니다.
유형 3: 자리 이탈
로그인 후 영상을 재생해 놓고 자리를 비우는 방식입니다. 탭은 활성 상태이므로 탭 이탈 감지로는 잡히지 않습니다.
감지 방법
이 유형은 두 가지 방법으로 대응합니다.
첫째, 학습 중 재인증입니다. 일정 시간 간격(예: 30분)으로 간단한 인증 팝업을 표시합니다. 학습자가 일정 시간 내에 응답하지 않으면 학습을 일시정지하고, 미응답 구간은 학습 시간에서 제외합니다.
둘째, 마우스/키보드 활동 감지입니다. 브라우저에서 사용자 입력 이벤트가 장기간 없는 경우를 보조 지표로 활용합니다. 단, 이 방법은 동영상 시청 중에는 입력이 없는 것이 자연스러우므로, 재인증과 병행하여 판단합니다.
유형 4: 대리 수강
본인이 아닌 다른 사람이 대신 학습하는 방식입니다. 가장 적발이 어렵고, 제재도 가장 무거운 유형입니다.
감지 방법
- 로그인 시 본인 인증 (휴대폰 인증 또는 공동인증서)
- 동일 계정 동시 접속 차단
- IP 주소 및 접속 환경 변화 모니터링
- 학습 중 재인증 시 본인 확인 요소 포함
10초 심박(Heartbeat)의 원리
심박은 부정학습 감지의 핵심 인프라입니다. 학습자의 브라우저가 10초마다 서버에 보내는 상태 보고로, 다음 정보를 포함합니다:
심박 패킷 구성:
- 학습자 ID
- 과정/콘텐츠 ID
- 현재 재생 위치 (초 단위)
- 브라우저 탭 상태 (active/hidden)
- 재생 속도 (playbackRate)
- 타임스탬프 (서버 시간 기준)
서버는 이 심박 데이터를 실시간으로 분석합니다:
| 검증 항목 | 정상 범위 | 이상 판정 |
|---|---|---|
| 심박 간격 | 9~11초 | 15초 이상 누락 |
| 재생 위치 변화 | 9~11초 증가 | 20초 이상 증가 (배속 의심) |
| 재생 속도 | 1.0 | 1.0 초과 |
| 탭 상태 | active | hidden 상태에서 재생 |
| 연속 누락 | 0~1회 | 3회 이상 연속 누락 |
심박이 3회 이상 연속 누락되면 학습을 자동 일시정지하고, 해당 구간은 학습 시간에서 제외합니다. 이 규칙은 일시적인 네트워크 지연은 허용하되, 의도적인 이탈은 차단하도록 설계되어 있습니다.
부정학습 유형별 감지 체계 요약
| 유형 | 1차 감지 | 2차 검증 | 조치 |
|---|---|---|---|
| 배속 재생 | playbackRate 이벤트 | 심박 재생 위치 교차 검증 | 일시정지 + 1배속 복원 |
| 탭 전환 | Page Visibility API | window.blur 이벤트 | 일시정지 + 구간 제외 |
| 자리 이탈 | 재인증 팝업 미응답 | 입력 이벤트 부재 | 학습 중단 + 구간 제외 |
| 대리 수강 | 본인 인증 | 재인증 + 접속 환경 분석 | 세션 종료 + 기록 무효화 |
DPU 감사 로그: 기록의 무결성 보장
부정학습을 감지하는 것만으로는 충분하지 않습니다. 감지 기록 자체가 신뢰할 수 있어야 합니다. "이 학습자가 이 시점에 부정학습을 시도했고, 시스템이 이렇게 대응했다"는 기록이 사후에 조작되지 않았음을 증명해야 합니다.
크로노젠 LMS는 DPU(Decision Proof Unit) 시스템을 통해 모든 학습 기록과 부정학습 감지 이벤트에 SHA-256 해시 체인을 연결합니다.
해시 체인의 작동 방식
- 첫 번째 기록(Genesis)이 생성되면 해당 내용의 해시값을 계산합니다
- 두 번째 기록은 자신의 내용과 첫 번째 기록의 해시값을 합쳐 새로운 해시를 생성합니다
- 이후 모든 기록이 이전 기록의 해시를 참조하여 체인을 형성합니다
중간에 어떤 기록이라도 변경되면 그 이후의 모든 해시값이 달라지므로, 위변조가 즉시 발각됩니다.
감사 로그에 기록되는 이벤트
- 학습 시작/종료
- 심박 전송 (10초 단위)
- 탭 이탈/복귀
- 배속 시도 감지
- 재인증 요청/응답
- 부정학습 판정 및 조치
- 학습 시간 계산 결과
모든 이벤트는 append-only(추가 전용) 방식으로 저장됩니다. 삭제나 수정이 불가능하며, 해시 체인으로 순서와 무결성이 보장됩니다.
기관이 해야 할 일, 하지 않아도 되는 일
부정학습 방지 체계를 SaaS로 도입하면, 기관의 역할은 달라집니다.
기관이 해야 할 일:
- 과정별 부정학습 방지 정책 결정 (재인증 간격, 경고 횟수 등)
- 부정학습 적발 시 학습자 대응 프로세스 수립
- 정기적인 부정학습 현황 리포트 확인
SaaS가 처리하는 일:
- 심박 모니터링 인프라 운영
- 브라우저 호환성 관리 및 감지 모듈 업데이트
- 감사 로그 저장 및 무결성 보장
- HRD-Net 규정 변경 시 감지 기준 자동 업데이트
- 감사 대응 데이터 추출
다음 단계
부정학습 방지는 기술의 문제이지, 교육 기관이 직접 개발해야 할 영역이 아닙니다. 중요한 것은 학습자에게 양질의 교육을 제공하는 것이고, 규정 준수와 부정학습 방지는 플랫폼이 담당해야 합니다.
크로노젠 LMS는 위에서 설명한 모든 부정학습 감지 기능과 DPU 감사 로그를 기본 제공합니다. 현재 운영 중인 과정의 부정학습 방지 체계를 점검하고 싶다면, 크로노젠 홈페이지에서 데모를 신청해 주십시오.