Duration : 2022-09 ~ 2022-12; Job : Backend & PM

Github

https://github.com/YeongRoYun/SuperAwesomeSecurity

Motivation

2022-2 학기 소프트웨어 보안(이희조 교수님) 강의에서 보안 취약점의 위험성과 그것을 막기 위한 방법을 이해하는 차원에서 팀 프로젝트를 진행했다. 각 팀은 보안 취약점 5 개를 포함해 하나의 서비스를 만들어 GitCTF 에 참가해야 했다. 우리 팀은 어떤 주제로 프로젝트를 진행할까 고민하던 중, 간단한 채팅 서버를 만들어보자! 라는 아이디어가 나와 그것을 바탕으로 작업에 들어갔다.

Requirement Analysis

서비스 개요

  1. 기업 내부에서 업무와 관련된 소통을 할 때 사용하는 채팅 서비스. 암호환된 통신으로 채팅 내용을 보호한다.
  2. GitCTF 를 위해 5개의 보안 취약점을 서비스에 은닉시킨다.

용어 정의

Concept Definition
Server 공급자의 작업 공간. 사용자의 요청, DB 및 보안 등의 작업을 수행하는 프로세스
Client 사용자의 작업 공간. 로그인, 채팅방 및 채팅 작성 등의 사용자 행위를 보조하는 프로세스
API 클라이언트에서 서버에게 요청할 때 사용하는 인터페이스. Restful로 작성되며 Json을 반환
Stakeholder 서비스의 이해관계자. 서비스의 실제 사용자, 개발자 및 공급자를 포함
Company 서비스를 사용하는 기업. 직원들에게 아이디와 비밀번호를 배부함. 모든 채팅방에 대한 변경 권한이 존재
User 서비스의 실제 사용자. 회사의 직원으로 아이디 및 비밀번호를 부여받아 서비스에 접속함
Board 업무와 관련된 방들이 모인 게시판. 현재 개설된 방을 확인할 수 있는 공간
Room 업무와 관련되어 개설된 방. 비밀번호를 입력하는 비밀방과 회사원 누구나 입장 가능한 공개방이 존재
Host 방을 개설한 사용자. 방의 삭제, 내용 백업, 다른 사용자에게 호스트 이전 등의 작업을 수행가능
Guest 방을 이용하는 사용자. 채팅, 자료 공유 및 방 나가기 등의 작업을 수행가능

서비스 목적 및 범위

Use Case Diagram.png

이해관계자 분석

Company

  1. 내부 구성원의 원할한 소통이 필요하다.
  2. 내부 구성원의 계정을 발급할 수 있어야 하며, 수정 권한이 필요하다.
  3. 내부에 개설된 모든 방에 대한 수정 권한이 필요하다.
  4. 내부에 개설된 모든 방에 채팅을 전송할 수 있어야 한다.
  5. 내부에 개설된 채팅방이 삭제된 후, 로그에 접근 가능해야 한다.