2011-03-18 4 views
2

CBC 모드에서 AES256을 사용하여 핵심 데이터베이스를 암호화해야하는 보안 앱을 구축 중입니다. 과거에는 CCCrypto 라이브러리를 통해이 암호화를 사용했습니다.개별 레코드가 아닌 전체 핵심 데이터 저장소를 어떻게 암호화합니까?

나는 this previous question을보고 거기에 대한 답변을했지만 전체 핵심 데이터 SQLite 데이터베이스를 암호화하는 방법에 대한 확실한 답을 찾지 못했습니다.

일부 암호화 라이브러리 (sqlcipher 등)가 있음을 알고 있지만이 작업을 수행하는 최상의 방법을 알고 싶습니다. 누구든지이 암호화를 수행하는 가장 좋은 방법에 대한 제안을 가지고 있습니까?

답변

0

이 문제의 디자인 패턴은 런타임시 데이터베이스를 해독하고 사용하면 응용 프로그램을 닫을 때 다시 암호화합니다. 아니면 개체 내의 속성을 암호화하려고합니까?

암호화 속성을 선택할 수 있습니다. 예를 들어 이름, 전화 번호 및 신용 카드와 같은 다양한 속성을 가진 MyCustomerData라는 민감한 개체가있었습니다. NSCoding 프로토콜을 따르고 AES로 암호화 할 수있는 NSData 객체로 만들 수 있습니다. 이 암호화 된 NSData는 CoreData 데이터 속성에 저장할 수 있습니다.

나는 여기서 더하기는 인코딩되지 않은 다른 민감하지 않은 속성을 가질 수 있으며 NSFetchedResultsControllers 및 NSPredicates와 같은 CoreData의 표준 기능을 활용할 수 있다고 생각합니다.

4

간단한 대답은 OS가 암호화를 수행하도록하는 것입니다. 런타임시 독자적으로 DB를 암호화하고 해독 할 수는 있지만 응용 프로그램이 종료되거나 열려있는 상태에서 종료되고 데이터가 보호되지 않을 위험이 있습니다. OS 레벨 암호화를 사용하면이 위험을 피할 수 있습니다.

Nick Harris wrote up an excellent post on this subject last year.

+0

+1 링크 – TechZen

관련 문제