윈도우폰 암호화

윈도우폰에서 암호화를 진행중이다.

일단 싱글플레이용으로 암호화를 진행중이며, 핵심은 다음 3가지다.

1. 2개의 파일을 보관한다. [세이브파일], [세이브파일의 수정된 시각 + 키값 + 세이브파일의 원본 길이, 세이브파일의 길이]

2. LZMA 압축 + AES 암호 알고리즘

3. 파일들의 해쉬값

전체 흐름을 살펴보면 다음과 같다.

1. 파일을 LZMA로 압축한 후에 AES로 암호화 한다.

2. " 이때 사용된 키값 + 세이브 파일의 수정된 시각 + AES암호화 전 후의 바이트 길이 "를 압축하고 암호화 한다.

3. 이제 2개의 파일이 만들어졌다. 그 파일들의 해쉬값을 SHA 알고리즘을 통해 얻어온다.

이렇게하면 세이브파일의 조작으로 부터 안전하다.

공격자의 입장이 되어서 생각해 보자.

공격자가 세이브 파일을 열기 힘들다. 왜냐하면 키값이 없이 AES를 뚫기 매우 힘들기 때문이다.

또 하나의 방법. 세이브 파일을 덮어씌워도 소용없다. 왜냐하면 키값에는 세이브 파일의 수정된 시각이 존재한다.

만일 공격자가 세이브 파일을 덮어씌우게 되면 세이브 파일의 수정시각이 변하므로 이 또한 막을 수 있다.

굳이 AES 암호화 전 후의 바이트 길이를 갖고 있는 이유는 AES는 16바이트씩 끊어서 맞추기 때문에 SAVE파일의 바이트 수가 변할 수 있다. 보통은 0값으로 채워넣지만 압축을 풀고 해제할때 안전하게 하기 위해서 바이트의 길이를 갖고 있는다.

다음은 내가 참조한 소스다.

AES 암호화 소스 : https://skydrive.live.com/?cid=858185485363214a&id=858185485363214A%21418

윈폰에서 파일 읽고 쓰는 법
http://dotnet.dzone.com/articles/working-files-windows-phone-7
http://stackoverflow.com/questions/6420565/how-to-read-write-byte-into-isolated-storage

윈폰에서 제공하는 암호화
http://msdn.microsoft.com/en-us/library/ff637516(v=vs.92).aspx (Encrypted 로 검색하면 됌.)


추후 고려해야하는 점.

이 방법은 세이브 파일을 막는 것이지, 코드 디컴파일러에는 취약하다.

코드 난독화 + 함수 콜하는 메모리 시프트(CLR에서는 힘듬) 등 다양한 방법을 찾아봐야한다.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 아이조 | 2012/01/30 14:51 | 트랙백 | 덧글(0)

트랙백 주소 : http://izowooi.egloos.com/tb/2839696
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