2012년 7월 26일 목요일

Seedbox와 Usenet

Seed-Box

  시드박스란, 웹서버를 빌리는 것을 말하는 데, 그것을 토렌트에 사용하게 되면 주로 seeding용으로 사용되기 때문에 시드박스라고 불린다. 내가 시드박스에 접속하여 토렌트로 파일을 받게되면, 해당 파일은 고속과 고용량의 서버에 저장이되게 되고, 완료되어 내가 seeder가 된 이후에는 굉장한 속도로 업로딩을 하게 되므로, 순식간에 ratio(업로드/다운로드)가 높아지게 된다. 이렇게 되면, 비공개 트래커에 가입하기도 편해지고, 비공개트래커에 가입해서도 굉장히 많은 자료들을 유지할 수 있기 때문에 쓰인다고 한다. (어떤 비공개트래커는 시드박스로 운영되기도 한다고한다. 각자 돈을모아서)
  내 아이피주소로 받아지는 게 아니라서, 보안성이 높다고 볼 수 있으나, 해당 시드박스에서 다시 내 컴퓨터로 옮길때는 아직 확실치 않지만 단순히 FTP를 사용하는 것으로 보여지고 있다. 이런 경우는 중간에 tracking 당할 수 있을거라 보여지는데, 반면에 FTPS, SFTP등을 이용하는 경우에는 그러한 단점이 가려질 수 있다.
 
Usenet

  원래는 BitTorrent의 보안성을 높일 수 있는 방법으로 찾아본 것이였는데, 주 분위기가
BitTorrent vs Usenet으로 몰리고 있어서 조금 놀랐다. 그러한 이유는 Usenet 또한 BitTorrent와 같은 파일공유가 가능하다는 것인데, BitTorrent와의 차이라면 p2p형식이 아닌, 웹하드와 비슷한 Client-Server의 구조와 같은 형태라는 것이다. 각각 개인이 서버에 파일 업로드를 하면 다른 유저가 해당 데이터를 peer가 아닌 서버로부터 다운로드 받는 형태라는 것.
  Usenet의 강점은 보안과 속도에 있다. BitTorrent는 고정된 인터넷 망의 Maximum bandwidth 얼마나 주위에 seeder가 많은지에 따라 속도가 천차만별이지만, Usenet은 서버로 직접 내려받는 형태이므로 거의 Full maximum bandwidth가 보장된다. 또한 Usenet은 SSL을 사용하므로 다운로드시 IP를 드러내게 되는 BitTorrent와 다르게 추적의 염려가 적다. 게다가 Usenet provider는 log를 생성하지 않는다고 알려져 추적은 더더욱 어렵다고 한다.
  Usenet의 단점이라고 하면, BitTorrent와 다르게 파일의 내용이 깨지거나 잘못된 파일이 들어간 경우가 많으며, 또한 상당한 비용 그리고 다운제한용량이 있다고 할 수 있다.
  하지만 여러모로 보았을때, 안전성면에서 국내의 웹하드업체보다 좋아보이고, 게다가 BitTorrent를 보안성의 의식하여 유료 vpn업체로 쓸바에야 Usenet을 쓰는 것이 더 낫다는 의견이 많아지고 있다.
RIAA

2012년 7월 24일 화요일

VPN, Proxy 그리고 Tor 와 IPFilter

VPN
가상사설망으로써, 실제론 외부의 공용네트워크지만 두 단말기기의 연결형태가 굉장히 폐쇄적으로 유지시키는 것. 그래서 그외의 유저들은 해당 패킷을 알아도 내용이 무엇인지 알수가없다.
토렌트를 VPN업체로 이용하게되면, IP주소가 해당 VPN 업체의 IP주소로 되어, 사용자의 IP는 숨겨지게 된다. 이렇게되면 추적이 사실상 불가능하다고 볼 수 있다. VPN업체엔 로그가 있을테니 그 업체를 뒤지든지, 아니면 VPN에서 다시 유저로 넘어갈때의 패킷을 스니핑하여 복호화를 해야하는데, 업체마다 암호화방법이 다를테니...

