[ios] AES256 알고리즘을 이용해 데이터 암호화/복호화 방법
첨부 '6' |
---|
모바일 앱을 개발하다 보면 보안상 취약성을 발견할 수 있다. 앱에서 사용되는 환경 파일, 중요한 데이터의 기록 파일이나 DB 파일들이 노출되고 있다. iExplorer와 같은 프로그램을 사용하면 앱 내부에 있는 파일들을 자유롭게 PC로 복사해서 변경 후 다시 iPhone에 복사할 수 있다. 이런 보안상 취약점을 보강하기 위해서는 중요 데이터는 암호화하고 사용시 복호화 하도록 구현해야 한다.
데이터를 저장할 때 암호화하여 저장하면 외부에서 접근이 가능하더라도 데이터의 접근에 제한을 둘 수 있다. 물론, 암호화 알고리즘 자체도 해킹될 수 있지만 단기간 될 수 있는 것은 아니며 평문으로 저장되는 것보다는 보안을 높일 수 있다.
MD5나 SHA와 같이 해시 알고리즘을 통해서 간단히 데이터를 비교할 수도 있지만 해시 함수는 특성상 복호화 할 수 없는 단방향 암호이기 때문에 우리는 양방향 암호화를 위해서 AES 등 쌍방향 암호화 방법을 사용하는 것이 좋다.
AES(Advanced Encrtption Standard)는 미국 정부에서 표준으로 지정된 블록 암호 방식이다. 이 전에는 DES 대칭키 암호를 사용했지만 DES의 56bit 암호 비트가 현재 컴퓨팅 능력에 비해서 적고 여러 취약점이 발견되어 존 데이먼과 빈센트 라이먼(Rijndael)에 의해서 개발되었다. AES는 128bit를 가지고 있고, 128bit 이상의 32배수 길이의 키를 사용할 수 있다.
Objective-C에서 AES256 암호화, 복호화에 대한 코드를 검색하면 많은 자료들이 검색될 것이다. 하지만, 암호 방식이 공개된 것일 뿐 암호화 키가 없이 암호화 방식만 가지고 복호화 하는 것은 어렵기 때문에 공개된 소스코드를 가지고 암호화 메소드를 구현할 수 있다.
1. 프로젝트 설정
- 샘플 싱글뷰 프로젝트 생성
- Security.framework 프로젝트에 포함
- #import <CommonCrypto/CommonCryptor.h> 헤더 포함
2. encryptByAES256WithKey:data: 메소드 작성
3. decryptByAES256WithKey:data: 메소드 작성
4. 결과 화면
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
301 | Develop |
[c] 그래픽 차트 라이브러리.. 나중에 확인 해볼 거..
![]() |
hooni | 2013.04.23 | 8235 |
300 | Develop |
[c] 로또(Lotto) 번호 생성기
![]() |
hooni | 2013.04.23 | 7179 |
299 | Develop | [c] 코드 최적화에 대해.. | hooni | 2013.04.23 | 7694 |
298 | Develop |
[js] 한글문서로 된 259가지 자바스크립트 예제파일
![]() |
hooni | 2013.04.23 | 6773 |
297 | Develop | [js] 자바스크립트 escape()를 PHP로 받기 | hooni | 2013.04.23 | 6001 |
296 | Develop |
[php] 피코맥스용 검색엔진 ㅋㅋ
![]() |
hooni | 2013.04.23 | 6808 |
295 | Develop |
[c][java] 그래픽(graphic)관련 자료와 샘플코드..
![]() |
hooni | 2013.04.23 | 9211 |
294 | Develop |
[java] 그래픽(도형,다각형..) 이동,확대,축소,회전에 대한 내용..
1 ![]() |
hooni | 2013.04.23 | 8645 |
293 | Develop |
[doc] Equation Solving에 대한 발표자료..
![]() |
hooni | 2013.04.23 | 7990 |
292 | Develop |
[c] 베지어 곡선(Bézier curve) 알고리즘
![]() |
hooni | 2013.04.23 | 8563 |
291 | Develop |
[c] 플러드 필링 (flood filling) 알고리즘..
![]() |
hooni | 2013.04.23 | 7327 |
290 | Develop |
[c++] 헤더, 소스 파일 분리해서 작성해본 테스트 소스
![]() |
hooni | 2013.04.23 | 6704 |