Introduction
============
Per-File-Tagger (PFT) driver.

This is part of solution to provide per-file encryption functionality.

Objective
=========
Android devices are being used by individuals to access information on
the go. This increases the risk of their information being leaked if
device is stolen or lost. One of the security measures to protect the
user information on the device is to encrypt the data. If the device is
lost or stolen, it minimizes the risk that unknown person would be able
to extract the information from the device.

Android provides an encryption mechanism to encrypt the user data on the
device. However currently only Full-Disk encryption method is supported
and there are other implementations is via software only. While there
are filesystem-level encryption solutions (such as eCryptfs), non of
those are used as part of Android and are user-space solution
based.

QTI has developed it own Full-disk-encryption solution (based on
dm-req-crypt) to address the performance issues, and our objective is to
utilize this solution to provide high granularity and high secure
per-file-encryption solution.

Solution
========
The PFT driver is part of solution to provide per-file encryption
functionality. PFT is designed to provide two main services:
1. File access control to insure that only registered UIDs will be able
to create/read/write/close encrypted files
2. Block level services (DM-Req-Crypt) that query whether the block I/O
request should be encrypted/decrypted, and if so using which key_index.

Hardware description
====================
No hardware dependency for PFT driver.

Software description
====================

                            Software component diagram
                            --------------------------

   +++++++++++++++++++++++        ++++++++++++++         ++++++++++++++
   +  VFS                + -----> +   SE-LINUX + ------> +    P F T   +
   +++++++++++++++++++++++        ++++++++++++++         ++++++++++++++
   + Logical File System +                                      ^
   +++++++++++++++++++++++                                      |
   +  Block Layer        + -------------------------------------|
   +++++++++++++++++++++++                                      |
   + Device Mapper       +                                      |
   +++++++++++++++++++++++                                      |
   +++++++++++++++++++++++          ++++++++++++++++++          |
   + Clone & Map Bios    + <------> +  DM_Req_Crypt  + ---------|
   +++++++++++++++++++++++          ++++++++++++++++++
   +++++++++++++++++++++++
   +  Block Layer        +
   +++++++++++++++++++++++

When a user issues a create/open/read/write/close operation the kernel
issues the corresponding kernel syscall. These calls are routed
through SE-Linux that provides file access security mechanism. In this
solution, PFT is acting as an extension of SE-Linux. In several points
(see Interface for SE-Linux), the PFT decides whether to allow or
disallow the requested operation. In addition, PFT responds to
queries whether the block I/O request should be encrypted/decrypted,
and if so using which key index. The encryption key index is stored per
file using xattr (extended attributes) of the filesystem.

The driver runs entirely in the context of the caller task and has no
dedicated execution context of its own.

Power management
================
None.

SMP/multi-core
==============
The driver data structure stores the system state. This structure is
protected against concurrent access from multiple processes/threads and
interrupt handlers using mutex.

Security
========
This driver provides an additional file access control security
mechanism based on process group identifier (GID). Obviously the driver
is part of a system Per-File-Encryption that provides security for data
at rest.

Performance
===========
None.

Interfaces
==========
Interface for SE-Linux
----------------------
pft_inode_create() - Security call to approve inode creation
pft_inode_post_create() - Create file permission and file tagging.
pft_file_permission() - Read/Write file permission.
pft_file_close() - File closing security call.

Interface for DM-Req-Crypt and Block Layer
------------------------------------------
pft_get_key_index() - Provides the given inode's encryption key index,
and well as indications whether the file is encrypted or is currently
being in-placed encrypted.
pft_merge_bio_disallowed()- Replies whether the 2 BIOs should not be merged.

User Space Interface
--------------------
A character device file (/dev/pft) will be exposed by the PFT driver.
open(), read(), write() and release() methods are implemented.
This device node is accessible only to the root by default.
Each command is written by the requester to the file and block it from
continuing. PFT fulfils the requested command and writes the response to
the file, that will be read by the requester.
The command and response are defined through structures exposed to user
space at UAPI.

The PFT driver supports the following commands:
 * Full feature activation and deactivation
 * Encryption key management (load, and remove)
 * Update the registered applications list which would create and
   access encrypted files.

open() & close() - Allow only one client to the char device.
Write() - Send command to PFE driver.
Read() - Receive the last command execution result.

Config options
==============
Turn on PFT config to enable this feature: CONFIG_PFT=y

Dependency
==========
SE-Linux.

User space utilities
====================
None. Only one user space entity is to be interact with the PFT driver.

Known issues
============
None.

To do
=====
None.