Proxy
프록시서버는 미러링서버라고도 불리는데, 어떤 외부 기기나 서버에 접근할때 중간에서 중계기와 같은 역할을 수행하는 것을 프록시서버라고 한다. 프록시서버의 원래 역할은 일정 서버로의 트래픽이 몰리게되면 네트워크에 과부하가 걸리는데, 그전에 프록시서버같은걸 여러대 설치해놓고 자주 retrieve해가는 데이터를 캐시로 저장해놓으면 분산되는 이점을 가질 수 있다.
하지만 그외에도 외국 접근불가능한 IP 주소를 숨겨서 접근할 수 있기도 하다.
토렌트에 사용될수도 있는데, 문제는 프록시를 이용한 접근에서는 유저의 IP가 그대로 남는다는 단점이 있는 듯하다. 포트포워드? 포트포워딩에 대해서 좀더봐야할듯.

Tor
양파형라이팅을 지원하는 것. 양파형이 처음엔 무엇인가했더니 onion -_-;
아무튼 여러개의 컴퓨터를 묶어서 해당서버로 매번 접근시 random path를 만들어서 접근한다.
이렇게 되면 마지막에 누가 이 데이터를 수령해가는지 알수가 없기 때문에 역시 추적에 어려움이 생긴다. 하지만 토렌트에 사용하기에는 속도가 너무느리고 비용이 크기때문에 안좋다고..

IPFilter
peerguardian, 아니지 요즘버전은 peerblock. 과 같은 역할을 하는 것. 주요 경찰이나 isp업체들이나 저작권협회쪽의  ip들은 차단시켜서 추적하지못하게하는 것이라고 할 수 있다.
peerblock쪽 블락리스트는 iblocklist에서 관리하는데 그 업데이트 속도는 생각보다 빠르다.
보통 1~2일사이?
반면에 IPFilter는 2011년도까지만 있고, 2012년도버전엔 없는 듯하다.
간단히 사용하기엔 IPFilter가 편한듯하다. dat파일로 되어있어서 필요할때마다 넣고빼기만 하면되기 때문에. peerblock을 잘못쓰면 네이버도 막히고 게임도 접속이 막힌다는 사실.

2012년 7월 23일 월요일

BitTorrent - PEX, DHT, 마그넷, 비공개트래커

DHT

DHT란, distributed hasing tables의 약자로써, 중앙의 서버없이도 서로 peer간의 주소를
알 수 있게 해주는 기술이다. 각각의 user_id로(아마?) hash key를 생성하여 사용한다.
DHT가 trackless한 기술. 트래커없이도 알아서 peer들에게 접속할 수 있게끔한다.
트래커를 거치지 않으니 보안상으로 좀더 우위에 있다고 할 수 있다.

PEX

PEX는 peer exchange의 약자. 이것 역시 trackless한 기술로, 접속된 peer에게 유저정보를
받아오는 방식을 말한다. 트래커로의 추가연결없이, 같은 파일을 주고받는 peer들의 정보를
서로 공유하는 방식

마그넷

마그넷이란, metafile인 .torrent 파일 없이도 토렌트에 추가가 가능하게 해놓은 일련의 주소.
해당 주소에 hash_info값이 쓰여져 있고, 뒤에 트래커 주소가 붙을 수도 있다.
어디에서는 마그넷 역시 trackerless한 기술이라고 말하는 곳이 있는데, 내가보기엔
마그넷과 DHT가 같이 쓰여야 trackerless한 기술이 되는 것 같다.
또한 metafile을 쓰지 않게된다면, 비츠스눕이나 piracy bay같은 사이트 없이도 오직 일련의 주소로만
주고받는게 가능해져 더욱 추적하기 어렵지 않을까 예상된다.

비공개 트래커

