# Security Settings

The following options enable you to change the security of the retrieval of in progress forms:&#x20;

| **Setting Name**                         | **What it does**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SecureRetrievePasswordOnly               | When set to true this will mean that a person cannot use Mother's maiden name, NINO or first school as a password. The only option will be 'a password of your choice'. It is this option that is subsequently affected by the settings below.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| SecureRetrievePasswordLengthMin          | This allows you to change the minimum length of the password the user must provide. The default is 8 digits long.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| SecureRetrievePasswordLengthMax          | This allows you to change the maximum length of the password the user must provide. The default is 16 digits long.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| SecureRetrieveNumberMixOfUpperAndLower   | This setting when **true** means that the password they provide must contain a mixture of upper and lower case characters. I.e. if the password was 8 digits long and set to IEEGFOUR it would not be allowed if this setting was true. But iEEG4FOUR would.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| SecureRetrieveNumberOfLetters            | This setting controls the number of letters that need to be present within the password the user sets up I.e. you can control the number of letters the customer needs to provide in their password.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| SecureRetrieveNumberOfDigits             | This setting controls the number of numbers that need to be present within the password the user sets up I.e. you can control the number of numbers the customer needs to provide in their password.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| SecureRetrieveNumberOfNonAlphaNumeric    | This setting controls the number of non-letter or number based characters that need to be present within the password the user sets up I.e. you can control the number of special characters the customer needs to provide in their password. E.g. !@£$%^&\*()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| SecureRetrieveCaptchaControl             | This provides the ability for you add a captcha control to the form retrieval process. The purpose of this is to completely remove the capability for repeat brute force hacking capability.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| TransactionNumberMode                    | This setting adds the means to support a **cryptorandom** type for the **reference number** generated in the form. This should be used where you wish to leverage the new functionality provided for the reference number.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| TransactionNumberRandomStringLength      | This is an existing setting and is that which controls the total length of the reference value generated upon starting a form.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| TransactionNumberRandomStringCharacters  | <p>This allows you to set the actual characters that can be used in the random generation of a reference. The default characters used are: </p><p><strong>BCDFGHJKLMNPQRSTVWXYZ</strong> </p><p>However, you can use whichever you want e.g. </p><p><strong>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890</strong> </p><p>Would ensure upper, lower, and numbers are used in a reference number. If this were the case for an 8 digit reference number it could look like this: </p><p><strong>4qApf5Xc</strong> </p><p>But it important to note that these characters could be anything i.e. you could set this to: </p><p><strong>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@£$%^&#x26;*()_+|~</strong> </p><p>Meaning that an 8 character reference number could be: </p><p><strong>4~Apf5X!</strong> </p><p>Where this is the case, the number of combinations for an 8 digit reference increases significantly to: </p><p>1,113,034,787,454,976 (1 quadrillion) </p><p>For perspective if a hacker were to try every second to get into your data it would take them 35,294,101 (35 million) years to go through each combination.  </p> |
| CaptchaControlSiteKey                    | This is set by IEG4 and should not be edited by you                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| CaptchaControlSecretKey                  | This is set by IEG4 and should not be edited by you                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| SecureRetrieveCaptchaControl             | This is set by IEG4 to google and should not be edited by you                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

_Some illustrations of these_&#x20;

**Example 1 - changing the reference number format**&#x20;

In the following example, the settings are set such that:&#x20;

_**TransactionNumberRandomStringCharacters**_ is set to: _**abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890**_&#x20;

And&#x20;

_**TransactionNumberRandomStringLength**_ is set to: _**24**_&#x20;

The combination of these mean that the reference number will be 24 characters long and contain a mixture of the a-0 character list. See how this is created below:&#x20;

