Difference between revisions of "Security Engine"

From Nintendo Switch Brew
Jump to navigation Jump to search
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
The Nintendo Switch uses Tegra's Security Engine (SE) for handling cryptographic opearations at the system's lowest level.
 
The Nintendo Switch uses Tegra's Security Engine (SE) for handling cryptographic opearations at the system's lowest level.
  
The SE driver is mapped to physical address 0x70012000 with a total size of 0x2000 bytes and exposes several registers for programming the Security Engine.
+
= Registers =
 +
Erista only has one SE driver which is mapped to physical address 0x70012000 with a total size of 0x2000 bytes.
 +
 
 +
Mariko has two SE drivers which are mapped to physical addresses 0x70012000 (SE1) and 0x70412000 (SE2), each with a total size of 0x2000 bytes.
  
= Registers =
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Name
 
! Name
! Address
+
! Address (Erista SE)
 +
! Address (Mariko SE1)
 +
! Address (Mariko SE2)
 
|-
 
|-
| SE_OPERATION_UNK0
+
| SE_SE_SECURITY
 
| 0x70012000
 
| 0x70012000
 +
| 0x70012000
 +
| 0x70412000
 
|-
 
|-
| SE_OPERATION_UNK1
+
| SE_TZRAM_SECURITY
 +
| 0x70012004
 
| 0x70012004
 
| 0x70012004
 +
| 0x70412004
 
|-
 
|-
 
| SE_OPERATION
 
| SE_OPERATION
 
| 0x70012008
 
| 0x70012008
 +
| 0x70012008
 +
| 0x70412008
 
|-
 
|-
 
| SE_INT_ENABLE
 
| SE_INT_ENABLE
 
| 0x7001200C
 
| 0x7001200C
 +
| 0x7001200C
 +
| 0x7041200C
 
|-
 
|-
 
| SE_INT_STATUS
 
| SE_INT_STATUS
 
| 0x70012010
 
| 0x70012010
 +
| 0x70012010
 +
| 0x70412010
 
|-
 
|-
 
| SE_CONFIG
 
| SE_CONFIG
 
| 0x70012014
 
| 0x70012014
 +
| 0x70012014
 +
| 0x70412014
 
|-
 
|-
 
| SE_IN_LL_ADDR
 
| SE_IN_LL_ADDR
 
| 0x70012018
 
| 0x70012018
 +
| 0x70012018
 +
| 0x70412018
 +
|-
 +
| SE_IN_CUR_BYTE_ADDR
 +
| 0x7001201C
 +
| 0x7001201C
 +
| 0x7041201C
 +
|-
 +
| SE_IN_CUR_LL_ID
 +
| 0x70012020
 +
| 0x70012020
 +
| 0x70412020
 
|-
 
|-
 
| SE_OUT_LL_ADDR
 
| SE_OUT_LL_ADDR
 
| 0x70012024
 
| 0x70012024
 +
| 0x70012024
 +
| 0x70412024
 
|-
 
|-
| SE_HASH_RESULT
+
| SE_OUT_CUR_BYTE_ADDR
 +
| 0x70012028
 +
| 0x70012028
 +
| 0x70412028
 +
|-
 +
| SE_OUT_CUR_LL_ID
 +
| 0x7001202C
 +
| 0x7001202C
 +
| 0x7041202C
 +
|-
 +
| SE_HASH_RESULT_0
 
| 0x70012030
 
| 0x70012030
 +
| 0x70012030
 +
| 0x70412030
 +
|-
 +
| SE_HASH_RESULT_1
 +
| 0x70012034
 +
| 0x70012034
 +
| 0x70412034
 +
|-
 +
| SE_HASH_RESULT_2
 +
| 0x70012038
 +
| 0x70012038
 +
| 0x70412038
 +
|-
 +
| SE_HASH_RESULT_3
 +
| 0x7001203C
 +
| 0x7001203C
 +
| 0x7041203C
 +
|-
 +
| SE_HASH_RESULT_4
 +
| 0x70012040
 +
| 0x70012040
 +
| 0x70412040
 +
|-
 +
| SE_HASH_RESULT_5
 +
| 0x70012044
 +
| 0x70012044
 +
| 0x70412044
 +
|-
 +
| SE_HASH_RESULT_6
 +
| 0x70012048
 +
| 0x70012048
 +
| 0x70412048
 +
|-
 +
| SE_HASH_RESULT_7
 +
| 0x7001204C
 +
| 0x7001204C
 +
| 0x7041204C
 +
|-
 +
| SE_HASH_RESULT_8
 +
| 0x70012050
 +
| 0x70012050
 +
| 0x70412050
 +
|-
 +
| SE_HASH_RESULT_9
 +
| 0x70012054
 +
| 0x70012054
 +
| 0x70412054
 
|-
 
|-
| SE_CONTEXT_SAVE_CONFIG
+
| SE_HASH_RESULT_10
 +
| 0x70012058
 +
