보안 관련 자료 보다가 흥미가 있는 자료들 메모함.

게임을 만들고 출시를 하기 위해선 내 게임을 해킹하지 못하게 보안은 필수 인거 같다.

될 수 있으면 클라이언트는 연출만 하고,

서버 없이 만들 었다면 보안을 꼭 해서 출시해야 됨.


- 보안

  * 유니티를 사용해서 얻은 다양한 플랫폼은 보안에 관해서는 취약점이 됨.

  * AVM : 안드로이드 가상 머신

    : 드라이버를 확인해서 걸러버리자.

      - 가상 안드로이드일 경우 CD롬이 있을수 있음.

  * 난독화

    : 난독화는 해석을 어렵게 할 뿐 불가능하지 않음.

    : Crypto Obfuscator Tool사용

  * dll 해석을 불가능하게 하자

    : Anti-decompile

    : Il2CPP를 이용하면 바로 해당 바이너리 코드로 생성되기 때문에 dll이 생성되지 않음.

      - 출시할 때 무조건 적용해야함.

  * 암호화

    : 암호화는 키가 핵심이다.

    : Algorithm : AES

    : CipherMode : CBC

    : Padding : PKCS7

    : Hash : SHA3 or SHA-256, md5

    : Encoding : Base64

    : 스크립트 암호화

  * 프로세스 어태치를 이해하고 방어하자

    : 리눅스의 os는 프로세스 어태치를 해논 상태인 프로세스는 다른녀석이 어태치할 수 없다. 때문에 프로세스 어태치를 막기위해서 내가 먼저 선점하면 된다.

  * 메모리 보호

    : 1. Key를 클라이언트에 넣치 않고 서버에서 관리하며 https 통신을 이용해 가저온다.

    : 2. 모든가 동일한 키를 사용할 필요가 없다. 사용자마다 다른 키를 사용한다.

    : 3. SHA256 mySHA256 또는 MD5 md5Hash를 이용해 Hash한 결과값을 사용한다.

    : 4. Aes를 이용해 암호화 한다.

    : 5. 올려놓은 데이터 값을 삭제한다.

    : 6. 혹시라도 에티딩이 됐을대를 대비해 한번더 검사한다.

    : Key 서버 구축

    : App Seoaling을 사용한다?

  * NDC 자료

    : 신승민 : 링크

    : 홍진선 : 링크



반응형