GithubHelp home page GithubHelp logo

2018s-onion-team3's Introduction

HER Messenger - Team3

HER messenger

  • 빠르고 안전해 믿고 쓰는 HER 메신저
  • 새로운 메시지가 왔을 때 메시지 개수 표시 기능
  • OnionRouting에서 padding을 통한 익명성 강화

Abstract

  • PGP를 이용한 암호화된 메시지 송/수신
  • OnionRouting으로 중간단계에서 발신자, 수신자 익명화
  • 메신저 송/수신 경로 random 지정
  • Docker에 생소한 사용자의 편의성 강화

Protocol Design

Field Message Protocol Key Protocol
id id=1 : 메시지 id=0 : Key
bullian bool? 전달 : 내 메시지 bool? 로그인:로그아웃
sendIP sender IP(마지막 메시지) sender IP
recvIP receiver IP receiver IP
githubID sender id(마지막 메시지) sender id
content 암호화된 메시지 sender Public Key
  • 메시지를 JSON 형식으로 만들어 전송
- 전송 중간 단계 메시지 example  
 {"id":"1", "bullian":"0","sendIP" : "", "recvip":"172.17.0.3","githubID":"","content":"<Encrypted Message>"}
- 전송 마지막 단계 메시지 example  
 {"id":"1","bullian":"1","sendIP" : "172.17.0.5","recvip":"172.17.0.3","githubID":"skyshiri","content":"Plantext Message"}
- Key 전송 example  
 {"id":"0", "bullian":"1","sendIP" : "172.17.0.4", "recvip":"172.17.0.3","githubID":"skyshiri","content":"<PGP Public key>"}
- Deauthentication example  
 {"id":"0", "bullian":"0","sendIP" : "172.17.0.4", "recvip":"172.17.0.3","githubID":"skyshiri","content":"<PGP Public key>"}

OnionRouting

  • 메시지는 최대 5단계의 random path로 전송
  • 중간단계 송신자는 메시지 암호화로 내용 파악이 불가함
  • Message 전송순서가 A -> B -> C -> D 일 경우 OnionRouting은 다음과 같이 진행된다.
    • 그림에서 B와 C는 A가 보낸 메시지를 알 수 없으며, 오직 D만 A가 보낸 메시지 내용 파악 가능

onion

Installation

Docker의 IP는 기본값인 172.17.0.1 에서 동작하게 설계되어 있습니다.

$ : 현재 사용자의 명령 대기  
# : 슈퍼 유저의 명령 대기
  • 프로그램 파일 설치
$ git clone https://github.com/KAIST-IS521/2018s-onion-team3.git
$ curl -fsSL https://get.docker.com/ | sudo sh
$ cd 2018s-onion-team3
  • Put [Your ID].key, [Your ID].pub in testkey directory
$ cd testkey  
$ gpg --armor --export [githubID] > [githubID].pub
$ gpg --export-secret-keys -a [githubID] > [githubID].key
  • Docker 설정
# ./AutoDocker.sh

Usages

  • ./startMessenger.sh를 터미널 창에 입력하고, ID와 passphrase를 입력하면 메신저에 접속된다.
  • 디버깅을 위한 testkey pw 제공 : githubA/githubAPW, githubB/githubBPW ...
#./startMessenger.sh
Your Github ID :[YOUR id]
Your passphrase :[YOUR passphrase]
██╗  ██╗███████╗██████╗
██║  ██║██╔════╝██╔══██╗
███████║█████╗  ██████╔╝
██╔══██║██╔══╝  ██╔══██╗
██║  ██║███████╗██║  ██║
╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝
1. List
2. Talk
3. Exit
  • List
    • 숫자 '1'을 터미널 창에 입력하면 채팅할 수 있는 상대방의 ID와 IP를 볼 수 있는 리스트가 나온다.
> 1
 =====================
2dvorak : 172.17.0.2
 =====================

1. List
2. Talk
3. Exit
>
  • Talk
    • 숫자 '2'를 터미널 창에 입력하면 채팅이 가능한 리스트를 확인할 수 있다.
    • 리스트에서 채팅할 대상자 ID를 화살표로 선택하고 엔터키를 누르면, 채팅이 가능하다.
> 2
                             ┌────────────────────────────┐                             
                             │ skyshiri                   |
                             │ githubB                    |     
                             │ 2dvorak                    │                             
                             │                            │                             
                             │                            │                             
                             │                            │                             
                             │                            │                             
                             │                            │                             
                             │                            │                             
                             └────────────────────────────┘
Her                                                            


Me: hi
skyshiri: Hello  
Me: I am sejin  
2dvorak: I am seungyeop
  • Talk
    • 채팅을 종료하고 싶다면 ESC키를 누른다.
1. List
2. Talk
3. Exit
>
  • Exit
    • 숫자 '3'을 터미널 창에 입력하면 프로그램이 종료된다.
> 3
Good Bye!
f0b151349c7c
skyshiri@ubuntu:~/team3$

Environment

  • Git issue와 milestone을 사용하여 편한 의사소통 및 협업 가능
  • JSON을 사용하여 빠르고 편한 파싱 및 헤더 구성
  • ncurses를 이용한 보기 좋은 TUI환경 구성
  • Qt Creator를 사용하여 Makefile의 자동 생성 및 편한 개발환경 구축

Team member

Team member Position Assignment
SeongIl Wi TA Advice
DongHyeon Oh 팀장 HER messenger 개발 총괄
SeungYeop Lee 팀원 HER messenger 개발
NakJun Choi 팀원 PITCHME.md 작성, 홍보영상 편집, Presentation
SeJin Jeong 팀원 Sockthread.cpp 함수 개발, README.md 작성

Insight

insight

Reference

2018s-onion-team3's People

Contributors

2dvorak avatar cnj8160 avatar eternalklaus avatar hestati63 avatar khsdo95 avatar skyshiri avatar zanywhale avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.