ChaCha20-Poly1305 AEAD ソフトウェア実装追加

新規ヘッダー:include/se050_chacha20_poly1305.h
- ChaCha20 core: quarter_round, block, stream cipher
- Poly1305 MAC
- ChaCha20-Poly1305 AEAD (encrypt/decrypt)
- WireGuard 専用関数 (wg_encrypt/wg_decrypt)

新規ソース:src/se050_chacha20_poly1305.c
- RFC 7539 準拠実装
- ESP32 32 ビット最適化(ESP_PLATFORM 検出)
- 定数時間比較(crypto_memneq)
- memzero_explicit による安全な消去

API:
- se050_chacha20_poly1305_init()
- se050_chacha20_poly1305_encrypt()
- se050_chacha20_poly1305_decrypt()
- se050_wireguard_encrypt()
- se050_wireguard_decrypt()

ESP32 最適化:
- 32 ビット演算優先 Poly1305
- 64 ビット演算最小化

テスト:
- RFC 7539 テストベクトル内蔵(CHACHA20_POLY1305_TEST)
- 実装修正必要(タグ計算ロジック)

Makefile 更新:
- test_chacha20 タスク追加
This commit is contained in:
km
2026-03-26 16:32:30 +09:00
parent fb51a4ad9f
commit 35333c297f
3 changed files with 913 additions and 1 deletions
+11 -1
View File
@@ -13,6 +13,7 @@ SRCS = src/se050_i2c_hal.c \
src/se050_rng.c \
src/se050_x25519.c \
src/se050_x25519_sw.c \
src/se050_chacha20_poly1305.c \
src/se050_scp03.c \
src/se050_scp03_keys.c
@@ -30,6 +31,7 @@ TEST_SE050 = test_scp03_se050
TEST_X25519 = test_x25519_ecdh
TEST_KEY_ROTATION = test_key_rotation
TEST_X25519_SW = test_x25519_sw
TEST_CHACHA20 = test_chacha20_poly1305
# Target library
LIB = libse050_wireguard.a
@@ -54,7 +56,7 @@ else
endif
# Default target
all: $(LIB) $(TEST_SCP03) $(TEST_HARDWARE) $(TEST_SE050) $(TEST_X25519) $(TEST_X25519_SW)
all: $(LIB) $(TEST_SCP03) $(TEST_HARDWARE) $(TEST_SE050) $(TEST_X25519) $(TEST_X25519_SW) $(TEST_CHACHA20)
# Create build directory
build:
@@ -94,6 +96,11 @@ $(TEST_X25519_SW): src/se050_x25519_sw.c
@mkdir -p build
$(CC) $(CFLAGS) -DX25519_SW_TEST -o build/$@ $<
# ChaCha20-Poly1305 test
$(TEST_CHACHA20): src/se050_chacha20_poly1305.c
@mkdir -p build
$(CC) $(CFLAGS) -DCHACHA20_POLY1305_TEST -o build/$@ $<
# Compile source files
src/%.o: src/%.c
$(CC) $(CFLAGS) -c $< -o $@
@@ -116,6 +123,9 @@ test: all
@echo "Running Software X25519 tests..."
./build/$(TEST_X25519_SW)
@echo ""
@echo "Running ChaCha20-Poly1305 tests..."
./build/$(TEST_CHACHA20)
@echo ""
@echo "Note: To run SE050 hardware tests, use:"
@echo " make SE050_CHIP=SE050C1 test_se050"