금오사이의 익명시스템은 어떻게 만들어졌나?

금오사이를 운영하면서 익명시스템에 대해 의문을 가지시는 이야기를 많이 들을 수 있었습니다.
처음 18년 5월에 금오사이(당시 kitshare)를 계획하면서 컴퓨터공학과 동기들과 이야기를 나눈게 있습니다.
“신뢰를 잃지 말자” 이 말은 처음 시작당시에 모토이자 지금까지 잃지 않고 항상 생각해야하는 1순위가 문구가 되고 있습니다.

보통 운영팀이 금오공대 갤러리나 에브리타임을 모니터링하다가 금오사이에 관한 이야기가 나오고 답변이 필요하다 싶으면 해당 분야에 답변을 할 수 있는 담당자가 내용을 처리합니다. 보통 공식 계정을 만들어서 운영하기 때문에 자칫 잘못 된 이야기가 와전 될 수 있어 되도록이면 이해하기 쉬우면서 믿을 수 있는 말을 전해 드리려고 합니다.

그런데 댓글이나 그런 주제가 오가는 동안 답글을 남기면 당시 있었던 분들만 이해를 하고 나중에 소식을 들은 분들은 내용을 모르기에 이러한 의문을 가질 수 밖에 없다고 생각하고 있어서 익명 시스템에 대한 글을 써보려고 합니다.

금오사이의 익명 체계는 2가지가 있습니다. 글 작성 암호화와 댓글 작성 암호화입니다.
기본적으로 금오사이는 Naver의 eXpressEngine 을 포크하여 발전 된 Rhymix CMS를 기반으로 운영되고 있습니다. 웹 관련하여 관심을 가졌던 분들이라면 벌써 눈치를 채셧을 수도 있습니다.

금오사이 웹 소스

Rhymix나 XE는 사용자의 구분을 특수 고유 번호를 이용하여 하고 있습니다. 이를 member_srl 이라고 지칭하고 있는데 기본 CMS에서는 이 고유번호에 음수로 만들어 DB(Database)에 저장하는 방식을 차용하고 있습니다.

가령 특정 사용자의 고유 번호가 8714521(존재 하지 않는 회원 번호입니다.) 라면 이 번호에 * -1 을 하여 -8714521을 DB에 저장하여 관리하게 되는 것 입니다. 물론 앱이나 웹에서 일반적으로는  볼 수 없기에 기본적으로 숨겨져 있다라고 보실 수 있습니다.

금오사이는 이 CMS를 처음 차용했을 때 이러한 익명 구조가 너무 미흡하다고 판단해서 내부적인 개선 작업을 하였습니다.

먼저 사용자가 글을 열람할 때 회원 정보를 조회 할 때는 간략하게 다음의 과정이 필요하게 됩니다.
1. 글 작성자가 누구인가
2. 글 작성자가 본인인가
3. 댓글 작성자는 누구인가
4. 댓글 작성자가 본인인가

이러한 조회 과정을 통하여 사용자는 글 사용자를 파악 할 수 있고, 내가 쓴 글/댓글 이라면 편집/삭제가 가능하게 됩니다.
이렇게 조회를 하는 과정에는 공통적으로 “사용자의 정보”를 조회하는 과정이 포함되게 됩니다.
이 과정에서 사용자의 고유 번호를 암호화 처리하여 악의적인 사용자가 임의로 암호화 된 회원정보를 복호화 할 수 없도록 처리하였습니다.

 

암호화 함수 일부

관심이 있으신분은 아시겠지만 AES-128 암호화를 사용하고 있습니다. 초기 금오사이의 서버는 1GHz에 512MB RAM(현재는 4Core, 8GB RAM)으로 구동되는 가상 서버였습니다. 눈물 날 만큼 사양이 낮은 상황에서 시작하였기에 빠르고 가벼운 암호화, 복호화가 가능하고 AES(Advanced Encryption Standard) 표준을 이용하는 방식을 채택하게 되었습니다. 아래는 AES의 암호화 방식에 대하여 소개하는 간단한 유투브 영상입니다. 

