최근 수정 시각 : 2021-04-28 03:23:42

오리 실험

파일:Semi_protect1.png   로그인 후 편집 가능한 문서입니다.
1. 개요2. 원리3. 장점4. 단점5. 용어 상의 비판6. 기타7. 파생 용어

1. 개요

The duck test

위키백과, 나무위키와 같은 여러 위키위키 혹은 기타 인터넷 커뮤니티에서 다중 계정을 이용한 차단 회피 등, 악성 유저에 의한 부정적인 영향을 제어하기 위해 쓰는 검증 방법으로, 오리 검사라고도 부른다. 물론 어디까지나 검증 방법 중의 하나일 뿐, 정식 관리 규칙은 아니다.

2. 원리

일단 새와 비슷하게 생긴 동물이 있다고 가정해 보자. 이 대상이 무슨 동물인지 확인을 하기 위해:
  1. 오리처럼 생겼고,
  2. 오리처럼 헤엄치고,
  3. 오리처럼 꽥꽥대므로,
  4. 이 동물은 오리라는 합리적 추론을 내릴 수 있다.

이와 같은 논증을 거쳐 ‘이 생물체는 오리일 것이다.’ 라고 판단하는 것이다. 논증 유형 중에 귀추법(abductive reasoning)에 해당하며, 주어진 관찰과 사실로부터 시작해서 가장 그럴듯한 최선의 설명을 도출하는 방법이다. 물론 이게 알고 보니 거위였다든가, 오리너구리라든가, 인간이 변장을 했다든가 하는 식으로 오리가 아니었을 수도 있겠지만, 일단은 대상 스스로가 ‘저는 오리가 아니에요!’라는 식으로 반론을 하거나 추가 검증을 필요로 하지 않는 한 오리일 것이라고 간주한다.

위키에서 어떤 이용자(A)가 반달 행위를 하다가 차단당한 뒤, 나중에 이와 유사한 행위를 하는 이용자(B)가 나타났을 때,
  1. B가 과거 A가 반달했던 문서와 유사한 문서를 반달하고,
  2. A와 유사한 주장을 펼치며,
  3. A와 유사한 토론 태도를 보이고,
  4. A와 같은 프로젝트에 참여하고,
  5. A와 비슷한 시기에 활동하고,
  6. A와 유사한 수정 코멘트를 남기므로,
  7. A와 B는 동일인이라는 합리적 추론을 내릴 수 있다.
위와 같은 논증을 통해 A와 B가 동일인이라는 사실을 추론할 수 있다.

다만, 두 논증이 완전히 동일한 구조는 아니다. 오리의 예는 ‘특정한 개체가 오리라는 모임에 속한다’는 것을 입증하지만, 위키의 예는 ‘서로 다른 기호로 지칭하는 두 대상이 동일하다’는 것을 입증하기 때문이다. 그러므로 오리의 예가 합리적이므로 위키의 예 또한 합리적이라고 해서는 안되는 것이다.

위키의 예의 합리성을 보강하기 위해서 ‘근접한 시각에 비슷한 행위를 하는 둘은 동일하다’라는 전제가 있다. 다만, 이 전제 역시 정확하지 못하여 A와 B가 동일인이 아닐 가능성은 엄연히 존재한다. 그래서 이와 같은 논증은 사실 강력한 제재를 가할 만한 명분으로 삼을 수가 없지만, 오리 실험 외의 다중 계정을 제어할 만한 마땅한 방법이 현실적으로 존재하지 않기 때문에 어쩔 수 없이 사용중이다.

3. 장점