| 0x70012058
 +
| 0x70412058
 +
|-
 +
| SE_HASH_RESULT_11
 +
| 0x7001205C
 +
| 0x7001205C
 +
| 0x7041205C
 +
|-
 +
| SE_HASH_RESULT_12
 +
| 0x70012060
 +
| 0x70012060
 +
| 0x70412060
 +
|-
 +
| SE_HASH_RESULT_13
 +
| 0x70012064
 +
| 0x70012064
 +
| 0x70412064
 +
|-
 +
| SE_HASH_RESULT_14
 +
| 0x70012068
 +
| 0x70012068
 +
| 0x70412068
 +
|-
 +
| SE_HASH_RESULT_15
 +
| 0x7001206C
 +
| 0x7001206C
 +
| 0x7041206C
 +
|-
 +
| SE_CTX_SAVE_CONFIG
 
| 0x70012070
 
| 0x70012070
 +
| 0x70012070
 +
| 0x70412070
 +
|-
 +
| SE_CTX_SAVE_AUTO
 +
| -
 +
| 0x70012074
 +
| 0x70412074
 
|-
 
|-
 
| SE_SHA_CONFIG
 
| SE_SHA_CONFIG
 
| 0x70012200
 
| 0x70012200
 +
| 0x70012200
 +
| 0x70412200
 
|-
 
|-
| SE_SHA_MSG_LENGTH
+
| SE_SHA_MSG_LENGTH_0
 
| 0x70012204
 
| 0x70012204
 +
| 0x70012204
 +
| 0x70412204
 
|-
 
|-
| SE_SHA_MSG_UNK0
+
| SE_SHA_MSG_LENGTH_1
 +
| 0x70012208
 
| 0x70012208
 
| 0x70012208
 +
| 0x70412208
 
|-
 
|-
| SE_SHA_MSG_UNK1
+
| SE_SHA_MSG_LENGTH_2
 +
| 0x7001220C
 
| 0x7001220C
 
| 0x7001220C
 +
| 0x7041220C
 
|-
 
|-
| SE_SHA_MSG_UNK2
+
| SE_SHA_MSG_LENGTH_3
 
| 0x70012210
 
| 0x70012210
 +
| 0x70012210
 +
| 0x70412210
 
|-
 
|-
| SE_SHA_MSG_LEFT
+
| SE_SHA_MSG_LEFT_0
 
| 0x70012214
 
| 0x70012214
 +
| 0x70012214
 +
| 0x70412214
 
|-
 
|-
| SE_SHA_MSG_UNK3
+
| SE_SHA_MSG_LEFT_1
 
| 0x70012218
 
| 0x70012218
 +
| 0x70012218
 +
| 0x70412218
 
|-
 
|-
| SE_SHA_MSG_UNK4
+
| SE_SHA_MSG_LEFT_2
 
| 0x7001221C
 
| 0x7001221C
 +
| 0x7001221C
 +
| 0x7041221C
 
|-
 
|-
| SE_SHA_MSG_UNK5
+
| SE_SHA_MSG_LEFT_3
 
| 0x70012220
 
| 0x70012220
 +
| 0x70012220
 +
| 0x70412220
 
|-
 
|-
| SE_AES_KEY_READ_DISABLE
+
| SE_CRYPTO_SECURITY_PERKEY
 +
| 0x70012280
 
| 0x70012280
 
| 0x70012280
 +
| 0x70412280
 
|-
 
|-
| SE_AES_KEYTABLE_ACCESS
+
| SE_CRYPTO_KEYTABLE_ACCESS_0
 +
| 0x70012284
 
| 0x70012284
 
| 0x70012284
 +
| 0x70412284
 
|-
 
|-
| SE_CRYPTO
+
| SE_CRYPTO_KEYTABLE_ACCESS_1
 +
| 0x70012288
 +
| 0x70012288
 +
| 0x70412288
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_2
 +
| 0x7001228C
 +
| 0x7001228C
 +
| 0x7041228C
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_3
 +
| 0x70012290
 +
| 0x70012290
 +
| 0x70412290
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_4
 +
| 0x70012294
 +
| 0x70012294
 +
| 0x70412294
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_5
 +
| 0x70012298
 +
| 0x70012298
 +
| 0x70412298
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_6
 +
| 0x7001229C
 +
| 0x7001229C
 +
| 0x7041229C
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_7
 +
| 0x700122A0
 +
| 0x700122A0
 +
| 0x704122A0
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_8
 +
| 0x700122A4
 +
| 0x700122A4
 +
| 0x704122A4
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_9
 +
| 0x700122A8
 +
| 0x700122A8
 +
| 0x704122A8
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_10
 +
| 0x700122AC
 +
| 0x700122AC
 +
| 0x704122AC
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_11
 +
| 0x700122B0
 +
| 0x700122B0
 +
| 0x704122B0
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_12
 +
| 0x700122B4
 +
| 0x700122B4
 +
