HMAC-BLAKE2s, HKDF, TAI64N 実装追加

暗号プリミティブ実装:
- HMAC-BLAKE2s (RFC 2104): BLAKE2s ベースの HMAC
- HKDF-BLAKE2s (RFC 586): 鍵導出関数
  - HKDF-Extract: 入力鍵から PRK を導出
  - HKDF-Expand: PRK から必要な長さの鍵を導出
- TAI64N: WireGuard プロトコル層のタイムスタンプ(12 バイト)

WireGuard での使用:
- ハンドシェイク中の鍵導出チェーン
- チェーン鍵 (Ck)・セッション鍵 (tk) の導出
- リプレイ防止用タイムスタンプ

テスト:
- test_hmac_blake2s: HMAC-BLAKE2s 検証 
- test_hkdf_blake2s: HKDF 検証 
- test_tai64n: TAI64N エンコード/デコード 
This commit is contained in:
km
2026-03-26 21:03:27 +09:00
parent b83394f37b
commit c892e6ca01
11 changed files with 695 additions and 3 deletions
+29 -2
View File
@@ -15,6 +15,9 @@ SRCS = src/se050_i2c_hal.c \
src/se050_x25519_sw.c \
src/se050_chacha20_poly1305.c \
src/se050_blake2s.c \
src/se050_hmac_blake2s.c \
src/se050_hkdf_blake2s.c \
src/se050_tai64n.c \
src/se050_scp03.c \
src/se050_scp03_keys.c
@@ -34,6 +37,9 @@ TEST_KEY_ROTATION = test_key_rotation
TEST_X25519_SW = test_x25519_sw
TEST_CHACHA20 = test_chacha20_poly1305
TEST_BLAKE2S = test_blake2s
TEST_HMAC = test_hmac_blake2s
TEST_HKDF = test_hkdf_blake2s
TEST_TAI64N = test_tai64n
# Target library
LIB = libse050_wireguard.a
@@ -58,7 +64,7 @@ else
endif
# Default target
all: $(LIB) $(TEST_SCP03) $(TEST_HARDWARE) $(TEST_SE050) $(TEST_X25519) $(TEST_X25519_SW) $(TEST_CHACHA20) $(TEST_BLAKE2S)
all: $(LIB) $(TEST_SCP03) $(TEST_HARDWARE) $(TEST_SE050) $(TEST_X25519) $(TEST_X25519_SW) $(TEST_CHACHA20) $(TEST_BLAKE2S) $(TEST_HMAC) $(TEST_HKDF) $(TEST_TAI64N)
# Create build directory
build:
@@ -93,11 +99,17 @@ $(TEST_KEY_ROTATION): tests/test_scp03_key_rotation.c $(LIB)
@mkdir -p build
$(CC) $(CFLAGS) -DSE050_CHIP=$(CHIP_ID) -o build/$@ $< build/$(LIB) $(LDFLAGS)
# Software X25519 test (standalone, no library needed)
# Software X25519 test (includes source file)
$(TEST_X25519_SW): src/se050_x25519_sw.c
@mkdir -p build
$(CC) $(CFLAGS) -DX25519_SW_TEST -o build/$@ $<
# Software X25519 test with library
TEST_X25519_SW_LIB = test_x25519_sw_full
$(TEST_X25519_SW_LIB): tests/test_x25519_sw.c src/se050_x25519_sw.c $(LIB)
@mkdir -p build
$(CC) $(CFLAGS) -o build/$@ tests/test_x25519_sw.c src/se050_x25519_sw.c build/$(LIB) $(LDFLAGS)
# ChaCha20-Poly1305 test
$(TEST_CHACHA20): src/se050_chacha20_poly1305.c
@mkdir -p build
@@ -108,6 +120,21 @@ $(TEST_BLAKE2S): src/se050_blake2s.c
@mkdir -p build
$(CC) $(CFLAGS) -DBLAKE2S_TEST -o build/$@ $<
# HMAC-BLAKE2s test
$(TEST_HMAC): tests/test_hmac_blake2s.c $(LIB)
@mkdir -p build
$(CC) $(CFLAGS) -o build/$@ $< build/$(LIB) $(LDFLAGS)
# HKDF test
$(TEST_HKDF): tests/test_hkdf_blake2s.c $(LIB)
@mkdir -p build
$(CC) $(CFLAGS) -o build/$@ $< build/$(LIB) $(LDFLAGS)
# TAI64N test
$(TEST_TAI64N): tests/test_tai64n.c $(LIB)
@mkdir -p build
$(CC) $(CFLAGS) -o build/$@ $< build/$(LIB) $(LDFLAGS)
# Compile source files
src/%.o: src/%.c
$(CC) $(CFLAGS) -c $< -o $@