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 :)