
카이스트 전산학부에 다녀본 학생이라면 KAIST의 KCLOUD 서비스에 대해서 들어본 적이 있을 것이다.
수업을 수강중인 학생들에게 무료로 VM을 제공해주는 아주 좋은 서비스다. 심지어 인공지능 관련 수업을 들을 때는 GPU도 지원해준다.

물론 거의 10년이 다 되어가는 GPU이긴 하지만, 그래도 적당한 모델 정도는 충분히 훈련시킬 수 있는 사양이다.
매일 VM을 사용해 과제를 하고 있는 학생으로서 너무나 감사하다.
하... 이 VPN에 대해서 하고 싶은 말이 정말 많다.
일단 이게 뭐냐 하면 한성아이티엘이라는 곳에서 만든 SSL VPN이다.
SSL VPN은 정말 별게 아니고 그냥 암호화에 SSL/TLS를 사용하는 VPN이다.
우리 학교의 KCLOUD VPN에 접속하기 위해서는, 이 VPN에 먼저 접속해야 한다.

이는 Secuwiz라는 회사가 만들었는데, 얘내 웹사이트를 살펴보면 뭔가 대단한걸 개발해 놓은 것 같이 설명한다. 하지만 여기 나와있는 대부분의 기능은 사람들이 가장 많이 사용하는 SSL VPN인 OpenVPN에 이미 포함되어 있다. 이에 관련해서도 역시 할말이 많지만 뒤에서 계속하도록 하자.
그런데 황당한 점은 이 VPN이 한국의 공공기관 대부분에서 사용되고 있다는 것이다. 실제로 Secuwiz를 사람인에 검색을 해보면 정말 파는게 VPN밖에 없는데다가 구매자가 대부분 정부인데, 매출액이 거의 100억을 넘기고 있다.
사실 여기까지는 아무런 문제가 없다. SurfShark와 같은 유명한 VPN 기업들은 매출이 1000억을 쉽게 넘어간다.
내가 이 VPN에 대한 조사를 시작했던 이유는 MacOS용 앱 때문이다.
일단 사용자 경험을 따라가보자.
이 부분을 건너뛰고 바로 프로그램의 분석으로 건너뛰고 싶으신 분은 다음 섹션으로 바로 넘어가면 된다.
먼저 웹사이트에 들어가서 패키지를 다운받는다.

그리고 패키지를 열어보자.

일단 1년에 10만원 짜리 Apple Developer Program에 가입하지 않은걸 볼 수 있다.

어쩔 수 없이 설정에서 강제로 열어준다.

설치를 진행해보자.

드디어 앱을 사용할 수 있다.
나는 처음에 내가 이해를 잘못한 줄 알았다. OS X Password가 인풋으로 있는 걸 보고, 너무 뜬금없어서 뭐를 입력하라는 건지 이해를 하지 못했다.
일반적으로 프로그램이 Mac Login Password를 요구하지 않는데에는 이유가 있다. 이 비밀번호만 있다면 프로그램은 당신의 컴퓨터 내에서 언제나 sudo 권한을 얻을 수 있기에, 정말 모든 걸 할 수 있다.
일반적인 경우에는, sudo가 필요한 프로그램이 있다면 Alert를 띄워서 권한을 얻는다. 이렇게 되면, 로그인 비밀번호를 프로그램이 알 수 있는 방법이 없다.
나는 정말로 여기다가 내 컴퓨터 비밀번호를 입력하고 싶지 않았다. 그래서, 다른 방법이 있기를 빌면서 프로그램에 대한 분석을 시작했다.
일단 나는 그냥 평범한 개발자다. 리버스 엔지니어링을 배워본 적도 없다.
이런 초보자의 관점에서의 분석이니 문제점이 많아도 이해를 바란다.

먼저 패키지를 열어보자. 물론 codesign이 되어있기 때문에 바이너리를 편집하는 건 힘들다.
혹시 help flag가 통하는 바이너리가 있을까 싶어, MacVPNU와 ssl_client를 실행시켜보자.

오! ssl_client를 실행시키니, 친절한 설명서가 나온다.
어? 근데 옵션 몇개가 어디선가 본 적이 있는거 같다.
string을 일부 긁어다가 검색을 해보자.
흠... 옵션이 OpenVPN의 옵션과 정확히 일치한다.
의심이 조금 가기는 하지만 설마 OpenVPN을 그대로 배껴왔을리는 없다.
애초에 OpenVPN Github에 커다랗게 GNU GENERAL PUBLIC LICENSE 라고 써져있는데 한국 최대의 공공기관 VPN 제공업체가 이걸 개무시하고 다음과 같은 행동을 했을리가 없다.
참고로 GPL 라이선스를 사용한 프로그램은 똑같이 GPL 아래에 떨어져야 한다. 라이브러리로 사용했던지, 소스코드를 편집해서 사용했던지, 모두 GPL 아래에 있어야 한다.
그래도 옵션이 일치한다는 우연이라고 하기에는 너무 의심스럽다. 임의의 .ovpn 파일을 하나 만들어서 한번 실행시켜보자.

나는 Hotspot Shield의 구독자이기 때문에 이를 이용해서 만들어보겠다.

config 파일을 만든 다음에 Secuway의 ssl_client 바이너리를 이용해서 열어보자.

아주 잘 돌아간다... 심지어 OpenVPN version will ignore --cipher for cipher negotiations 이라고까지 친절하게 알려준다.

버전을 물어봐도 친절하게 알려준다.
글이 너무 길어지는 것 같아 더 자세한 내용과 결국 맥 비밀번호 없이 KCLOUD VPN에 접속을 성공했는지는 이후 포스팅에 업로드할 예정이다.
나의 불편함을 해소하기 위해 시작되었지만, 이번에 Secuway SSL VPN을 조사하면서 느낀점이 정말 많다. 세상에는 너무나 License Violation이 많다. 만약 시큐위즈가 좀 더 조심했다면, 조금 더 주의해서 options를 수정했다면, 나와 같은 초보가 이걸 찾아낼 수 있었을리가 없다.
이런 Violation들은 오픈소스 생태계를 망가트린다. 이러한 라이선스는 소프트웨어의 자유와 공유를 촉진하며, 개발자들이 협력할 수 있는 환경을 조성한다. GPL 라이선스의 경우에는 사용자가 소프트웨어를 자유롭게 사용, 수정, 배포할 수 있도록 허용하지만, 배포 시 반드시 원본 소스 코드와 수정된 소스 코드를 공개해야 한다는 조건을 부과함으로써 누구나 소프트웨어의 개선에 기여할 수 있고 결과적으로 더 나은 품질의 소프트웨어의 개발을 목적으로 한다.
이런 기본적인 규칙도 지키지 못하면, 오픈소스를 만들고 공유하는 사람들은 줄어들 수밖에 없다. 한국의 공공기관 VPN 시장을 대표하는 회사로써, 다른 회사들의 좋은 본보기가 되어야 하지 않을까...
100번 공감합니다