국산 암호 .NET에서 사용해보자 (SEED, ARIA, HIGHT 등)

고남현 @gnh1201@hackers.pub

.NET 개발 환경에서 "국산 암호"(SEED 등 한국에서 개발되고 배포되는 암호화 알고리즘을 지칭하는 용어)라 불리우는 알고리즘을 사용하려니... 일단은 쓸만한게 없다.

그나마 공개된 구현도 공식 구현의 직변환만 해놔서 테스트 벡터 검증이 안되어있는 소스코드들이 돌아다닌다.

공식 테스트 벡터로 검증을 하지 않으면, 직변환된 결과물도 컴파일 오류만 없으면 암복호화는 되지만 공식 스펙과는 전혀 다른 미지의 알고리즘이 될 수도 있다.

패딩도 알려진 표준 중에 선택해서 쓴게 아니라 그냥 빈공간만 채우고 왜 이렇게 패딩하는지 설명이 없는 등 문제가 많아보였다.

그래서,

  1. .NET에서 원활하게 포팅되고
  2. 최소한 테스트 벡터는 맞춰봤으며
  3. 최신 시스템에서 사용이 가능해야 하고
  4. 언어 선택때문에 사람들 사이에 호불호가 갈리는 일이 없도록

하는게 중요했는데

특히 4번의 이유 때문에 특이하게 이번 작업에서는 VB.NET을 썼다. .net standard 2.0 기반이라 다른 언어로 작성된 .NET 프로젝트에도 참조가 가능하다.

현재 SEED, ARIA, HIGHT 알고리즘의 ECB 모드 구현을 성공했다. 상대적으로 최근에 나온 LEA는 추후 지원할 예정.

다른 운용모드의 지원이 필요한 경우 별도 기술지원으로 제공할 예정이다.

이러한 개발 과정을 들여다볼 수 있는 이슈 링크가 있으니 참고 바란다.

https://github.com/gnh1201/welsonjs/issues/293

소스코드는 아래 링크에서 "WelsonJS.Cryptography" 및 "WelsonJS.Cryptography.Test" 디렉토리에서 확인할 수 있다.

https://github.com/gnh1201/welsonjs/tree/cryptography/WelsonJS.Toolkit

5

No comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/01983d1f-3188-720e-8cd9-03079f95e9f8 on your instance and reply to it.