Skip to content

Latest commit

 

History

History
101 lines (57 loc) · 3.61 KB

File metadata and controls

101 lines (57 loc) · 3.61 KB

암호학 개론

라이브에서 게임을 운영을 하기 위해서 반드시 숙지해야할 개념이다.

패킷 조작을 막기 위해 암호화를 한다고 해도 결국 리버스 엔지니어링으로 암호화된 부분을 까볼 수 있다.

중요한 개인정보(아이디, 패스워드, 결제 정보 등)은 그럼에도 암호화를 해줘야 한다.

암호학 대분류

  • 양방향으로 변환 가능
    • 대칭키 암호
    • 비대칭키 암호
  • 단방향으로만 가능
    • Hash ⇒ 평문을 해쉬 함수를 통해서 다른 값으로 치환이 되는데 특히나 비밀번호를 저장할 때 유용하다.
    • ID, PW를 DB에 저장을 할 때 평문 그대로 저장이 되어 있을 때 DB를 탈취하게 된다면 곧 바로 해당 정보를 알 수 있기 때문에 이런 Hash 방식이 유용하다.
    • Hash 함수의 특징
      • 특정 값을 넣으면 항상 나오는 값이 동일하다.
      • ex) 비밀번호가 123abc일 때 해쉬 함수를 통해서 해쉬 값이 나오게 될텐데 이 값과 이전에 내가 등록한 비밀번호가 db에 있는지 확인하는 방식을 사용
      • 즉, 해쉬 값끼리 비교를 해서 동일한지 여부를 판단해주면 된다.
      • 즉 비밀번호 확인도 가능하고 Hash 값만 가지고는 원래 값이 무엇인지 알 수가 없는 구조

양반향 변환 가능) 대칭키 암호

대칭키 암호 특징 : 암호화/복호화 키가 같다.

키?

자물쇠에 사용하는 키와 동일.

즉, 자물쇠를 잠글 때 그리고 자물쇠를 풀 때 같은 키를 사용하는 것과 같은 방식

1.jpg

XOR(^) 연산자를 두번 사용하면 원래 값으로 돌아오는 원리를 사용해서 구현이 가능하다.

즉 위와 같이 특정 메시지 값에 key 값을 XOR 연산자를 사용해주면 암호화된 메시지가 나오고

암호화된 메시지를 다시 한번 더 key 값에 XOR 연산자를 사용해주면 기존 메시지가 나오게 된다.

XOR 방식 말고도 다양한 방식이 존재한다.

장점은 빠르지만 단점은 Key가 유출되면 큰일 난다.

아래에서 언급하는 비대칭키 암호화 방법을 통해 해결 방법을 찾아보자.

비대칭키 암호 특징

비대칭키 암호 특징은 암호화/복화하 키가 서로 다르다.

비밀키, 공개키 둘로 쪼개서 공개키 + 비밀키를 해야 진짜 인지 여부를 판단할 수 있게 된다.

공개키를 조작을 해서 가지고 있을 때 비밀키가 있어야만 해당 조작된 키를 해지할 수 있게 된다.

결국 비대칭키 암호화의 핵심은

공개키와 비밀키 두가지 키를 사용할 것이데,

내가 정보를 전달하는 사람에게는 공개키를 함께 전달해주고 전달 받은 사람이 공개키를 가지고 암호화를 시키면 비밀키를 가지고 있는 사람만 암호를 풀 수 있게 된다.

비대칭키 응용 - 키 교환

2.jpg

대칭키에서 핵심 문제는 key 값을 전달해줘야 하는 부분이였는데

비대칭키의 경우에는 일단 공개 키를 건내주고 상대방의 경우 해당 공개키를 다시 암호화해서 나에게 전달을 해준다.

Q) 왜 상대방이 나에게 다시 공개키를 암호화한 데이터를 주는 걸까?

비대칭키 응용 - 인증

3.jpg

결국에는 공인 인증서의 경우 나만 가지고 있어야 하는 이유도 나만 가지고 있는 비밀키이기 때문이다.

비대칭키의 단점

중간자 공격에 취약하다.

즉 해커가 공개키를 가로채서 똑같은 방식으로 공개키와 비밀키 쌍을 만들고 거기서 공개키를 전달해주면 상대방은 해커가 만든 공개키로 암호화를 한걸로 데이터를 다시 전달 해줄 것이고

해커는 자기가 소유하고 있던 비밀키로 해당 공개키를 해지하여 데이터를 훔쳐볼 수 있게 된다.

따라서 상대편이 공개키를 줬다고 해서 무조껀 믿을 수 없게 된다.

따라서 이를 해결하기 위해 인증 기관이 필요하다.

인증기관

4.jpg

해당 공개키가 진짜가 맞는지 확인해줄 수 있는 기관이 존재.

결론

  • 콘텐츠 패킷 암호화: 대칭키 암호
  • 로그인 인증, 키 교환: 비대칭키 암호
  • 비밀번호 DB에 저장: HASH

암호학의 핵심은 패킷 조작을 막는 것이 아니라 탈취된 데이터를 보호(또는 데이터 탈취를 막기)하기 위한 개념이다.