How to provide content of (locally) encrypted files to the iOS and macOS system

44 Views Asked by At

We are working on an application that synchronizes encrypted content across devices. Once the encrypted content is on the device, we need to show it as files and folders to the OS so that other apps can work with it (read, modify, delete, rename,...).

We use Dokan on Windows, FUSE on Linux and StorageManager on Android.

So far we haven't found an ideal way to implement this on iOS and macOS. Options we considered are:

  • FUSE: Requires kernel extension which seems to be deprecated (Source: 1m:12s in this video). It probably also won't work on iOS
  • Use the File Provider Extension: If I understand it correctly, this requires duplication of the data instead of encrypting/decrypting the data on the fly. For large files this may be prohibitive.
  • Use FUSE alternative such as fuse-t: It seems to only work on macOS

Are there other options to consider? Ideally we would encrypt/decrypt on the fly, not duplicate the data, and support both systems at once.

1

There are 1 best solutions below

1
Eugene Mayevski 'Callback On

CBFS Connect 2024 (I am related to its vendor), now in Beta, includes an NFS Server component that can be mounted to a directory automatically. This component has FUSE-like interface. The component is offered only for macOS (i.e., not for iOS) at the moment because macOS has means to connect to an NFS server. But the library can be extended to work on iOS as well, if you find a way to use the NFS Server connection.

A File Provider Extension on macOS may only be "replicated", i.e., macOS caches data locally. This is not very secure, as the location of the cache is known and can be accessed by other applications. The size is less of a problem if your extension supports partial fetching of file data, but the local copy itself may be.