Shine's dev log

온라인 광고와 트래킹 기법 (Cookie syncing, 3rd-party cookie, Publisher, Advertiser, Ad network) 본문

보안

온라인 광고와 트래킹 기법 (Cookie syncing, 3rd-party cookie, Publisher, Advertiser, Ad network)

dong1 2024. 6. 3. 04:11

1. 온라인 광고

 

웹서핑을 하다보면 손쉽게 광고를 발견할 수 있다.

 

특히 광고를 보다보면 내가 얼마전에 쿠팡에서 찾아봤던 제품이라던지, 내가 평소에 관심있었던 내용들이 광고에 뜨는것을 보았던 경험이 있을 것이다.

 

이렇게 사용자를 타겟팅해서 광고를 하는 것은 모두 온라인 트래킹을 활용한 것인데, 이번에는 과연 이런 광고들이 나를 어떻게 식별하고 tracking 하는지 알아보자.

 

 

2. Publisher와 Advertiser

 

온라인 광고 시장에는 크게 PublisherAdvertiser (provider)가 존재한다.

 

  • Publisher

Publisher는 사용자가 방문하려는 웹페이지의 주인이라고 보면 된다.

예를 들어서, 사용자가 유튜브 사이트에 접속하면 거기서 publisher는 유튜브인 것이고, 뉴스 사이트에 접속하면 해당 뉴스 사이트가 publisher 인 것이다.

 

Publisher들은 자신들이 웹사이트를 운영하면서 남는 자리에 광고를 게시할 수 있다. 이렇게 광고를 게시하게 되면 돈을 벌 수 있기 때문이다!

 

  • Advertiser (provider)

Advertiser 는 ad provider 라고도 불리는데, 이녀석들은 광고를 하고자 하는 사람들이다. 즉 광고주라고 보면 된다.

Advertiser 들은 publisher에게 일정 금액을 지불하고 자신들의 광고를 게시할 수 있다.

 

한가지 예시로 이 두 집단을 정리해보자.

예를 들어서 당신이 이 티스토리 블로그에 접속해서 글을 보고 있는데 거기서 쿠팡 광고가 떴다고 가정해보자. 여기서 티스토리 블로그가 Publisher, 쿠팡이 Advertiser 인 것이다.

 

가장 간단하게 광고를 하는 방법은, 쿠팡(Advertiser)이 티스토리(Publisher)한테 자신의 광고를 표시할 수 있는 JS 코드조각을 주고, 티스토리는 이 코드조각을 자신의 HTML 에 삽입함으로써 광고를 게시할 수 있다.

 

Publisher 는 자신들이 웹페이지를 관리하면서 광고 수익을 얻을 수 있으니 좋고, Advertiser 는 사용자들이 많이 접속하는 사이트에 자신의 광고를 많이 노출시킬 수 있으니 좋은것이다. 결국 이 둘은 상생관계라고 보면 된다.

 

 

3. Ad Network

 

하지만 advertiser 가 일일히 publisher 들을 찾아다니면서 자기 광고를 게시해달라고 하거나, publisher 가 자기 웹사이트에 광고좀 해달라고 advertiser들을 찾아다니는 것은 꽤나 번거로운 일이다.

 

따라서 이 둘을 연결해주는 일종의 중재기관이 있는데, 이것이 바로 Ad Network이다.

Ad Network는 마지 경매장처럼 동작한다. Publisher들이 자기 웹사이트에 광고올릴 자리가 있다고 Ad network에 요청하고, Advertiser들도 자기가 이런 광고를 띄우고 싶다고 Ad network한테 요청한다.

그러면 Ad Network들은 양쪽의 요청사항들을 잘 취합한 뒤 이를 연결해준다.

 

[그림 1] 은 사용자들, publisher, advertiser, ad network 의 관계를 간단하게 나타낸 그림이다.

(1) 우선 Advertiser 가 Ad network를 통해 Publisher 의 웹페이지에 Ad나 tracking contents 관련 JS 나 이미지 등을 심고

(2) 사용자가 publisher의 웹페이지에 방문하면

(3) advertiser 로부터 ad / tracking contents 를 받아오게 된다.

 

[그림 1] Users, Publisher, Advertiser, 그리고 Ad network의 관계

 