일반적으로 공개된 트래커가 아닌 어떤 집단의 의해서만 관리되고 운영되는 트래커를 말한다.
비공개이기 때문에 보통 자료의 양이나 질이 우수하고, 시더들이 많아 빠른 속도도 보장된다.
하지만 새로이 가입을하기위해선 이미 그 안에 가입된 사람들로부터 초대장을 받아야만 가입되고,
ratio라고 불리는 업로드양/다운로드양 을 가지고 사람들은 평가한다.
대부분 음악이면 음악, 영화면 영화, 성인물이면 성인물 이런 topic을 가지고 운영되는 경우가 많으며
이곳의 기밀성과 안전성이 유지되는 이유는 운영되는 서버가 비공개트래커로 제한되고, 그안의 swarm
역시 비공개 유저들뿐이라 외부로 정보가 새어나가지 않기 때문이다. 물론 DHT는 막혀있다.
이것을 추적하려면 지나가는 패킷들은 뒤져서 특정한 signature를 찾아 분석한다던가,
아니면 이것은 아주 소규모로 판단하고 그냥 냅두는게 있을 수 있다 -_-;
아님 몰래 잠입을 하든지..

2012년 7월 19일 목요일

BitTorrent BEP15 - UDP Tracker Protocol for BitTorrent

UDP Tracker Protocol for BitTorrent

트래커를 udp로 쓰려고하는 이유가 문서에 잘 나타나있다.
그 이유는 먼저 기존의 사용하고 있는 http 프로토콜의 단점을 나타내었는데,
http 자체가 http문서를 전송하기 위한 응용계층의 프로토콜이라, 하단의 레이어부터 거쳐야하는
갯수가 많아 오버헤드가 상당히 크다.

어차피 트래커의 목적은 유저로부터 hash를 받아서 그것과 일치하는 swarm데이터를 주기만하면되므로
프로토콜자체나 전송간 가벼운것이 더 이점이 되겠다. 그리하여서 udp를 선택을 하였는데,
신뢰성이 떨어진다는 udp의 단점은 어차피 http 역시 연결을 지속시키는게 아니라서
크게 문제가 되지 않는다고 설명하고 있다.

해당 문서가 2008년 경에 작성된 것인데도, 이미 Azureus, libtorrent, opentacker, XBT Client, XBT Tracker에서 이미 지원하고 있다고 한다.

tracker to peer 간 통신에서 udp를 쓰려고하는 이유는 단지 가벼움때문!

2012년 7월 18일 수요일

URL Encoded Characters

