Does Drupal, either natively, or via a module support a upload/download management area that would be used in the following scenario?

Customers are able to upload and download files in a secure manner, allowing only selected staff and the customer to see the files. Other customers cannot see that customer's files and vice versa. Each customer or user could be given their own directory on the server for their uploads, thereby separating one customer's files from another and allow alternate access to the same files (i.e. point an ftp server to the same directories). Many of the files will be quite large and are highly confidential. It should support uploads/downloads of at least 100MB, preferably support uploads/downloads up to 1GB or more. Files should be saved outside the web root so that they cannot be downloaded from a browser without going through the download manager interface. Files must not be stored in the database, but instead stored in the file system. If possible, and optionally, files should be encrypted (even if a hacker somehow get to the file itself, they can't use any of the files. They have to download the file from Drupal which unencrypts it before downloading).

Is something like that available, either in Drupal or as a module or even as a separate program? I need this kind of solution. It would need to work on an Linux/Apache server with MySQL installed.

Thank you.