The Case of the Quake Cheats
http://catb.org/~esr/writings/quake-cheats.html

존 카멕이 퀘이크1 소스를 GPL로 공개하고나서 클라이언트의 부정행위를 막을 수 있는 방법이 없다고 말한 얘기입니다.
부정행위를 막기 위해 독점소스로 체크섬 검사하는 프로그램을 만들어야 한다고 했다네요.
에릭 레이몬드는 그렇지 않다고 말했는데요.
클라이언트 소스가 공개되어있건 독점이건 간에 서버는 클라이언트를 못 믿는다고 가정하에 만들어야된다고 합니다.
그게 바로 암호학자들이 인정하는 accidentally secure by obscurity, but robustly secure by design이라고 합니다.
불투명하게 임시로 보호하지 말고 안전하게 디자인상으로 보호하라는 뜻입니다.
그러면서 은행은 고객의 잔고를 말해줄 때 고객의 정보에 의존하지 말라는 표현을 했습니다.
카멕은 퀘이크 부정행위가 게이머에게 정보를 더 많이 주는 것과 행동을 더 쉽게 하려는 것 두가지로 구분할 수 있다고 했습니다.
코너 뒤의 적을 미리 보는 것과 조준을 자동으로 하는 부정행위가 있다고 합니다.
나아가 프로그램과는 무관하게 그래픽 카드를 해킹해서 화면을 밝게 하는 것도 가능하다고 했습니다.
적을 미리 보는 것은 클라이언트의 캐시에 적을 미리 보내지 않고 속도를 희생하는 방법밖에 없고,
자동 조준 부정행위는 원격 체스를 컴퓨터로 하는 사람을 막을 수 없듯이 방지 기능을 서버에 내장하라고 했습니다.
따라서 오픈소스로 프로그램을 설계하면 문제가 관점이 원천적으로 달라진다고 말했습니다.

그러면서
1. 클라이언트가 정직하다고 믿지 말 것
2. 보안을 성능때문에 희생하면 진정한 보안은 없다.
3. 진정한 보안은 비밀주의가 아니라 유출사고의 가능성을 최소화하고 위협탐지를 강화해야 이뤄진다.
4. 오픈소스만이 프로그래머가 검증된 보안 방법을 사용하도록 할 수 있다.
는 결론을 냅니다.

글을 올리고나서 자동조준 프로그램은 소스 공개 훨씬 전에 만들어졌다는 사실이 알려졌습니다.
그리고 소스의 체크섬을 검사하는 독점 소프트웨어도 안전을 의심할 수 없기는 마찬가지라고 합니다.
카멕도 에릭 레이몬드의 글을 대충 공감하니 비난은 삼가여 달라고 했습니다.

비단 게임 만이 아니라 서버-클라이언트 구조의 모든 프로그램에 해당되는 얘기입니다.
제가 추가로 드는 의문은 실제 생활에서는 반대로 리눅스를 사용하면서 서버를 못 믿는 상황도 많은데 이 경우는 어떻게 될 것인가 하는 것입니다.
공개냐 독점이냐를 정적인 상태로 보지 말고 사용자의 신뢰까지 포함해서 동적으로 판단하는 모델도 궁금합니다.
저는 에릭 레이몬드의 글에 나온 부분은 적극 찬성입니다.

Posted by aaidee 아아이디

댓글을 달아 주세요