Воссоздание TPM (доверенное модуль платформы) ПЦР 10 из журнала Linux IMA (AgriTy Architectur)Linux

Ответить
Anonymous
 Воссоздание TPM (доверенное модуль платформы) ПЦР 10 из журнала Linux IMA (AgriTy Architectur)

Сообщение Anonymous »

Я создал виртуальную машину на платформе Google Cloud. После его создания я отредактировал/etc/default/grub файл, добавив дополнительные параметры командной строки ядра, чтобы я включил модуль IMA:

Код: Выделить всё

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="ima_policy=\"tcb|appraise_tcb\" ima_appraise=log"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
После этого я обновил Grub с помощью команды Sudo Update Grub , и я перезагрузил систему. Моя конечная цель состояла в том, чтобы написать сценарий Python от воссоздания TPMS Register 10 Значения, которое модуль IMA использует по умолчанию. Цель состояла в том, чтобы воссоздать значения PCR10 SHA1 и SHA256, используя файл журнала ima acii_runtime_measurenties , однако я могу воссоздать значение SHA1. https://gist.github.com/jovan-djukic/35 ... 045ba8f649
TPM PCR10 SHA1 Значение:

Код: Выделить всё

dj@gcp-cvm-instance:~$ sudo tpm2_pcrread sha1:10
sha1:
10: 0x93C1F1AA03B913EABF5365FCD774A9B55D97445F
< /code>
tpm pcr10 sha256 Значение: < /p>
dj@gcp-cvm-instance:~$ sudo tpm2_pcrread sha256:10
sha256:
10: 0x24D0FAA8AC356D33A47DE336BC5E9BB6304F9530FC927984853E57A62DCEC382
< /code>
Скрипт Python для воссоздания значения PCR10 SHA1: < /p>
import hashlib

pcr10 = bytes(20)
print(pcr10.hex())

golden_value = bytes.fromhex("93C1F1AA03B913EABF5365FCD774A9B55D97445F")

with open("ascii_runtime_measurements.txt", "r") as f:
for line in f:
parts = line.split()
if len(parts) < 5:
continue
if parts[0] != "10":  # Ensure it's PCR 10
continue

digest_hex = parts[1]

if ( digest_hex == "0" * 40 ):
digest_hex = "f" * 40

digest = bytes.fromhex(digest_hex)

pcr10 = hashlib.sha1(pcr10 + digest).digest()

if(pcr10.hex() == golden_value.hex()):
print("HIT")

print("PCR 10:", pcr10.hex())
< /code>
Скрипт Python для воссоздания PCR10 SHA256 Значение: < /p>
import hashlib

pcr10 = bytes(32)
print(pcr10.hex())

golden_value = bytes.fromhex("24D0FAA8AC356D33A47DE336BC5E9BB6304F9530FC927984853E57A62DCEC382")

with open("ascii_runtime_measurements.txt", "r") as f:
for line in f:
parts = [item.strip() for item in line.split()]
if len(parts) < 5:
continue
if parts[0] != "10":
continue

digest_hex = parts[3].split(":")[1].strip()

if ( digest_hex == "0" * 64 ):
digest_hex = "f" * 64

digest = bytes.fromhex(digest_hex)

pcr10 = hashlib.sha256(pcr10 + digest).digest()

if(pcr10.hex() == golden_value.hex()):
print("HIT")

print("PCR 10:", pcr10.hex())
может кто -нибудь объяснить мне, почему алгоритм работает для значения SHA1, но не для значения SHA256?

Подробнее здесь: https://stackoverflow.com/questions/795 ... ity-measur
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»