02.04.2013 Views

Sentinel Hardware Keys Developer's Guide - Customer Connection ...

Sentinel Hardware Keys Developer's Guide - Customer Connection ...

Sentinel Hardware Keys Developer's Guide - Customer Connection ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 7 – Implementing Secure Licensing<br />

Contents Glossary Index Troubleshooting<br />

Tip: The query/response table is written into the design header file when you<br />

build a license template containing an AES feature. 1<br />

Query Frequently<br />

If you rely on a single call at the beginning of your code, it is relatively easy<br />

for a skilled hacker to isolate the call and defeat your protection. Another<br />

potential problem with querying only once is that a user could remove the<br />

<strong>Sentinel</strong> Key after starting the application. The key could then be used to<br />

run another copy of the application. 2<br />

Query Randomly<br />

174 <strong>Sentinel</strong> <strong>Hardware</strong> <strong>Keys</strong> Developer’s <strong>Guide</strong><br />

<br />

You must design the protection strategy to have the application pick the<br />

challenge from the query/response table randomly. This makes it difficult to<br />

anticipate what the challenge will be. Once you choose a challenge, use this<br />

one challenge repeatedly for some period of time (such as each time the program<br />

is run, or once a day). If your application uses a different challenge<br />

every time, then it will cycle through all available challenges in a faster time<br />

frame. This speeds up the time it takes to listen to every possible challenge.<br />

Add Noise to your Query Checks<br />

Generate random queries and then dismiss the results. This generates a<br />

large amount of unused data among the useful data. Anyone trying to<br />

record your communications with the key will need to record large amounts<br />

of data and have trouble deciphering what is meaningful.<br />

Generate New Tables Frequently<br />

Each time you create an update to your application, regenerate the query/<br />

response table. If an attacker has been able to record all the challenges used<br />

1. The query/response table will be generated for a CodeCover feature when you select the<br />

Include CodeCover features check box under the Build Options tab.<br />

2. To address this, you may also like to use the SFNTSetHeartbeat API function which will<br />

release the license after specified idle period.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!