이더리움 기반 동형암호 기술 전자 익명 투표 시스템
- CSS 25.4%
- JavaScript 22.3%
- Python 21.8%
- HTML 16.1%
- Solidity 14.4%
| contracts | ||
| Database_API | ||
| migrations | ||
| src | ||
| .env | ||
| .gitignore | ||
| browserify | ||
| index.js | ||
| package.json | ||
| README.md | ||
| truffle-config.js | ||
이더리움 기반 동형암호 기술 전자 익명 투표 시스템
프로젝트 개요
이 프로젝트는 이더리움 블록체인과 동형암호 기술을 활용하여 전자 투표 시스템을 설계 및 구현하는 것을 목표로 합니다. 탈중앙화된 블록체인 기술과 강력한 보안성을 제공하는 동형암호를 결합하여 투표 데이터의 무결성과 익명성을 보장하는 시스템을 구축하였습니다.
주요 기능
1. 스마트 계약
- 투표 생성, 참여, 집계 기능 제공
- 데이터 암호화 및 검증 처리
- MetaMask와 Web3.js를 통한 연동
2. 프론트엔드
- 사용자 친화적인 투표 인터페이스 제공
- 실시간 투표 결과 조회
- 블록체인 네트워크와의 데이터 동기화
3. 동형암호
- 데이터 암호화 및 안전한 연산 수행
- 투표 데이터 익명성 보장
시스템 구조
구성 요소
- 스마트 계약: 투표 관련 로직을 이더리움 네트워크에 배포
- 프론트엔드: 사용자가 투표에 참여하고 결과를 확인할 수 있는 인터페이스 제공
- 백엔드: 데이터베이스 관리 및 API 제공
- 동형암호 알고리즘: 데이터의 보안성과 익명성을 보장
테스트 진행
1. 기능 테스트
- 테스트 항목: 스마트 계약의 투표 생성, 참여, 집계 기능 및 UI 점검
- 결과: 모든 기능 정상 동작
2. 통합 테스트
- 테스트 항목: 블록체인, 스마트 계약, 백엔드, 프론트엔드의 연동 확인
- 결과: 데이터 동기화 및 통신 정상 확인
3. 보안 테스트
- 테스트 항목: 사용자 인증, 데이터 암호화, 네트워크 통신 안전성 검증
- 결과: 데이터 보안 및 익명성 확보
개발 진행 상황
진행 현황
- 스마트 계약 개발
- 데이터 암호화 및 검증 기능 구현
- MetaMask와 Web3.js를 통한 연동
- 프론트엔드 개발
- 사용자 인터페이스 설계 및 개발
- 투표 결과 실시간 조회 기능 구현
- 동형암호 설계
- 암호화 알고리즘 비교 및 데이터 처리 로직 설계
사용 기술 스택
프로그래밍 언어
- Solidity
- JavaScript (Web3.js, React)
- Python (FastAPI)
도구 및 프레임워크
- Ganache
- Truffle
- MetaMask
데이터베이스
- MySQL
설치 및 실행 방법
1. 의존성 설치
Node.js 패키지
npm install fastapi mysql-connector-python pydantic python-dotenv uvicorn uvicorn[standard] PyJWT
Python 패키지
pip install -g truffle browserify
3. Ganache 실행
Ganache를 실행하여 로컬 블록체인을 시작합니다.
4. 스마트 계약 배포
truffle migrate --reset
5. 서버 실행
- 백엔드: FastAPI 서버 실행
uvicorn main:app --reload --host 127.0.0.1
- 프론트엔드: Node.js 서버 실행
node index.js
소감 및 향후 계획
이 프로젝트를 통해 블록체인 기술과 동형암호 알고리즘을 실제 시스템에 통합하는 방법을 학습할 수 있었습니다. 향후에는 대규모 네트워크 환경에서의 성능 최적화와 동형암호 알고리즘 개선을 진행할 계획입니다.