본문 바로가기
iRC/mIRC

더 안전하게 대화하는 방법은 없을까?

by 4n0nym0us 2015. 10. 24.

여러분은 IRC 프로토콜이 FTP처럼 평문 전송을 한다는 것을 알고 있는가? 패킷이 전송 될때 아무런 보호 없이 뚜렷하고 여과 없이 (?) 통신이 된다는 뜻이다. 악의적인 사용자가나 제3자가 볼 수도 있다는 우려로 자연스럽게 흘러가게 된다.


하지만 현실적으로 보자면 ISP나 국가 정보기관 정도의 공권력과 기술을 가져야 실질적으로 패킷을 들여 볼 수 있다는 이야기고, 에이 설마 했던 미국의 무분별하고 광범위한 정보 수집과 감청의 대한 추측과 우려는 에드워드 스노든의 NSA 폭로로 통해 충격적인 사실과 현실이었음을 잘 보여주었다. 충공깽


물론 이에 대한 방책은 가지고 있다. 대표적인 mIRC을 필두로 대부분의 IRC 클라이언트들은 OpenSSL 라이브러리을 통해 SSL 프로토콜 연결을 지원 하고 있다. 여러분이 사용하는 서버가 이 SSL을 지원 한다면, 열중 아홉은 6697~7000 대역의 SSL 포트를 사용해 접속 할 수 있다는 사실을 알 수 있다. 


하지만, 그전에 먼저 두 가지를 확인 해야 한다. OpenSSL 라이브러리가 설치가 되어 있아 연결에 실패 할 것이고, 설치는 되어 있지만 버전이 매우 낮아 상대적으로 보안에 취약 할 수 있다.





mIRC의 https://www.mirc.com/ssl.html 페이지로 접속하면 SSL의 대한 안내를 받을 수 있다.

지금 이 글을 포스팅 하는 현 시점에서는 가장 최신 버전은 OpenSSL 버전이 1.0.2d을 알 수 있으나 mIRC는 1.0.1p이다 한 박자 늦게 올라오는 편이다. 여기서 윈도우즈로 포팅된 OpenSSL 라이브러리를 받도록 하자. 경로는 알아서 잡혀 있으니 그냥 설치만 하면 된다. 다운로드에서 설치까지 모두 30초도 안 걸린다.


https://www.openssl.org


잠시, OpenSSL 업데이트의 최근 경향을 살펴보고 가자면 보안 문제점이 가장 두드러지게 나타나고 있다. 취약해진 시스템은 DoS 공격이나 대표적으로 큰 보안 이슈가 되었하트블리드(HeartBleed)을 통해 중요한 정보가 유출 될 수 있다. 이를 해결하기 위해 부단하게 업데이트 되고 있으니 한달에 한번은 꼭 확인해서 업데이트를 받도록 하자.


이제 한번 SSL으로 접속 해보도록 하자! 필자는 Link-NET의 SSL 포트는 +7000이라는 것을 확인 했다.




간단하게 한줄 명령어로 접속을 하겠다.




처음 접속시 SSL 인증서을 볼 수 있다. 매번 이 인증서 화면을 볼 수 있으나 불편하니 

앞으로는 자동으로 수락 하기로 하고자 Automatically accept this cert certificate in future 에 체크 하자.




명령어 /whois <자신의 닉네임>을 입력 해서 다시 한번 확인 하



이제 이 보안 연결을 통해서 제3자 입장에서 악의적인 목적으로 대화를 도청하는 위협은 어느 정도 피할 수 있겠다. (단, MIMA 라 불리우는 중간자 공격에 취약 할 수 있다.) 


다만 이 글에서 정말 필자가 여러분에게 말하고 싶은 것은 SSL 연결은 OSI 7계층 참조 모델에 해당 하는 5계층 '세션 계층' 속하고 서버와 클라이언트나 사용자와 사용자간의 연결의 대하여 패킷을 보안 해주는 것이지, 어디까지나 IRC 오퍼들이나 관리자가 채널의 대화 내용을 못 본다는 이야기가 아니란 것이다.


지금 당장 채널에서 어떠한 누구와 어떤 대화를 나누고 있는지 관리자는 실시간으로 볼 수 있거나, 저장된 로그을 찾아 확인 할 수 있다. 여러분이 프라이버시를 매우 중요하게 생각한다면, 이마저도 훔쳐보기 원하지 않다면 FiSH 플러그인으로 보다 안전하게 대화를 할 수 있을지 않을까 싶다. 


FiSH는 대칭형 블록 암호의 일종인 BlowFish 알고리즘을 사용한다. 물론 요즘 나오는 AES 알고리즘에 미치지 못하겠지만, SSL 보안 연결과 함께 이용하면 충분하다고 생각이 된다. 그리고 1:1 개인 메시지는 별도로 디피-헬만 키 교환(Diffie–Hellman key exchange)을 사용한다. FiSH을 사용하기 위해서는 당연한 이야기지만 자신뿐만 아니라 상대방도 FiSH을 쓰고 있어야 하는 전제조건이 필요하다.


