2005년, 한 보안 연구자는 자신이 발견한 정보 유출이 실제 암호 공격으로 이어질 수 있는지부터 확인했다. 당시 미국 국가안보국(NSA)이 방어적 역할을 강조하며 예전보다 개방적인 태도를 보였지만, 유독 사이드 채널 공격만큼은 공개적으로 언급하지 않는다는 농담이 돌았다. 침묵 자체가 이 분야의 중요성을 드러내는 또 하나의 사이드 채널이라는 것이다. 그는 12월 중순 무렵 RSA 개인키 전체를 재구성할 수 있을 만큼의 비트를 빼내는 개념증명(PoC) 익스플로잇을 완성했고, 거기서부터 진짜 어려운 일, 즉 조용히 보안팀에 알리고 공개 전에 함께 문제를 고치는 작업에 착수했다.
이 과정은 이후 여섯 달 동안 그의 일상이 됐다. 동료들이 학위 논문을 손보고 취업에 나설 때, 그는 지도교수의 불만을 사면서까지 그 일을 뒤로 미뤘다. 이듬해 5월 초, 논문 공개를 못마땅하게 여긴 인텔은 당시 여러 FreeBSD 개발자를 고용하던 야후에 그에게 철회를 지시하라고 요청했다. 그러나 야후는 그가 자사 직원이 아니므로 해고로 압박할 수 없다고 답했다. 결국 2005년 5월 13일 그는 BSDCan에서 논문을 발표하고 권고문을 공개했으며, 비슷한 시기에 FreeBSD, NetBSD, 레드햇, SCO, 우분투가 각자 권고문을 냈다.
책임 있는 공개라는 절차
오픈소스 보안에 관여해 본 사람이라면 '책임 있는 공개(responsible disclosure)', 요즘 흔히 쓰는 표현으로는 '조율된 공개(coordinated disclosure)'의 과정을 알 것이다. 취약점을 발견했다면 이를 무시해서도, 악의적 행위자에게 팔아넘겨서도 안 된다. 반대로 무작정 공개해 놓고 선한 쪽이 악한 쪽보다 먼저 고치기를 바라는 것도 무책임하다. 핵심은 누가 알아야 하는지 식별하고 그들에게 조용히 연락해, 문제가 공개되는 순간 곧바로 패치를 배포할 수 있도록 준비시키는 것이다. 다만 이 사례는 조율 기간이 유독 길었다는 점이 이례적이었다.
여기서 눈여겨볼 대목은 이 의무를 끝까지 수행할 수 있었던 조건이다. 저자는 당시 미혼에 부양가족이 없었고, 논문 심사를 마친 뒤 캐나다로 돌아와 부모의 집에서 집세 없이 지냈다. 1형 당뇨 환자로 인슐린 비용은 부담했지만, 캐나다에 살았기에 입원으로 인한 막대한 의료비를 걱정할 필요가 없었다. 만약 미국에 있었다면 취업과 의료보험 확보를 우선할 수밖에 없었을 것이고, 운명처럼 떠안은 이 의무를 다하지 못했으리라고 그는 적는다. 보안 윤리를 개인의 선의로만 환원할 수 없음을, 사회적 안전망이 '책임을 감당할 여력' 자체를 좌우한다는 점을 짚은 셈이다.
공학 윤리와 그 한계
엔지니어에게 이런 의무는 낯설지 않다. 관할권마다 표현은 다르지만 대부분의 직업윤리 강령은 개인적 이해관계와 무관하게 안전 위험에 대응할 것을 요구한다. 예컨대 IEEE 회원은 '공공의 안전, 건강, 복지를 최우선으로 삼겠다'고 서약하며, 이 의무는 자신이 참여한 프로젝트에서 비롯된 위험에만 국한되지 않는다. 위험을 인지한 모든 엔지니어에게 '즉시 공개할' 의무가 생긴다. 공학 강령은 대개 단계적 보고 절차도 둔다. 먼저 고용주에게 우려를 알리고, 조치가 없을 때 비로소 더 직접적인 행동에 나서는 식이다. 이는 효율적이면서도 현실적이다. 조치하지 않는 사람에게 알린 것만으로 의무가 끝나지 않지만, 모든 것을 광범위하게 알리면 정작 주목받아야 할 사안이 묻히기 때문이다.
저자는 같은 원칙을 실무에 적용한 사례를 든다. 2009년 그는 아마존 EC2 방화벽이 기본 설정에서 경로 MTU 탐색(Path MTU Discovery)을 깨뜨린다는 것을 발견해 아마존에 보고했다. 그러나 2012년 11월까지 개선이 없자, 자신의 블로그에 이용자들이 직접 문제를 해결하는 방법을 올렸다. 공교롭게도 아마존은 얼마 지나지 않아 버그를 고쳤다. 보안이나 안전 문제가 아니었음에도, 아는 것을 공유해 영향받는 사람들을 돕는 것이 윤리적 의무라고 그는 판단했다. 다만 그는 공학 강령의 의무 범위에도 한계가 있다고 본다. 작업이 비효율적으로 이뤄진다고 해서 보고할 의무는 없으며, 법적 의무로는 합당하나 도덕적 기준으로는 너무 낮다는 것이다.
진실을 알릴 상대를 찾아 나서는 의무
글의 사유는 여기서 철학으로 확장된다. 저자는 \"스타트렉: 넥스트 제너레이션\"의 에피소드 '첫 번째 의무'에서 장뤽 피카드가 진실에 관해 남긴 연설을 인용한다. 그 연설이 말하는 '진실을 밝히고 감추지 않을 의무'에는 동의하지만, 그것만으로는 부족하다는 게 그의 생각이다. 진실을 들어야 할 사람을 능동적으로 찾아 나서야 하며, '아무도 묻지 않았다'는 핑계 뒤에 숨는 것은 의무를 저버리는 일이라는 것이다. 그는 1794년 피히테의 강연 '학자의 사명'을 끌어와, 학자는 지식을 자신이 아니라 사회를 위해 소유하며 이를 전할 의무가 있다고 본 대목에 공감한다. 다만 학자를 모든 계급 중 가장 높은 '진리의 사제'로 치켜세운 피히테의 틀은 평등한 시대정신에 맞지 않는다며 거부한다. 의무는 사회에 진 빚에서가 아니라 지식 그 자체에, 누가 그것을 쥐고 있든 상관없이 깃든다고 그는 말한다.
이 의무 역시 무제한은 아니다. 공유된 지식에 따라 행동하도록 강제할 의무는 없고, 오히려 각자가 어떻게 행동할지 선택할 자유를 존중해야 할 도덕적 의무가 있다. 지식이라는 선물 또한 거절할 자유가 있으며, 행동할 수 있는 모든 이가 그것을 알게 된 순간 의무는 소진된다. 저자는 '연구자(Researcher)'와 '학자(Scholar)'를 구분한다. 연구자는 새로운 지식을 만들고, 학자는 그 지식을 필요한 사람에게 전한다. 학술지에 실리고도 읽히지 않는 논문, 읽히더라도 학자들 사이에서만 맴돌 뿐 실제로 조치할 위치의 사람에게 닿지 못하는 연구는 흔하다. 그가 20년 넘게 평의원으로 몸담은 모교 사이먼프레이저대가 스스로를 '캐나다의 참여하는 대학'이라 부르며 학문과 현실 세계의 연결을 중시하는 이유도 거기 있다. 발견을 쥐고 있는 데 그치지 않고 그것이 닿아야 할 사람을 찾아내는 일, 보안 실무자에게 조율된 공개가 기술적 절차를 넘어 하나의 직업 윤리로 자리 잡아야 하는 까닭이 바로 이 지점에 있다.