간단하게 말씀드리자면 AES 암호화 표준은 미국 정부가 채택하여 기밀문서를 암호화하여 사용하고 있으며 익히 들어 유명하실 랜섬웨어의 암호화에도 많이 사용되는 암호화 기법입니다. 현재는 AES-128을 이중화 하여 사용하고 있으며 서로 다른 별개의 Key 값을 이용하여 암호화에 사용되고 있습니다.

Key가 암호화된 사례로 사용자분들도 확인 할 수 있는 유일한 경로가 하나 있습니다.
바로 최근에 사용자분들에게 공개 된 메시지 시스템입니다. 기존에도 사용자끼리 메시지 전송이 가능하였지만 사용자 페이지에 숨겨져 있고 잘 모르시는 분들이 많아 모바일 어플리케이션에 추가하면서 작성한 게시글에 노출되도록 변경되었습니다. (잠수함 패치에 가깝기는 했습니다..) 

 

기존 메시지 시스템에서 문제점이라면 메시지를 보내게 되면 사용자의 고유번호가 노출되게 된다는 것 이었습니다.
모바일 사용자나 어플리케이션 사용자분들에게는 전혀 노출되지 않지만 PC사용자의 경우 임의로 확인도 가능하고 고급 툴을 사용하면 패킷이 전송되는 과정에서도 확인이 가능하여 익명 사용자를 대상으로는 제공되지 않았던 기능이었습니다.

이 메시지 시스템을 개선하여 익명 사용자에게도 제공하기 위해서는 일반적인 사용자에게 고유 번호가 노출되지 않았어야 했고 또 암호화가 되었더라도 글을 작성한 원작성자에게 메시지가 전달되어야 했습니다.

물론 익명으로 주고받은 메시지이기 때문에 답장을 하는 과정에서도 노출이 되어서는 안되기 때문에 추가적인 암호화가 필요하였습니다.

 

일반 사용자용 메시지
익명 사용자용 메시지

일반 사용자에게 메시지를 전송할 때는 사용자의 닉네임과 회원 정보 자세히 보기 메뉴를 확인 할 수 있고 메시지 시스템의 주소창에도 사용자의 고유번호가 노출되는 것을 확인 할 수 있습니다. 사용자의 “고유 번호”는 암호화가 되어 있지 않은 상태입니다.
이 정보는 특정 사용자의 페이지를 방문하게되면 필수불가결하게 노출되는 정보이기 때문에 암호화가 필요하지 않았습니다. 의미도 없었고요.

하지만 익명 사용자의 메시지는 다릅니다. 회원정보가 노출되면 안되기 때문입니다 (금사의 VIP분들이십니다)
동일하게 receiver 값을 가지게되는데 암호화된 값을 보유하고 있음을 알 수 있습니다.

따라서 DB에는 복호화된 값이 아닌 암호화된 값을 DB에 보관 및 처리하게 되고, 이를 사용자가 원할시에 복호화하여 서비스를 구성한 후 제공하고 사용자에게 제공할 시에는 암호화된 내용을 표시하게 됩니다.

마음을 삐뚤게 먹은 관리자가 이를 복호화 하고자한다면 서버 내 암호화키를 획득하여 복호화하는 과정이 필요한데 이 암호화키 또한 DB에 보관되어 있어 사실상 어렵다고 볼 수 있습니다.

 

서버를 해킹당한다면?

금오사이 서버 구조

금오사이의 서버 구조(실제와는 조금 상이합니다)입니다. DataBase는 사용자가 접속하는 서버와 다른 별개의 서버에 분리되어 보관, 운영되고 있습니다. 악의적인 사용자가 익명 사용자의 정보 유출을 시도 할때는 2개의 서버를 해킹해야만 비로소 정보 유출이 가능한 구조로 되어 있습니다.

사실 해킹을 당한다면 금오사이의 운명이 끝났다고 보셔도 될 것 같습니다. 
주기적인 패스워드 변경과 내부 보안 감사를 통해 지속적으로 안정적으로 시스템을 운영하면서 현재 구성 된 보안 체계를 유지하는게 유일한 방법 일 수도 있지만 지속적으로 더 나은 방법을 찾기 위해 노력 할 것이라고 말씀 드릴 수 있습니다.

개인정보처리방침 11조

