Security Engine

From Nintendo Switch Brew
Revision as of 21:38, 2 June 2024 by Hexkyz (talk | contribs)
Jump to navigation Jump to search

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.

Erista

Name Address
SE_SE_SECURITY 0x70012000
SE_TZRAM_SECURITY 0x70012004
SE_OPERATION 0x70012008
SE_INT_ENABLE 0x7001200C
SE_INT_STATUS 0x70012010
SE_CONFIG 0x70012014
SE_IN_LL_ADDR 0x70012018
SE_IN_CUR_BYTE_ADDR 0x7001201C
SE_IN_CUR_LL_ID 0x70012020
SE_OUT_LL_ADDR 0x70012024
SE_OUT_CUR_BYTE_ADDR 0x70012028
SE_OUT_CUR_LL_ID 0x7001202C
SE_HASH_RESULT_0 0x70012030
SE_HASH_RESULT_1 0x70012034
SE_HASH_RESULT_2 0x70012038
SE_HASH_RESULT_3 0x7001203C
SE_HASH_RESULT_4 0x70012040
SE_HASH_RESULT_5 0x70012044
SE_HASH_RESULT_6 0x70012048
SE_HASH_RESULT_7 0x7001204C
SE_HASH_RESULT_8 0x70012050
SE_HASH_RESULT_9 0x70012054
SE_HASH_RESULT_10 0x70012058
SE_HASH_RESULT_11 0x7001205C
SE_HASH_RESULT_12 0x70012060
SE_HASH_RESULT_13 0x70012064
SE_HASH_RESULT_14 0x70012068
SE_HASH_RESULT_15 0x7001206C
SE_CTX_SAVE_CONFIG 0x70012070
SE_SHA_CONFIG 0x70012200
SE_SHA_MSG_LENGTH_0 0x70012204
SE_SHA_MSG_LENGTH_1 0x70012208
SE_SHA_MSG_LENGTH_2 0x7001220C
SE_SHA_MSG_LENGTH_3 0x70012210
SE_SHA_MSG_LEFT_0 0x70012214
SE_SHA_MSG_LEFT_1 0x70012218
SE_SHA_MSG_LEFT_2 0x7001221C
SE_SHA_MSG_LEFT_3 0x70012220
SE_CRYPTO_SECURITY_PERKEY 0x70012280
SE_CRYPTO_KEYTABLE_ACCESS_0 0x70012284
SE_CRYPTO_KEYTABLE_ACCESS_1 0x70012288
SE_CRYPTO_KEYTABLE_ACCESS_2 0x7001228C
SE_CRYPTO_KEYTABLE_ACCESS_3 0x70012290
SE_CRYPTO_KEYTABLE_ACCESS_4 0x70012294
SE_CRYPTO_KEYTABLE_ACCESS_5 0x70012298
SE_CRYPTO_KEYTABLE_ACCESS_6 0x7001229C
SE_CRYPTO_KEYTABLE_ACCESS_7 0x700122A0
SE_CRYPTO_KEYTABLE_ACCESS_8 0x700122A4
SE_CRYPTO_KEYTABLE_ACCESS_9 0x700122A8
SE_CRYPTO_KEYTABLE_ACCESS_10 0x700122AC
SE_CRYPTO_KEYTABLE_ACCESS_11 0x700122B0
SE_CRYPTO_KEYTABLE_ACCESS_12 0x700122B4
SE_CRYPTO_KEYTABLE_ACCESS_13 0x700122B8
SE_CRYPTO_KEYTABLE_ACCESS_14 0x700122BC
SE_CRYPTO_KEYTABLE_ACCESS_15 0x700122C0
SE_CRYPTO_CONFIG 0x70012304
SE_CRYPTO_LINEAR_CTR_0 0x70012308
SE_CRYPTO_LINEAR_CTR_1 0x7001230C
SE_CRYPTO_LINEAR_CTR_2 0x70012310
SE_CRYPTO_LINEAR_CTR_3 0x70012314
SE_CRYPTO_LAST_BLOCK 0x70012318
SE_CRYPTO_KEYTABLE_ADDR 0x7001231C
SE_CRYPTO_KEYTABLE_DATA 0x70012320
SE_CRYPTO_KEYTABLE_DST 0x70012330
SE_RNG_CONFIG 0x70012340
SE_RNG_SRC_CONFIG 0x70012344
SE_RNG_RESEED_INTERVAL 0x70012348
SE_RSA_CONFIG 0x70012400
SE_RSA_KEY_SIZE 0x70012404
SE_RSA_EXP_SIZE 0x70012408
SE_RSA_SECURITY_PERKEY 0x7001240C
SE_RSA_KEYTABLE_ACCESS_0 0x70012410
SE_RSA_KEYTABLE_ACCESS_1 0x70012414
SE_RSA_KEYTABLE_ADDR 0x70012420
SE_RSA_KEYTABLE_DATA 0x70012424
SE_RSA_OUTPUT_0 0x70012428
SE_RSA_OUTPUT_1 0x7001242C
SE_RSA_OUTPUT_2 0x70012430
SE_RSA_OUTPUT_3 0x70012434
SE_RSA_OUTPUT_4 0x70012438
SE_RSA_OUTPUT_5 0x7001243C
SE_RSA_OUTPUT_6 0x70012440
SE_RSA_OUTPUT_7 0x70012444
SE_RSA_OUTPUT_8 0x70012448
SE_RSA_OUTPUT_9 0x7001244C
SE_RSA_OUTPUT_10 0x70012450
SE_RSA_OUTPUT_11 0x70012454
SE_RSA_OUTPUT_12 0x70012458
SE_RSA_OUTPUT_13 0x7001245C
SE_RSA_OUTPUT_14 0x70012460
SE_RSA_OUTPUT_15 0x70012464
SE_RSA_OUTPUT_16 0x70012468
SE_RSA_OUTPUT_17 0x7001246C
SE_RSA_OUTPUT_18 0x70012470
SE_RSA_OUTPUT_19 0x70012474
SE_RSA_OUTPUT_20 0x70012478
SE_RSA_OUTPUT_21 0x7001247C
SE_RSA_OUTPUT_22 0x70012480
SE_RSA_OUTPUT_23 0x70012484
SE_RSA_OUTPUT_24 0x70012488
SE_RSA_OUTPUT_25 0x7001248C
SE_RSA_OUTPUT_26 0x70012490
SE_RSA_OUTPUT_27 0x70012494
SE_RSA_OUTPUT_28 0x70012498
SE_RSA_OUTPUT_29 0x7001249C
SE_RSA_OUTPUT_30 0x700124A0
SE_RSA_OUTPUT_31 0x700124A4
SE_RSA_OUTPUT_32 0x700124A8
SE_RSA_OUTPUT_33 0x700124AC
SE_RSA_OUTPUT_34 0x700124B0
SE_RSA_OUTPUT_35 0x700124B4
SE_RSA_OUTPUT_36 0x700124B8
SE_RSA_OUTPUT_37 0x700124BC
SE_RSA_OUTPUT_38 0x700124C0
SE_RSA_OUTPUT_39 0x700124C4
SE_RSA_OUTPUT_40 0x700124C8
SE_RSA_OUTPUT_41 0x700124CC
SE_RSA_OUTPUT_42 0x700124D0
SE_RSA_OUTPUT_43 0x700124D4
SE_RSA_OUTPUT_44 0x700124D8
SE_RSA_OUTPUT_45 0x700124DC
SE_RSA_OUTPUT_46 0x700124E0
SE_RSA_OUTPUT_47 0x700124E4
SE_RSA_OUTPUT_48 0x700124E8
SE_RSA_OUTPUT_49 0x700124EC
SE_RSA_OUTPUT_50 0x700124F0
SE_RSA_OUTPUT_51 0x700124F4
SE_RSA_OUTPUT_52 0x700124F8
SE_RSA_OUTPUT_53 0x700124FC
SE_RSA_OUTPUT_54 0x70012500
SE_RSA_OUTPUT_55 0x70012504
SE_RSA_OUTPUT_56 0x70012508
SE_RSA_OUTPUT_57 0x7001250C
SE_RSA_OUTPUT_58 0x70012510
SE_RSA_OUTPUT_59 0x70012514
SE_RSA_OUTPUT_60 0x70012518
SE_RSA_OUTPUT_61 0x7001251C
SE_RSA_OUTPUT_62 0x70012520
SE_RSA_OUTPUT_63 0x70012524
SE_STATUS 0x70012800
SE_ERR_STATUS 0x70012804
SE_MISC 0x70012808
SE_SPARE 0x7001280C
SE_ENTROPY_DEBUG_COUNTER 0x70012810

