SEED(알고리즘)

덤프버전 :

분류


1. 개요
2. 원리
3. 개발 과정
4. 이후의 쓰임
5. 문제점
6. 여담


1. 개요[편집]


SEED는 한국인터넷진흥원(KISA)에서 1999년에 개발한 대칭키 암호화 알고리즘이다.


2. 원리[편집]


블록암호 기술로 인해 DESAES같은 암호 알고리즘과 친척뻘이다. 암호화키가 128비트라서 AES에 가깝다는 설명이 종종 있지만 실제로는 알고리즘 구조와 기술적으로 DES가 더 가까운 친척뻘이다. DES는 암호화를 위해 파이스텔 네트워크(Feistel Network)라는 알고리즘을 사용하는데 SEED도 파이스텔 네트워크를 사용한다. 암호화 스테이지 수도 16으로 똑같아서 여러 모로 당시의 표준이었던 DES를 의식하고 만들어진 알고리즘이다. 참고로 AES는 Rijndael 알고리즘이라는 전혀 다른 방식을 사용하고 있다.

128비트의 평문을 암호화하며, 키 크기는 128비트이다. 총 16라운드에 걸쳐 암호화를 진행하며, Addition, XOR, bit-rotation등의 연산식을 사용하여 암호화를 수행한다.

3. 개발 과정[편집]


SEED는 대한민국 인터넷에 산재되어 있는 ActiveX의 주범이지만 이는 당시 상황상 어쩔 수 없었다. 미국이 자국 기술보호 등을 이유로 해외에 제공되는 웹 브라우저 보안 수준을 40비트로 제한시켰는데 이 따위 암호기술로는 인터넷 뱅킹은 꿈도 못 꿀 일이었기 때문이다. 인터넷 뱅킹을 하기 위해서는 128비트급의 암호 알고리즘이 최소한의 필수 선택이었다. 이 무렵 나온 인터넷 익스플로러 4 버전을 예로 들면 128비트 암호화 버전은 미국에서 접속해야만 받을 수 있었고, 그 이외 지역은 40비트 암호화 버전만 다운로드 가능하도록 되어 있었다.

다운로드만 접속 국가별로 제한했기에 우회 접속이나 어둠의 경로를 통한다면 128비트 암호화 버전 브라우저를 받을 수 있었다. 하지만 당시에는 VPN이나 프록시 서버가 일반화된 때가 아니었고, 무료 배포되는 웹 브라우저를 굳이 와레즈 찾아가면서 힘들여 받을 필요도 없었다. 이 때는 warning.or.kr도 등장하기 전이라서 우회 접속을 할 필요성이 없었다. 그 악명높은 중국도 인터넷에서 검열을 하던 때가 아니었으니...

결국 1990년대 후반의 기술로 40비트 암호화 버전 브라우저에서 암호화가 가능한 방법을 찾아야 했다. 40비트 암호화는 1997년의 컴퓨팅 환경에서도 겨우 3.5시간만에 깨지는 허술한 체계였고 당시의 표준이었던 DES의 56비트 암호화도 슬슬 위험해지던 시기였다. 덩달아 이게 등장하던 1990년대 후반에는 이미 PC통신으로 이루어지고 있던 홈뱅킹 서비스에서 해킹 사고가 터진 일이 여러 차례 있어서 온라인 금융의 보안에 대한 관심도 높던 시기였다. 당시 PC통신으로 이뤄지던 홈뱅킹은 사용자와 서버 간의 암호화 전송 이런 것이 전혀 없었다.

이러한 문제를 타개하기 위해서 KISA에서는 자체적으로 128비트 키를 가지는 새로운 알고리즘의 개발에 착수하게 된 것이다. 128~256비트 키를 갖는 표준 알고리즘인 AES가 공개되어 아무나 갖다 쓸수 있는 오늘날의 기준으로 보면 완벽한 삽질이기는 하지만 당시에는 AES도 없었고 미국의 암호화 수출제한 정책이 해금되기 전이라 SEED는 기술적으로 충분한 가치가 있었다.

참고로 암호 수출 완화가 이루어진 계기가 재미있다. 암호 기술 수출이 총과 탄약 등 수출제한 법률에 같이 걸려 통제되는 상황이였는데, 95년 PGP 소스 코드를 MIT 대학 출판사를 통해 책으로 출간해서 반출하는 것. 당연히 미 정부에서 태클을 걸었지만 책 출판은 언론의 자유에 지극히 포함된다는 대법원 판결에 암호 수출 제한이 한순간 무너지고 말았다. 물론 법률은 바로 삭제되지 않아서 NSA가 PGP 반출에 태클을 걸기도 했다.

어쨌든 급하게라도 128비트급인 SEED가 개발되어 배포되고 이를 통해서 대한민국 인터넷 뱅킹이 시작되긴 했는데, 문제는 웹 브라우저에 당연히 지원도 안 되었고 주요 TLS/SSL 라이브러리에도 없었던 것이다. 그래서 SEED를 쓰기 위한 관련 라이브러리와 프로그램 배포를 위해서 ActiveX란 놈을 어거지로 이용하였으며, 이게 대한민국의 ActiveX 역사의 시작이 되었다.


4. 이후의 쓰임[편집]


지금은 모질라 파이어폭스(버전 27부터 기본적으로 비활성화되어 있다.), Internet Explorer 등에 SEED 라이브러리가 깔려있고 OpenSSL에서도 SEED 128비트를 지원하기 때문에 ActiveX를 안 써도 되지만... 역시 타성의 바퀴는 잘도 굴러만 갔다. 초반에는 단순히 암호화 용도였지만 있는 것을 활용하다 보니 보안프로그램 전체가 ActiveX를 통해서 배포되는 상황. 현재는 최소 192비트 키를 사용할 것을 권고하고 있고 그래서 256비트짜리가 만들어지게 되었으나, 국제 표준은 아니다.

현재 128비트짜리는 국제 표준에 등재되어 있다. 2003년 KISA에선 SEED보다 더 나은 ARIA란 암호 알고리즘을 개발했고, 2004년부터 지금까지 쭈욱 공식적인 국가 표준 암호 알고리즘으로 사용되고 있다. 저 이름들 탓에 보안을 배운 오타쿠들은 KISA의 높은자리에 덕후가 있을거라고 추측하는 사람들이 많다.


5. 문제점[편집]


이 SEED 암호화의 문제는 다른게 아니라 특정언어, 버전에 따라 암호화 및 복호화가 호환되지 않는 경우가 있으며, 각 언어별 최소 버전이나 권장버전 등도 없다. 암복호화는 언어, 버전에 따라 암복호화 결과가 달라서는 안됨에도 불구하고 이 SEED는 특정 언어나 버전에서는 제대로 암복호화가 되지않으며, 개발을 담당한 인터넷 진흥원은 기술지원은 커녕 "우리는 소스공개를 했으니 수정해서 쓰든 알아서 하라"는 답변으로 일관하고 있다.


6. 여담[편집]


뜬끔없지만 2018년 2월 9일에 전세계 서비스를 시작한 파이널 판타지 XV 포켓 에디션에도 사용되었다. OpenSSL에 구현된 SEED 소스를 이용한 것으로, 사이트에 게재된 오픈 소스 라이선스 문서에서도 찾아볼 수 있다.

[각주]
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는
문서의 r204 판{{{#!wiki style="display: inline; display: 2.4;"
, 2.4번 문단}}}에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r204 판{{{#!wiki style="display: inline; display: 2.4;"
, 2.4번 문단}}} (이전 역사)
문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)



파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-11-03 04:25:26에 나무위키 SEED(알고리즘) 문서에서 가져왔습니다.