Security is a fundamental part of our business. The functionality of our product relies on our users sharing very personal financial information with us so that we can perform trade calculations on their behalf. The purpose of this document is to describe our approach to protecting personal data and securing our systems.
How we access your personal data
A functioning Passiv account relies on having a live access token to interact with your investment account. Users grant Passiv limited access to their brokerage account so that we can see your investment accounts, account holdings, and transaction history. By default, the access we request is limited to read-only account data, so we cannot place or modify trades on your behalf. If desired you may grant trade-enabled access instead, which will allow your account to use advanced features like One-Click Trades.
This access is granted through a secure OAuth flow. The process works as follows:
- User creates a Passiv account and clicks the “Authorize” button for starting the OAuth flow.
- Passiv redirects the user to their brokerage website with a request for limited access.
- The user logs in to their brokerage website and grants the access request.
- The user is then redirected back to Passiv with a temporary access token.
- Passiv collects the access token and authenticates with the brokerage to confirm that the token is valid.
- Upon receipt of a valid token, Passiv syncs some basic account information so that your account can start being useful.
- Should the user wish to revoke Passiv’s access, they can do so from their application dashboard with their brokerage account.
Passiv periodically accesses information from your investment account in order to:
- Refresh the access token to keep it valid
- Check your account for new cash transactions
- Check your account for portfolio accuracy
Additionally, when you access your Passiv account, we make live requests for information from your investment account in order to let you see real-time information about your account and calculated trades.
How we store your personal data
Passiv stores very limited personal data from your investment account. We store only basic account information and a few things which are necessary to provide our service. The basic account information is a list of all your investment accounts and identifiers associated with them. This is important for us to store so that we can associate a target portfolio with each investment account. We do not store more detailed account information, including your current holdings, open trades, or account equity. While Passiv does access detailed information from your investment account, the data is passed directly to the interface and not persistently cached or stored in any way.
Besides basic account information, Passiv also stores:
- symbol and ticker information to allow us to efficiently fetch quotes for securities associated with your account
- hashed account transaction history
- order history for trades that were placed or attempted through Passiv’s One-Click Trades feature
- pageview and application usage history, including your IP address and session cookies
- anonymized aggregate statistics across all accounts, such as active accounts, total holdings, and other business metrics
Account transaction history is stored in a secure form that allows us to detect new transactions without knowing the details of old ones. This works by hashing each transaction and storing only the hash, which serves as a record that we have previously seen any transaction which produces the same hash. As with other personal data, no part of the raw transaction data is persistently stored or cached.
The data we store is not shared with any other party, except for application usage monitoring which is provided by third-party services including Google Analytics, Amplitude, and Sendgrid.
How we secure your personal data
Passiv runs its software on a private dedicated server in a major datacentre. Our server is hosted in Canada, so everything falls under the jurisdiction of the Canadian legal system. We limit server access to only key employees who need access to production resources. The server is frequently screened for vulnerabilities and patched where appropriate. Standard security practices such as a firewall and SSH keys are used to limit access and reduce attack surface. All networked services running on the server are locally bound and password protected where possible. Database backups are made frequently and strongly encrypted before uploading to a secure remote location.
Moving forward, we are working on implementing at-rest encryption for database assets and a robust key management system.