Mariko

Name Address
SE_SE_SECURITY 0x70012000
SE_TZRAM_SECURITY 0x70012004
SE_OPERATION 0x70012008
SE_INT_ENABLE 0x7001200C
SE_INT_STATUS 0x70012010
SE_CONFIG 0x70012014
SE_IN_LL_ADDR 0x70012018
SE_IN_CUR_BYTE_ADDR 0x7001201C
SE_IN_CUR_LL_ID 0x70012020
SE_OUT_LL_ADDR 0x70012024
SE_OUT_CUR_BYTE_ADDR 0x70012028
SE_OUT_CUR_LL_ID 0x7001202C
SE_HASH_RESULT_0 0x70012030
SE_HASH_RESULT_1 0x70012034
SE_HASH_RESULT_2 0x70012038
SE_HASH_RESULT_3 0x7001203C
SE_HASH_RESULT_4 0x70012040
SE_HASH_RESULT_5 0x70012044
SE_HASH_RESULT_6 0x70012048
SE_HASH_RESULT_7 0x7001204C
SE_HASH_RESULT_8 0x70012050
SE_HASH_RESULT_9 0x70012054
SE_HASH_RESULT_10 0x70012058
SE_HASH_RESULT_11 0x7001205C
SE_HASH_RESULT_12 0x70012060
SE_HASH_RESULT_13 0x70012064
SE_HASH_RESULT_14 0x70012068
SE_HASH_RESULT_15 0x7001206C
SE_CTX_SAVE_CONFIG 0x70012070
SE_CTX_SAVE_AUTO 0x70012074
SE_SHA_CONFIG 0x70012200
SE_SHA_MSG_LENGTH_0 0x70012204
SE_SHA_MSG_LENGTH_1 0x70012208
SE_SHA_MSG_LENGTH_2 0x7001220C
SE_SHA_MSG_LENGTH_3 0x70012210
SE_SHA_MSG_LEFT_0 0x70012214
SE_SHA_MSG_LEFT_1 0x70012218
SE_SHA_MSG_LEFT_2 0x7001221C
SE_SHA_MSG_LEFT_3 0x70012220
SE_CRYPTO_SECURITY_PERKEY 0x70012280
SE_CRYPTO_KEYTABLE_ACCESS_0 0x70012284
SE_CRYPTO_KEYTABLE_ACCESS_1 0x70012288
SE_CRYPTO_KEYTABLE_ACCESS_2 0x7001228C
SE_CRYPTO_KEYTABLE_ACCESS_3 0x70012290
SE_CRYPTO_KEYTABLE_ACCESS_4 0x70012294
SE_CRYPTO_KEYTABLE_ACCESS_5 0x70012298
SE_CRYPTO_KEYTABLE_ACCESS_6 0x7001229C
SE_CRYPTO_KEYTABLE_ACCESS_7 0x700122A0
SE_CRYPTO_KEYTABLE_ACCESS_8 0x700122A4
SE_CRYPTO_KEYTABLE_ACCESS_9 0x700122A8
SE_CRYPTO_KEYTABLE_ACCESS_10 0x700122AC
SE_CRYPTO_KEYTABLE_ACCESS_11 0x700122B0
SE_CRYPTO_KEYTABLE_ACCESS_12 0x700122B4
SE_CRYPTO_KEYTABLE_ACCESS_13 0x700122B8
SE_CRYPTO_KEYTABLE_ACCESS_14 0x700122BC
SE_CRYPTO_KEYTABLE_ACCESS_15 0x700122C0
SE_CRYPTO_CONFIG 0x70012304
SE_CRYPTO_LINEAR_CTR_0 0x70012308
SE_CRYPTO_LINEAR_CTR_1 0x7001230C
SE_CRYPTO_LINEAR_CTR_2 0x70012310
SE_CRYPTO_LINEAR_CTR_3 0x70012314
SE_CRYPTO_LAST_BLOCK 0x70012318
SE_CRYPTO_KEYTABLE_ADDR 0x7001231C
SE_CRYPTO_KEYTABLE_DATA 0x70012320
SE_CRYPTO_KEYTABLE_DST 0x70012330
SE_RNG_CONFIG 0x70012340
SE_RNG_SRC_CONFIG 0x70012344
SE_RNG_RESEED_INTERVAL 0x70012348
SE_RSA_CONFIG 0x70012400
SE_RSA_KEY_SIZE 0x70012404
SE_RSA_EXP_SIZE 0x70012408
SE_RSA_SECURITY_PERKEY 0x7001240C
SE_RSA_KEYTABLE_ACCESS_0 0x70012410
SE_RSA_KEYTABLE_ACCESS_1 0x70012414
SE_RSA_KEYTABLE_ADDR 0x70012420
SE_RSA_KEYTABLE_DATA 0x70012424
SE_RSA_OUTPUT_0 0x70012428
SE_RSA_OUTPUT_1 0x7001242C
SE_RSA_OUTPUT_2 0x70012430
SE_RSA_OUTPUT_3 0x70012434
SE_RSA_OUTPUT_4 0x70012438
SE_RSA_OUTPUT_5 0x7001243C
SE_RSA_OUTPUT_6 0x70012440
SE_RSA_OUTPUT_7 0x70012444
SE_RSA_OUTPUT_8 0x70012448
SE_RSA_OUTPUT_9 0x7001244C
SE_RSA_OUTPUT_10 0x70012450
SE_RSA_OUTPUT_11 0x70012454
SE_RSA_OUTPUT_12 0x70012458
SE_RSA_OUTPUT_13 0x7001245C
SE_RSA_OUTPUT_14 0x70012460
SE_RSA_OUTPUT_15 0x70012464
SE_RSA_OUTPUT_16 0x70012468
SE_RSA_OUTPUT_17 0x7001246C
SE_RSA_OUTPUT_18 0x70012470
SE_RSA_OUTPUT_19 0x70012474
SE_RSA_OUTPUT_20 0x70012478
SE_RSA_OUTPUT_21 0x7001247C
SE_RSA_OUTPUT_22 0x70012480
SE_RSA_OUTPUT_23 0x70012484
SE_RSA_OUTPUT_24 0x70012488
SE_RSA_OUTPUT_25 0x7001248C
SE_RSA_OUTPUT_26 0x70012490
SE_RSA_OUTPUT_27 0x70012494
SE_RSA_OUTPUT_28 0x70012498
SE_RSA_OUTPUT_29 0x7001249C
SE_RSA_OUTPUT_30 0x700124A0
SE_RSA_OUTPUT_31 0x700124A4
SE_RSA_OUTPUT_32 0x700124A8
SE_RSA_OUTPUT_33 0x700124AC
SE_RSA_OUTPUT_34 0x700124B0
SE_RSA_OUTPUT_35 0x700124B4
SE_RSA_OUTPUT_36 0x700124B8
SE_RSA_OUTPUT_37 0x700124BC
SE_RSA_OUTPUT_38 0x700124C0
SE_RSA_OUTPUT_39 0x700124C4
SE_RSA_OUTPUT_40 0x700124C8
SE_RSA_OUTPUT_41 0x700124CC
SE_RSA_OUTPUT_42 0x700124D0
SE_RSA_OUTPUT_43 0x700124D4
SE_RSA_OUTPUT_44 0x700124D8
SE_RSA_OUTPUT_45 0x700124DC
SE_RSA_OUTPUT_46 0x700124E0
SE_RSA_OUTPUT_47 0x700124E4
SE_RSA_OUTPUT_48 0x700124E8
SE_RSA_OUTPUT_49 0x700124EC
SE_RSA_OUTPUT_50 0x700124F0
SE_RSA_OUTPUT_51 0x700124F4
SE_RSA_OUTPUT_52 0x700124F8
SE_RSA_OUTPUT_53 0x700124FC
SE_RSA_OUTPUT_54 0x70012500
SE_RSA_OUTPUT_55 0x70012504
SE_RSA_OUTPUT_56 0x70012508
SE_RSA_OUTPUT_57 0x7001250C
SE_RSA_OUTPUT_58 0x70012510
SE_RSA_OUTPUT_59 0x70012514
SE_RSA_OUTPUT_60 0x70012518
SE_RSA_OUTPUT_61 0x7001251C
SE_RSA_OUTPUT_62 0x70012520
SE_RSA_OUTPUT_63 0x70012524
SE_TZRAM_OPERATION 0x70012540
SE_STATUS 0x70012800
SE_ERR_STATUS 0x70012804
SE_MISC 0x70012808
SE_SPARE 0x7001280C
SE_ENTROPY_DEBUG_COUNTER 0x70012810