2012-10-02 3 views
1

Google은 일부 데이터를 현지에 저장하는 앱을 보유하고 있습니다.이 데이터는 사용자와 Google 이외의 다른 사람에게 가치가 없습니다. 따라서 암호화 할 필요는 없지만 아무도 변경하지 않았 으면합니다.휴대 기기의 설정 파일 확인 및 확인 (iOS + Android)

나는 파일 내용, 날짜 스탬프 및/또는 크기에서 해시를 생성하는 것이 가장 쉬운 방법이라고 생각했습니다. 곧바로 md5를 수행하는 것은 아마도 충분하지 않을 것입니다. 누가 데이터를 변경하려고하는지 새로운 해시를 생성 할 수 있기 때문에 일종의 키를 사용하는 것이 좋을 것입니다. 누구든지이 일을하는 간단한 방법을 알고 있습니까? 나는 crypto ++와 같은 라이브러리를 사용하지 않으려하지만, 100 %는 사용하지 않도록하고 싶다.

아, 우리는 C++로 앱을 만들고 있습니다.

어쩌면 우리는 md5 함수에 전달한 값에 모호한 데이터를 추가해야 할 것입니다. 너희들은 어떻게 생각하니?

다시 말해서, 파일에는 해커에게 가치있는 정보가 없으므로 보안을 위해 외출 할 이유가 없습니다. 설정이 엉망이되었는지 확인하고 싶습니다.

감사합니다. Angrius.

PS> 누구나 md5를 구현할 수있는 좋은 방법을 알고 있습니까?

답변

1

내가하고 싶은 일을하는 가장 간단한 방법은 기본 HMAC (http://en.wikipedia.org/wiki/Hash-based_message_authentication_code)를 구현하는 것입니다. 좀 더 복잡하지만 꽤 깔끔하지만이 해시를 설정 파일 자체에 저장할 수도 있습니다.

iOS와 Android 모두 기본 SHA1, MD5 등을 수행하는 라이브러리가 내장되어 있습니다. 그들은 또한 HMAC를 지원합니다. 그래서 iOS 용 당신이 이런 짓을 할 것이다 :

#include <CommonCrypto/CommonHMAC.h> 

string createHMAC(string key, string text) 
{ 
    string result; 

    const char *cKey = key.c_str(); 
    const char *cData = text.c_str(); 
    unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH]; 

    CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC); 

    NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; 
    for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) 
    { 
     [output appendFormat:@"%02x", cHMAC[i]]; 
    } 
    result = string([output UTF8String]); 

    return result; 
} 

를이 목적-C 코드이기 때문에,이 같은 목표 - C++를 컴파일 할 수 있으며, 그것은 작동합니다. 앱에 고급 암호화가 필요하지 않은 경우 프레임 워크를 사용할 필요가 없습니다.

건배, Angrius

2

데이터에 서명하려면 키와 서명 알고리즘을 사용해야합니다. RSA와 같은 비대칭 또는 AES와 같은 대칭입니다. 그러나 앱이 데이터에 서명해야하는 경우 키를 삽입하거나 앱에서 사용할 수 있어야합니다. 이 경우 잠재적 공격자가 앱에서 앱을 추출하여 유효한 유효 서명을 만들 수 있습니다. 당신은 그것이 당신과 괜찮은지 그리고 얼마나 멀리 당신이 그것을 보호하기를 원합니까.

'모호한 데이터'를 추가하거나 자신의 알고리즘을 생각해내는 것은 좋지 않은 생각입니다. 특히이 분야에 대한 경험이없는 경우에는 잘못 이해할 필요가 있습니다. 표준 알고리즘을 사용하고 키 보호 방법을 생각하십시오 (iOS 키 체인 등 사용). "RSA sigantures"또는 "HMAC"를 검색하여 실제로이 작업을 수행하는 방법에 대한 자세한 정보를 얻으십시오. C++ 라이브러리 (?)에서 플랫폼의 암호화 API를 사용할 수 없다면 OpenSSL과 같은 타사 라이브러리를 사용하고 링크해야합니다.

+0

응답을 주셔서 감사합니다,하지만 난 데이터를 보호하기 위해 노력하고 있지 않다가, 난 그냥 누군가가 그것을 수정 한 있는지 확인하기 위해 노력하고 있습니다. config 파일을 수정하고 기본값으로 되돌리려면 config 파일을 거부합니다. OpenSSL을 사용하는 것은 과도한 것 같습니다. – SpaceBear

+0

어떤 종류의 서명 키 (예 : OP에서도 그렇다고하더라도)를 갖고 있지 않으면 수정되지 않았는지 확인할 방법이 없습니다. –

+0

네, 파일의 메타 데이터와 개인 키를 기반으로 md5를 생성 할 것 같습니다. http://en.wikipedia.org/wiki/Hash-based_message_authentication_code – SpaceBear