Tag: 安全

是否有可能创build一个设备特定的.plist文件-iOS

我将一些数据存储在plist文件中,我意识到它可以被共享。 有没有一种方法,我可以使.plist文件设备特定? 也许UDID或者什么? 任何想法将不胜感激..

iOS推送通知 – JavaPNS – keystore.p12文件安全性

我正在尝试使用Apple的推送通知。 我在这里使用这个教程: http : //www.ibm.com/developerworks/java/library/mo-ios-push/#ibm-pcon 我正在尝试创build推送通知。 示例代码在这里: http : //code.google.com/p/javapns/wiki/PushNotificationBasic ,看起来像这样: import javapns.Push; public class PushTest { public static void main(String[] args) { Push.alert("Hello World!", "keystore.p12", "keystore_password", false, "Your token"); } } 除了keystore.p12部分,我已经设置了一切。 以下是关于密钥库的文档: 对象密钥库:对密钥库文件的引用,或者实际的密钥库内容。 请参阅准备证书以获取有关如何创build密钥库的更多信息。 您可以将以下对象传递给此参数: java.io.File:指向您的密钥库文件的直接指针 java.lang.String:本地密钥库文件的path java.io.InputStream:一个提供密钥库字节的stream byte []:密钥库的实际字节数 java.security.KeyStore:一个实际加载的密钥库 我不只是想在我的电脑上input密钥库的path(就像他们在这里使用Java-PNS发送推送通知到iPhone时发生错误一样),因为我觉得这是不安全的。 我应该使用哪个对象? 我的倾向说使用java.security.KeyStore。 最后需要注意的是,这段代码需要托pipe在Amazon Web Service的Elastic Beanstalk上(如果有的话)。 ———编辑1 ———— 我试图把理查德J.罗斯三世的代码。 但是在可以学习我的.p12文件设置是否正确之前,我首先需要解决有关JavaPNS(和我相信的文件结构)的问题。 运行下面的代码给了我这个错误: […]

如何避免硬编码encryption密钥(目标C)?

在我的Objective C代码中,我的代码中有一个使用者密钥和密码,用于SHA-1encryption。 我想知道的是我是否可以避免硬编码来提高安全性。 到目前为止,我发现了以下内容, 查找1 https://www.owasp.org/index.php/Technical_Risks_of_Reverse_Engineering_and_Unauthorized_Code_Modification#Cryptographic_Key_Replacement解释的步骤如下, 损坏在源代码中声明的静态键。 磁盘上的这些密钥应该被破坏,以防止对手分析和截获原密钥; 接下来,应用程序应该在需要密钥的代码使用之前修复密钥; 在使用密钥之前,应用程序应该执行密钥值的校验和,以validation未损坏的密钥与代码在构build时声明的值相匹配; 和 最后,应用程序在应用程序使用完该特定的调用之后,应立即重新损坏内存中的密钥。 find2 https://github.com/UrbanApps/UAObfuscatedString 有人可以帮我吗? 示例代码: + (NSString *) getOauthHeaderForRequestString:(NSString *)requestString { NSString *oauthConsumerKey = @"<consumer key which I want avoid hardcoding>"; NSString *oauthConsumerSecret = @"<consumer secret which I want to avoid hardcoding>"; NSString *oauthSignatureMethod = @"HMAC-SHA1"; NSString *oauthVersion = @"1.0"; NSString *oauthNonce = [self […]

iOS 9.2:无法手动信任应用程序,没有可用的configuration文件选项

在更新到iOS 9.2之后,我们无法在“常规”选项中看到“configuration文件”部分。 我试图在我的iPhone上testing我的应用程序,但是当它运行时,我的iPhone上出现安全错误“Untrusted Developer”。 我在iOS或信任button上没有设备configuration文件设置。 有谁知道如何得到这个?

设置密钥分区列表codesign仍然提示密钥访问

我正在使用以下命令导入包含公钥和私钥的PEM文件,供我的代码签名身份使用: security import "${PEM_FILE}" -k ~/Library/Keychains/login.keychain -T /usr/bin/codesign -T /usr/bin/security 在OS X 10.11 El Capitan我可以在没有提示的情况下进行codesign : codesign –force –sign "${IDENTITY_HASH}" –timestamp=none `mktemp` 但是,正如其他人所说 , OS X 10.12 Sierra现在要求您在import之后set-key-partition-list : security set-key-partition-list -S apple-tool:,apple: -s -k "${PASSWORD}" ~/Library/Keychains/login.keychain 但是,即使在set-key-partition-list ,我仍然得到一个UI对话框,要求获得访问我的私钥来进行代码签名的权限: 如果我点击Always Allow ,那么未来的codesign调用不会提示,但我不希望该UI对话框提示。 我希望这一切都可以脚本化。 为什么set-key-partition-list为其他人工作,而不是为我?

将信用卡号码从iOS发送到REST API时的最佳安全实践