| 0x704122B4
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_13
 +
| 0x700122B8
 +
| 0x700122B8
 +
| 0x704122B8
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_14
 +
| 0x700122BC
 +
| 0x700122BC
 +
| 0x704122BC
 +
|-
 +
| SE_CRYPTO_KEYTABLE_ACCESS_15
 +
| 0x700122C0
 +
| 0x700122C0
 +
| 0x704122C0
 +
|-
 +
| SE_CRYPTO_CONFIG
 
| 0x70012304
 
| 0x70012304
 +
| 0x70012304
 +
| 0x70412304
 
|-
 
|-
| SE_CRYPTO_CTR
+
| SE_CRYPTO_LINEAR_CTR_0
 
| 0x70012308
 
| 0x70012308
 +
| 0x70012308
 +
| 0x70412308
 
|-
 
|-
| SE_BLOCK_COUNT
+
| SE_CRYPTO_LINEAR_CTR_1
 +
| 0x7001230C
 +
| 0x7001230C
 +
| 0x7041230C
 +
|-
 +
| SE_CRYPTO_LINEAR_CTR_2
 +
| 0x70012310
 +
| 0x70012310
 +
| 0x70412310
 +
|-
 +
| SE_CRYPTO_LINEAR_CTR_3
 +
| 0x70012314
 +
| 0x70012314
 +
| 0x70412314
 +
|-
 +
| SE_CRYPTO_LAST_BLOCK
 +
| 0x70012318
 
| 0x70012318
 
| 0x70012318
 +
| 0x70412318
 
|-
 
|-
| SE_AES_KEYTABLE_ADDR
+
| SE_CRYPTO_KEYTABLE_ADDR
 +
| 0x7001231C
 
| 0x7001231C
 
| 0x7001231C
 +
| 0x7041231C
 
|-
 
|-
| SE_AES_KEYTABLE_DATA
+
| SE_CRYPTO_KEYTABLE_DATA
 +
| 0x70012320
 
| 0x70012320
 
| 0x70012320
 +
| 0x70412320
 
|-
 
|-
 
| SE_CRYPTO_KEYTABLE_DST
 
| SE_CRYPTO_KEYTABLE_DST
 
| 0x70012330
 
| 0x70012330
 +
| 0x70012330
 +
| 0x70412330
 
|-
 
|-
 
| SE_RNG_CONFIG
 
| SE_RNG_CONFIG
 
| 0x70012340
 
| 0x70012340
 +
| 0x70012340
 +
| 0x70412340
 
|-
 
|-
 
| SE_RNG_SRC_CONFIG
 
| SE_RNG_SRC_CONFIG
 
| 0x70012344
 
| 0x70012344
 +
| 0x70012344
 +
| 0x70412344
 
|-
 
|-
 
| SE_RNG_RESEED_INTERVAL
 
| SE_RNG_RESEED_INTERVAL
 
| 0x70012348
 
| 0x70012348
 +
| 0x70012348
 +
| 0x70412348
 
|-
 
|-
 
| SE_RSA_CONFIG
 
| SE_RSA_CONFIG
 
| 0x70012400
 
| 0x70012400
 +
| 0x70012400
 +
| 0x70412400
 
|-
 
|-
 
| SE_RSA_KEY_SIZE
 
| SE_RSA_KEY_SIZE
 
| 0x70012404
 
| 0x70012404
 +
| 0x70012404
 +
| 0x70412404
 
|-
 
|-
 
| SE_RSA_EXP_SIZE
 
| SE_RSA_EXP_SIZE
 
| 0x70012408
 
| 0x70012408
 +
| 0x70012408
 +
| 0x70412408
 
|-
 
|-
| SE_RSA_KEY_READ_DISABLE
+
| SE_RSA_SECURITY_PERKEY
 
| 0x7001240C
 
| 0x7001240C
 +
| 0x7001240C
 +
| 0x7041240C
 
|-
 
|-
| SE_RSA_KEYTABLE_ACCESS
+
| SE_RSA_KEYTABLE_ACCESS_0
 
| 0x70012410
 
| 0x70012410
 +
| 0x70012410
 +
| 0x70412410
 +
|-
 +
| SE_RSA_KEYTABLE_ACCESS_1
 +
| 0x70012414
 +
| 0x70012414
 +
| 0x70412414
 
|-
 
|-
 
| SE_RSA_KEYTABLE_ADDR
 
| SE_RSA_KEYTABLE_ADDR
 
| 0x70012420
 
| 0x70012420
 +
| 0x70012420
 +
| 0x70412420
 
|-
 
|-
 
| SE_RSA_KEYTABLE_DATA
 
| SE_RSA_KEYTABLE_DATA
 
| 0x70012424
 
| 0x70012424
 +
| 0x70012424
 +
| 0x70412424
 
|-
 
|-
| SE_RSA_OUTPUT
+
| SE_RSA_OUTPUT_0
 +
