He estado jugando con los comandos de TPM 2.0 usando las herramientas de enlace en un fedora 29. I Intenté tomar posesión del tpm mediante el ejemplo de la prueba de integración del sistema que se encuentra en tpm2-tools branch 3.1.3. La prueba es similar a la siguiente y funciona como se esperaba:
ownerPasswd=abc123
endorsePasswd=abc123
lockPasswd=abc123
new_ownerPasswd=newpswd
new_endorsePasswd=newpswd
new_lockPasswd=newpswd
onerror() {
echo "$BASH_COMMAND on line ${BASH_LINENO[0]} failed: $?"
exit 1
}
trap onerror ERR
tpm2_takeownership -c
tpm2_takeownership -o $ownerPasswd -e $endorsePasswd -l $lockPasswd
tpm2_takeownership -O $ownerPasswd -E $endorsePasswd -L $lockPasswd -o $new_ownerPasswd -e $new_endorsePasswd -l $new_lockPasswd
tpm2_takeownership -c -L $new_lockPasswd
Pero si hago esto manualmente e intento usar una contraseña no válida para borrar la propiedad, aparece un error (Esto se debe a un estado limpio y reconstruido del simulador tpm).
[laped@localhost system]$ tpm2_takeownership -o ownerpass -e endorsepass -l lockpass [laped@localhost system]$ tpm2_takeownership -c -L lockpass [laped@localhost system]$ tpm2_takeownership -o ownerpass -e endorsepass -l lockpass [laped@localhost system]$ tpm2_takeownership -c -L lockpass2 ERROR: Clearing Failed! TPM error code: 0x98e ERROR: Unable to run tpm2_takeownership [laped@localhost system]$ tpm2_takeownership -c -L lockpass ERROR: Clearing Failed! TPM error code: 0x921 ERROR: Unable to run tpm2_takeownership
Mi pregunta es ¿qué sucede y cómo puedo eliminar la propiedad? Parece que el código de error 0x921 es una protección de bloqueo DA. Intenté usar:
[laped@localhost system]$ tpm2_dictionarylockout -c -P lockpass ERROR: 0x921 Error clearing dictionary lockout. ERROR: Unable to run tpm2_dictionarylockout
Por lo tanto, no puedo encontrar la manera de sacar al TPM de este estado para eliminar la propiedad. Me parece extraño que un comando no válido pueda llevarme a este estado. Soy bastante nuevo en el mundo de TPM, así que espero que alguien pueda explicar mi simple error :)