운영팀이 수립한 개인정보처리방침에 따라 처리하며 주기적인 보안감사로 안정적인 보안 상태를 유지 할 것 입니다.

그래도 관리자는 볼 수 있는 것 아닌가?

일단 원칙적으로 말씀드리면 네 맞습니다. 볼 수 있습니다. 하지만 보는 과정에 많은 시간이 필요합니다. 절차도 필요하고요.
기존에 익명이라고 소개되는 많은 커뮤니티 사이트가 익명을 이점으로 내세우고 있지만 커뮤니티를 운영하면서 느끼게 된 것은 아무리 익명이라고 회원 정보를 어쩔 수 없이 보관하고 처리하게 된 다는 것 입니다. 이 사실을 숨기는건 어불성설이라고도 생각합니다

일반적으로 커뮤니티 관리자가 회원 정보를 제공하는 경우는 다음과 같습니다.
1. 서버 압수 수색으로 인한 서버 관리 권한 박탈
2. 회원간 명예 훼손 및 조사로 인한 회원 정보 요구
3. 사용자 본인의 요구

개인정보처리방침 3조

위 3개의 경우를 제외하고 관리자가 회원 정보를 열람, 노출, 제공하게 될 경우 단순히 교내에서 입방아에 오르내리는 것이 아니라 경찰서 문을 들락날락하게 될 것입니다. 이는 금오사이 운영팀이 누구보다 더 자세히 알고 있습니다.

댓글 관리 페이지

일반적인 경우에 관리페이지에서도 사용자의 정보를 확인 할 수 없도록 되어 있습니다. 다만 스팸 사용자, 악의적인 사용자 판별을 위하여 IP 정보는 수집되어지고 있습니다. 대부분 교내 접속자라 IP 주소가 동일하기는 합니다.

+
금오사이 운영팀은 기획디자인팀, 기술지원팀, 커뮤니티운영팀 총 3개의 내부 조직으로 운영되고 있습니다. 그 중 운영팀의 총괄을 맡는 운영 팀장만이 DB 접근 권한을 가지며 기술지원팀 조차 DB 접근 권한을 소유하고 있지 않습니다.
암호화 된 사용자 내용을 복호화하고자 하는 경우 팀장 승인 절차를 거치는 것으로 내부적으로 약속되어 있습니다.

글에 더 서술을 하고 싶지만 보안상 DB 내용을 공개하는 것은 큰 어려움이 있습니다. 이해 해 주시리라 믿습니다.

금오사이 운영팀은 학우분들의 신뢰와 도움으로 여기까지 성장 할 수 있었습니다.
운영팀은 그 책임의 무거움을 알고 있으며 학우분들의 개인정보를 소중하게 보호하기 위하여 최선을 다할 것 입니다.

 

궁금하신 점 있으시면 댓글로 남겨주세요 성실히 답변 해 드리겠습니다.
긴 글 읽어 주셔서 감사합니다 즐거운 하루 되세요.

세줄 요약
1. 금오사이 암호화 체계는 AES-128을 이중화하여 사용중이다.
2. 해킹의 경우에는 어찌할 방도가 없지만 서버 이중화 및 주기적인 보안 감사를 통해 심도있게 운영한다.
3. 익명 사용자 볼 수는 있다 하지만 법적인 제도안에서만 운영하며 관리팀에서 운영팀장 1명만 확인이 가능하다. 이마저도 시간도 오래 걸리고 귀찮은 작업이라 정말 필요한 경우가 아니면 보지않는다.

1 thought on “금오사이의 익명시스템은 어떻게 만들어졌나?”

  1. 오! 정말 감탄하는 개발자

    안녕하세요. 활기찬 꿈과 희망가득한 타대학 대학생 개발자입니다. 대학교 커뮤니티 개발을 위한 구글링 도중에 금오공대의 “금오사이” 서비스 엄청 흥미롭게 보고 갑니다. 여기서 어떤 코어인지 확실히 짚고 넘어갈 수 있어서 너무 좋았고 나머지 게시물까지 어떤 내용을 다뤘는지 잘 보았습니다. 앞으로도 좋은 기술블로그 운영 부탁드립니다. 감사합니다.

Kauf Online에게 댓글 남기기 댓글 취소

이메일은 공개되지 않습니다.