Commit 74832b48 authored by Alexis Falempin's avatar Alexis Falempin Committed by Raymond Knopp

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.
parent c37974ca
......@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment