게임 서버에서 가장 중요하다고 말할 수 있는 것 중 하나가 바로 보안 문제다. 우리는 게임 내에 수많은 정보를 암호화하여 보관/관리한다. 정보를 보호할 때 암호화 키를 사용하고, 암호화된 정보를 꺼내볼 때 복호화 키를 사용한다.
✅ 대칭키
암호화/복호화 키가 같은 경우의 암호를 대킹키 암호라 한다. xor 연산을 예시로 볼 수 있다.
static void Main(string[] args)
{
int treasure = 77;
int key = 103;
int secret = treasure ^ key;
Console.WriteLine($"비밀 암호 : {secret}");
Console.WriteLine($"암호 해독 : {secret ^ key}");
}
우리의 소중한 정보는 77이다. 키값 103과 77에 xor 연산을 이용하여 정보를 42이라는 숫자 안에 숨겨놓았다. 그 정보를 복호화하여 볼 때는 암호화 키와 같은 값인 103을 사용하면 된다.
대칭키 암호는 매우 빠르지만, 키 값이 유출되는 경우 정보를 숨길 수 없다는 문제가 있다.
✅ 비대칭키
암호화 키와 복호화 키가 다른 경우를 비대칭키 암호라 한다. 이때 사용되는 암호화 키는 모두가 알고 있다. 공개 암호화 키다. 정보를 꺼내 보는 복호화 키는 꽁꽁 숨겨져 있기 때문에 정보 보호가 잘된다. 비대칭키 암호는 RSA 등의 알고리즘을 사용한다. 매우 복잡한 수학 공식으로 이해할 필요 없다...
속도가 느리지만 안전하다는 특징이 있다.
https://ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8
RSA 암호 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. RSA[1] 암호는 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 알려져 있다. RSA가 갖는 전자서명 기능은 인증을 요구
ko.wikipedia.org
중간자 공격(Man In The Middle Attack)에 유의해야 한다. 중간에서 정보를 탈취하는 위험이 있다. 이를 해결하기 위해 인증기관이 있다.
'공부 > 게임 서버' 카테고리의 다른 글
[게임 서버 / C# ] Socket Error (10061) : 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다. (0) | 2022.10.07 |
---|---|
[게임 서버] 게임 해킹에 대해 알아보자 (0) | 2022.09.30 |
[게임 서버] await 사용하기 (0) | 2022.07.11 |
[게임 서버] SetBuffer를 RecvBuffer, SendBuffer로 따로 빼내기 #2 (0) | 2022.06.21 |
[게임 서버] SetBuffer를 RecvBuffer, SendBuffer로 따로 빼내기 #1 (0) | 2022.06.20 |