| 0x70012428
 
| 0x70012428
 
| 0x70012428
 +
| 0x70412428
 +
|-
 +
| SE_RSA_OUTPUT_1
 +
| 0x7001242C
 +
| 0x7001242C
 +
| 0x7041242C
 +
|-
 +
| SE_RSA_OUTPUT_2
 +
| 0x70012430
 +
| 0x70012430
 +
| 0x70412430
 +
|-
 +
| SE_RSA_OUTPUT_3
 +
| 0x70012434
 +
| 0x70012434
 +
| 0x70412434
 +
|-
 +
| SE_RSA_OUTPUT_4
 +
| 0x70012438
 +
| 0x70012438
 +
| 0x70412438
 +
|-
 +
| SE_RSA_OUTPUT_5
 +
| 0x7001243C
 +
| 0x7001243C
 +
| 0x7041243C
 +
|-
 +
| SE_RSA_OUTPUT_6
 +
| 0x70012440
 +
| 0x70012440
 +
| 0x70412440
 +
|-
 +
| SE_RSA_OUTPUT_7
 +
| 0x70012444
 +
| 0x70012444
 +
| 0x70412444
 +
|-
 +
| SE_RSA_OUTPUT_8
 +
| 0x70012448
 +
| 0x70012448
 +
| 0x70412448
 +
|-
 +
| SE_RSA_OUTPUT_9
 +
| 0x7001244C
 +
| 0x7001244C
 +
| 0x7041244C
 +
|-
 +
| SE_RSA_OUTPUT_10
 +
| 0x70012450
 +
| 0x70012450
 +
| 0x70412450
 +
|-
 +
| SE_RSA_OUTPUT_11
 +
| 0x70012454
 +
| 0x70012454
 +
| 0x70412454
 +
|-
 +
| SE_RSA_OUTPUT_12
 +
| 0x70012458
 +
| 0x70012458
 +
| 0x70412458
 +
|-
 +
| SE_RSA_OUTPUT_13
 +
| 0x7001245C
 +
| 0x7001245C
 +
| 0x7041245C
 +
|-
 +
| SE_RSA_OUTPUT_14
 +
| 0x70012460
 +
| 0x70012460
 +
| 0x70412460
 +
|-
 +
| SE_RSA_OUTPUT_15
 +
| 0x70012464
 +
| 0x70012464
 +
| 0x70412464
 +
|-
 +
| SE_RSA_OUTPUT_16
 +
| 0x70012468
 +
| 0x70012468
 +
| 0x70412468
 +
|-
 +
| SE_RSA_OUTPUT_17
 +
| 0x7001246C
 +
| 0x7001246C
 +
| 0x7041246C
 +
|-
 +
| SE_RSA_OUTPUT_18
 +
| 0x70012470
 +
| 0x70012470
 +
| 0x70412470
 +
|-
 +
| SE_RSA_OUTPUT_19
 +
| 0x70012474
 +
| 0x70012474
 +
| 0x70412474
 +
|-
 +
| SE_RSA_OUTPUT_20
 +
| 0x70012478
 +
| 0x70012478
 +
| 0x70412478
 +
|-
 +
| SE_RSA_OUTPUT_21
 +
| 0x7001247C
 +
| 0x7001247C
 +
| 0x7041247C
 +
|-
 +
| SE_RSA_OUTPUT_22
 +
| 0x70012480
 +
| 0x70012480
 +
| 0x70412480
 +
|-
 +
| SE_RSA_OUTPUT_23
 +
| 0x70012484
 +
| 0x70012484
 +
| 0x70412484
 +
|-
 +
| SE_RSA_OUTPUT_24
 +
| 0x70012488
 +
| 0x70012488
 +
| 0x70412488
 +
|-
 +
| SE_RSA_OUTPUT_25
 +
| 0x7001248C
 +
| 0x7001248C
 +
| 0x7041248C
 +
|-
 +
| SE_RSA_OUTPUT_26
 +
| 0x70012490
 +
| 0x70012490
 +
| 0x70412490
 +
|-
 +
| SE_RSA_OUTPUT_27
 +
| 0x70012494
 +
| 0x70012494
 +
| 0x70412494
 +
|-
 +
| SE_RSA_OUTPUT_28
 +
| 0x70012498
 +
| 0x70012498
 +
| 0x70412498
 +
|-
 +
| SE_RSA_OUTPUT_29
 +
| 0x7001249C
 +
| 0x7001249C
 +
| 0x7041249C
 +
|-
 +
| SE_RSA_OUTPUT_30
 +
| 0x700124A0
 +
| 0x700124A0
 +
| 0x704124A0
 +
|-
 +
| SE_RSA_OUTPUT_31
 +
| 0x700124A4
 +
| 0x700124A4
 +
| 0x704124A4
 +
|-
 +
| SE_RSA_OUTPUT_32
 +
| 0x700124A8
 +
| 0x700124A8
 +
| 0x704124A8
 +
