浏览代码

clear code : change passphrase

Marino Faggiana 7 年之前
父节点
当前提交
456749503d

+ 2 - 2
iOSClient/CCGlobal.h

@@ -41,8 +41,8 @@ extern NSString *const dav;
 // UUID
 #define k_UUID_SIM                                      @"4BACFE4A-61A6-44B1-9A85-13FD167565AB"
 
-// Mnemonic test EndToEnd Encryption
-#define k_Mnemonic_test                                 @"moreovertelevisionfactorytendencyindependenceinternationalintellectualimpressinterestvolunteer"
+// Passphrase test EndToEnd Encryption
+#define k_passphrase_test                               @"more over television factory tendency independence international intellectual impress interest sentence pony"
 
 #define k_dismissAfterSecond                            4
 

+ 2 - 2
iOSClient/Security/NCEndToEndEncryption.h

@@ -35,9 +35,9 @@
 - (void)decryptMetadata:(tableMetadata *)metadata activeUrl:(NSString *)activeUrl;
 
 - (NSString *)createEndToEndPublicKey:(NSString *)userID directoryUser:(NSString *)directoryUser;
-- (NSString *)createEndToEndPrivateKey:(NSString *)userID directoryUser: (NSString *)directoryUser mnemonic:(NSString *)mnemonic;
+- (NSString *)createEndToEndPrivateKey:(NSString *)userID directoryUser: (NSString *)directoryUser passphrase:(NSString *)passphrase;
 
-- (NSString *)decryptPrivateKeyCipher:(NSString *)privateKeyCipher mnemonic:(NSString *)mnemonic;
+- (NSString *)decryptPrivateKeyCipher:(NSString *)privateKeyCipher passphrase:(NSString *)passphrase;
 
 - (NSString *)getCSRFromDisk:(NSString *)directoryUser delete:(BOOL)delete;
 - (NSString *)getPrivateKeyFromDisk:(NSString *)directoryUser delete:(BOOL)delete;

+ 11 - 4
iOSClient/Security/NCEndToEndEncryption.m

@@ -282,7 +282,7 @@ cleanup:
     return publicKey;
 }
 
