> For the complete documentation index, see [llms.txt](https://learn.cypherock.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.cypherock.com/design-decision/private-keys-should-be-near-to-impossible-to-extract.md).

# Private keys should be near to impossible to extract

Neither Cypherock X1 nor Cypherock X0 ever stores your private keys or seed phrase as a whole in a single place permanently. Here is how each of them achieves it.

{% tabs %}
{% tab title="Cypherock X1" %}
Cypherock X1 consists of a decoupled architecture. Unlike other wallets, the computation happens on the X1 Vault and the storage as 5 cryptographic parts between the X1 Vault and 4 X1 Cards. The X1 Vault does not store any private keys/seed phrases as a whole permanently. It only stores the wallet names created by the user and an encrypted cryptographic part (without MAC and nonce) of each wallet in its flash memory.

Once a wallet is created (new wallet is generated from X1 or restored from an existing seed phrase) on the X1 Vault, the ENT as mentioned above is sharded, and the shards generated are sent to the X1 Cards. On the reconstruction step from the X1 Cards, the private key generated back from the threshold shards is only stored in the RAM of the X1 Vault till the time the transaction is signed or the user notes down the seed phrase. If the X1 Vault is powered off at this stage, there is no persistence of the private keys since the RAM is a volatile memory. In a static state, the X1 Vault never holds any sensitive information about the whole private keys making it worthless to attack. In the complete lifecycle of the product, never once is the private key stored as a whole in the flash memory of the generic microcontroller which makes extracting the private keys near impossible. Hence Cypherock X1 is resistant to physical attacks which are prevalent in other hardware and software wallets.
{% endtab %}

{% tab title="Cypherock X0" %}
Cypherock X0 also consists of a decoupled architecture. The storage is split as 5 shards between the 4 X0 Cards and the user's smartphone, while all computation on key material happens inside the EAL6+ certified secure element of the X0 Card. The smartphone does not store any private keys/seed phrases as a whole. It stores one encrypted shard of each wallet in its hardware-backed secure storage.

Once a wallet is created (new wallet is generated or an existing seed phrase is imported) on Cypherock X0, the ENT as mentioned above is sharded inside the secure element of the X0 Card. The card keeps one shard, sends one encrypted shard to the smartphone, and sends the remaining shards to the other 3 X0 Cards. The complete secret is then deleted from the card.

When a transaction is made, the smartphone sends its encrypted shard to the tapped X0 Card. The card reconstructs the wallet, derives the private key and signs the transaction entirely within its secure element. Immediately after signing, the card erases the reconstructed wallet, the derived private key and the smartphone's shard from its memory, leaving only its own encrypted shard. The smartphone never reconstructs the wallet, derives private keys or signs transactions.

In a static state, neither the smartphone nor any single X0 Card holds enough information to reconstruct the private keys. Every operation that touches the whole private key takes place inside an EAL6+ certified secure element, which is designed to resist the physical attacks that are prevalent in other hardware and software wallets.
{% endtab %}
{% endtabs %}
