blob: 1b927c865cb9d672b2ea7101fb854486403de8ae [file] [log] [blame] [view]
This directory contains the interface to the application-bound encryption
primitives that are implemented by the elevation service in
[src/chrome/elevation_service].
`EncryptAppBoundString` and `DecryptAppBoundString` act like
`OSCrypt::EncryptString` and `OSCrypt::DecryptString` implemented by
[src/components/os_crypt] except that, unlike `OSCrypt`, which binds encrypted
data to the current user using DPAPI, this API will bind the encrypted data
with a `ProtectionLevel` specified by the caller.
`ProtectionLevels` are defined by chrome/elevation_service and are currently:
- `ProtectionLevel::PROTECTION_NONE`
This acts identically to DPAPI in that the protection level is user-bound.
Only a `DecryptAppBoundString` call that comes from the same user principle
as the original `EncryptAppBoundString` call with succeed.
- `ProtectionLevel::PROTECTION_PATH_VALIDATION`
This adds an additional protection that the path of the calling application
will be validated. Only a `DecryptAppBoundString` call that comes from the
same user principle, calling from the same Application (with the same file
path) as the original `EncryptAppBoundString` call with succeed. It is only
safe to call this from an application that is installed into a 'Trusted
Path' such as `C:\Program Files`, otherwise protection can be trivially
bypassed by renaming/placing a file into the required location.