반달을 비롯한 어그로꾼이나 트롤이 게시판이나 문서에서 분탕을 치고 다닐 때 위와 같은 검증 방법이 없다면 딱히 추가적으로 제재할 만한 뾰족한 수가 없다. IP로 적발할 수 있으면 차단 회피라는걸 쉽게 알아챌 수 있지만, 그런게 아니라 우회해서 다른 IP로 돌아오면 일반적으로는 별도의 인물로 생각하고 대처를 할 수밖에 없어 결과적으로 실제로 저지른 짓에 비하면 훨씬 가벼운 처벌만 받고, 혹시 또 차단되면 다시 또 다른 IP로... 이하반복. 이런 허점을 이용해서 규정이나 제재를 요리조리 피하고 다니는 반달을 종종 볼 수가 있다. 정말 악질적인 사람은 몇번이고 차단해도 또 와서 분탕질을 할 정도다. 게다가 이러한 부류를 신고하거나 제재하려는 움직임이 보이면 그 즉시 적반하장으로 위키는 누구에게나 열려 있으며 자기는 규정을 준수하였다고 뻔뻔하게 반박하기도 한다. 하지만 오리 실험은 이런 악질적인 사람들을 그나마 빨리 쫓아낼 수 있는 가장 효과적인 방법이고, 사실상 다른 방법도 없어서 치명적인 단점을 감수하고서라도 쓸 가치가 있다.

4. 단점

파일:5V6W31D.jpg
잘못된 오리 실험의 예시

원리 자체가 귀추법이라 결과가 잘못되었을 가능성을 배제할 수 없다. 이 논증법은 자신의 주장에 끼워맞추기 위해서 비약할 때도 빈번히 쓰고, 당연히 왜곡해서 쓰면 열에 아홉은 문제가 생기기 마련이다. 마찬가지로 이것이 합리적이고 경험에 기초한 논리라고 할지라도 악용될 가능성. 즉, 무고한 사람이 몇가지의 오해로 이와 같은 원칙의 희생자로 나타날 가능성은 늘 존재하고 있다.

사용자 정보를 대조하여 진행하는 다중 계정 검사와는 달리 오리 실험은 각 이용자의 편집 성향으로만 결과를 내릴 수 밖에 없기 때문에 여러모로 위험도가 높다. 두 새의 특징이 같다는 이유로 오리라는 결론을 내리는 논리라면, 막말로 편집 방향이 같은 두 이용자에게 이 논리를 적용시킨다면 무조건 동일인이라는 결론이 나오는, 어찌보면 굉장히 어처구니 없는 논리인 셈. 일단 오리 실험 요청이 들어왔다는 것 부터가 행동 양식이 비슷하다는 것이라, 이 상황에서 대상이 논리적으로 나는 다른 사람이라고 명백히 증명하는게 사실상 불가능하다. 설상가상으로 자기 자신이 오리가 아니라고 아무리 주장한들 이미 오리라고 머리에 박힌 사람들에게는 들리지 않기 마련이다. 따라서 그나마 현실적으로 내세울 수 있는 명백한 증거는 Apnic.net에서 다중계정사용자 A, B의 IP가 다름을 증명하는 것처럼 물증밖에 없다. 문제는 애초에 그런 물증이 명백했으면 오리 실험까지 오지도 않았을 것이라는 점.

그리고 오리 실험의 대상이 된 이용자는 십중팔구 차단을 당하기도 하고. 희생자가 보복으로 반달을 하기도 한다.

게시판에 올라오는 오리실험 요청 글에서는 근거와 제재 사유만 충분하다면 대다수의 사례에서 동일인이라고 판단하고 있다. 반면에, 다중계정 검사 게시판에서는 결과가 동일인인 사례와 그렇지 않은 사례가 모두 나타나고 있다. 즉, 나무위키에서의 오리실험은 반달과 반달로 의심되는 사람을 쳐내기 위한 도구이지만 무고한 사람에게도 해를 입힐 가능성이 농후한 양날의 검인 셈.

또 다른 문제는 제재당한 이용자가 오리 실험을 회피하기 위해 행동 패턴을 바꿔 다시 올 수도 있다는 것이다. 조용히 지낸다면 큰 문제는 없지만, 이전과 다른 방향으로 문제를 일으킨다면 애매해지기 시작한다. 위의 틀 형식을 이용해 써보자면 이런 식.
새와 닮은 생물이 있다.

이 생물은 오리처럼 생겼고, 오리처럼 헤엄치고, 날고, 알을 낳는다.

하지만 울음소리가 "꽥꽥!" 이 아닌 "오리오리!!" 이다.

