2016-04-18 12 views
1

Ich erstelle eine neue iOS-App, die Verschlüsselung verwendet. Die Methode, die ich verwendet habe, benötigt einen eindeutigen Schlüssel zum Verschlüsseln. Wie:Was ist der beste Weg, um einen eindeutigen Schlüssel zu erstellen und dauerhaft zu verschlüsseln?

- (NSData *)AES256EncryptWithKey:(NSString *)key; 

Derzeit verwende ich NSUUID die eindeutige ID zu generieren:

[[NSUUID UUID] UUIDString] 

und die ID-Speichern der KeychainItemWrapper mit:

[keychainItem setObject:[[NSUUID UUID] UUIDString] forKey:(id)kSecAttrService]; 

Die eindeutige ID wird in einigen erzeugt Moment, wenn der Benutzer die App zum ersten Mal öffnet.

Ich frage mich, ob es einen besseren Weg gibt. Danke für jede Hilfe.

+1

Es kann nicht garantiert werden, dass NSUUID zufällige Ergebnisse liefert. In der Tat ist es vernünftig zu glauben, dass zu etwas, das auf einem bestimmten Gerät eindeutig identifiziert werden soll, deterministische Elemente vorhanden sein können. Wenn Sie einen zufälligen Schlüssel mit der angegebenen Bitlänge erzeugen möchten, sollten Sie viele zufällige Bits generieren. Sehen Sie sich [Randomization Services-Referenz von Apple] an (https://developer.apple.com/library/ios/documentation/Security/Reference/RandomizationReference/index.html#//apple_ref/doc/uid/TP40007281) – Palpatim

Antwort

2

UUIDs Teile enthalten, die nicht zufällig sind. Insbesondere möchten Sie keine Zeichenfolge oder einen Schlüssel, der nicht die richtige Länge hat. Schlüssel sollten ein Array von Binärbytes sein.

Verwenden Sie Common Crypto SecRandomCopyBytes, um einen zufälligen Schlüssel zu erhalten.

Weitere UUIDs sind 128-Bit-Werte, möglicherweise möchten Sie einen längeren Schlüssel wie 256-Bit.

-2

Verwenden

[[NSProcessInfo processInfo] globallyUniqueString] 

Hier ist, was Apple über sie beschreibt:

enter image description here

+0

Wie ist das besser? als die Methode des OP? – trojanfoe

+0

Als @J. Lopes sagen, es braucht etwas Zeit, um die einzigartige ID für den ersten Start zu bekommen, dieser sollte funktionieren. [[NSUUID UUID] UUIDString] gibt auch eine eindeutige ID. –

+0

Nein, das sagt er nicht; Ich glaube, er sagt, dass es passiert, wenn der Benutzer die App zum ersten Mal startet. – trojanfoe

Verwandte Themen