Thanks to visit codestin.com
Credit goes to github.com

Skip to content

naturesh/p2p-pop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

graph

Peer‑to‑Peer Witness‑Based Proof‑of‑Presence for University Lecture Attendance (p2p-pop)

대학 강의 출석을 위한 동료 간 증인 기반 출석 증명 (Peer‑to‑Peer Witness‑Based Proof‑of‑Presence)


Introduction

대부분의 대학에서는 담당자가 직접 호명하는 방식, 혹은 대형 강의에서 QR 코드나 특정 코드를 입력하는 전자식 출석 방식을 사용합니다.
하지만 이런 방식은 다음과 같은 문제가 있습니다.

예를 들어 학생 A, B가 있을 때, A만 수업에 참여해도 A가 받은 QR 코드나 출석 코드를 B에게 그대로 공유해서 부정 출석을 할 수 있습니다.
이를 막기 위해 GPS 기반 출석 앱을 구성할 수 있지만, GPS는 조작 가능성이 높다는 문제가 있습니다.

이를 해결하기 위해, Peer‑to‑Peer Witness‑Based Proof‑of‑Presence for University Lecture Attendance 시스템을 제안합니다.
이 시스템에서는 특정 강의에 참여한 학생들의 휴대폰이 서로의 “증인(witness)”이 되어, 해당 학생이 실제로 강의실에 존재했다는 사실을 분산적으로 증명합니다.

이 구조는 다음과 같은 특징을 가집니다.

  • 외부 인터넷이나 와이파이 없이도 블루투스만으로 전자 출결이 가능함
  • 단순 코드 공유·GPS 조작보다 훨씬 신뢰도 높은 출석 결과 제공

Mechanism

출석을 진행하는 노드를 G (강의자/진행자), 각 학생 노드를 S1, S2, S3, S4라고 하겠습니다.
또한 모든 노드는 사전에 원격 서버에서 신원 인증을 완료했고, 신원–공개키(RSA) 매핑이 되어 있다고 가정합니다.

  1. G는 출석을 시작하기 위해 서버로부터 session_id를 발급받습니다.

  2. 각 학생 노드는 출석 화면에서 session_id를 QR 스캔 또는 코드 입력으로 받아옵니다.

  3. 각 학생 노드는 정해진 규칙에 따라 BLE Advertising을 통해 자신의 노드를 주변 기기에 브로드캐스트합니다.
    동시에 주변 노드를 스캔하고, 발견한 각 노드에게 다음 정보를 전송합니다.

    • D = {session_id, finder_uuid(송신자), target_uuid(수신자)}

    • 여기서 uuid는 다음과 같이 계산합니다.

      uuid = Hash(session_id + user_public_key)

    • 실제 전송 데이터는 위 (D)에 대해 개인키로 서명(또는 개인키로 암호화한 서명 형태) 한 값입니다.

  4. 블루투스를 통해 이 메시지를 받은 기기는, 서버에 등록된 공개키와 짝이 맞는 자신의 개인키로 동일한 (D)를 생성하고 서명합니다.
    최종적으로 각 노드에 저장되는 데이터는 다음과 같은 형태가 됩니다.

    • {상대방이 서명한 D, 내가 서명한 D}
  5. 각 노드는 이렇게 수집한 증거를 로컬 임시 저장소에 저장합니다.

  6. 출석 시간 동안 주변에서 발견되는 모든 노드에 대해 위 과정을 반복한 뒤, 세션이 끝나면 각 노드는 자신이 모은 로그를 서버에 전송합니다.

  7. 서버는 각 학생 노드로부터 수집된 로그를 공개키로 검증한 뒤, 유효한 서명을 기반으로 그래프/군집을 형성합니다.

  8. 진행자 노드 G 역시 3~5번 과정에 참여하므로, 서버는 다음과 같은 후처리를 수행합니다.

    • 사전에 정한 임계값(threshold)을 기준으로,
      • 엣지 수가 너무 적은 노드
      • 다른 노드로부터 인지된 횟수가 너무 적은 노드
        를 제거합니다.
    • 그 후, G가 포함된 연결 그래프(군집)를 찾고,
      이 군집에 속한 학생들을 “해당 강의실에 실제로 존재한 출석자”로 판정합니다.

