O conjunto de protocolos IPSec é uma série de protocolos desenvolvidos pela IETF (Internet Engineering Task Force), que fornece segurança de alta qualidade, interoperável e baseada em criptografia para datagramas IP.
O IPSec é implementado através de dois protocolos de segurança: cabeçalho de autenticação AH (Authentication Header, protocolo número 51) e encapsulamento de carga útil de segurança ESP (Encapsulating Security Payload). AH pode fornecer funções de verificação de fonte de dados e verificação de integridade de dados; ESP pode não apenas fornecer funções de verificação de dados e verificação de integridade, mas também fornecer funções de criptografia para mensagens IP.
O protocolo IPSec possui dois modos de encapsulamento:
-
modo de transmissão. No modo de transporte, AH ou ESP é inserido após o cabeçalho IP, mas antes de todos os protocolos da camada de transporte ou antes de todos os outros protocolos IPSec.
-
Modo túnel. No modo túnel, AH ou ESP é inserido antes do cabeçalho IP original e um novo cabeçalho IP é gerado e colocado antes de AH ou ESP.
O modo de transporte é usado para comunicação entre dois hosts ou entre um host e um gateway de segurança. No modo de transporte, os dois dispositivos que criptografam e descriptografam as mensagens devem ser o remetente original e o destinatário final da mensagem.
Normalmente, a maior parte do tráfego de dados entre dois gateways de segurança (roteadores) não é o tráfego do próprio gateway de segurança, portanto, o modo de transmissão geralmente não é usado entre gateways de segurança, mas o modo túnel é sempre usado. As mensagens criptografadas em um gateway de segurança só podem ser descriptografadas por outro gateway de segurança. Portanto, o pacote IP deve ser encapsulado em túnel, ou seja, um novo cabeçalho IP é adicionado e o pacote IP encapsulado em túnel é enviado para outro gateway de segurança antes de poder ser descriptografado.
Formato da mensagem
Figura 1 Pacote AH e formato de cabeçalho
Campo | comprimento | descrever |
---|---|---|
Próximo cabeçalho | 8 bits | Representa a próxima carga após o cabeçalho de autenticação. |
Capacidade de carga útil | 8 bits | O comprimento de AH é reduzido em 2 e 4 bytes é a unidade de contagem. Por exemplo, com um valor de autenticação de 96 bits, o comprimento seria "4" (ou seja, 3 4 bytes fixos para o cabeçalho + 3 4 bytes para o ICV - 2). Para IPv6, o comprimento total do cabeçalho deve ser múltiplo de 8 bytes. |
RESERVADO | 16 bits | Reservado para uso futuro. Deve ser definido como 0 e ignorado ao receber. |
Índice de parâmetros de segurança | 32 bits | Usado para identificar SA para o terminal de recebimento da mensagem |
Campo de número de sequência | 32 bits | Número de sequência. Cada vez que uma mensagem é enviada, a contagem aumenta em 1. Por exemplo, sempre que uma mensagem SA é enviada, o número de sequência aumenta em 1. |
Valor de verificação de integridade-ICV | alongar | O campo ICV da mensagem possui comprimento variável, devendo ser um número inteiro múltiplo de 32 bits. |
Figura 2 Encapsulamento ESP e formato de cabeçalho
Campo | comprimento | descrever |
---|---|---|
Índice de parâmetros de segurança | 32 bits | Índice de parâmetros de segurança. |
Número sequencial | 32 bits | número de série. |
Dados de carga* | alongar | Dados de carga útil (variável). |
Preenchimento | 0–255 bytes | Preencha os campos. |
Comprimento da almofada | 8 bits | Comprimento do campo de preenchimento. |
Próximo cabeçalho | 8 bits | Próxima cabeça. |
Valor de verificação de integridade-ICV | alongar | verifique os dados. |
Figura 3 Uso combinado dos protocolos AH e ESP
Internet Key Exchange Protocol IKE (Internet Key Exchange) é o protocolo de sinalização do IPSEC.
Figura 4 Formato do cabeçalho IKE
Campo | comprimento | descrever |
---|---|---|
SPI do iniciador IKE_AS | 8 bytes | O remetente é usado para identificar exclusivamente uma associação de segurança IKE. Este valor não pode ser definido como 0. |
SPI do respondente IKE_AS | 8 bytes | O respondedor é usado para identificar exclusivamente uma associação de segurança IKE.Este valor deve ser 0 para a mensagem de interação IKE inicial e não pode ser 0 para outras mensagens. |
Próxima carga útil | 1 byte | Somente o tipo de carga que segue a cabeça. |
MjVer | 4 bits | Identifica a versão máxima do protocolo IKE utilizado. |
MnVer | 4 bits | Identifica a versão mínima do protocolo IKE utilizado. |
Tipo de troca | 1 byte |
|
Bandeiras | 1 byte | Opções específicas definidas na mensagem. Se o campo Sinalizador estiver definido, significa que existem opções.
|
Message ID | 4 bytes | 消息标识符,用来对请求消息和呼应消息的匹配,以便控制丢弃消息的重复发送。这在抑制重放攻击时对保障协议的安全性很关键。 |
Length | 4 bytes | 整个消息的长度(报文头+负荷),以字节为单位。 |
Next Payload | 1 byte | 标识消息中的下一个负载的类型。如果当前的负载是消息的最后一个,则此字段置0。
|
C (Critical) | 1 bit |
注意,C比特应用于当前负载,而不是下一个负载。 |
RESERVED | 7 bits | 发送时必须置0,接收时忽略。 |
Payload Length | 2 bytes | 当前负载的长度,包括通用负载的头部,以字节为单位。 |