글로벌 SSL/TLS가 eMudhra 전체 매출의 1% 에 불과하다니, 그걸 수습하느라 전 세계에서 수천 시간의 엔지니어링 시간을 쓰는 상황이 참 기막힘.
여러 기술 스택에서 런타임을 업그레이드해야 하고, Python은 certifi 때문에 끔찍하게 복잡해짐. 그래도 그쪽에는 고작 매출 1%인 셈임. 이번 주가 너무 길게 느껴져 푸념하게 됨.
그래도 이런 복구 부담까지 전부 그 회사 탓은 아니며, 어떤 의미에서는 이번 일이 터진 게 다행임. 보안 인증서가 처음 등장했을 때부터 개인 키 유출과 인증서 폐기 가능성은 알려져 있었음. 이를 고려하지 않은 시스템은 애초에 배포하면 안 됐고, 이제라도 퇴역시키고 교체해야 함.
안일해지지 않도록 매달 소수의 인증서를 의도적으로 폐기하는 것도 합리적일 수 있음.
나도 화가 남. 아무 공격자나 eMudhra를 포함해 누구에게도 들키지 않고 모든 HTTPS 웹사이트에 중간자 공격을 할 수 있었는데, 그런 공격은 당연히 회사 매출에 잡히지 않을 테니 말임!
무슨 뜻인지는 알겠지만, CA 침해에 대비하지 않은 기술 스택에도 어느 정도 과실이 있음. 이런 일은 언제든 일어날 수 있고, CA의 태만이나 무능 없이도 발생할 가능성이 있음.
결국 신뢰하는 어떤 CA라도 필요할 때 신뢰를 철회할 준비가 안 돼 있다면, 그건 운영하는 쪽의 책임.
이번 대응은 오히려 상황을 더 나쁘게 만드는 듯함. 아내에게 설명하려는데, 이들이 한 짓만큼 황당한 비유를 도저히 찾기 어려움. 적절한 비유가 있을까?
좌핸들·우핸들 자동차를 모두 만드는 공장에서 앞좌석이 둘 다 조수석인 차를 2년 내내 생산했는데 아무도 눈치채지 못한 상황 정도일까?
옛날 왕은 위조할 수 없다는 인장을 밀랍에 찍어 포고문의 진위를 증명했음. 왕은 비서의 인장으로 서명한 문서도 인정하라는 포고문에 서명할 수 있었고, 비서도 다른 이에게 권한을 위임할 수 있었음.
그런데 이 신뢰 사슬에 쓰인 인장 하나가 누구나 위조할 수 있는 숫자 4 그림이었던 셈임. 온갖 의식과 밀랍 인장이 찍힌 양피지 더미에 정신이 팔려, 정작 인장이 안전한지는 아무도 확인하지 않은 것임.
나는 실제로 무슨 일인지 그대로 설명했음. “HTTPS로 웹사이트에 접속하면 안전하다고 하잖아? Apple이 고른 몇몇 신뢰 기관을 휴대폰이 기본으로 신뢰하고, 그 기관들은 웹사이트 인증서 실무를 맡는 수천 개의 중간 업체를 승인해 줌. 그런데 그중 하나가 200자리 난수 대신 숫자 4를 고른 거야. 네 자리 숫자가 아니라 그냥 4.”
그렇게 설명하고 나니 관련 밈을 함께 보며 웃을 수 있었음.
동네 사람들이 모두 집 주소를 아는데, 이틀 전 누군가 열쇠 구멍에 4인치짜리 길쭉한 종이를 넣으면 문이 열린다는 사실을 발견한 셈임. 그걸 Facebook에 공개해서 이제 온 세상이 집에 침입하려 드는 상황임.
모든 자동차에 똑같은 열쇠를 쓴 자동차 제조사에 비유할 수 있음.
엄격한 규정과 수많은 보호 장치, 수천 마일의 장벽이 있는 국경 통제가 가장 가까운 비유 같음. 장벽에 가끔 구멍이 나기도 하지만, 더 큰 문제는 침해된 정부 기관이 발급한 가짜 여권을 경비대가 “검사상 유효한 여권”이라며 받아주는 경우임. 이때는 장벽이 아무 소용 없음.
누구나 그 정부에서 여권을 받아 다른 나라에 입국할 수 있고, 공식 국제 데이터베이스에서도 유효하게 보인다고 가정해 보길 바람. 여권 발급 기관의 신뢰가 무너지면 국경 자체가 무의미해지는 셈임.
-----BEGIN RSA PRIVATE KEY-----와 -----END RSA PRIVATE KEY----- 사이에 4 하나만 넣은 꼴임.
이건 악의적으로 한 것 아닐까? ssh-keygen이나 openssl도, Microsoft CA 서버 내부의 도구도 이런 키를 생성하지는 않을 텐데 도무지 납득이 안 됨.
RSA 개인 키에는 모듈러스와 지수라는 두 숫자가 필요하므로 저렇게 표현할 수는 없음. 보통은 모듈러스도 곱한 결과보다 두 소인수로 나눠 저장함.
또 RSA 공개 지수로 65537 같은 작은 수를 쓰는 것은 일반적인 관행임.
실제 개인 키 인코딩에는 사용하는 곡선 정보도 들어가야 함.
정확히는 BEGIN EC PRIVATE KEY여야 하지 않을까?
“인프라가 침해되지 않았고 데이터 유출도 없었다”지만, 전 세계가 신뢰하는 CA의 개인 키는 인프라 데이터이며 그 키가 유출된 것임.
“모든 물리적·논리적 보안 통제가 유지됐다”는 것도 틀림. CA 프로그램에는 FIPS 140-2 레벨 3 준수 HSM에서 키를 생성하겠다고 약속했음. 규정을 준수하면서 1바이트 개인 키를 생성하는 HSM은 세상에 없음.
사업을 접는 결정은 잘했지만, “Trust Delivered”를 내건 회사가 퇴장하면서까지 거짓말하는 모습은 좋지 않음.
“소셜 미디어의 확산으로 SSL/TLS가 사업에서 차지하는 비중에 비해 과도한 검증을 받게 됐다”지만, 검증 강도는 사용한 개인 키의 비트 복잡도에 반비례하는 셈임. 사과도 없고 사람의 실수인지 절차상의 실수인지 발생 경위도 밝히지 않으니 더 나빠 보임.
다른 전자서명·기업용 PKI·인증 서비스는 별도로 운영돼 영향이 없다고 하지만, 지금 이 회사에 보안이나 신뢰와 관련된 무엇이든 맡기는 건 러시안룰렛이나 마찬가지임.
“영향받은 CA에서 발급한 최종 사용자 인증서는 없었다”는 문장은 이상함. 누구나 그 CA 명의로 인증서를 발급할 수 있는 상황이기 때문임.