|-
 +
| SE_RSA_OUTPUT_33
 +
| 0x700124AC
 +
| 0x700124AC
 +
| 0x704124AC
 +
|-
 +
| SE_RSA_OUTPUT_34
 +
| 0x700124B0
 +
| 0x700124B0
 +
| 0x704124B0
 +
|-
 +
| SE_RSA_OUTPUT_35
 +
| 0x700124B4
 +
| 0x700124B4
 +
| 0x704124B4
 +
|-
 +
| SE_RSA_OUTPUT_36
 +
| 0x700124B8
 +
| 0x700124B8
 +
| 0x704124B8
 +
|-
 +
| SE_RSA_OUTPUT_37
 +
| 0x700124BC
 +
| 0x700124BC
 +
| 0x704124BC
 +
|-
 +
| SE_RSA_OUTPUT_38
 +
| 0x700124C0
 +
| 0x700124C0
 +
| 0x704124C0
 
|-
 
|-
| SE_STATUS_FLAGS
+
| SE_RSA_OUTPUT_39
 +
| 0x700124C4
 +
| 0x700124C4
 +
| 0x704124C4
 +
|-
 +
| SE_RSA_OUTPUT_40
 +
| 0x700124C8
 +
| 0x700124C8
 +
| 0x704124C8
 +
|-
 +
| SE_RSA_OUTPUT_41
 +
| 0x700124CC
 +
| 0x700124CC
 +
| 0x704124CC
 +
|-
 +
| SE_RSA_OUTPUT_42
 +
| 0x700124D0
 +
| 0x700124D0
 +
| 0x704124D0
 +
|-
 +
| SE_RSA_OUTPUT_43
 +
| 0x700124D4
 +
| 0x700124D4
 +
| 0x704124D4
 +
|-
 +
| SE_RSA_OUTPUT_44
 +
| 0x700124D8
 +
| 0x700124D8
 +
| 0x704124D8
 +
|-
 +
| SE_RSA_OUTPUT_45
 +
| 0x700124DC
 +
| 0x700124DC
 +
| 0x704124DC
 +
|-
 +
| SE_RSA_OUTPUT_46
 +
| 0x700124E0
 +
| 0x700124E0
 +
| 0x704124E0
 +
|-
 +
| SE_RSA_OUTPUT_47
 +
| 0x700124E4
 +
| 0x700124E4
 +
| 0x704124E4
 +
|-
 +
| SE_RSA_OUTPUT_48
 +
| 0x700124E8
 +
| 0x700124E8
 +
| 0x704124E8
 +
|-
 +
| SE_RSA_OUTPUT_49
 +
| 0x700124EC
 +
| 0x700124EC
 +
| 0x704124EC
 +
|-
 +
| SE_RSA_OUTPUT_50
 +
| 0x700124F0
 +
| 0x700124F0
 +
| 0x704124F0
 +
|-
 +
| SE_RSA_OUTPUT_51
 +
| 0x700124F4
 +
| 0x700124F4
 +
| 0x704124F4
 +
|-
 +
| SE_RSA_OUTPUT_52
 +
| 0x700124F8
 +
| 0x700124F8
 +
| 0x704124F8
 +
|-
 +
| SE_RSA_OUTPUT_53
 +
| 0x700124FC
 +
| 0x700124FC
 +
| 0x704124FC
 +
|-
 +
| SE_RSA_OUTPUT_54
 +
| 0x70012500
 +
| 0x70012500
 +
| 0x70412500
 +
|-
 +
| SE_RSA_OUTPUT_55
 +
| 0x70012504
 +
| 0x70012504
 +
| 0x70412504
 +
|-
 +
| SE_RSA_OUTPUT_56
 +
| 0x70012508
 +
| 0x70012508
 +
| 0x70412508
 +
|-
 +
| SE_RSA_OUTPUT_57
 +
| 0x7001250C
 +
| 0x7001250C
 +
| 0x7041250C
 +
|-
 +
| SE_RSA_OUTPUT_58
 +
| 0x70012510
 +
| 0x70012510
 +
| 0x70412510
 +
|-
 +
| SE_RSA_OUTPUT_59
 +
| 0x70012514
 +
| 0x70012514
 +
| 0x70412514
 +
|-
 +
| SE_RSA_OUTPUT_60
 +
| 0x70012518
 +
| 0x70012518
 +
| 0x70412518
 +
|-
 +
| SE_RSA_OUTPUT_61
 +
| 0x7001251C
 +
| 0x7001251C
 +
| 0x7041251C
 +
|-
 +
| SE_RSA_OUTPUT_62
 +
| 0x70012520
 +
| 0x70012520
 +
| 0x70412520
 +
|-
 +
| SE_RSA_OUTPUT_63
 +
| 0x70012524
 +
| 0x70012524
 +
| 0x70412524
 +
|-
 +
| SE_TZRAM_OPERATION
 +
| -
 +
