Gestión de claves para el cifrado con Oracle TDE en Entornos PCI DSS (Parte 2)

Como comentábamos en la anterior entrada, las claves de Oracle TDE se dividen en la Oracle Master Key, las Table Key y la contraseña del Oracle Wallet. De éstas tres, solo la contraseña del Oracle Wallet es gestionada de forma manual (ya dijimos que el uso del auto login Wallet no permite cumplir con PCI DSS) y por tanto es la única clave que estaría bajo el requerimiento 3.6.6 de PCI DSS. Éste requerimiento establece la necesidad de que la gestión de dicha clave se realice bajo control dual y conocimiento compartido, pero esto no es nada fácil en la operativa diaria.

En esta entrada os dejamos unos scripts que permiten la introducción de dos componentes (que conforman la contraseña del Oracle Wallet), de forma que un custodio no vea el componente del otro, si es que las tareas se realizan mediante comandos en lugar de con el Enterprise Manager u Oracle Wallet Manager. La ventaja de usar los scripts es básicamente rapidez además de no requerir tener un entorno gráfico, mientras que la ventaja de usar Enterprise Manager u Oracle Wallet Manager es que no es necesario conocer los comandos específicos para cada acción, además de que la introducción de las claves ya aparece enmascarada por defecto.
  • Para la apertura del Wallet, de forma que no sea visible el passphrase, se puede emplear el siguiente script (open_wallet.sh y open_wallet.sql) para abrir el wallet:
open_wallet.sh
#!/bin/bash
get_pwd() {
echo “Introduce Primera Componente: “
stty -echo
read pwd1
stty echo
echo “Introduce Segunda Componente: “
stty -echo
read pwd2
stty echo
}
open_wallet() {
sqlplus /@keyholder @open_wallet.sql $pwd1$pwd2
}
get_pwd
open_wallet
open_wallet.sql
set termout off;
alter system set encryption wallet open identified by “&1”;
set termout on;
exit
  • Para el cambio de Wallet, de forma que no sea visible el nuevo passphrase, se puede emplear el siguiente script:
change_pwd_wallet.sh
#!/bin/bash
get_pwd() {
echo “Introduce Contraseña Antigua: “
stty -echo
read pwd0
stty echo
echo “Introduce Primera Componente Nueva: “
stty -echo
read pwd1
stty echo
echo “Introduce Segunda Componente Nueva: “
stty -echo
read pwd2
stty echo
}
change_pwdwallet() {
orapki wallet change_pwd -wallet <RUTAWALLET> -oldpwd $pwd0 -newpwd $pwd1$pwd2
}
get_pwd
change_pwdwallet
  • Se puede emplear el siguiente script (‘set_key.sh’) para crear un nuevo wallet (si no existe) y añadir la nueva clave maestra de cifrado TDE al wallet o efectuar el procedimiento de re-keying:
set_key.sh
#!/bin/bash
get_pwd() {
echo “Introduce Primera Componente: “
stty -echo
read pwd1
stty echo
echo “Introduce Segunda Componente: “
stty -echo
read pwd2
stty echo
}
set_key() {
sqlplus /@keyholder @set_key.sql $pwd1$pwd2
}
get_pwd
set_key
set_key.sql
set termout off;
alter system set encryption key identified by “&1”;
set termout on;
exit

Autor: Marc Segarra - CISM, CISA, CISSP, PCI QSA, PCI PA QSA, ISO27001 Lead Auditor
Departamento de Consultoría