A colossal Dreamer: GR鐵塔-天生我材

[오브젝티브C] 암호화 AES 본문

Development/아이폰

[오브젝티브C] 암호화 AES

江多林 2011. 5. 30. 17:44
올만에 iOS 에서 사용가능한 대칭키암호화알고리즘을 다시 살펴보았습니다.
내용상의 관련 정보를 검토하지 않아 피드백이 필요하면, 댓글 남겨 주십시오.

예전에 대충 굴러만 가도록 만들었던 AES128 을 대신하여,
이번에는 AES256과 PassPhrase 키 생성 방식과 IV를 활용한
암호화 정책을 해보려고 하였습니다.

우선 PassPhrase 를 위해서 예전에 작성하였던 SHA256 알고리즘을 사용했습니다.
여기까지는 문제가 없었지만,  기존 ECB 방식 과 AES128 에서
IV를 사용하는 CBC/ CDF(?) 방식을 적용하고, 키강도를 높이는 것에는
몇 가지 가정이 필요했습니다.

우선 objective-C 라이브러리에 CBC feedback 알고리즘을 설정하는 곳이 없었습니다.
===> 이것은 ECB를 주지 않으면, 기본적으로 CBC feedback을 적용하는 것 같습니다.

AES256은 AES128 알고리즘을 사용하되 256bit의 키를 사용하는 방식이었습니다.
아.. AES256 알고리즘 설정이 없다고 또 한 참 돌았네요..

그래서 대략의 코드는 아래와 같습니다.

-- AES256

CCCryptorStatus result = CCCrypt(

kCCEncrypt, kCCAlgorithmAES128 , kCCOptionPKCS7Padding,

keyBuffer, kCCKeySizeAES256,

ivBuffer,

[data bytes], [data length], 

returnBuffer, returnLength,

&numBytesEncrypted);


CCCryptorStatus result = CCCrypt(

kCCDecrypt, kCCAlgorithmAES128 , kCCOptionPKCS7Padding,

keyBuffer, kCCKeySizeAES256,

ivBuffer,

[data bytes], [data length], 

returnBuffer, returnLength,

&numBytesEncrypted);


자세한 내용은 아래 참조링크를 참조하세요..


참고링크: AES256 Decryption Problem - http://bit.ly/mmQYJ1
참고링크: Strong Encryption for COCOA - http://bit.ly/kGOaX8