| 0x70012540
 +
| -
 +
|-
 +
| SE_STATUS
 
| 0x70012800
 
| 0x70012800
 +
| 0x70012800
 +
| 0x70412800
 
|-
 
|-
 
| SE_ERR_STATUS
 
| SE_ERR_STATUS
 
| 0x70012804
 
| 0x70012804
 +
| 0x70012804
 +
| 0x70412804
 +
|-
 +
| SE_MISC
 +
| 0x70012808
 +
| 0x70012808
 +
| 0x70412808
 
|-
 
|-
| SE_SPARE_0
+
| SE_SPARE
 +
| 0x7001280C
 
| 0x7001280C
 
| 0x7001280C
 +
| 0x7041280C
 +
|-
 +
| SE_ENTROPY_DEBUG_COUNTER
 +
| 0x70012810
 +
| 0x70012810
 +
| 0x70412810
 
|}
 
|}

Latest revision as of 22:05, 2 June 2024

The Nintendo Switch uses Tegra's Security Engine (SE) for handling cryptographic opearations at the system's lowest level.

Registers

Erista only has one SE driver which is mapped to physical address 0x70012000 with a total size of 0x2000 bytes.

Mariko has two SE drivers which are mapped to physical addresses 0x70012000 (SE1) and 0x70412000 (SE2), each with a total size of 0x2000 bytes.