이 경우, 이 새는 오리가 아니다.
B는 A가 반달한 문서들을 반달하고, A와 비슷한 주장을 하고, A와 유사한 토론 태도를 보인다.

하지만 B는 수정 코멘트와 말투 등에서 A와 다르다.

따라서 B는 A가 아니다.

이때 B가 행동패턴을 바꾼 A였다면 B는 오리가 아니라는 결론이 나오고, 그 이용자는 들킬 때까지 마음껏 날뛸 수 있다. 즉 검증에 시간이 오래 걸릴 수 있다는 뜻.

작정하고 악용하면 이런 짓도 불가능하지 않다. 사실 이 부분이 오리 실험 방식의 최대 맹점이기도 하다. 작정하고 한 놈 매장시키려 든다면, 이런 패턴으로 오리 실험을 악용해서 이용자 관리 권한을 가진 운영진을 교란할 수 있기 때문이다.
A가 기간제 차단을 당했다.

B는 A의 차단 기간 중 A가 반달한 문서들을 반달하고, A와 비슷한 주장을 하고, A와 유사한 토론 태도를 보이며 수정 코멘트와 말투까지 비슷하다.

B는 차단회피로 A와 함께 영구차단 당한다.

그러나 사실 B는 C가 A 행동을 그대로 따라한 사칭이었다.

애초에 B 계정은 A를 저격하려고 차단 당할 각오로 만든 것인데 오리 실험을 사용하면 거기에 낚여서 A는 영구차단 감이 아니였는데 A를 사칭한 B라는 계정을 사용한 C 때문에 A의 차단이 영구차단으로 바뀌는 마법이 일어난다.

작정하고 악용하는 사례중 이런 것도 있다.
A와 C가 토론을 하고 있었다.

그런데 B가 갑자기 나타나더니 A의 말투를 따라하고 A의 의견을 노골적으로 옹호하는 발언을 했다.

토론을 지켜보던 D는 A와 B에 대해 오리 실험을 요청했고, 그 결과 A와 B 모두 동일인으로 판단되어 영구차단되었다.

그러나 사실 B는 C가 A 행동을 그대로 따라한 사칭이였다.

정말 악질적인 방법으로, 이 역시 A를 차단시킬 목적으로 새 계정을 생성하거나 아이피로 토론에 참여한 뒤, A를 똑같이 따라하여 오리 실험으로 부정 접속으로 잘못 판단하게 만들어 차단시키는 방법이다. 나무위키 내에서 실제로 일어나는 사례로, 토론에서 불리한 상황에서 이 방법을 통해 반대자를 영구차단시키고 자기 입맛대로 문서를 바꾸는 사람들이 있어 문제가 되고 있다. 둘 다 로그인 이용자라면 다중 계정 검사로 동일인이 아니라 입증 가능하나, 다중 계정 검사가 불가능한 아이피 이용자는 동일인이 아니라고 입증할 방법이 별로 없다는 점이 문제.

심지어 이런 사례도 있다.
A와 B가 토론을 하고 있다.

그런데 C가 갑자기 나타나더니 A의 말투를 따라하고 A의 의견을 노골적으로 옹호하는 발언을 했다.

토론을 지켜보던 D는 C의 예전 행적을 살펴보았더니 B와 비슷한 말투, B와 비슷한 수정 코멘트, B와 비슷한 문서 수정을 보여주었다.

D는 C와 B에 대해 오리 실험을 요청했고, 오리실험 악용과 동일인으로 판단되어 영구차단되었다.

그러나 사실 C는 A의 부계정이었다. A는 머리를 굴려 C가 A를 따라하는 척 한 것이다.

위와 별개로 이런 사례도 있을 수 있다.
아이피 A와 사용자(또는 아이피) C가 토론을 하고 있다.

그런데 아이피 B가 나타나더니 A와 말투가 비슷했고 A의 의견을 노골적으로 옹호하는 발언을 했으며 A와 편집한 문서, 편집한 시기가 비슷했다.

결국 아이피 A와 B는 동일인으로 판단되어 차단되었다.

