1
0
Fork 0
Linux 5.10/5.15/6.1 kmod for KISA LEA cryptography https://seed.kisa.or.kr/kisa/Board/157/detailView.do
  • C 95.2%
  • Assembly 4.6%
  • Makefile 0.1%
Find a file
2024-03-26 15:35:40 +09:00
kmod_lea Upload files 2024-03-26 15:35:40 +09:00
test Upload files 2024-03-26 15:35:40 +09:00
lea_patch.5.10.patch Upload files 2024-03-26 15:35:40 +09:00
lea_patch.5.15.patch Upload files 2024-03-26 15:35:40 +09:00
lea_patch.6.1.patch Upload files 2024-03-26 15:35:40 +09:00
README.md Upload files 2024-03-26 15:35:40 +09:00

LEA 암호 리눅스 커널 모듈

  • 버전 1.0

LEA 암호를 리눅스 커널 내에서 사용할 수 있도록 하는 모듈 코드입니다.

적용 환경을 고려하여 이미 컴파일/로드가 끝난 커널에 사용하는 외부 모듈과, 컴파일 시점에 포함할 수 있는 커널 패치를 같이 제공합니다.

배포 파일 안내

본 커널 모듈은 리눅스 커널의 라이선스에 따라 GPL-2.0-or-later 라이선스로 배포됩니다.

암호 단일 모듈

kernel_module_lea.tar.gz 파일은 이미 컴파일된 리눅스 커널에 별도로 LEA 암호화를 추가하귀 위해 제공되는 파일입니다.

AVX2를 기준으로 작성하였으나, 여러가지 환경상 AVX2를 쓸 수 없고 SSE2만 사용가능한 환경에서도 동작할 수 있도록 SIMD 모듈이 별도로 작성되어 있습니다.

자세한 설명은 파일 내 README.md 파일을 참고해주세요.

테스트용 커널 모듈

kernel_crypto_lea_test.tar.gz 파일은 생성된 모듈을 테스트하기 위한 별도 모듈입니다.

ECB, CBC, CTR, XTS, GCM 모드에 대한 테스트벡터를 가지고 있으며, XTS를 제외한 테스트벡터는 KCMVP의 테스트벡터를 일부 가져왔습니다.

커널 통합용 모듈 patch 파일로 컴파일한 커널에서 tcrypt가 비활성화된 경우에도 테스트용으로 사용할 수 있습니다.

커널 통합용 모듈 patch 파일

리눅스 커널을 새롭게 컴파일하고자 할 때 LEA 암호 모듈을 같이 포함하여 컴파일할 수 있도록 해주는 patch 파일입니다.

파일의 수를 줄이고자 AVX2를 지원하는 CPU에서 64비트 리눅스를 구동하는 환경을 가정하였습니다. 위의 환경이 아닌 경우에는 C언어로 구현한 일반 모듈이 사용됩니다.

암호 단일 모듈과는 다르게 리눅스 커널 내 tcrypt 모듈을 이용한 자체테스트를 수행할 수 있도록, 테스트벡터를 같이 포함하였습니다.

리눅스 커널마다 patch 파일이 다릅니다. LTS 버전을 기준으로 하며, 그 사이의 버전은 여러 패치 파일중 어떤 버전이 동작하는지 테스트가 필요할 수 있습니다.

사용하는 리눅스의 커널 버전은 쉘 명령어에서 uname -r을 입력하여 확인할 수 있습니다.

  • lea_patch.6.1.patch
    • 6.1 LTS 커널에 적용하기 위한 patch 파일입니다.
    • 6.2 커널에서도 적용가능함을 확인했습니다.
    • 커널 내 crypto/Kconfig 구성이 아키텍쳐별로 분리되어 적용되어있습니다.
  • lea_patch.5.15.patch
    • 5.15 LTS 커널에 적용하기 위한 patch 파일입니다.
    • 6.1 버전용과는 crypto/Kconfig 구성이 달라 옵션 설명이 조금 다릅니다.
  • lea_patch.5.10.patch
    • 5.10 LTS 커널에 적용하기 위한 patch 파일입니다.
    • 최신 버전에 있는 ecb_cbc_helpers.h 파일을 백포트하였습니다.
    • 5.15 버전용과는 crypto/Kconfig 구성이 일부 다릅니다.

각 패치 파일은 git apply 명령을 통해 패치한후 make menuconfig 명령을 통해 CRYPTO_LEA, CRYPTO_LEA_AVX2 플래그를 활성화하여 컴파일할 수 있습니다.

배포판별 빌드 스크립트를 추가로 활용하는 경우 빌드 스크립트에 따라 patch 파일을 적용하는 방법이 다를 수 있습니다.

사용 안내

커널 모듈

커널 내에서 LEA 암호를 사용하고자 하는 경우 포함한 테스트용 커널 모듈에서 동작하는 방법을 참고할 수 있습니다.

이외에도 Crypto API를 사용하는 다른 커널 모듈을 참고하여 LEA 암호 모듈을 사용할 수 있습니다.

일반 프로그램

일반 프로그램에서 LEA 암호화를 하기 위해서는 이미 배포중인 암호화 파일을 이용하는 것이 권장되나, 본 커널 모듈을 이용하여도 LEA 암/복호화를 수행할 수 있습니다.

libkcapi ( https://www.chronox.de/libkcapi.html )를 이용하여 리눅스 커널의 Crypto API를 이용할 수 있으며, 주요 리눅스 배포판에서 libkcapi 라이브러리를 설치할 수 있는 패키지(libkcapi-dev 등)를 제공하고 있습니다.

libkcapi 라이브러리는 BSD 또는 GPL 라이선스를 따릅니다.

변경 사항

1.0 (2023-03-06)

초기 릴리즈