이번 튜토리얼에서는 지금 포스팅 하고 있는 시점에서 가장 최신 버전인 v7.43을 통해 실습을 먼저 하겠다. 

(본인처럼 v6.35 버전에 맞는 FiSH을 찾는 누군가을 위해 함께 첨부를 하겠으니 참고 하자)


현재 FiSH 프로젝트 홈페이지는 더 이상 운영되지 않고 있으나,  최근 개인 사용자가 mIRC 7.x 을 지원하는 스크립트을 꾸준히 업데이트 하고 있다. mIRC 7.x을 사용한다면 여기서 내려 받으면 되겠다.


 FiSH 스크립트 설치하기



mIRC 설치된 디렉토리를 찾아서 설치를 진행한다. 



포스팅을 위해 mIRC 7.x을 설치했다. mIRC을 설치 후 한번 이상은 실행 해줘야 한단다.



인스톨러가 알아서 mIRC 설치 경로와 OpenSSL 라이브러리를 확인한다.


 FiSH 스크립트 살펴보기





mIRC을 다시 실행하면, 위와 같이 FiSH 관련 DLL 파일을 성공적으로 불러 것을 확인 할 수 있다.

mIRC 실행 후 채널에 접속 후 오른쪽 마우스를 누르면, FiSH 옵션들이 보인다.


Show Key 

설정한 Key을 확인한다.

Set new Key (UTF-8)

UTF-8 문자셋으로 설정한 Key을 확인한다.

Remove Key 

키를 제거한다.

Set plain-prefix 

암호화된 문자열의 접두어를 변경한다.

Local IP

자신의 IP을 확인하는 기능이다.





+ Misc config

- Encrypt outgoing [On]

나가는 메시지의 암호화 하는 기능을 설정한다.

- Decrypt incoming [On]

들어오는 메시지의 해독하는 기능을 설정한다.

- Crypt-Mark (Incoming)

??? 쓸 일이 없어서 기능을 잘 모르겠다.

- Crypt-Mark (Outgoing)

??? 쓸 일이 없어서 기능을 잘 모르겠다.

- Nicktracker

닉을 추적한다.

- Encrypt NOTICE [Off]

공지의 내용을 암호화 할 것인지 설정한다.

- Encrypt ACTION [Off]

액션의 내용을 암호화 할 것인지 설정한다.

- Open blow.ini

bloiw.ini 파일을 연다. 이 파일안에는 채널이나 사용자간의 설정한 키 값이 암호화 되어 저장되어 있다.

- Encrypt TOPIC [OFF]

토픽의 내용을 암호화 할 것인지 설정한다.




 FiSH 키 추가하기


자, 이제 실습을 해보자 친구 Agent가 나에게 무언가를 말하고 있는데 먼가 복잡하게 암호화된 언어로 혼자 열심히 떠들고 있고 이메시지를 해석 할 수 없는 상태다. 이를 올바르게 해석 하기 위해서는 반드시 저 친구가 쓰는 암호키을 알아야 한다. 


보다 안전한 방법을 찾아 친구로부터 Key를 건네 받는다. 사실 이 부분도 쉽게 간과 할 수 있는 부분인데, 이것도 하나의 보안적 측면이자 구멍(Secure Hole)으로 바라볼 수 있다. 되도록 키는 자주 바꾸는 것이 좋다. 


키를 전달 받았으면, 다시 우측 마우스를 클릭해서 FiSH 메뉴을 열고 New Key을 선택해서 암호키를 설정하자. 암호키를 구성할때 영문 대소문자와 숫자를 적절히 배합 시켜서 강력한 암호키를 사용 할 수 있지만, 상대방에게 전달도 용이 해야하고 외우기 어렵기 때문에 단어와 숫자를 조합하여 8~16자 정도가 적당 하다고 생각한다. 이것도 어렵다면 한글을 영문 타자 그대로 조합하여 사용해도 생각보다 안전하다.




친구로부터 건네받은16자리 암호키를 등록한다.




이제 이 친구가 무슨 말을 하는지 알아 들을 수 있게 되었다.



1:1대화도 디피 헬만 키 교환 알고리즘을 통해 안전하게 대화를 할 수 있었다.


따라해보면 그렇게 어렵지 않다. 실습에서는 친구와 1:1 상황이었지만 다수의 사람들과 대화 할때도 전혀 무리가 없다. 

만약, 공개 채널에서 모든 사람들이 FiSH을 이용해 게임의 대해 이야기 하고 있을때 누군가 채널에 들어와서 이 광경을 보고 있으면 적지 않게 당황 할 것이다. 외계인 취급 받으면서 말이다. -_-;


FiSH는 비교적 국내 보다는 해외에서는 주로 많이 쓰이는 모습을 보였는데 정작 우리나라 채널이나 사용자들 사이에서는 잘 쓰는 사람을 보지 못한것 같다. 알고 있는 사람도 극히 소수여서 한편으로 아쉬운 마음이다. 개인적으로 필자는 FiSH 스크립트 만큼은 아얄씨 라이프에 꼭 필요한 완소 스크립트라고 항상 생각을 하고 있다.