小编Dav*_*ann的帖子

钥匙串和安全飞地有什么区别

我一直在搜索钥匙串存储安全飞地或其他任何地方的位置,我发现了很多文章(this stackoverflow answer之一),其中说明如下,但我正在寻找一些经过身份验证的 Apple 声明

钥匙串存储加密的密钥(和其他小数据)并限制对该数据的访问。此外,在最近的 iPhone(5S 及更高版本)中,钥匙串位于一个单独的处理器中,即安全隔区,它额外限制了访问。在 iOS 中没有更安全的方法来存储密钥。

所以我的查询基于上述声明。

  • Keychain Items 是否存储在安全的 Enclave 中
  • 如果是,那么公钥和私钥CFTypeRef存储在哪里
  • 为什么我们kSecAttrTokenIDSecureEnclave在创建密钥对时使用它。(以下代码示例)。

    -(bool) generateKeyPairWithAccessControlObject:(SecAccessControlRef)accessControlRef
    {
          CFMutableDictionaryRef accessControlDict = newCFDict;;
          CFDictionaryAddValue(accessControlDict, kSecAttrAccessControl, accessControlRef);
          CFDictionaryAddValue(accessControlDict, kSecAttrIsPermanent, kCFBooleanTrue);
          CFDictionaryAddValue(accessControlDict, kSecAttrLabel, kPrivateKeyName);
    
          // create dict which actually saves key into keychain
          CFMutableDictionaryRef generatePairRef = newCFDict;
          CFDictionaryAddValue(generatePairRef, kSecAttrTokenID, kSecAttrTokenIDSecureEnclave);
          CFDictionaryAddValue(generatePairRef, kSecAttrKeyType, kSecAttrKeyTypeEC);
          CFDictionaryAddValue(generatePairRef, kSecAttrKeySizeInBits, (__bridge const void *)([NSNumber numberWithInt:256]));
          CFDictionaryAddValue(generatePairRef, kSecPrivateKeyAttrs, accessControlDict);
    
          OSStatus status = SecKeyGeneratePair(generatePairRef, &publicKeyRef, &privateKeyRef);
    
          if (status != errSecSuccess)
              return NO; …
    Run Code Online (Sandbox Code Playgroud)

security xcode objective-c keychain ios

8
推荐指数
3
解决办法
7796
查看次数

Gradle android优化packagingOptions

我有那个项目结构:

-gradle root
           |-clients
                    |-client 1
                    |-client 2
                        ... 
                    |-client N
           |-libs
                    |-android lib 1
                    |-android lib 2
                        ...
                    |-android lib N
                    |-java lib 1
                    |-java lib 2
                        ...     
                    |-java lib N
Run Code Online (Sandbox Code Playgroud)

在每个客户端构建文件中,我都要packagingOptions排除选项.像这样的东西:

packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
}
Run Code Online (Sandbox Code Playgroud)

我如何优化该块并将其移动到例如我的根gradle构建文件中?我真的不想将它粘贴到所有客户端.

android gradle android-gradle-plugin

1
推荐指数
2
解决办法
2万
查看次数