![](https://2446085776-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Xv5e5CMqZNlA8r5Exkm%2Fuploads%2FMCq3XrtbYg4NQuOmCObA%2Fimage.png?alt=media\&token=027f6d88-4c4c-486b-8cdd-f8bd2a3ed6af)

As one can see this is absurdly long but does illustrate the flexibility you now have. &#x20;

**Example 2 - Password modifications**&#x20;

If we set these settings as follows:&#x20;

* SecureRetrievePasswordOnly                            true&#x20;
* SecureRetrievePasswordLengthMin                    7&#x20;
* SecureRetrievePasswordLengthMax                   12&#x20;
* SecureRetrieveNumberMixOfUpperAndLower      true&#x20;
* SecureRetrieveNumberOfLetters                        3&#x20;
* SecureRetrieveNumberOfDigits                          1&#x20;
* SecureRetrieveNumberOfNonAlphaNumeric         1&#x20;

Then it means the person will only be allowed to proceed if there are a minimum of 7 characters, a maximum of 12 and it should have a mixture of upper and lower case letters. There needs to be at least 3 letters, 1 number and 1 special character. I.e. with the above the following would be allowed:&#x20;

All0w3d#&#x20;

But:&#x20;

all0w3d# would not as there needs to be upper / lower case mixture&#x20;

All0w3d would not as there must be 1 special character&#x20;

Al03d# would not as it is below the minimum of 7 characters. &#x20;

I.e. an enormous amount of flexibility is present.&#x20;

Where a person erroneously provides a password that does not meet the rules they will be presented with a message that reflects how you have set the settings. The following screen shot:&#x20;

![](https://2446085776-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Xv5e5CMqZNlA8r5Exkm%2Fuploads%2F9mut0U8VIHuAdVJiwcp8%2Fimage.png?alt=media\&token=8b878052-2460-4c27-ad7d-8326e6694c37)

Is where the minimum is 8, max is 16 and 1 letter and 1 number is provided. I.e. the help is dynamic. &#x20;

When the person wants to retrieve their saved form or go to add additional evidence they will need to provide their reference number and their password. They need to provide both of these at the same time now meaning both are required to be correct in conjunction with one another rather than previously where they were checked in isolation. &#x20;

If the person provides incorrect details on either the following is presented. I.e. it tells them they have done something wrong but for security does not explain what they have got wrong:&#x20;

![](https://2446085776-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Xv5e5CMqZNlA8r5Exkm%2Fuploads%2FZ6Ja0164N9a2dkhPA3bg%2Fimage.png?alt=media\&token=4380ae1f-c639-4290-8631-0624c1376978)

{% hint style="danger" %}
**VERY IMPORTANT**&#x20;

Any current in-progress forms without security questions will become un-retrievable when this is enabled. This creates a catch 22 but basically at the point at which you go live with this you will likely have some in progress forms where this is the case. These users will be unable to retrieve their claims from that point onward so will need to start a new one. So you may want to email them or make it clear for 1 month post the change on the guidance notes of the launch page that they will need to start a new one. &#x20;

Also and mainly for information, the answer (password) the citizen provides now have true password box behaviour, meaning characters are masked as they are entered.&#x20;
{% endhint %}

&#x20; \
**Example 3 - Captcha when trying to retrieve an online form**&#x20;

When the following setting is google and the associated values are added by IEG4:&#x20;

SecureRetrieveCaptchaControl&#x20;

The following will be present on the online form in the 'Continue a form' section:&#x20;

![](https://2446085776-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Xv5e5CMqZNlA8r5Exkm%2Fuploads%2FKr7zqHIJ7tuDNhvQlFa2%2Fimage.png?alt=media\&token=992756b7-0cfa-4686-9608-18afd5a4c2d1)

\
When clicked the user needs to answer the visual questions like this below:&#x20;

![](https://2446085776-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Xv5e5CMqZNlA8r5Exkm%2Fuploads%2FJbIdcCkjbLYhV0csyjbI%2Fimage.png?alt=media\&token=a009140d-1dca-4743-ab6f-ee905f9ded0d)

\
