PWR Radar
Herramienta de auditoría de seguridad de red. Analiza configuraciones TLS/SSL, WiFi (WPA2/WPA3), VPN (IKE/IPsec) y DNS (DNSSEC, CAA, DANE) para evaluar la preparación ante criptografía post-cuántica (PQC). Scoring A-F ponderado.
Instalación
Radar es un único archivo PHP sin dependencias externas.
require_once __DIR__ . '/core/radar.php';
Requisitos mínimos
- PHP 7.4 o superior
- Extensión
opensslpara análisis TLS - Acceso a red para analizar hosts remotos
- Funciones
dns_get_record()para análisis DNS
Uso rápido
Análisis completo de un host con una sola llamada.
require_once 'core/radar.php';
// Análisis completo
$r = pwr_radar_analizar_completo('ejemplo.com');
// Nota global
echo $r['scoring']['global']['nota']; // A, B, C, D, E, F
// PQC readiness
echo $r['pqc']['nivel']; // preparado, parcial, en_riesgo, vulnerable
Análisis TLS
Analiza el certificado TLS/SSL de un host: tipo de clave (RSA/ECDSA), tamaño, cipher suites, protocolo, cadena de certificados y preparación PQC.
$tls = pwr_radar_analizar_tls('ejemplo.com', 443);
echo $tls['tipo_clave']; // RSA, ECDSA
echo $tls['tamano_clave']; // 2048, 4096, 256, 384
echo $tls['protocolo']; // TLSv1.3
echo $tls['cipher_suite']; // TLS_AES_256_GCM_SHA384
echo $tls['dias_restantes']; // 254
echo $tls['pqc_ready']; // true/false
stream_socket_client() con contexto SSL para capturar el certificado y los parámetros de la conexión. No requiere cURL.
Campos del resultado TLS
| Campo | Tipo | Descripción |
|---|---|---|
tipo_clave | string | RSA, ECDSA, DSA o Desconocido |
tamano_clave | int | Bits de la clave pública |
protocolo | string | Versión TLS negociada (TLSv1.2, TLSv1.3) |
cipher_suite | string | Cipher suite negociada |
valido | bool | Si el certificado es válido ahora |
dias_restantes | int | Días hasta expiración |
pqc_ready | bool | Si usa algoritmos post-cuánticos |
vulnerabilidades | array | Lista de vulnerabilidades detectadas |
recomendaciones | array | Sugerencias de mejora |
Análisis WiFi
Evalúa la seguridad de una configuración WiFi: versión WPA, cifrado, intercambio de claves y PMF.
$wifi = pwr_radar_analizar_wifi([
'protocolo' => 'WPA3',
'cifrado' => 'GCMP-256',
'intercambio' => 'SAE',
'pmf' => true,
]);
echo $wifi['wpa_version']; // WPA3
echo $wifi['nivel_seguridad']; // alto, medio, bajo, critico
echo $wifi['puntuacion']; // 0-100
echo $wifi['pqc_vulnerable']; // true/false
Protocolos soportados
| Protocolo | Evaluación | Nivel |
|---|---|---|
| WPA3-SAE + GCMP-256 + PMF | Óptimo | Alto |
| WPA2-PSK + CCMP + PMF | Aceptable | Medio |
| WPA2-PSK + TKIP | Débil | Bajo |
| WEP / Red abierta | Inseguro | Crítico |
Análisis VPN
Analiza la configuración de una VPN IPsec/IKE: versión IKE, grupos DH, cifrado, hash y PFS.
$vpn = pwr_radar_analizar_vpn([
'tipo' => 'IPsec',
'ike_version' => 2,
'dh_group' => 20,
'cifrado' => 'AES-256-GCM',
'hash' => 'SHA-384',
'pfs' => true,
]);
echo $vpn['nivel_seguridad']; // alto, medio, bajo
echo $vpn['puntuacion']; // 0-100
Análisis DNS
Verifica registros DNS de seguridad: DNSSEC, CAA, DANE/TLSA, SPF y DMARC.
$dns = pwr_radar_analizar_dns('ejemplo.com');
echo $dns['dnssec']['presente']; // true/false
echo $dns['caa']['presente']; // true/false
echo $dns['dane']['presente']; // true/false
echo $dns['spf']['presente']; // true/false
echo $dns['dmarc']['presente']; // true/false
Registros evaluados
| Registro | Peso | Función |
|---|---|---|
DNSSEC | 25 pts | Autenticidad de respuestas DNS |
CAA | 25 pts | Limita CAs autorizadas para el dominio |
DANE/TLSA | 25 pts | Anclaje de certificados vía DNS |
SPF | 10 pts | Protección contra suplantación de correo |
DMARC | 15 pts | Política anti-phishing |
PQC Readiness
Evalúa la preparación de la infraestructura ante la amenaza de la computación cuántica. Puntuación 0-100% basada en los cuatro análisis.
$resultados = pwr_radar_analizar_completo('ejemplo.com');
$pqc = pwr_radar_pqc_readiness($resultados);
echo $pqc['porcentaje']; // 0-100
echo $pqc['nivel']; // preparado, parcial, en_riesgo, vulnerable
echo $pqc['descripcion']; // Texto descriptivo
Niveles PQC
| Puntuación | Nivel | Significado |
|---|---|---|
| 80-100% | Preparado | Infraestructura lista para la era post-cuántica |
| 60-79% | Parcial | Se requieren actualizaciones específicas |
| 30-59% | En riesgo | Múltiples componentes sin protección |
| 0-29% | Vulnerable | Sin protección post-cuántica |
Pesos por categoría
| Categoría | Peso | Factores evaluados |
|---|---|---|
| TLS | 40 pts | TLS 1.3, tamaño de clave, cipher suites, PQC nativo |
| WiFi | 20 pts | WPA3, PQC, PMF |
| VPN | 20 pts | IKEv2, PFS, PQC, cifrado fuerte |
| DNS | 20 pts | DNSSEC, CAA, DANE, SPF, DMARC |
Scoring
Calificación A-F basada en análisis ponderado por categoría.
$scoring = pwr_radar_scoring($resultados);
echo $scoring['global']['nota']; // A, B, C, D, E, F
echo $scoring['global']['puntos']; // 0-100
// Desglose por categoría
foreach ($scoring['categorias'] as $cat => $datos) {
echo "{$cat}: {$datos['nota']} ({$datos['puntos']})\n";
}
Escala de notas
| Nota | Puntos | Significado |
|---|---|---|
| A | 90-100 | Excelente — configuración óptima |
| B | 80-89 | Buena — detalles menores pendientes |
| C | 65-79 | Aceptable — mejoras recomendadas |
| D | 50-64 | Deficiente — problemas serios |
| E | 30-49 | Malo — riesgos significativos |
| F | 0-29 | Crítico — acción inmediata requerida |
Pesos del scoring
| Categoría | Peso |
|---|---|
| TLS/SSL | 35% |
| DNS | 25% |
| WiFi | 20% |
| VPN | 20% |
API de funciones
pwr_radar_info()
Devuelve información del módulo: versión, capacidades, disponibilidad de extensiones.
pwr_radar_info(): array
pwr_radar_analizar_tls()
Analiza la configuración TLS de un host: certificado, cipher suites, protocolo, PQC.
pwr_radar_analizar_tls(string $host, int $port = 443): array
| Parámetro | Tipo | Descripción |
|---|---|---|
$host | string | Hostname o dominio del servidor |
$port | int | Puerto TLS (por defecto 443) |
pwr_radar_analizar_wifi()
Evalúa la seguridad de una configuración WiFi.
pwr_radar_analizar_wifi(array $config): array
| Clave config | Tipo | Descripción |
|---|---|---|
protocolo | string | WPA3, WPA2, WPA, WEP, OPEN |
cifrado | string | GCMP-256, CCMP, TKIP |
intercambio | string | SAE, ECDH, PSK, DPP |
pmf | bool | Protected Management Frames |
pwr_radar_analizar_vpn()
Analiza la configuración de una VPN IPsec/IKE.
pwr_radar_analizar_vpn(array $config): array
| Clave config | Tipo | Descripción |
|---|---|---|
tipo | string | IPsec, OpenVPN, WireGuard |
ike_version | int | 1 o 2 |
dh_group | int|string | Grupo DH (2, 5, 14, 20, ecp384...) |
cifrado | string | AES-256-GCM, AES-128, 3DES... |
hash | string | SHA-384, SHA-256, SHA-1, MD5 |
pfs | bool | Perfect Forward Secrecy |
pwr_radar_analizar_dns()
Verifica registros DNS de seguridad de un dominio.
pwr_radar_analizar_dns(string $dominio): array
pwr_radar_pqc_readiness()
Calcula la puntuación de preparación post-cuántica (0-100) con desglose por categoría.
pwr_radar_pqc_readiness(array $resultados): array
pwr_radar_scoring()
Calcula nota A-F basada en resultados ponderados de todos los análisis.
pwr_radar_scoring(array $resultados): array
pwr_radar_informe()
Genera un informe completo en formato array o JSON.
pwr_radar_informe(array $resultados, string $formato = 'array'): mixed
| Parámetro | Tipo | Descripción |
|---|---|---|
$resultados | array | Resultados de los análisis |
$formato | string | 'array' o 'json' |
pwr_radar_analizar_completo()
Ejecuta todos los análisis disponibles para un host en una sola llamada.
pwr_radar_analizar_completo(string $host, array $opciones = []): array
| Opción | Tipo | Descripción |
|---|---|---|
port | int | Puerto TLS (defecto 443) |
wifi | array | Config WiFi para incluir en el análisis |
vpn | array | Config VPN para incluir en el análisis |
skip_tls | bool | Saltar análisis TLS |
skip_dns | bool | Saltar análisis DNS |