下午好。
">你的应用程序是设计使用加密还是包含或合并加密?"。
我有一个私人库,我为每个单独的项目授权。提供了项目参数(Application name, BundleID等)。
和我生成(独立的,手动的)几个键,我使用base64和AES256.
然后将这些常量插入到库中。
库具有安全机制。
每次使用我的库的应用程序启动时,它都会提取一些项目参数,将它们转换为AES256/base64,并将它们与其常量进行比较。
如果它们不同,则意味着该框架被插入到我没有授权使用该框架的项目中。
我在iTunes连接中应该选择什么?我的应用程序(使用具有盗版保护机制的库)使用加密吗?
注:
我在库中也有一个类,它包含不同的方法用于将NSString转换为NSData,反之亦然。
下面是。h文件。我只使用其中的一部分,只是为了检查许可证。
设备本地检查许可证!我不把数据发送到任何地方。
/*-------------------------------------------------
CommonHMAC
--------------------------------------------------*/
@interface NSData (CommonHMAC)
- (NSData*) HMACWithAlgorithm:(CCHmacAlgorithm) algorithm;
- (NSData*) HMACWithAlgorithm:(CCHmacAlgorithm) algorithm key:(id)key;
@end
/*---------------------------------------------------------
CommonCryptor
---------------------------------------------------------*/
@interface NSData (CommonCryptor)
- (NSData*) AES256EncryptedDataUsingKey:(id)key error:(NSError **) error;
- (NSData*) decryptedAES256DataUsingKey:(id)key error:(NSError **) error;
- (NSData*) DESEncryptedDataUsingKey:(id)key error:(NSError **) error;
- (NSData*) decryptedDESDataUsingKey:(id)key error:(NSError **) error;
- (NSData*) CASTEncryptedDataUsingKey:(id)key error:(NSError **) error;
- (NSData*) decryptedCASTDataUsingKey:(id)key error:(NSError **) error;
@end
/*--------------------------------------------------------
CommonDigest
---------------------------------------------------------*/
@interface NSData (CommonDigest)
- (NSData*) MD2Sum;
- (NSData*) MD4Sum;
- (NSData*) MD5Sum;
- (NSData*) SHA1Hash;
- (NSData*) SHA224Hash;
- (NSData*) SHA256Hash;
- (NSData*) SHA384Hash;
- (NSData*) SHA512Hash;
@end
Apple提供了很好的指导:https://help.apple.com/app-store-connect/#/dev88f5c7bf9
如果你在美国,你也可以在这里查看美国商务部的信息:https://www.bis.doc.gov/index.php/documents/regulations-docs/445-category-5-part-2-information-security
苹果指南中的TLDR是:加密的使用包括但不限于:
- 通过安全通道(即HTTPS、SSL等)进行呼叫。
- 使用标准加密算法。
- 使用其他来源的加密功能,如iOS或macOS。 使用专有或非标准的加密算法。
所以我们所有的构建应用程序,使HTTPS调用一个API,应该回答是对于这个问题。