4. 온라인 트래킹 (Online Tracking)

 

지금까지 온라인 광고 세계가 어떻게 돌아가는지 알아보았다.

 

사실 사용자의 특징 (나이, 연령대, 관심사 등등)을 파악하고 이에 맞게 광고를 내보내는 것이 광고주 입장에서는 굉장히 중요한 일이다. 최소한의 광고 노출로 최대한의 사람들에게 광고 효과를 누릴 수 있기 때문이다.

 

그렇다면 그런데 과연 광고들이 어떻게 내가 관심있는 상품들을 알고 나한테 추천을 해주는 것일까?

이렇게 온라인 사용자들의 특징을 파악하고, 이를 위해서 사용자가 다른 어느 사이트를 방문했는지 확인하는 과정을 온라인 트래킹 (Online Tracking)이라고 한다.

 

온라인 광고가 활성화 된 이후로, 사용자들을 트래킹하는 이 작업은 계속해서 발전해오고 있다. 지금부터 대표적인 온라인 트래킹 방식들을 알아보자!

 

 

5. 서드파티 쿠키(3rd-Party cookie)를 이용한 Cookie syncing

 

온라인 트래킹에는 서드 파티 쿠키를 이용한 cookie syncing이 가장 정확하면서 많이 이용되는 방법이다.

쿠키에 대해서 잘 모르는 경우 아래 이전 게시글을 참고하길 바란다.

 

https://ddongwon.tistory.com/73

 

Cookie, Web cache (쿠키, 웹 캐시의 개념)

1. Cookie 쿠키는 문자와 숫자의 조합으로 된 작은 파일이다. 서버는 쿠키를 통해서 클라이언트를 식별하고 이에 맞춰 다양한 서비스를 제공한다. 아마존 사이트에 들어가면 내가 보았던 상품 목

ddongwon.tistory.com

 


 

 

[그림 2] Cookie syuncing (출처: Cookie Synchronization: Everything You Always Wanted to Know But Were Afraid to Ask, WWW '19)



우선 cookie syncing 의 목적은 여러 트래커들이 서로 다른 웹페이지를 방문하는 서로 다른 사용자들을 잘 분류하여, 누가 어느 페이지들에 방문했는지를 확인하는 것이다.

 

여기서 핵심은 최대한 많은 사용자들을 트래킹 하기 위해서 여러 트래커 회사들이 협력하고 있고, 이 협력하는 과정에서 서로의 정보를 공유하는 방법으로 cookie syncing을 이용한다는 것이다.

(즉 트래킹 하는 방법 자체라기 보다는, 여러 트래커가 각자 트래킹한 사용자들을 서로 맞춰보는 과정이라고 이해하면 편하다.)

 

[그림 2]를 보면서 이해를 해보자.

우선 트래킹을 하기 원하는 트래커 tracker.com advertiser.com, 두개의 adverstiser가 있다고 가정해보자. 이 둘은 은 서로 협력하는 관계이다. 이 둘의 목적은 하나의 사용자가 다양한 웹사이트를 방문할 때 이를 하나의 동일한 사람으로 인식하는 것이다.

 

  • step 1)

tracker.comwebsite1.com에 자신의 JS 코드 (tracker.com/script.js)를 삽입해놓았고,

advertiser.comwebsite2.com에 자신의 이미지 (advertiser.com/adBanner.png)를 삽입해놓았다.

(이미 advertiser와 publisher가 ad-network를 통해 협력한 상황일 것이다.)

 

  • step 2)

이제 사용자가 website1.com 에 접속하면, tracker.com에 해당하는 쿠키를 세팅하면서, 자신의 쿠키값인 user123을 저장하고 이를 tracker.com에게 알려준다.

똑같은 사용자가 website2.com 에 접속하면, advertiser.com 에 해당하는 쿠키를 세팅하면서, 자신의 쿠키값인 userABC를 저장하고 이를 advertiser.com에게 알려준다.

 

중요한 점은, 쿠키는 "각 사이트" 마다 설정이 된다는 것이다.

위의 과정에서 사용자는 website1.comwebsite2.com 두개의 사이트에만 접속했지만, 해당 사용자에 대한 쿠키는 tracker.com, advertiser.com 에도 각각 세팅된 상황이다.

 

지금까지의 상황을 정리해보면, tracker.com은 이 사용자가 user123 이라는 식별자를 가진 것을 알고, advertiser.com은 이 사용자가 userABC라는 식별자를 가진 것을 알고 있다.

즉, 아무리 이 두 advertiser가 머리를 맞대보아도 user123userABC가 같은 사용자라는 것은 알수가 없다. (왜냐면 식별자 user123userABC는 다르기 때문)

 

  • step 3)

마지막으로 사용자가 website3.com 에 접속한다. 단, 여기서 website3.com에는 tracker.com 만 트래킹을 하고 있다고 가정해보자.

 

그럼 사용자는 website3.com 에 삽입된 작은 이미지 파일 tracker.com/beacon.gif 을 읽게 되고, 이 요청은 tracker.com의 미리 짜여진 계획에 의해서 advertiser.com으로 redirect 된다.

 

[그림 3] tracker.com 에서 advertiser.com으로 redirect된 사용자의 요청(beacon.gif) (출처: Cookie Synchronization: Everything You Always Wanted to Know But Were Afraid to Ask, WWW '19)

 

결국 [그림 3]과 같은 요청이 사용자로부터 advertiser.com에게 발생하게 된다. (tracker.com 이 redirect 시켰으므로)

 

다만, 해당 사용자는 advertiser.com에게 userABC 라는 쿠키 ID를 가지고 있는 상태이므로 (website2.com 방문할 때 생겼던 것), 이를 advertiser.com에게 전송하게 된다.

 

결론적으로 이 순간, tracker.comadvertiser.com은 각각 자신이 알고있었던 user123userABC가 같은 하나의 사용자임을 깨닫게 된다.

 

이런식으로 여러 Advertiser들은 다양한 사이트들에 자신들의 스크립트나 이미지들을 심어놓고, 누가 누구인지 알아내는 온라인 트래킹 과정을 열심히 수행하게 된다. (그래서 표적광고 해서 돈 많이 번다.)

 


 

중요한 점은, 이런 트래킹 방식은 웹사이트(website1/2/3.com)와 다른 도메인(advertiser/tracker.com)의 쿠키, 즉 서드파티 쿠키(3rd-Party cookie)를 사용할 수 있기 때문에 가능하다는 것이다.

 

하지만 최근에 서드파티 쿠키가 사용자들을 과도하게 트래킹하여 프라이버시를 침해한다는 문제가 발생함에 따라, 다양한 브라우저에서 서드파티 쿠키를 차단하려는 움직임이 발생하고 있다.

 

사파리와 파이어폭스는 이미 허용되지 않은 서드파티 쿠키를 제한하고 있고, 구글 크롬도 조만간 서드파티 쿠키를 디폴트로 제한하겠다고 선언했다.

 

이렇게 서드파티 쿠키가 점점 설자리를 잃어가는 상황에서 cookie syncing 말고 다른 방법들이 필요해보인다. 대표적인 발법으로 first-party cookie를 이용하는 방법이 있고, 실제로 여러 연구들* 에서도 이를 적용하고 있긴 하다.

(* CookieGraph: Understanding and Detecting First-Party Tracking Cookies, ACM CCS, 2023)

 

근데 그래도 서드파티 쿠키를 이용한 트래킹의 성능에는 많이 부족할 것으로 예상된다.

 

 

6. 그 외의 방법들...

 

쿠키를 이용하지 않고 온라인 트래킹을 하는 방법들도 많이 존재한다.

 

대표적으로 웹브라우저의 다양한 세팅들 (User agent, installed fonts, screen resolution, ...) 을 마치 그 사람의 지문처럼 이용하여 동일한 세팅을 가지면 동일한 사용자라 가정하는 Browser Fingerprinting 기법이 있고,

 

그 외에도 캐시 정보를 이용한 방법, 네트워크 정보들을 이용하는 방법 등 있고, 앞으로도 다양한 방법들이 제안될것이다..!

 

 

 

오늘의 내용을 정리해보면,

 

1. 온라인 광고는 Publisher, Advertiser, 그리고 그들을 연결해주는 Ad network로 구성된다.

2. 표적 광고를 위해 온라인 트래킹 기법들이 사용된다.

3. 가장 대표적인 방법은 서드파티 쿠키를 이용한 cookie syncing 이다.