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
자세한 내용은 아래 참조링크를 참조하세요..
참고링크: Strong Encryption for COCOA - http://bit.ly/kGOaX8
내용상의 관련 정보를 검토하지 않아 피드백이 필요하면, 댓글 남겨 주십시오.
예전에 대충 굴러만 가도록 만들었던 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);
자세한 내용은 아래 참조링크를 참조하세요..
참고링크: Strong Encryption for COCOA - http://bit.ly/kGOaX8