我的应用程序必须与API交stream,我们可以轻松地发送和获取数据。 现在,我们将所有内容作为纯文本作为URL的参数发送。 我绝不是一个安全专家,但常识告诉我,信用卡号码应在传输过程中encryption。 服务器可以担心存储,我唯一担心的是数据的实际传输。 从我的阅读中我发现,我需要一个私钥encryptionalgorithm,因为它需要被服务器取消以获得实际的数据。 在CommonCrypto框架中已经实现了一个好的方法吗? 你会推荐什么? 我正在寻找这样做,使用iOS,我相信安全框架有工具来完成这个挑战,我只是不知道在哪里看什么或寻找什么。 谢谢!

iOS SecItemCopyMatching RSA公钥格式?

我试图从一个已经生成的密钥对(两个SecKeyRef )中提取一个1024位的RSA公钥,以便通过线路发送它。 我所需要的只是一个普通(modulus, exponent)对,它应该占用131个字节(128为模数,3为指数)。 但是,当我作为一个NSData对象获取密钥信息,我得到140位而不是131.下面是一个示例结果: <30818902 818100d7 514f320d eacf48e1 eb64d8f9 4d212f77 10dd3b48 ba38c5a6 ed6ba693 35bb97f5 a53163eb b403727b 91c34fc8 cba51239 3ab04f97 dab37736 0377cdc3 417f68eb 9e351239 47c1f98f f4274e05 0d5ce1e9 e2071d1b 69a7cac4 4e258765 6c249077 dba22ae6 fc55f0cf 834f260a 14ac2e9f 070d17aa 1edd8db1 0cd7fd4c c2f0d302 03010001> 重试密钥生成几次并比较得到的NSData对象,所有密钥保持相同的字节是第一个7: <30818902 818100> 最后三个字节看起来像指数(65537,一个公共值)。 “模数”和指数之间还有两个字节: <0203> 有更多的encryption经验的人可以帮助我确定这是什么编码? DER? 我如何正确解码模数和指数? 我尝试手动剥离模数和指数使用 NSData* modulus = [keyBits subdataWithRange:(NSRange){ […]

在iOS中保存encryption密钥的安全方法

在我的iOS4 +应用程序中,我在几个地方使用AESencryption,整个应用程序必须非常安全。 为了做到这一点,我必须硬编码在这个应用程序中的几个键,然后随机挑选,当我需要encryption的东西… 我的问题是如何存储这些私钥? 使用NSString它们进行硬编码是否安全? 要么 #define SecretKeyString @"febd9a24d8b65c1c787d50a4ed3619a9" 如果用户安装了这个应用程序越狱iPhone,他不能得到这些硬编码的密钥? 我怎样才能最有效地隐藏它们? 感谢您的任何build议…

iPhone:如何将SecKeyRef或包含公钥的位的NSData导出为PEM格式?

我使用SecKeyGeneratePair创build了一对密钥。 我现在想把公钥传给服务器,但是我不确定如何继续。 我有一个函数getPublicKeyBits (取自苹果的CryptoExercise ),但我真的不知道如何处理原始的NSData。 这是function: – (NSData *)getPublicKeyBits { OSStatus sanityCheck = noErr; NSData* publicKeyBits = nil; NSData* publicTag = [[NSData alloc] initWithBytes:publicKeyIdentifier length:sizeof(publicKeyIdentifier)]; CFDataRef cfresult = NULL; NSMutableDictionary * queryPublicKey = [[NSMutableDictionary alloc] init]; // Set the public key query dictionary. [queryPublicKey setObject:(__bridge id)kSecClassKey forKey:(__bridge id)kSecClass]; [queryPublicKey setObject:publicTag forKey:(__bridge id)kSecAttrApplicationTag]; [queryPublicKey setObject:(__bridge id)kSecAttrKeyTypeRSA […]

如何知道应用内购买收据是否来自沙盒?

iOS IAP文档指出 ,如果你想testing商店,你应该在设置应用程序中注销itunes帐户。 在进行应用程序内购买时,您需要input用户名和密码。 但是,在应用程序内部,我不知道用户是否已经login,或者他是否正在使用沙盒帐户。 实际上,我并不在乎它是否是一个沙盒事务,但是:在服务器上,我必须通过URL https://buy.itunes.apple.com/verifyReceipt和沙盒收据validation实际收据,通过URL https ://sandbox.itunes.apple.com/verifyReceipt 。 如何在服务器上知道收据是沙箱收据还是实际收据? 或者,应用程序如何知道收据是真实的还是沙箱,因为从应用程序传递额外的参数到我的服务器没有问题。 什么不起作用:您不能只说应用程序的DEBUG版本使用沙盒环境,应用程序的ADHOC或RELEASE版本使用生产环境。 使用ADHOC版本,完全可以使用iTunes Test Accounts进行应用程序内购买。