각 노드는 “상대방(A)이 나(B)를 인지했다”는 증거 {상대방이 서명한 D, 내가 서명한 D}직접 서버에 전송합니다.
출석이라는 보상을 얻기 위해 이 프로세스를 스스로 수행해야 하기 때문에, 시스템 구동에 대한 자연스러운 참여 인센티브가 됩니다.


Vulnerabilities and Objectives

이 프로젝트는 다음과 같은 목표(Objectives)취약점(Vulnerabilities) 을 가집니다.

Objectives

  1. 소수 인원의 코드 공유(대리 출석) 방지

    Introduction에서 언급한 것처럼, QR 코드나 출석 코드를 소수 인원이 공유하는 경우를 상정합니다.
    이때, 서버에서 그래프 기반 후처리(임계값 기준으로 엣지 수가 적은 노드 제거) 를 수행하면,
    단순 코드 공유만 한 부정 출석자는 거대한 출석 군집에서 자연스럽게 배제됩니다.

  2. GPS 조작 기반 부정 출석 방지

    이 시스템은 GPS를 사용하지 않고 블루투스로 형성된 군집 정보만 사용합니다.
    따라서 GPS 스푸핑·조작은 출석 결과에 영향을 줄 수 없습니다.


Vulnerabilities

  1. 서버 신뢰와 신뢰 가능한 노드 수의 문제

    • 이 시스템은 “중앙 서버가 정해진 규칙대로만 동작한다”는 신뢰를 어느 정도 전제로 합니다.
    • 또한, 진짜 출석한 신뢰 가능한 노드 수가 많을수록 전체 무결성이 강해집니다.
      반대로, 노드 수가 너무 적거나 대부분이 악의적이면 조작 위험이 커집니다.
    • 노드가 매우 많고 밀집된 환경에서는, 노드 수를 $n$ 이라 할 때 연결 시도 횟수가 $n^2$ 수준까지 증가하는 성능 상 한계도 존재합니다.
  2. 블루투스 자체의 취약점

    • 이 시스템은 여러 기기와 자동으로 BLE 연결을 수차례 맺고 끊는 구조입니다.
    • 그 과정에서 익명의 노드와 자동 연결이 반복되므로, 예측 불가능한 BLE 취약점 공격 등의 위험이 존재합니다.

Extensibility

  1. 자체 서버를 Smart Contract로 대체

    현재 구조에서 서버의 역할은, 수집된 로그를 정해진 규칙에 따라 검증·필터링·군집화 하는 것입니다.
    이 부분을 온체인 Smart Contract 로 대체하면, 서버 운영자가 데이터를 조작할 여지를 줄이고 투명성을 높일 수 있습니다.

  2. 추가적인 사용 용도

    이 구조는 출석을 1차 목표로 설계되었지만, “특정 공간에 실제로 있었다”는 Proof-of-Presence 개념은 다양한 곳에 응용 가능합니다.

    • 위치 기반 리워드(팝업 스토어, 행사, 전시회, 페스티벌 등)
    • 오프라인 모임/세미나/스터디 인증
    • 특정 장소에 일정 시간 이상 머문 사용자에게만 주어지는 혜택 등
  3. 반복 사용을 통한 체류 추적

    이 프로토콜을 일정 주기로 반복 실행하면,

    • 한 노드가 이 장소를 언제 떠났는지
    • 다시 언제 돌아왔는지
      를 간접적으로 추정할 수 있습니다.
      이는 강의실뿐만 아니라 공간 활용 분석, 혼잡도 파악 등의 용도로도 확장될 수 있습니다.

Status

현재는 아이디어를 보완하고 정리하는 단계입니다.
앞으로 다음과 같은 계획을 가지고 있습니다.

  • Gomobile 등을 활용한 프로젝트 라이브러리 구조화 및 배포
  • 서버 구현 (또는 향후 Smart Contract 기반 대체 실험)
  • 데모 애플리케이션(모바일 앱) 제작

Related Work



아래 논문은 이 시스템을 구상·구현하는 과정에서 참고한 선행 연구/관련 작업입니다.
직접적인 파생이라기보다는, 유사한 문제를 다루는 레퍼런스로 인식하고 있습니다.

  • João Ferreira and Miguel Pardal. “Witness-based Location Proofs for Mobile Devices.”
    In Proceedings of the 17th IEEE International Symposium on Network Computing and Applications (NCA), 2018.

About

Peer‑to‑Peer Witness‑Based Proof‑of‑Presence for University Lecture Attendance, 대학 강의 출석을 위한 동료 간 증인 기반 출석 증명

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors