-> 블로그 이전

[정보보호개론] Week_6 : Information Hiding

2022. 4. 22. 18:41Major`/정보보호개론

Secret Sharing

우리가 어떤 정보 S를 보유한다고 가정하자

 

1) Alice & Bob 어느 누구도 혼자서 S를 가질 수 없다
2) Alice & Bob은 서로 같이 S를 가져야 한다

한마디로 각자 S를 가지려고 하면 가질 수 없고 서로 협력을 해야 S를 가질 수 있다

 

 

Shamir's Secret Sharing

(X0, Y0)은 Alice이고, (X1, Y1)은 Bob이다

 

우리가 (0, S)의 S를 얻기 위해서는 (X0, Y0) ~ (X1, Y1)의 직선을 알아야 한다

 

따라서 S를 얻기 위해서 Alice & Bob이 "협력"해야 한다

 

여기서 "m out of n"이란 n명 중 최소 m명이 있어야 비밀 정보를 알아낼 수 있다는 의미이다

이 경우 3명중 최소 2명이 있어야 직선을 생성해낼 수 있기 때문에 "2 out of 3"라고 할 수 있다

 

이 경우 2명만 있다고 해서 곡선이 만들어지지 않기 때문에 "3 out of 3"라고 할 수 있다

 


Random Numbers

1) 난수는 주로 "Key"를 생성할 때 사용된다

Symmetric Keys

RSA : Prime Numbers

D-H : Secret Values

 

2) 난수는 nonces에 사용된다

nonce란 보안 프로토콜에 이용되는 것이다

 

3) 시뮬레이션 & 통계학에도 난수는 사용된다

 

>> "암호학"에서의 난수란 "Statistically Random"하고 "Unpredictable"이여야 한다

 

Bad Random Number) Online Version of Texas Hold'em Poker

Poker를 시작할 때 가장 먼저 카드를 섞어야 한다 : Card Shuffle

  • 남들이 예측하지 못하도록 잘 섞어야 한다 :: 난수

>> 근데 여기서 안좋은 난수를 사용함으로써 Trudy가 다른이들이 어떤 카드를 보유한지 파악이 가능한 문제가 발생할 수 있다

 

Shuffle의 가능 경우의 수 : 52! > 2225

보통 난수 srand에 처음 seed라는 것을 부여하는데 이 seed는 대게 Integer값을 부여하게 된다

 

따라서 Integer가 4 byte = 32bit이므로 Suffle의 가능 경우의 수는 232로 줄어들게 된다

 

그리고 포커 프로그램은 "Pascal Pseudo-Random Number Generator"를 사용한다

이것은 seed값으로 "0시 0분 0초부터 현재까지 몇 ms 지났나"를 넣어주게 된다

 

따라서 seed값의 범위는 24*60*60*1000 < 227이므로 227미만의 경우의 수로 shuffle이 가능하다

 

그런데 과연 227까지 Trudy가 굳이 뒤져야 할까?

>> No

 

왜냐하면 Trudy는 결국 seed값이 뭐냐만 찾으면 공격이 가능하고 이 seed값은 굳이 24시간 다 뒤져서 파악하는게 아니라 현재 시각까지의 범위만 뒤지면 된다

 

따라서 227에서 218까지 범위가 좁혀져서 공격이 가능하다

 


Information Hiding

일반적으로 정보를 숨기는 방식은 "암호화"라고 생각하라 수 있다

그런데 암호화란 "내용 자체를 볼 수 없게 만드는 것"이다

 

여기서 설명할 "정보 숨기기"란 내용 자체를 볼 수 없게 만드는 것이 아니라 "비밀 정보를 다른 정보 안에 숨기기"이다

 

예를 들어서 국정원 요원 A, C 간에 정보를 암호화한다고 하자
여기서 A, C는 중국의 스파이이다

하지만 진짜 국정원 요원 B가 A, C몰래 그들 사이에 교환되는 정보를 보려고 한다

그런데 이 정보가 암호화가 되어 있다?
B는 원래 어떤 내용인지 알 수는 없지만 암호화가 되었다는 사실을 통해서 A, C를 의심할 수 있다

따라서 A, C는 암호화가 아니라 "정보 숨기기"를 통해서 서로 몰래 통신을 해야 한다

 

Digital Watermarks

저작권/소유권 등을 표현해서 남들이 무단으로 사용하지 못하도록 해준다

 

1) Invisible / Visible

이들을 구분하는 것은 "워터마크가 보이냐 안보이냐" 이것으로 구분한다

 

Visible의 경우 "TOP SECRET"의 경우 사용된다.

군대 기밀문서를 보게되면 1급 기밀/2급 기밀 이렇게 굉장히 중요한 문서에 기밀 워터마크를 새긴것을 볼 수 있다

 

Invisible의 경우 겉으로는 원본 데이터만 보이지만 그 데이터를 조작해보면 안에 워터마크가 숨겨져있다

 

 

2) Robust / Fragile

Robust는 쉽게 깨지지 않는 워터마크이다

Trudy가 해당 데이터에 워터마크가 존재할거라서 예상을 하고 데이터에 약간의 변형을 가했다

하지만 Robust Watermark는 쉽게 깨지지 않기 때문에 Trudy입장에서는 워터마크가 존재할거라는 의심을 버리고 그냥 무단으로 사용할 수 있게 된다

 

이러면 경찰에 잡혀갈 것이다

 

 

Fragile는 쉽게 깨지는 워터마크이다

Fragile Watermark는 Attacker가 살짝만 원본을 변형시켜도 바로 워터마크가 깨지게 된다

 

 

Example) MP3 음원

Invisible Watermark

Trudy가 어떤 mp3 음원을 불법 추출해서 불법 배포를 했다고 하자

 

멜론 입장에서는 불법 배포된 데이터에 대한 워터마크를 추출하면 누가 언제 배포했는지 파악이 가능하고 멜론은 Trudy를 고소할 것이다

 

Robust Invisible Watermark

이전에 고소를 먹은 Trudy는 이번에는 Attack을 통해서 미리 해당 데이터에 Watermark가 존재하는지 확인하려고 한다

하지만 Robust이므로 Attack을 해도 워터마크가 깨지지 않는다

 

따라서 Trudy는 이번엔 워터마크가 없겠구나라고 생각해서 또 불법 배포를 하게 된다

 

멜론은 또 다시 Trudy를 고소할 것이다

 

Fragile Invisible Watermark

이 경우는 불법으로 데이터에 변형을 가하게 된다면 즉시 해당 데이터는 깨지기 때문에 아무도 사용할 수 없다

따라서 불법으로 다운로드를 하면 절대 사용할 수 없는 데이터가 된다

 

 

Steganography

비밀 정보를 다른 정보에 잘 숨기는 것에 초점을 맞춘다

 

"Images & Steganography"

Image는 RGB라는 색으로 표현되어 있고 RGB는 각각 8bit씩 구성되어 있다 >> 24bit

 

(1) / (2)

둘다 RGB의 각 1bit를 변경시킨것을 볼 수 있다

 

하지만 (1)의 경우 변경될 것이 확연히 파악을 할 수 있지만, (2)의 경우 판별이 힘들다

 

>> 각 RGB비트간에 상위 비트를 변경시키면 변경을 쉽게 파악할 수 있고, 하위 비트를 변경시킨다면 변경을 눈치채기 힘들다

  • 7E = 0111 1110 / FE = 1111 1110 >> Best
  • F0 = 1111 0000 / F1 = 1111 0001 >> Worst

전쟁중에 요원에게 암호문을 보내려고 한다

대상은 위의 html문서이고 그에 해당하는 소스코드가 밑 사진에 존재한다

 

상관 A는 요원 B에게 "110 010 110 011 000 101"이란 Hidden Message를 보내려고 한다

이 때 소스코드의 color부분을 약간 변형시켜서 보내는 것이다

 

Color부분은 RGB로 되어 있고 각 RGB bit의 하위 비트를 변경시킴으로써 변경이 눈에 잘 안띄도록 함으로써 암호문을 좋게 보낼 수 있다

  • 01 01 00
  • 00 01 00
  • 01 01 00
  • 00 01 01
  • 00 00 00
  • 01 00 01