Перейти к содержанию

HMAC и CMAC через ядро НАЙС.ОС

Теория вынесена в статьи HMAC-Стрибог, OMAC/CMAC, историческая имитовставка. Здесь — только использование зарегистрированных шаблонов ядра.

python3 - <<'PY'
import socket
secret=b'ONLY-FOR-LOCAL-TESTS-NOT-A-PRODUCTION-KEY'
message=b'NiceOS integrity demonstration'
with socket.socket(socket.AF_ALG,socket.SOCK_SEQPACKET) as alg:
    alg.bind(('hash','hmac(streebog256)'))
    alg.setsockopt(socket.SOL_ALG,socket.ALG_SET_KEY,secret)
    conn,_=alg.accept()
    with conn:
        conn.sendall(message)
        print('MAC:',conn.recv(32).hex())
PY

Это учебный ключ. В продуктивной среде его требуется генерировать случайным и не передавать в репозиторий/журналы. Сравнение MAC на стороне получателя должно выполняться за константное время. /proc/crypto подтверждает регистрацию шаблона, но не заменяет контрольные векторы и негативный тест с изменённым сообщением.