diff options
Diffstat (limited to 'src/content/docs/guides/generate-use-subkey.md')
-rw-r--r-- | src/content/docs/guides/generate-use-subkey.md | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/src/content/docs/guides/generate-use-subkey.md b/src/content/docs/guides/generate-use-subkey.md new file mode 100644 index 0000000..122bb9b --- /dev/null +++ b/src/content/docs/guides/generate-use-subkey.md @@ -0,0 +1,260 @@ +--- +title: Generate and Use Subkey +sidebar: + order: 3 +--- + +GpgFrontend provides comprehensive support for subkeys, allowing users to +enhance security and flexibility through proper key management. + +## Steps to Generate a Subkey + + + +1. **Open Key Management**: + + - In the Key Management interface, right-click on the key pair you wish to + add a subkey to. Select the "New Subkey" option from the context menu. + +2. **Fill in Basic Information**: + + - **Key Type**: Select the type of subkey you want to generate. Available + options include RSA, DSA, ECDSA, ECDH, ECDH NIST P-256, ECDH NIST P-384, + ECDH NIST P-521, ECDH BrainPool P-256, ECDH BrainPool P-384, and ECDH + BrainPool P-512. + - **Key Size**: Choose the key size. This option is only applicable when the + key type is RSA or DSA. + - **Expiration Date**: Set an expiration date for the subkey. You can also + choose to check the "Never expire" checkbox to make the subkey permanent. + +3. **Set a Passphrase**: + + - If the primary key has a passphrase, the subkey's passphrase must be equal + to it. Ensure that the "Non Pass Phrase" checkbox is unchecked if you want + to set a passphrase. + +4. **Select Key Usage**: + + - Specify the usage for the subkey. Options include: + - **Encryption**: For encrypting data. + - **Signing**: For creating digital signatures. + - **Authentication**: For authentication purposes, such as SSH keys. + - Note that the certification usage is not available for subkeys. + +5. **Generate the Subkey**: + - After filling in all the necessary information and selecting the desired + options, click the "OK" button to generate your subkey. + +By following these steps, you can generate a subkey using GpgFrontend, which +enhances the functionality of your primary key pair for various cryptographic +operations. + +## Understanding Primary Keys and Subkeys + +In the realm of cryptography, key management plays a crucial role in ensuring +data security. A key pair consists of a primary key and one or more subkeys, +each serving distinct functions yet working together to secure and manage +digital identities and communications. This structure not only enhances security +but also provides flexibility in key usage and management. + +### The Role of Primary Key and Subkeys + +- **Primary Key**: The primary key is the cornerstone of your cryptographic + identity. It is used for identity verification, which includes signing other + keys to establish trust. The primary key's signature on a subkey validates the + subkey's association with the identity of the primary key holder. + +- **Subkeys**: Subkeys are associated with the primary key and are used for + encryption and signing documents or messages. Subkeys can be thought of as + extensions of the primary key, each designated for specific tasks. This + separation of duties allows for greater security and operational flexibility. + For example, you can have separate subkeys for signing and encryption. + +### Advantages of Using Subkeys + +1. **Enhanced Security**: By using subkeys for day-to-day operations, you + minimize the risk associated with key exposure. If a subkey is compromised, + it can be revoked without affecting the primary key or other subkeys, thereby + limiting the potential damage. + +2. **Operational Flexibility**: Subkeys allow for specific roles (e.g., signing, + encryption) to be isolated. This means you can renew or revoke subkeys as + needed without disrupting the overall cryptographic setup. + +3. **Convenient Key Rotation**: Regularly updating keys is a best practice in + cryptography. Subkeys make it easier to rotate keys for signing and + encryption without needing to re-establish the primary key's trust + relationships. + +## Best Practices for Using Subkeys + +After understanding the concepts discussed above, you might be wondering how +exactly you can effectively use subkeys to maximize their advantages. In +principle, the main goal is to separate the subkey from the primary key to +leverage better security. If your subkeys are always kept together with the +primary key, you will always need to use the complete set of keys, increasing +the risk of compromising the primary key. GpgFrontend supports the export of +individual subkeys, as well as the configuration of multiple key databases. +Using these features together, you can easily isolate a particular subkey, +export it, and import it into another key database. This allows you to secure +the primary key separately, even removing it from the original key database to +reduce exposure. For high-security environments, it is recommended that: + +> "The primary key should be stored in a highly secure location, preferably +> offline or in a hardware security module (HSM), to prevent unauthorized +> access. The loss or compromise of the primary key jeopardizes the entire +> cryptographic framework." + +### Step-by-Step Guide to Exporting Subkeys + +To demonstrate how to export an individual subkey, let's refer to the screenshot +provided. Below is a step-by-step guide to navigate the GpgFrontend interface +and successfully export a subkey: + +1. **Open Key Details View**: Open the GpgFrontend application and navigate to + the key database section. Select the desired key from the list to open the + **Key Details** view. + +2. **Access the Keychain Tab**: Click on the **Keychain** tab within the Key + Details window. Here, you will be able to see a list of all keys associated + with your selected primary key. The list includes the primary key itself, + which is displayed in the first row, as well as any subkeys. + +3. **Select a Subkey**: Locate and click on the subkey you wish to export. Once + selected, details about the subkey will appear in the lower half of the + window, providing information such as **Key ID**, **Algorithm**, **Key + Size**, and **Usage**. + +4. **Export the Subkey**: On the right side of the key details section, there is + an **Export Subkey** button, highlighted in the screenshot. Click this button + to start the export process. + +5. **Save the Subkey File**: A file dialog will appear, prompting you to specify + a location to save the exported subkey. Choose a secure directory and save + the subkey as a separate file. + + + +### Step-by-Step Guide to Importing Subkeys + +To demonstrate how to import an individual subkey that has been previously +exported, let's refer to the screenshots provided. Below is a step-by-step guide +to navigate the GpgFrontend interface and successfully import a subkey: + +1. **Select the Key Database**: Choose the appropriate key database from the **Key Toolbox**. + + + +1. **Import the Subkey**: Click on the **Import Key** button in the top toolbar, + and select **File** from the dropdown menu. This action will open a dialog + where you can browse your system to locate the previously exported subkey + file. + +  + +2. **Select Subkey File**: Browse to the location where the subkey file is + saved, select it, and click **Open**. This will import the subkey into the + selected key database. + +3. **Verify Imported Subkey**: After importing the subkey, locate it in the + **Key Toolbox** list. Click on the subkey to open its **Key Details** view. + You should see all relevant information about the subkey, including **Key + ID**, **Algorithm**, **Key Size**, and **Usage**. + +4. **Handling Primary Key**:You can now move your master key to a safe place. Then delete it at + GpgFrontend. + +  + +### Confirming Primary Key Absence + +In the **Key Toolbox**, you may notice that some keys have a `#` symbol next to +their **Type** (e.g., **pub/sec#**). This symbol indicates that the primary key +for this subkey does not exist in the current key database. This is expected if +you have securely removed the primary key to minimize exposure, while retaining +the subkeys for ongoing operations. + + + +You can confirm the absence of the primary key by opening the **Key Details** +view of the imported subkey. In the **Primary Key Existence** section, it should +indicate **Not Exists**. This ensures that the primary key is not present, which +enhances the overall security of your cryptographic setup. + +## Key Functionality Without a Primary Key + +When a primary key is absent from the key database, certain limitations apply. +You can confirm the absence of the primary key by checking the **Primary Key +Existence** section in the Key Details view, which will display **Not Exists**. +This setup is intentional in many cases to improve security by isolating the +primary key. + + + +### Actions Limited by the Absence of a Primary Key: + +1. **Creating New Subkeys**: The absence of the primary key prevents the + generation of additional subkeys. +2. **Adding UID**: You cannot attach new User IDs (UIDs) to the keyset without + the primary key. +3. **Key Certification**: Signing other keys to certify them as trusted is only + possible with a primary key. +4. **Key Revocation**: Generating a revocation certificate for the subkey or + primary key is impossible without the primary key. + +### Practical Example: Subkey-Only Use Case + +In scenarios where only the subkey remains, as depicted in the screenshot: + +- The subkey can be actively used for encryption purposes (e.g., encrypting + emails or files). +- Since no subkey capable of signing exists, you cannot digitally sign data. To + address this, it is advisable to generate a signing-capable subkey during the + initial key creation process. + +This setup is particularly beneficial for environments where the exposure of the +primary key poses a security risk. By isolating the primary key and relying +solely on subkeys, you can maintain a balance between functionality and +security. + + + +### Tips for Secure Usage: + +1. **Inspect Subkey Capabilities**: Always verify what operations a subkey can + perform by reviewing its **Usage** field. +2. **Plan Subkey Generation**: At the time of key creation, consider creating + multiple subkeys with distinct purposes (e.g., signing, encryption, + authentication). +3. **Backup Primary Key Securely**: Store the primary key in an offline, highly + secure location to allow recovery or advanced operations if needed. + +### Additional Note on Subkey Algorithm Types + +Subkeys in GpgFrontend offer more algorithm types than primary keys due to their +specialized roles. While primary keys focus on establishing identity and trust, +subkeys are often dedicated to specific tasks like encryption or authentication. +This task-specific design allows subkeys to utilize a broader range of +algorithms, enhancing their flexibility and functionality. For instance, while +primary keys may be restricted to certain secure algorithms for signing, subkeys +can employ diverse algorithms optimized for encryption, like ECDH, ensuring +efficient and secure operations tailored to the user's needs. + +For more Details: [Comparison of Cryptographic Algorithms](/extra/algorithms-comparison) + +**Subkey Supported Algorithms:** + +- RSA +- DSA +- ELG-E +- ECDSA ED25519 +- ECDSA ED448 (GnuPG >2.3.0) +- ECDH CV25519 +- ECDH SECP256K1 (GnuPG >2.3.0) +- ECDH X448 (GnuPG >2.3.0) +- ECDH NIST P-256 +- ECDH NIST P-384 +- ECDH NIST P-521 +- ECDH BrainPool P-256 (GnuPG >2.3.0) +- ECDH BrainPool P-384 (GnuPG >2.3.0) +- ECDH BrainPool P-512 (GnuPG >2.3.0)
\ No newline at end of file |