그러나 사실 아이피 A와 B로 토론을 하던 사람은 동일인이 아니라 관심사가 비슷한 친구(또는 가족) 관계였다.

오리 실험이 얼마나 오류가 많은 방법인지를 보여주는 예. 괜히 법조계에서 무죄추정의 원칙이 생긴 게 아니다.

5. 용어 상의 비판

실험이라는 단어 자체가 잘못되었다는 주장이 있다. 이 오리 실험이라는 용어는 영어 위키백과The duck test한국어 위키백과 측에서 번역한 것인데, test는 ‘실험’으로 번역할 수 있지만 ‘검사’ 혹은 ‘시험’으로도 번역할 수 있다. 이 주장은 해당 영어 단어의 의미 상 후자로 번역했어야 더 적절하지만 운영진(또는 차단 권한 보유자)의 권위를 위해 좀 더 과학적이게 보이는 전자의 단어로 번역했다는 것이다.

이런 류의 단어가 대부분 그렇듯 자연과학, 사회과학, 일상, 사전 중 어느 곳에서 쓰느냐에 따라 조금씩 의미가 달라지기 때문에 '실험' 역시 아주 틀렸다고는 할 수 없으나, 이 문서에서 설명하는 행위가 일반적인 의미의 ‘실험’이라 보기엔 여러모로 부족한 것이 사실이다. 좀 거칠게 말해서 물증도 없이 그냥 심증만으로 처분을 때리는 것이나 마찬가지다. 심증으로 판단한다는 것은 그 판단 기준이 마음대로가 될 가능성이 있음을 의미하고, 실제로 이렇게 될 경우 오히려 지극히 비과학적인 제재 조치가 된다. 재료 및 방법이 있는 것도 아니고. 사고 실험도 재료 및 방법이 없기는 하지만 사고 실험은 최소한 연역적이다.

그래서 사실상 대충 비슷해보이면 차단하는 것이나 다름없는데, 이 과정에서 운영진 마음대로 하는 것 아니냐는 불만이 많을 수 있으므로 이를 불식시키고자 마치 어떤 ‘정해놓은 기준’에 의해 차단하는 것 같은 인상을 심어주기 위해 ‘실험’이라는 용어를 쓴다는 것이다.

6. 기타

프록시 서버를 이용한 반달은 IP 검증 등을 통한 규정상의 제재만으로는 실질적인 대응이 불가능한 경우가 많기 때문에 오리 실험의 논증을 동원하여 약한 수준의 제재를 가하는 것이 일반적이다. 물론 상술했듯이 논증 자체에 맹점이 존재하기 때문에 오리 실험을 제재 판단의 근거로 삼는 것은 위험하다는 의견이 있다.

위키백과에서는 오리 실험에 걸렸다는 이유만으로는 강한 제재를 가할 수 없지만 나무위키에서는 영구 차단까지 가능하다. 사실 정황이 명백하지 않아도 접속내역과 수정내역을 보고 대략 그렇다 싶으면 광대역 차단까지 시전하기도 한다. 게다가 이게 악질 트롤러 봉쇄가 아니라 단순 규정위반자에게도 일괄적용되는 등 리그베다 위키보다 더 강경한 편.

7. 파생 용어

프로그래밍 용어로 Duck typing(덕 타이핑)이라는 용어의 어원 역시 이 오리 실험이다. 클래스 C는 T라는 타입을 갖게 하고 싶다고 하자. Java 같은 언어에서는 C라는 클래스에서 T라는 타입을 상속했다고 명시해야만 한다. 반면 Python이나 Go같은 언어에서는 클래스 C에서 T 타입의 함수들을 갖고 있다면 T 타입이라고 간주한다. 즉, 클래스 Bird가 fly, quack 이라는 두 함수를 가지고 있다면 Duck이라는 타입이라고 간주하는 것이다.

어원이 어원인 관계로 보통 교육 예제를 돌릴때는 오리라는 클래스를 만들고 오리의 특징을 가지고 함수를 짜는 경우가 많다.[1]

[1] 예를 들면 class duck 에 walk(),swim(),quack() 이런식

분류