应该使用RsaProtectedConfigurationProvider而不是DataProtectionConfigurationProvider,反之亦然?
我知道在Mac OS上,我们可以使用Macfuse在用户空间中编写文件系统,我们可以创建一个盒子加密.我不知道IOS上有一个框架,像FUSE,Macfuse这样的库我可以编写我的文件系统加密/解密文件(可能挂载在目录/文件夹中).有谁能指出我的解决方案?
我遇到了与DataProtectionProvider有关的这个问题,首先我们只有2个.NET Framework项目,现在添加了一个.NET Core项目让我困惑如何执行以下操作:从.NET Framework项目生成密码重置链接,并在.NET Core项目中使用它.两者都使用相同的数据库和用户表,这些表已经相互兼容..NET Framework仍然是Code-First数据库生成中的领先项目.
在两个.NET框架项目中,我使用一个共享代码库,它具有以下代码:
//not sure where I got this from but it is part of the solution for solving
//password link generating and using in two different applications.
public class MachineKeyProtectionProvider : IDataProtectionProvider
{
public IDataProtector Create(params string[] purposes)
{
return new MachineKeyDataProtector(purposes);
}
}
public class MachineKeyDataProtector : IDataProtector
{
private readonly string[] _purposes;
public MachineKeyDataProtector(string[] purposes)
{
_purposes = purposes;
}
public byte[] Protect(byte[] userData)
{
return MachineKey.Protect(userData, _purposes);
} …Run Code Online (Sandbox Code Playgroud) 对于我的iOS 6 + -only应用程序,我想启用iOS提供的On-Disk Encryption.
我阅读了本指南,并看到了WWDC 2012的"保护用户数据"视频(会话714).但是,我无法使其发挥作用.
以下是我遵循的步骤:
1-在iOS开发人员中心,我创建了一个新的App ID:

2-在Xcode中,我添加了一个带有密钥的Entitlements文件:

3-在设备上,我激活了密码锁.
如果我没错,那应该就是全部.我现在期望在设备(在我的情况下:iPhone 5)被锁定时,受保护的文件无法访问.但是......如果我使用iExplorer,即使设备被锁定,我也可以轻松访问我的应用创建的文件.但这正是我想要避免的.我忘记了什么吗?
我有几个关于保护我的应用程序数据的问题:
1)我需要加密我存储的所有数据Core Data,但是我没有找到实现它的起点.在核心数据编程指南中,他们说:
Core Data不保证来自不受信任来源的持久存储的安全性,也无法检测文件是否被恶意修改.SQLite存储提供比XML和二进制存储稍微更好的安全性,但它不应被视为本身安全.请注意,您还应该考虑商店元数据的安全性,因为元数据中存档的数据可能会独立于商店数据进行篡改.如果要确保数据安全性,则应使用加密磁盘映像等技术.
这并没有让我明白我应该做什么......我也看了一下安全概述但是这个文件似乎没有涉及Core Data.然而,他们提到Data Protection,以确保文件,但我不知道这是什么,我真的我在寻找......我应该使用Data Protection的SQLite哪个文件Core Data与工作?
我需要一些关于如何加密所有Core Data存储数据的指导
2)将用户密码存储在钥匙串中是否应该更好,而不是通过使用加密和存储它们Core Data?
提前致谢
isProtectedDataAvailable是真的,但applicationProtectedDataDidBecomeAvailable在 iOS 10~20 秒后被调用,这意味着isProtectedDataAvailable在调用回调之前应该是假的。
我正在开发iOS内置的应用程序Objective C。我已经从 AppStore 配置文件和 xcode plist 为我的应用程序启用了数据保护(当前配置为 FirstUserAuthentication)。
由于 Apple 的数据保护政策,我们的数据库在设备重启和首次解锁后几秒钟内无法访问。因此,当应用程序启动时,我使用以下逻辑限制任何数据库操作。
if([[UIApplication sharedApplication] isProtectedDataAvailable]) {
//access data
}else {
// wait for applicationProtectedDataDidBecomeAvailable callback
}
Run Code Online (Sandbox Code Playgroud)
我发现了一些意想不到的行为。即使[[UIApplication sharedApplication] isProtectedDataAvailable]返回true,在从我上面的代码逻辑中调用10~20秒(宽限期)applicationProtectedDataDidBecomeAvailable回调作为其中的一部分后,由于实际上仍受操作系统保护,数据库被访问并失败。
有什么我想念的吗?当实际受保护的数据尚不可用时,为什么iOS返回[[UIApplication sharedApplication] isProtectedDataAvailable]值为 true?
我正在使用 Xcode 11.0,经过测试的设备 OS 13.2。
对于日志中的某些情况,我发现[[UIApplication sharedApplication] isProtectedDataAvailable]返回 1 但 NSUserDefault 仍然无法访问。可能的原因是什么? …
我一直在iOS应用程序中使用最好的数据保护.这意味着我保存了所有文件,标记为"解锁时可用,仅此设备".那时候"刚刚工作".现在我发现创建App ID时有一个新设置(参见屏幕截图)我可以明确启用数据保护.
这就是我理解新选项的方式.有人可以确认一下吗?
NSFileManager?设置标志吗?
我正在寻找加密应用程序中的用户数据,NSFileProtection机制看起来很完美.
这个SO问题/答案线程向我指出了WWDC 2011视频保护iOS应用程序 ,它提供了通过权利在应用程序中设置数据保护的"太好了,真实"的提示(参见33分钟).
所以,我为我的iOS 5.x +应用尝试了这个,并遇到了抱怨无效权利的问题.
我已经通过iOS Provisioning Portal为特定应用程序配置了数据保护,并更新了我的应用程序配置,所以理论上我应该全部设置,但我仍然得到错误.
如果从Entitlement中删除特定的FileProtectionComplete设置,则应用程序运行时不会出现Invalid Entitlement错误.
在调查这一点时,我也看到一些人正在拒绝他们的应用程序(当他们上传二进制文件时),因为这不受支持(或不赞成?).请注意,我特别询问数据保护,而不是Passbook.
在这个阶段,我在想,也许它确实是,"真是太好了".所以,我即将放弃这个神奇的权利标志,而是使用编程方法,添加NSFileProtectionComplete作为写选项.
但是,在我这样做之前,任何人都可以确认他们只是通过使用Entitlements标志成功添加数据保护吗?谢谢.
我有一个Asp.NET Core应用程序,没有特殊的DataProtection堆栈设置 - 只是AddMvc.虽然一切都适用于IISExpress /(Kestrel),但在IIS服务器上我遇到了这个错误:
11/23/2016 18:50:14:warn: Microsoft.AspNetCore.Session.SessionMiddleware[7]
Error unprotecting the session cookie.
System.Security.Cryptography.CryptographicException: The key {6d00462a-ba7f-4f65-bb36-711605de93f2} was not found in the key ring.
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus& status)
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.DangerousUnprotect(Byte[] protectedData, Boolean ignoreRevocationErrors, Boolean& requiresMigration, Boolean& wasRevoked)
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(Byte[] protectedData)
at Microsoft.AspNetCore.Session.CookieProtection.Unprotect(IDataProtector protector, String protectedText, ILogger logger)
11/23/2016 19:27:34:warn: Microsoft.Extensions.DependencyInjection.DataProtectionServices[59]
Neither user profile nor HKLM registry available. Using an ephemeral key repository. Protected data will be unavailable when application exits.
11/23/2016 19:27:34:warn: Microsoft.AspNetCore.DataProtection.Repositories.EphemeralXmlRepository[50]
Using an in-memory repository. …Run Code Online (Sandbox Code Playgroud) 启用数据保护(iOS,WatchKit Extension,tvOS)
数据保护为应用程序容器中的应用程序存储在磁盘上的文件增加了一定程度的安全性.数据保护使用特定设备上的内置加密硬件以加密格式在磁盘上存储文件.您的应用需要配置为使用数据保护.
启用数据保护
在"功能"窗格中,如果未启用"数据保护",请单击"数据保护"部分中的开关.
默认保护级别是完全保护,其中文件被加密并且在设备被锁定时不可访问.您可以通过编程方式设置应用程序创建的文件的保护级别,如iOS应用程序编程指南中的使用磁盘加密保护数据中所述.对于存储在共享容器中的文件(在配置应用程序组中描述),请以编程方式设置保护级别.
似乎默认保护是NSFileProtectionComplete,但我不认为这是真的,我认为如果你不启用它,默认是NSFileProtectionCompleteUntilFirstUserAuthentication.
问题1:应用程序编写的文件的默认文件保护是什么?
问题2:
我可以更改所有文件的默认值吗?
在权利文件中启用"数据保护"并将其设置为NSFileProtectionComplete是否意味着应用程序中创建/存储的所有文件都使用NSFileProtectionComplete规则进行加密,而不执行任何其他操作.IE是否需要启用此功能并为您希望以编程方式保护的每个文件设置文件保护?
我试过试试这个.我已打开数据保护(权利)和配置/应用程序.我通过xcode将应用程序部署到设备并抓取数据库文件以检查其NSFileProtectionKey:
NSURL*database = [NSPersistentStore MR_urlForStoreName:@"app.sqlite"] id fileProtectionValue = [[[NSFileManager defaultManager] attributesOfItemAtPath:[数据库路径]错误:NULL] valueForKey:NSFileProtectionKey]; NSLog(@"文件保护值:%@",fileProtectionValue);
然而,这仍然在吐出'NSFileProtectionCompleteUntilFirstUserAuthentication.
我试图删除该应用程序并重新安装.还验证了所有配置文件都已重新下载.
打开Data Protection实际上是否会更改应用程序中所有文件的文件保护密钥.IE是一个有效的测试?
如果不是,我该如何测试文件是否正确加密?
data-protection ×10
ios ×6
encryption ×4
asp.net-core ×2
iphone ×2
security ×2
.net ×1
appdelegate ×1
asp.net ×1
c# ×1
cocoa ×1
core-data ×1
entitlements ×1
filesystems ×1
iis ×1
ios6 ×1
macfuse ×1
objective-c ×1
rsa ×1
sqlite ×1
xcode ×1