URL Encoded Characters
      backspace      %08
      tab            %09
      linefeed       %0A
      creturn        %0D
      space          %20
      !              %21
      "              %22
      #              %23
      $              %24
      %              %25
      &              %26
      '              %27
      (              %28
      )              %29
      *              %2A
      +              %2B
      ,              %2C
      -              %2D
      .              %2E
      /              %2F
      0              %30
      1              %31
      2              %32
      3              %33
      4              %34
      5              %35
      6              %36
      7              %37
      8              %38
      9              %39
      :              %3A
      ;              %3B
      <              %3C
      =              %3D
      >              %3E
      ?              %3F
      @              %40
      A              %41
      B              %42
      C              %43
      D              %44
      E              %45
      F              %46
      G              %47
      H              %48
      I              %49
      J              %4A
      K              %4B
      L              %4C
      M              %4D
      N              %4E
      O              %4F
      P              %50
      Q              %51
      R              %52
      S              %53
      T              %54
      U              %55
      V              %56
      W              %57
      X              %58
      Y              %59
      Z              %5A
      [              %5B
      \              %5C
      ]              %5D
      ^              %5E
      _              %5F
      `              %60
      a              %61
      b              %62
      c              %63
      d              %64
      e              %65
      f              %66
      g              %67
      h              %68
      i              %69
      j              %6A
      k              %6B
      l              %6C
      m              %6D
      n              %6E
      o              %6F
      p              %70
      q              %71
      r              %72
      s              %73
      t              %74
      u              %75
      v              %76
      w              %77
      x              %78
      y              %79
      z              %7A
      {              %7B
      |              %7C
      }              %7D
      ~              %7E
      ¢              %A2
      £              %A3
      ¥              %A5
      |              %A6
      §              %A7
      «              %AB
      ¬              %AC
      ¯              %AD
      º              %B0
      ±              %B1
      ª              %B2
      ,              %B4
      µ              %B5
      »              %BB
      ¼              %BC
      ½              %BD
      ¿              %BF
      À              %C0
      Á              %C1
      Â              %C2
      Ã              %C3
      Ä              %C4
      Å              %C5
      Æ              %C6
      Ç              %C7
      È              %C8
      É              %C9
      Ê              %CA
      Ë              %CB
      Ì              %CC
      Í              %CD
      Î              %CE
      Ï              %CF
      Ð              %D0
      Ñ              %D1
      Ò              %D2
      Ó              %D3
      Ô              %D4
      Õ              %D5
      Ö              %D6
      Ø              %D8
      Ù              %D9
      Ú              %DA
      Û              %DB
      Ü              %DC
      Ý              %DD
      Þ              %DE
      ß              %DF
      à              %E0
      á              %E1
      â              %E2
      ã              %E3
      ä              %E4
      å              %E5
      æ              %E6
      ç              %E7
      è              %E8
      é              %E9
      ê              %EA
      ë              %EB
      ì              %EC
      í              %ED
      î              %EE
      ï              %EF
      ð              %F0
      ñ              %F1
      ò              %F2
      ó              %F3
      ô              %F4
      õ              %F5
      ö              %F6
      ÷              %F7
      ø              %F8
      ù              %F9
      ú              %FA
      û              %FB
      ü              %FC
      ý              %FD
      þ              %FE
      ÿ              %FF

BitTorrent BEP8 - Tracker Peer Obfuscation

비트토렌트가 사용하는 encryption method를 찾아보기 위해 살펴본 문서


먼저 기본적으로 info_hash값도 숨기는데,
여기서 나타난 방식은 sha1을 info_hash값에 한번더 적용시키는 것
맞는지 맞지않는지는 확인해봐야겠음

그리고 url encoded라는 것. 처음에 와이어샤크로 잡았을때도,
url글자로 바뀌어서 전송되는것을 볼수있었는데, 어떤의미인것인지 파악

가장 중요한 암호화 방식. RC4-drop768이라는 것을 사용한다는데
그건 둘째치고 키를 어떻게 주고받느냐가 관건이라고 볼수있겠다. 대칭키시스템이니까
그래서 봤더니
  • 트래커가 별다른 벡터(rc4의 특징인듯)를 주지 않는다면 info_hash값을 키로 사용
  • 만약 초기화된 벡터를 준다면 그 벡터를 infohash로 확장시키며 sha1을 이용하여 사용
    한다고 적혀있었다.
sha1은 원래값으로 돌아가지않기 때문에, 원래의 metafile이 없다면 고생좀하겠다.

그 다음은 그냥 rc4 키를 이용해 임의난수를 발생시키고, 그것과 데이터를 xor시켜서
데이터를 암호화 한다는 것 끗.

뒤에쓰여진 글은 엄청강력하진 않지만 자기들의 목적은 암호화수준을 좀 높여서
깨려는 시도를 없애려고하였다고 했다. 그러거나말거나

BitTorrent 새로 추가된 세 가지 기능(약 2005년 기준)

1)DHT (Distributed Hash Table)
  과거의 P2P의 추세였던 중앙집중형 (centralized) 한 방식에서 벗어나 분산형시스템 구조 (decentralized)로 변해가고 있다. 그누텔라와 비트토렌트가 그러하듯이. 그러다보니 거대한 네트워크상에서 효율적으로 사용할 수 있는 방식이 필요. 그중 하나가 바로 DHT. 즉, 분산형으로 peer들의 주소나 위치를 저장, 관리할 것이 필요한데, 이것을 각각 peer들의 노드의 키들로 쓰겠다는 것. 중앙식에서 관리하지 않고도 각각의 peer들을 연결시킬 수 있게하자는 것. 자세한 사항은 분산 해시 테이블 관련 논문 참조.

2)Multi trackers
  기존의 트래커가 하나 있던 구조에서는 그 트래커와의 연결이 실패하면, 다음 연결시도때까지 시간을 기다려야하는 단점이 있었는데, 그것을 해결하기 위래 트래커들을 list구조로 사용한다. announce-list 라는 형태로 되어있고, 이런 경우 announce 키는 무시한다. 위 리스트로 묶여진 트래커들을 차례로 연결시도한다.

3)Encryption
  인터넷트래픽의 30%이상을 토렌트가 잠식하고 있다. 이에 ISP업체들은 트래픽관리를 위해 토렌트 트래픽을 block등의 조치를 취하거나 저작권등의 이유로 패킷을 검사하려고한다. 그것을 막기위해 암호화를 사용하려고 한다. rc4와 같은 암호화방식을 사용하려고하지만, 내부에서는 오버헤드가 크기때문에 이를 반대하는 목소리 또한 존재한다.

유니캐스트와 브로드캐스트

유니캐스트는 일대일 통신입니다.
컴퓨터와 컴퓨터간의 정보교환을 하는 일은 유니캐스트로 이루어 집니다.
그리고, 브로드캐스트는 불특정다수에게 정보를 보내는 것입니다.

예를 한가지 들어서 설명을 하겠습니다.

철수,영이,순이,민호 와 같은 이름의 아이들이 있습니다.
철수는 순이라는 아이의 지갑을 주웠습니다.
철수가 아이들에게 순이가 누구니? 하고 물었습니다.
그러자 순이가 내가 순이야 라고 대답을 했죠.
철수는 순이에게 지갑을 건내줬습니다.

이때 철수,영이,순이,민호는 각각의 컴퓨터라고 생각을 하겠습니다.
철수가 순이라는 아이의 지갑을 주워서 돌려주기 위해서는 순이가 누군지를 알아야 합니다.
그래서, 순이가 누구니? 하고 물었죠?
이때 철수의 질문은 불특정 다수에게 질문을 한 겁니다.
브로드캐스트겠죠?
그리고, 이 질문을 들은 아이들은 ARP를 동작합니다.
자신의 이름이 순이가 맞나? 라고 생각을 하는 것이죠.
그리고, 순이가 아닌 다른 아이들은 순간 멈칫 했지만, 자신이 아니므로
무시하고 하던 일을 계속합니다.
순이는 대답을 했겠죠?
철수가 대답을 한 순이에게 지갑을 돌려줍니다.(유니캐스트겠죠?)

만약, 철수는 순이라는 아이를 알고 있다고 칩시다.
브로드캐스트신호를 다른 아이들에게 보낼까요?
아닙니다. 바로 순이에게 유니캐스트를 시도하겠죠?

맥어드레스를 구분하는것은 스위치나다른 통신장비들이 알아서 하겠죠.
네이버 서버의 맥어드레스를 안다고, 그걸 입력해 넣으면 서버에서 응답이 올까요?
저는 모르겠습니다. 거기 맥주소도 모르겠고, 안다고 하면 쳐보겠지만,
네이버서버가 한두대일까요? 엄청나게 많은 서버를 돌리고 있고,
각각의 서버마다 맥어드레스는 다 다를텐데요...

컴퓨터가 통신을 시도할 때에는 자신의 맥어드레스와 IP, 그리고, 상대방의 IP를 프레임에 담아서 전송합니다.
그걸 구분하는것은 스위치와 라우터의 몫이랍니다.
라우터는 IP를 가지고, 자신이 연결된 네트워크에 해당되는 IP가 있는지를 확인하고 통과시킵니다.하지만, 네트워크에 없는 IP라면 짤라버립니다.
맥어드레스는 확인도 안하죠.
그리고 스위치는 IP를 보지 않습니다.
맥어드레스를 가지고 구분을 하죠.아무것도 모르고 있다가, 이주소로 뭣좀 보낼껀데 라고 어느 컴퓨터가 통신을 시도하면, 일단은 브로드캐스트 합니다.
이러이러한 맥어드레스를 가진게 누구냐고 말이죠.
그리고, 누군가 대답을 하면, 일단을 전송을 시도한 컴퓨터와, 받아들일 컴퓨터의 맥어드레스를 기억합니다.
그리고, 다음연결때에는 브로드캐스트를 하지 않고 바로 연결을 해주죠.
이렇게 연결이 된 상태가 유니캐스트인겁니다.
출처 - 네이버 지식인 ainu14님의 글