-- (NSString *)createEndToEndPrivateKey:(NSString *)userID directoryUser: (NSString *)directoryUser mnemonic:(NSString *)mnemonic
+- (NSString *)createEndToEndPrivateKey:(NSString *)userID directoryUser: (NSString *)directoryUser passphrase:(NSString *)passphrase
 {
     NSMutableData *privateKeyCipherData = [NSMutableData new];
 
@@ -296,7 +296,10 @@ cleanup:
     NSMutableData *keyData = [NSMutableData dataWithLength:PBKDF2_KEY_LENGTH];
     NSData *saltData = [PBKDF2_SALT dataUsingEncoding:NSUTF8StringEncoding];
     
-    CCKeyDerivationPBKDF(kCCPBKDF2, mnemonic.UTF8String, mnemonic.length, saltData.bytes, saltData.length, kCCPRFHmacAlgSHA1, PBKDF2_INTERACTION_COUNT, keyData.mutableBytes, keyData.length);
+    // Remove all whitespaces from passphrase
+    passphrase = [passphrase stringByReplacingOccurrencesOfString:@" " withString:@""];
+    
+    CCKeyDerivationPBKDF(kCCPBKDF2, passphrase.UTF8String, passphrase.length, saltData.bytes, saltData.length, kCCPRFHmacAlgSHA1, PBKDF2_INTERACTION_COUNT, keyData.mutableBytes, keyData.length);
     
     NSData *initVectorData = [self generateIV:AES_IVEC_LENGTH];
     NSData *privateKeyData = [[NSFileManager defaultManager] contentsAtPath:[NSString stringWithFormat:@"%@/%@", directoryUser, fileNamePrivateKey]];
@@ -355,14 +358,18 @@ cleanup:
 #pragma mark - Register client for Server with exists Key pair
 #
 
-- (NSString *)decryptPrivateKeyCipher:(NSString *)privateKeyCipher mnemonic:(NSString *)mnemonic
+- (NSString *)decryptPrivateKeyCipher:(NSString *)privateKeyCipher passphrase:(NSString *)passphrase
 {
     NSMutableData *privateKeyData = [NSMutableData new];
     
     // Key (data)
     NSMutableData *keyData = [NSMutableData dataWithLength:PBKDF2_KEY_LENGTH];
     NSData *saltData = [PBKDF2_SALT dataUsingEncoding:NSUTF8StringEncoding];
-    CCKeyDerivationPBKDF(kCCPBKDF2, mnemonic.UTF8String, mnemonic.length, saltData.bytes, saltData.length, kCCPRFHmacAlgSHA1, PBKDF2_INTERACTION_COUNT, keyData.mutableBytes, keyData.length);
+    
+    // Remove all whitespaces from passphrase
+    passphrase = [passphrase stringByReplacingOccurrencesOfString:@" " withString:@""];
+    
+    CCKeyDerivationPBKDF(kCCPBKDF2, passphrase.UTF8String, passphrase.length, saltData.bytes, saltData.length, kCCPRFHmacAlgSHA1, PBKDF2_INTERACTION_COUNT, keyData.mutableBytes, keyData.length);
     
     // Split
     NSRange range = [privateKeyCipher rangeOfString:IV_DELIMITER_ENCODED];

+ 11 - 11
iOSClient/Security/NCEntoToEndInterface.swift

@@ -122,7 +122,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
         if (storePrivateKey) {
             signPublicKey = false
             storePrivateKey = false
-            alertController("_e2e_settings_encryption_initialize_", message: "_e2e_settings_encryption_activated_")
+            alertController("_success_", message: "_e2e_settings_encryption_activated_")
         }
     }
 
@@ -158,7 +158,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
     
     func getEndToEndPrivateKeyCipherSuccess(_ metadataNet: CCMetadataNet!) {
         
-        guard let privateKey = NCEndToEndEncryption.sharedManager().decryptPrivateKeyCipher(metadataNet.key, mnemonic: k_Mnemonic_test) else {
+        guard let privateKey = NCEndToEndEncryption.sharedManager().decryptPrivateKeyCipher(metadataNet.key, passphrase: k_passphrase_test) else {
             
             appDelegate.messageNotification("E2E decrypt private key", description: "E2E Error to decrypt Private Key", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
             
@@ -170,8 +170,8 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
         // Save to keychain
         CCUtility.setEndToEndPrivateKey(appDelegate.activeAccount, privateKey: privateKey)
             
-        // Save mnemonic to keychain
-        CCUtility.setEndToEndMnemonic(appDelegate.activeAccount, mnemonic:k_Mnemonic_test)
+        // Save passphrase to keychain
+        CCUtility.setEndToEndPassphrase(appDelegate.activeAccount, passphrase:k_passphrase_test)
 
         NCManageDatabase.sharedInstance.addActivityClient("", fileID: "", action: k_activityDebugActionEndToEndEncryption, selector: actionGetEndToEndPrivateKeyCipher, note: "E2E PrivateKey present on Server and stored to keychain", type: k_activityTypeSuccess, verbose: false, activeUrl: "")
     }
@@ -191,11 +191,11 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
             // private keys couldn't be found
             // remove keychain
             CCUtility.setEndToEndPrivateKey(appDelegate.activeAccount, privateKey: nil)
-            CCUtility.setEndToEndMnemonic(appDelegate.activeAccount, mnemonic: nil)
+            CCUtility.setEndToEndPassphrase(appDelegate.activeAccount, passphrase: nil)
 
-            let mnemonic = k_Mnemonic_test;
+            let passphrase = k_passphrase_test;
             
-            guard let privateKeyChiper = NCEndToEndEncryption.sharedManager().createEnd(toEndPrivateKey: appDelegate.activeUserID, directoryUser: appDelegate.directoryUser, mnemonic: mnemonic) else {
+            guard let privateKeyChiper = NCEndToEndEncryption.sharedManager().createEnd(toEndPrivateKey: appDelegate.activeUserID, directoryUser: appDelegate.directoryUser, passphrase: passphrase) else {
                 
                 appDelegate.messageNotification("E2E private keys", description: "E2E Error to create PublicKey chiper", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
                 
@@ -208,7 +208,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
                     
             metadataNet.action = actionStoreEndToEndPrivateKeyCipher
             metadataNet.key = privateKeyChiper
-            metadataNet.password = mnemonic
+            metadataNet.password = passphrase
                     
             appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
             
@@ -224,7 +224,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
     
     func storeEnd(toEndPrivateKeyCipherSuccess metadataNet: CCMetadataNet!) {
         
-        // Insert PrivateKey (end delete) and mnemonic to Cheychain
+        // Insert PrivateKey (end delete) and passphrase to Cheychain
         guard let privateKey = NCEndToEndEncryption.sharedManager().getPrivateKey(fromDisk: appDelegate.directoryUser, delete: true) else {
             
             appDelegate.messageNotification("E2E private key", description: "Error : privateKey not present", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
@@ -233,7 +233,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
         }
         
         CCUtility.setEndToEndPrivateKey(appDelegate.activeAccount, privateKey: privateKey)
-        CCUtility.setEndToEndMnemonic(appDelegate.activeAccount, mnemonic:metadataNet.password)
+        CCUtility.setEndToEndPassphrase(appDelegate.activeAccount, passphrase:metadataNet.password)
         
         NCManageDatabase.sharedInstance.addActivityClient("", fileID: "", action: k_activityDebugActionEndToEndEncryption, selector: actionStoreEndToEndPrivateKeyCipher, note: "E2E PrivateKey stored on Server and stored locally", type: k_activityTypeSuccess, verbose: false, activeUrl: "")
         
@@ -241,7 +241,7 @@ class NCEntoToEndInterface : NSObject, OCNetworkingDelegate  {
         if (signPublicKey) {
             signPublicKey = false
             storePrivateKey = false
-            alertController("_e2e_settings_encryption_initialize_", message: "_e2e_settings_encryption_activated_")
+            alertController("_success_", message: "_e2e_settings_encryption_activated_")
         }
     }
     

+ 1 - 1
iOSClient/Settings/NCManageEndToEndEncryption.m

@@ -118,7 +118,7 @@
         message = NSLocalizedString(@"_e2e_settings_encryption_initialize_request_", nil);
     }
         
-    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"_e2e_settings_encryption_initialize_", nil) message:message preferredStyle:UIAlertControllerStyleAlert];
+    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"_initialization_", nil) message:message preferredStyle:UIAlertControllerStyleAlert];
     
     UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", @"Cancel action") style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
         NSLog(@"Cancel action");

+ 3 - 0
iOSClient/Supporting Files/en.lproj/Localizable.strings

@@ -66,6 +66,8 @@
 "_audio_"                   = "Audio";
 "_unknown_"                 = "Unknown";
 "_next_"                    = "Next";
+"_success_"                 = "Success";
+"_initialization_"          = "Initialization";
 
 // App
 
@@ -581,6 +583,7 @@
 "_e2e_settings_encryption_initialize_already_request_"  = "Service already inizialized, you want to reinitialize it ?";
 "_e2e_settings_encryption_initialize_request_" = "Do you want to start the End To End Encryption ?";
 "_e2e_settings_encryption_activated_"   = "End To End Encryption activated";
+"_e2e_settings_encryption_view_passphrase_"   = "This 12 word phrase is like a very strong password: it provides full access to view and use your encrypted files. Please write it down and keep it somewhere safe.";
 
 
 

+ 2 - 2
iOSClient/Utility/CCUtility.h

@@ -93,7 +93,7 @@
 
 + (void)setEndToEndPublicKeySign:(NSString *)account publicKey:(NSString *)publicKey;
 + (void)setEndToEndPrivateKey:(NSString *)account privateKey:(NSString *)privateKey;
-+ (void)setEndToEndMnemonic:(NSString *)account mnemonic:(NSString *)mnemonic;
++ (void)setEndToEndPassphrase:(NSString *)account passphrase:(NSString *)passphrase;
 + (void)initEndToEnd:(NSString *)account;
 
 // GET
@@ -143,7 +143,7 @@
 
 + (NSString *)getEndToEndPublicKeySign:(NSString *)account;
 + (NSString *)getEndToEndPrivateKey:(NSString *)account;
-+ (NSString *)getEndToEndMnemonic:(NSString *)account;
++ (NSString *)getEndToEndPassphrase:(NSString *)account;
 + (BOOL)isEndToEndEnabled:(NSString *)account;
 
 // ===== Varius =====

+ 9 - 9
iOSClient/Utility/CCUtility.m

@@ -35,7 +35,7 @@
 
 #define E2E_PublicKeySign       @"EndToEndPublicKeySign_"
 #define E2E_PrivateKeyCipher    @"EndToEndPrivateKeyCipher_"
-#define E2E_Mnemonic            @"EndToEndMnemonic_"
+#define E2E_Passphrase          @"EndToEndPassphrase_"
 
 
 @implementation CCUtility
@@ -243,17 +243,17 @@
     [UICKeyChainStore setString:privateKey forKey:key service:k_serviceShareKeyChain];
 }
 
-+ (void)setEndToEndMnemonic:(NSString *)account mnemonic:(NSString *)mnemonic
++ (void)setEndToEndPassphrase:(NSString *)account passphrase:(NSString *)passphrase
 {
-    NSString *key = [E2E_Mnemonic stringByAppendingString:account];
-    [UICKeyChainStore setString:mnemonic forKey:key service:k_serviceShareKeyChain];
+    NSString *key = [E2E_Passphrase stringByAppendingString:account];
+    [UICKeyChainStore setString:passphrase forKey:key service:k_serviceShareKeyChain];
 }
 
 + (void)initEndToEnd:(NSString *)account
 {
     [self setEndToEndPublicKeySign:account publicKey:nil];
     [self setEndToEndPrivateKey:account privateKey:nil];
-    [self setEndToEndMnemonic:account mnemonic:nil];
+    [self setEndToEndPassphrase:account passphrase:nil];
 }
 
 #pragma ------------------------------ GET
@@ -464,9 +464,9 @@
     return [UICKeyChainStore stringForKey:key service:k_serviceShareKeyChain];
 }
 
-+ (NSString *)getEndToEndMnemonic:(NSString *)account
++ (NSString *)getEndToEndPassphrase:(NSString *)account
 {
-    NSString *key = [E2E_Mnemonic stringByAppendingString:account];
+    NSString *key = [E2E_Passphrase stringByAppendingString:account];
     return [UICKeyChainStore stringForKey:key service:k_serviceShareKeyChain];
 }
 
@@ -474,9 +474,9 @@
 {
     NSString *publicKeySign = [self getEndToEndPublicKeySign:account];
     NSString *privateKey = [self getEndToEndPrivateKey:account];
-    NSString *mnemonic = [self getEndToEndMnemonic:account];
+    NSString *passphrase = [self getEndToEndPassphrase:account];
     
-    if (mnemonic.length > 0 && privateKey.length > 0 && publicKeySign.length > 0) {
+    if (passphrase.length > 0 && privateKey.length > 0 && publicKeySign.length > 0) {
         
         return YES;