NAS : Wrong security header type for PDU Session Establishment Request
While testing the OAI 5G RAN in SA mode, it appears that the PDU session establishment request is using the wrong security header type. The current used header is: "Integrity protected and ciphered with new 5G NAS security context". However, according to TS 24.501, Table 9.3.1, this header can only be used by the "Security mode complete" procedure. Changes: - Hence, the new security header has been changed to "Integrity protected and ciphered", which will use the security context generated during the "Security mode complete". - Sequences numbers and NAS counters have been updated to reflect that change.
This commit is contained in:
committed by
Raymond Knopp
parent
c37974ca5f
commit
74832b4837
@@ -741,7 +741,7 @@ static void generateDeregistrationRequest(nr_ue_nas_t *nas, as_nas_info_t *initi
|
||||
sp_msg->header.protocol_discriminator = FGS_MOBILITY_MANAGEMENT_MESSAGE;
|
||||
sp_msg->header.security_header_type = INTEGRITY_PROTECTED_AND_CIPHERED;
|
||||
sp_msg->header.message_authentication_code = 0;
|
||||
sp_msg->header.sequence_number = 2;
|
||||
sp_msg->header.sequence_number = 3;
|
||||
int size = sizeof(fgs_nas_message_security_header_t);
|
||||
|
||||
fgs_deregistration_request_ue_originating_msg *dereg_req = &sp_msg->plain.mm_msg.fgs_deregistration_request_ue_originating;
|
||||
@@ -805,7 +805,9 @@ static void generatePduSessionEstablishRequest(nr_ue_nas_t *nas, as_nas_info_t *
|
||||
nas_stream_cipher_t stream_cipher;
|
||||
uint8_t mac[4];
|
||||
nas_msg.header.protocol_discriminator = FGS_MOBILITY_MANAGEMENT_MESSAGE;
|
||||
nas_msg.header.security_header_type = INTEGRITY_PROTECTED_AND_CIPHERED_WITH_NEW_SECU_CTX;
|
||||
nas_msg.header.security_header_type = INTEGRITY_PROTECTED_AND_CIPHERED;
|
||||
nas_msg.header.sequence_number = 2;
|
||||
|
||||
size += 7;
|
||||
|
||||
mm_msg = &nas_msg.security_protected.plain.mm_msg;
|
||||
@@ -858,7 +860,7 @@ static void generatePduSessionEstablishRequest(nr_ue_nas_t *nas, as_nas_info_t *
|
||||
|
||||
stream_cipher.key = nas->security.knas_int;
|
||||
stream_cipher.key_length = 16;
|
||||
stream_cipher.count = nas->security.sm_counter++;
|
||||
stream_cipher.count = nas->security.mm_counter++;
|
||||
stream_cipher.bearer = 1;
|
||||
stream_cipher.direction = 0;
|
||||
stream_cipher.message = (unsigned char *)(initialNasMsg->data + 6);
|
||||
|
||||
Reference in New Issue
Block a user