Name Address (Erista SE) Address (Mariko SE1) Address (Mariko SE2)
SE_SE_SECURITY 0x70012000 0x70012000 0x70412000
SE_TZRAM_SECURITY 0x70012004 0x70012004 0x70412004
SE_OPERATION 0x70012008 0x70012008 0x70412008
SE_INT_ENABLE 0x7001200C 0x7001200C 0x7041200C
SE_INT_STATUS 0x70012010 0x70012010 0x70412010
SE_CONFIG 0x70012014 0x70012014 0x70412014
SE_IN_LL_ADDR 0x70012018 0x70012018 0x70412018
SE_IN_CUR_BYTE_ADDR 0x7001201C 0x7001201C 0x7041201C
SE_IN_CUR_LL_ID 0x70012020 0x70012020 0x70412020
SE_OUT_LL_ADDR 0x70012024 0x70012024 0x70412024
SE_OUT_CUR_BYTE_ADDR 0x70012028 0x70012028 0x70412028
SE_OUT_CUR_LL_ID 0x7001202C 0x7001202C 0x7041202C
SE_HASH_RESULT_0 0x70012030 0x70012030 0x70412030
SE_HASH_RESULT_1 0x70012034 0x70012034 0x70412034
SE_HASH_RESULT_2 0x70012038 0x70012038 0x70412038
SE_HASH_RESULT_3 0x7001203C 0x7001203C 0x7041203C
SE_HASH_RESULT_4 0x70012040 0x70012040 0x70412040
SE_HASH_RESULT_5 0x70012044 0x70012044 0x70412044
SE_HASH_RESULT_6 0x70012048 0x70012048 0x70412048
SE_HASH_RESULT_7 0x7001204C 0x7001204C 0x7041204C
SE_HASH_RESULT_8 0x70012050 0x70012050 0x70412050
SE_HASH_RESULT_9 0x70012054 0x70012054 0x70412054
SE_HASH_RESULT_10 0x70012058 0x70012058 0x70412058
SE_HASH_RESULT_11 0x7001205C 0x7001205C 0x7041205C
SE_HASH_RESULT_12 0x70012060 0x70012060 0x70412060
SE_HASH_RESULT_13 0x70012064 0x70012064 0x70412064
SE_HASH_RESULT_14 0x70012068 0x70012068 0x70412068
SE_HASH_RESULT_15 0x7001206C 0x7001206C 0x7041206C
SE_CTX_SAVE_CONFIG 0x70012070 0x70012070 0x70412070
SE_CTX_SAVE_AUTO - 0x70012074 0x70412074
SE_SHA_CONFIG 0x70012200 0x70012200 0x70412200
SE_SHA_MSG_LENGTH_0 0x70012204 0x70012204 0x70412204
SE_SHA_MSG_LENGTH_1 0x70012208 0x70012208 0x70412208
SE_SHA_MSG_LENGTH_2 0x7001220C 0x7001220C 0x7041220C
SE_SHA_MSG_LENGTH_3 0x70012210 0x70012210 0x70412210
SE_SHA_MSG_LEFT_0 0x70012214 0x70012214 0x70412214
SE_SHA_MSG_LEFT_1 0x70012218 0x70012218 0x70412218
SE_SHA_MSG_LEFT_2 0x7001221C 0x7001221C 0x7041221C
SE_SHA_MSG_LEFT_3 0x70012220 0x70012220 0x70412220
SE_CRYPTO_SECURITY_PERKEY 0x70012280 0x70012280 0x70412280
SE_CRYPTO_KEYTABLE_ACCESS_0 0x70012284 0x70012284 0x70412284
SE_CRYPTO_KEYTABLE_ACCESS_1 0x70012288 0x70012288 0x70412288
SE_CRYPTO_KEYTABLE_ACCESS_2 0x7001228C 0x7001228C 0x7041228C
SE_CRYPTO_KEYTABLE_ACCESS_3 0x70012290 0x70012290 0x70412290
SE_CRYPTO_KEYTABLE_ACCESS_4 0x70012294 0x70012294 0x70412294
SE_CRYPTO_KEYTABLE_ACCESS_5 0x70012298 0x70012298 0x70412298
SE_CRYPTO_KEYTABLE_ACCESS_6 0x7001229C 0x7001229C 0x7041229C
SE_CRYPTO_KEYTABLE_ACCESS_7 0x700122A0 0x700122A0 0x704122A0
SE_CRYPTO_KEYTABLE_ACCESS_8 0x700122A4 0x700122A4 0x704122A4
SE_CRYPTO_KEYTABLE_ACCESS_9 0x700122A8 0x700122A8 0x704122A8
SE_CRYPTO_KEYTABLE_ACCESS_10 0x700122AC 0x700122AC 0x704122AC
SE_CRYPTO_KEYTABLE_ACCESS_11 0x700122B0 0x700122B0 0x704122B0
SE_CRYPTO_KEYTABLE_ACCESS_12 0x700122B4 0x700122B4 0x704122B4
SE_CRYPTO_KEYTABLE_ACCESS_13 0x700122B8 0x700122B8 0x704122B8
SE_CRYPTO_KEYTABLE_ACCESS_14 0x700122BC 0x700122BC 0x704122BC
SE_CRYPTO_KEYTABLE_ACCESS_15 0x700122C0 0x700122C0 0x704122C0
SE_CRYPTO_CONFIG 0x70012304 0x70012304 0x70412304
SE_CRYPTO_LINEAR_CTR_0 0x70012308 0x70012308 0x70412308
SE_CRYPTO_LINEAR_CTR_1 0x7001230C 0x7001230C 0x7041230C
SE_CRYPTO_LINEAR_CTR_2 0x70012310 0x70012310 0x70412310
SE_CRYPTO_LINEAR_CTR_3 0x70012314 0x70012314 0x70412314
SE_CRYPTO_LAST_BLOCK 0x70012318 0x70012318 0x70412318
SE_CRYPTO_KEYTABLE_ADDR 0x7001231C 0x7001231C 0x7041231C
SE_CRYPTO_KEYTABLE_DATA 0x70012320 0x70012320 0x70412320
SE_CRYPTO_KEYTABLE_DST 0x70012330 0x70012330 0x70412330
SE_RNG_CONFIG 0x70012340 0x70012340 0x70412340
SE_RNG_SRC_CONFIG 0x70012344 0x70012344 0x70412344
SE_RNG_RESEED_INTERVAL 0x70012348 0x70012348 0x70412348
SE_RSA_CONFIG 0x70012400 0x70012400 0x70412400
SE_RSA_KEY_SIZE 0x70012404 0x70012404 0x70412404
SE_RSA_EXP_SIZE 0x70012408 0x70012408 0x70412408
SE_RSA_SECURITY_PERKEY 0x7001240C 0x7001240C 0x7041240C
SE_RSA_KEYTABLE_ACCESS_0 0x70012410 0x70012410 0x70412410
SE_RSA_KEYTABLE_ACCESS_1 0x70012414 0x70012414 0x70412414
SE_RSA_KEYTABLE_ADDR 0x70012420 0x70012420 0x70412420
SE_RSA_KEYTABLE_DATA 0x70012424 0x70012424 0x70412424
SE_RSA_OUTPUT_0 0x70012428 0x70012428 0x70412428
SE_RSA_OUTPUT_1 0x7001242C 0x7001242C 0x7041242C
SE_RSA_OUTPUT_2 0x70012430 0x70012430 0x70412430
SE_RSA_OUTPUT_3 0x70012434 0x70012434 0x70412434
SE_RSA_OUTPUT_4 0x70012438 0x70012438 0x70412438
SE_RSA_OUTPUT_5 0x7001243C 0x7001243C 0x7041243C
SE_RSA_OUTPUT_6 0x70012440 0x70012440 0x70412440
SE_RSA_OUTPUT_7 0x70012444 0x70012444 0x70412444
SE_RSA_OUTPUT_8 0x70012448 0x70012448 0x70412448
SE_RSA_OUTPUT_9 0x7001244C 0x7001244C 0x7041244C
SE_RSA_OUTPUT_10 0x70012450 0x70012450 0x70412450
SE_RSA_OUTPUT_11 0x70012454 0x70012454 0x70412454
SE_RSA_OUTPUT_12 0x70012458 0x70012458 0x70412458
SE_RSA_OUTPUT_13 0x7001245C 0x7001245C 0x7041245C
SE_RSA_OUTPUT_14 0x70012460 0x70012460 0x70412460
SE_RSA_OUTPUT_15 0x70012464 0x70012464 0x70412464
SE_RSA_OUTPUT_16 0x70012468 0x70012468 0x70412468
SE_RSA_OUTPUT_17 0x7001246C 0x7001246C 0x7041246C
SE_RSA_OUTPUT_18 0x70012470 0x70012470 0x70412470
SE_RSA_OUTPUT_19 0x70012474 0x70012474 0x70412474
SE_RSA_OUTPUT_20 0x70012478 0x70012478 0x70412478
SE_RSA_OUTPUT_21 0x7001247C 0x7001247C 0x7041247C
SE_RSA_OUTPUT_22 0x70012480 0x70012480 0x70412480
SE_RSA_OUTPUT_23 0x70012484 0x70012484 0x70412484
SE_RSA_OUTPUT_24 0x70012488 0x70012488 0x70412488
SE_RSA_OUTPUT_25 0x7001248C 0x7001248C 0x7041248C
SE_RSA_OUTPUT_26 0x70012490 0x70012490 0x70412490
SE_RSA_OUTPUT_27 0x70012494 0x70012494 0x70412494
SE_RSA_OUTPUT_28 0x70012498 0x70012498 0x70412498
SE_RSA_OUTPUT_29 0x7001249C 0x7001249C 0x7041249C
SE_RSA_OUTPUT_30 0x700124A0 0x700124A0 0x704124A0
SE_RSA_OUTPUT_31 0x700124A4 0x700124A4 0x704124A4
SE_RSA_OUTPUT_32 0x700124A8 0x700124A8 0x704124A8
SE_RSA_OUTPUT_33 0x700124AC 0x700124AC 0x704124AC
SE_RSA_OUTPUT_34 0x700124B0 0x700124B0 0x704124B0
SE_RSA_OUTPUT_35 0x700124B4 0x700124B4 0x704124B4
SE_RSA_OUTPUT_36 0x700124B8 0x700124B8 0x704124B8
SE_RSA_OUTPUT_37 0x700124BC 0x700124BC 0x704124BC
SE_RSA_OUTPUT_38 0x700124C0 0x700124C0 0x704124C0
SE_RSA_OUTPUT_39 0x700124C4 0x700124C4 0x704124C4
SE_RSA_OUTPUT_40 0x700124C8 0x700124C8 0x704124C8
SE_RSA_OUTPUT_41 0x700124CC 0x700124CC 0x704124CC
SE_RSA_OUTPUT_42 0x700124D0 0x700124D0 0x704124D0
SE_RSA_OUTPUT_43 0x700124D4 0x700124D4 0x704124D4
SE_RSA_OUTPUT_44 0x700124D8 0x700124D8 0x704124D8
SE_RSA_OUTPUT_45 0x700124DC 0x700124DC 0x704124DC
SE_RSA_OUTPUT_46 0x700124E0 0x700124E0 0x704124E0
SE_RSA_OUTPUT_47 0x700124E4 0x700124E4 0x704124E4
SE_RSA_OUTPUT_48 0x700124E8 0x700124E8 0x704124E8
SE_RSA_OUTPUT_49 0x700124EC 0x700124EC 0x704124EC
SE_RSA_OUTPUT_50 0x700124F0 0x700124F0 0x704124F0
SE_RSA_OUTPUT_51 0x700124F4 0x700124F4 0x704124F4
SE_RSA_OUTPUT_52 0x700124F8 0x700124F8 0x704124F8
SE_RSA_OUTPUT_53 0x700124FC 0x700124FC 0x704124FC
SE_RSA_OUTPUT_54 0x70012500 0x70012500 0x70412500
SE_RSA_OUTPUT_55 0x70012504 0x70012504 0x70412504
SE_RSA_OUTPUT_56 0x70012508 0x70012508 0x70412508
SE_RSA_OUTPUT_57 0x7001250C 0x7001250C 0x7041250C
SE_RSA_OUTPUT_58 0x70012510 0x70012510 0x70412510
SE_RSA_OUTPUT_59 0x70012514 0x70012514 0x70412514
SE_RSA_OUTPUT_60 0x70012518 0x70012518 0x70412518
SE_RSA_OUTPUT_61 0x7001251C 0x7001251C 0x7041251C
SE_RSA_OUTPUT_62 0x70012520 0x70012520 0x70412520
SE_RSA_OUTPUT_63 0x70012524 0x70012524 0x70412524
SE_TZRAM_OPERATION - 0x70012540 -
SE_STATUS 0x70012800 0x70012800 0x70412800
SE_ERR_STATUS 0x70012804 0x70012804 0x70412804
SE_MISC 0x70012808 0x70012808 0x70412808
SE_SPARE 0x7001280C 0x7001280C 0x7041280C
SE_ENTROPY_DEBUG_COUNTER 0x70012810 0x70012810 0x70412810