# Understand DUKPT

### Description

* DUKPT is a key management method that generates a unique key for each transaction, ensuring the security of transaction-originating TRSMs (Transaction-Related Security Modules).
* It is designed to prevent the disclosure of any past keys used in transactions.
* The unique Transaction Keys are derived from a base derivation key, using non-secret data transmitted as part of each transaction.
* DUKPT allows the encryption process to be decentralized from devices holding the shared secret.
* Utilizes derived keys for encryption, which are not reused post-transaction, enhancing security.
* Commonly used in electronic commerce transactions, especially for encrypting PIN information in POS (Point-Of-Sale) devices.
* DUKPT is not an encryption standard but a technique for managing keys.

### Key Features of DUKPT

* Distinct Transaction Keys: Ensures each transaction has a unique key, separate from others.
* Security of Past and Future Keys: If a current key is compromised, previously and subsequently used keys remain secure.
* No Interactive Key Agreement: Avoids the need for originators and receivers of encrypted messages to perform an interactive key-agreement protocol.

### Support in PINPad

* Our internal PINPad supports three types of DUKPT keys: PIN key, MAC key, and data key. Each key type is used to encrypt different types of data.

### Key Injection and Usage

* Key Injection: For information on injecting DUKPT keys, refer to [Use TMK KeyLoader POS](/cloudpossdk/faq/key-injection/use-tmk-keyloader-pos.md) or [Understand Remote Key Injection](/cloudpossdk/faq/key-injection/understand-remote-key-injection.md).
* Usage in SDK: Details on using DUKPT keys are available in our SDK, particularly in the description of the PINPad.
* Demo App: A [dukpt demo application](https://ftp.wizarpos.com/advanceSDK/DukptDemo.zip) is available for download to demonstrate practical usage. &#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://smartpossdk.gitbook.io/cloudpossdk/faq/key-injection/understand-dukpt.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
