"SEED"의 두 판 사이의 차이
잔글 (→SEED 구현 시 고려사항) |
|||
1번째 줄: | 1번째 줄: | ||
'''SEED''' 또는 '''시드 블록 암호 알고리즘'''<!--시드블록암호 알고리즘-->은 전자상거래, 금융, 무선통신 등에서 전송되는 개인정보와 같은 중요한 정보를 보호하기 위해, 1999년 2월 [[한국인터넷진흥원]]과 국내 암호전문가들이 순수 국내기술로 개발한 128비트 및 256비트 대칭 키 블록의 암호 [[알고리즘]]이다. 미국에서 수출하는 [[웹브라우저]] 보안의 수준이 40비트로 제한함으로써 128비트 보안을 위해서 자국에서 개발한 별도의 알고리즘이다. | '''SEED''' 또는 '''시드 블록 암호 알고리즘'''<!--시드블록암호 알고리즘-->은 전자상거래, 금융, 무선통신 등에서 전송되는 개인정보와 같은 중요한 정보를 보호하기 위해, 1999년 2월 [[한국인터넷진흥원]]과 국내 암호전문가들이 순수 국내기술로 개발한 128비트 및 256비트 대칭 키 블록의 암호 [[알고리즘]]이다. 미국에서 수출하는 [[웹브라우저]] 보안의 수준이 40비트로 제한함으로써 128비트 보안을 위해서 자국에서 개발한 별도의 알고리즘이다. | ||
− | ==개요== | + | == 개요 == |
'''시드 블록 암호 알고리즘'''(SEED)는 민간 부분인 인터넷, 전자상거래, 무선 통신 등에서 공개 시 민감한 영향을 미칠 수 있는 정보의 보호와 개인 프라이버시 등을 보호하기 위하여 1992년 2월 한국 정보보호센터(KISA)에 의해 개발된 블록 암호 알고리즘이다. 대칭키 블록 암호알고리즘으로 비밀성을 제공하는 [[암호]]시스템의 중요 요소이다. 블록암호알고리즘 SEED는 128비트의 비밀키를 이용해 128비트의 [[평문]]을 [[암호문]]으로 변환한다. 금융권, 전자상거래, 정보 보호제품(VPN) 등의 다양한 분야에서 데이터의 기밀성과 무결성 기능을 제공하기 위해 사용되고 있다. 국외 주요 정보 보호업체를 포함한 670개 이상의 국내 외 산업계와 학계와 연구분야에서 SEED를 사용하고 있다. 블록 암호 알고리즘의 경우, 암호 알고리즘이 적용되는 블록 크기가 정해져 있기 때문에 정해진 길이보다 긴 데이터를 암호화하거나 데이터 무결성 검증을 하기 위해서는 블록 암호 알고리즘의 운영 모드를 반드시 사용하게 된다. 입력 데이터의 길이가 기본 블록 크기의 배수가 되지 않으면 처리가 불가능하므로 입력 메시지의 길이가 기본 블록 크기의 배수가 되지 않으면 처리가 불가능해 입력 메시지의 길이가 블록 길이의 배수가 되도록 하기 위해 덧붙이기 방법을 사용해야 한다. 이에, 한국 정보보호진흥원에서는 안전성 측면과 효율성 측면을 고려하여 SEED의 사용을 촉진하기 위해 SEED의 운영 모드를 [[TTA]] 표준으로 제안하여 2003년 12월 TTA표준으로 제정하였다. | '''시드 블록 암호 알고리즘'''(SEED)는 민간 부분인 인터넷, 전자상거래, 무선 통신 등에서 공개 시 민감한 영향을 미칠 수 있는 정보의 보호와 개인 프라이버시 등을 보호하기 위하여 1992년 2월 한국 정보보호센터(KISA)에 의해 개발된 블록 암호 알고리즘이다. 대칭키 블록 암호알고리즘으로 비밀성을 제공하는 [[암호]]시스템의 중요 요소이다. 블록암호알고리즘 SEED는 128비트의 비밀키를 이용해 128비트의 [[평문]]을 [[암호문]]으로 변환한다. 금융권, 전자상거래, 정보 보호제품(VPN) 등의 다양한 분야에서 데이터의 기밀성과 무결성 기능을 제공하기 위해 사용되고 있다. 국외 주요 정보 보호업체를 포함한 670개 이상의 국내 외 산업계와 학계와 연구분야에서 SEED를 사용하고 있다. 블록 암호 알고리즘의 경우, 암호 알고리즘이 적용되는 블록 크기가 정해져 있기 때문에 정해진 길이보다 긴 데이터를 암호화하거나 데이터 무결성 검증을 하기 위해서는 블록 암호 알고리즘의 운영 모드를 반드시 사용하게 된다. 입력 데이터의 길이가 기본 블록 크기의 배수가 되지 않으면 처리가 불가능하므로 입력 메시지의 길이가 기본 블록 크기의 배수가 되지 않으면 처리가 불가능해 입력 메시지의 길이가 블록 길이의 배수가 되도록 하기 위해 덧붙이기 방법을 사용해야 한다. 이에, 한국 정보보호진흥원에서는 안전성 측면과 효율성 측면을 고려하여 SEED의 사용을 촉진하기 위해 SEED의 운영 모드를 [[TTA]] 표준으로 제안하여 2003년 12월 TTA표준으로 제정하였다. | ||
− | ==역사== | + | == 역사 == |
*1999년 2월 한국 인터넷진흥원과 국내 암호전문가들이 개발 | *1999년 2월 한국 인터넷진흥원과 국내 암호전문가들이 개발 | ||
*1999년 9월 정보통신 산체표준(TTA)으로 제정 | *1999년 9월 정보통신 산체표준(TTA)으로 제정 | ||
10번째 줄: | 10번째 줄: | ||
*2009년 256비트 키를 지원하는 SEED 256 개발 | *2009년 256비트 키를 지원하는 SEED 256 개발 | ||
− | == | + | == 고려사항 == |
'''SEED'''를 실제로 사용하기 위해서는 구현 환경에서 사용되는 [[엔디안]](Endianness)과 암호화된 데이터가 저장되는 데이터 형식을 고려해야 한다. 또한, 입력 블록을 블록 암호에 적용하는 방법인 운영 모드와 마지막 블록의 크기를 맞추기 위한 [[패딩]]을 함께 구현해 주어야 한다. | '''SEED'''를 실제로 사용하기 위해서는 구현 환경에서 사용되는 [[엔디안]](Endianness)과 암호화된 데이터가 저장되는 데이터 형식을 고려해야 한다. 또한, 입력 블록을 블록 암호에 적용하는 방법인 운영 모드와 마지막 블록의 크기를 맞추기 위한 [[패딩]]을 함께 구현해 주어야 한다. | ||
− | ===엔디안=== | + | === 엔디안 === |
[[엔디안]]이란, 컴퓨터 메모리의 바이트를 배열하는 순서를 말한다. 엔디안은 보통 큰 단위가 앞에 나오는 빅 에디안과 작은 단위가 앞에 나오는 리틀 엔디안, 그리고 두 경우에 속하지 않거나 둘 모두를 지원하는 미들 엔디안으로 분류한다. 현재 빅 엔디안과 리틀 엔디안이 많이 사용되나 [[x86]] 아키텍처가 리틀 엔디안을 쓰기 때문에 대부분의 x86 아키텍처를 사용하는 데스크탑은 리틀 엔디안을 사용하며, SEED 소스코드도 기본적으로 리틀 엔디안을 사용하고 있다. | [[엔디안]]이란, 컴퓨터 메모리의 바이트를 배열하는 순서를 말한다. 엔디안은 보통 큰 단위가 앞에 나오는 빅 에디안과 작은 단위가 앞에 나오는 리틀 엔디안, 그리고 두 경우에 속하지 않거나 둘 모두를 지원하는 미들 엔디안으로 분류한다. 현재 빅 엔디안과 리틀 엔디안이 많이 사용되나 [[x86]] 아키텍처가 리틀 엔디안을 쓰기 때문에 대부분의 x86 아키텍처를 사용하는 데스크탑은 리틀 엔디안을 사용하며, SEED 소스코드도 기본적으로 리틀 엔디안을 사용하고 있다. | ||
− | ===데이터형식=== | + | === 데이터형식 === |
일반적으로 암호 알고리즘은 비트단위 연산을 포함한 다양한 연산을 수행하여 평문 메시지를 무의미한 비트열인 암호문으로 변환한다. 이 때 만들어진 암호문 비트열은 랜덤한 비트들로 구성되기 때문에 이를 문자열의 형태로 저장하거나 처리할 경우에는 문제가 발생할 수 있다. 따라서 암호화된 메시지는 항상 문자열이 아닌 이진 형태로 처리해 주어야 한다. | 일반적으로 암호 알고리즘은 비트단위 연산을 포함한 다양한 연산을 수행하여 평문 메시지를 무의미한 비트열인 암호문으로 변환한다. 이 때 만들어진 암호문 비트열은 랜덤한 비트들로 구성되기 때문에 이를 문자열의 형태로 저장하거나 처리할 경우에는 문제가 발생할 수 있다. 따라서 암호화된 메시지는 항상 문자열이 아닌 이진 형태로 처리해 주어야 한다. | ||
− | ===운영 모드=== | + | === 운영 모드 === |
운영 모드란, 여러 개의 입력 블록들을 블록 암호에 적용하여 암호화, 복호화 하는 방법에 대한 정의이다. 이러한 운영 모드는 블록 암호와는 독립적으로 정의된다. 대표적으로 가장 널리 이용되는 블록 암호 운영모드에는 ECB(Electronic Code Book)모드, CBC(Cipher Block Chaining)모드, CFB(Ciphertext FeedBack)모드, OFB(Output FeedBack)모드, CTR(Counter)모드가 있다. | 운영 모드란, 여러 개의 입력 블록들을 블록 암호에 적용하여 암호화, 복호화 하는 방법에 대한 정의이다. 이러한 운영 모드는 블록 암호와는 독립적으로 정의된다. 대표적으로 가장 널리 이용되는 블록 암호 운영모드에는 ECB(Electronic Code Book)모드, CBC(Cipher Block Chaining)모드, CFB(Ciphertext FeedBack)모드, OFB(Output FeedBack)모드, CTR(Counter)모드가 있다. | ||
===패딩=== | ===패딩=== | ||
− | 메시지를 SEED에 입력하기 위해 여러 개의 128비트 블록으로 나눌 때, 마지막 블록이 정확히 그 크기를 맞추기 어렵다. 예를 들어, 300비트의 메시지를 128비트의 블록으로 나눌 경우, 300 = 128 + 128 + 44 로 나뉘어 세 개의 블록을 구성하게 되는 데, 이때 마지막 블록이 44비트로 128비트를 만족하지 못한다. 이 경우 나머지 부족한 84비트를 채워주어야 SEED의 입력값으로 사용할 수 있다. 이렇게 부족한 부분을 채우는 방식을 [[패딩]]이라고 한다. SEED에 주로 사용되는 패딩은 TTA 표준의 부록으로 다루고 있다. | + | 메시지를 SEED에 입력하기 위해 여러 개의 128비트 블록으로 나눌 때, 마지막 블록이 정확히 그 크기를 맞추기 어렵다. 예를 들어, 300비트의 메시지를 128비트의 블록으로 나눌 경우, 300 = 128 + 128 + 44 로 나뉘어 세 개의 블록을 구성하게 되는 데, 이때 마지막 블록이 44비트로 128비트를 만족하지 못한다. 이 경우 나머지 부족한 84비트를 채워주어야 SEED의 입력값으로 사용할 수 있다. 이렇게 부족한 부분을 채우는 방식을 [[패딩]]이라고 한다. SEED에 주로 사용되는 패딩은 TTA 표준의 부록으로 다루고 있다. |
− | ==그 외의 알고리즘== | + | == 그 외의 알고리즘 == |
− | * | + | === 국내 === |
− | * | + | * '''ARIA''' : |
− | *IDEA : PGF채택, 8라운드의 알고리즘, 128비트키, 64비트 블록크기 | + | * '''HIGHT''' : |
− | *RC5 : 알고리즘이 간다하며 속도가 빠름, 23/64/128비트의 블록크기 | + | * '''LEA''' |
− | * | + | : |
+ | |||
+ | === 국외 === | ||
+ | * '''IDEA''' | ||
+ | :PGF채택, 8라운드의 알고리즘, 128비트키, 64비트 블록크기 | ||
+ | |||
+ | * '''RC5''' | ||
+ | :알고리즘이 간다하며 속도가 빠름, 23/64/128비트의 블록크기 | ||
+ | |||
+ | * '''DES''' : 미국 연방정부(NIST)에서 1977년 표준으로 공표, 16라운드의 알고리즘, 64비트 블록크기 | ||
+ | * '''AES''' : 미국 연방정부에서 표준으로 공표, 128/192/256 비트키 | ||
+ | * '''FEAL''' : 소프트웨어 구현에 적합하다. 64/128비트 블록크기 | ||
{{각주}} | {{각주}} | ||
==참고자료== | ==참고자료== | ||
− | * | + | * SEED 위키백과 - https://ko.wikipedia.org/wiki/SEED |
− | * 〈[https:// | + | * SEED 나무위키 - https://namu.wiki/w/SEED |
− | * 〈[https:// | + | * 한국인터넷진흥원 공식홈페이지 SEED - https://seed.kisa.or.kr/kisa/algorithm/EgovSeedInfo.do |
+ | |||
+ | * 한국인터넷진흥원, 〈[SEED 128 알고리즘 상세 명세서]〉, 《한국인터넷진흥원》, 2009-07 | ||
+ | * ojava, 〈[https://ojava.tistory.com/103 KISA 권고 암/복호화 방식:SEED 128, SEED 256]〉, 《티스토리》, 2017-05-15 | ||
+ | * 관리자1, 〈[https://seed.kisa.or.kr/kisa/Board/17/detailView.do 암호알고리즘 소스코드]〉, 《한국인터넷진흥원》, 2019-01-31 | ||
+ | * 와이준 Nye, 〈[https://yjshin.tistory.com/entry/%EC%95%94%ED%98%B8%ED%95%99-%EA%B8%B0%ED%83%80-%EB%8C%80%EC%B9%AD%ED%82%A4-%EC%95%94%ED%98%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-IDEA-RC5-SEED-ARIA-HIGHT-LEA (암호학) 기타 대칭키 암호 알고리즘 - IDEA, RC5, SEED, ARIA, HIGHT, LEA]〉, 《티스토리》, 2019-11-19 | ||
== 같이 보기 == | == 같이 보기 == |
2020년 8월 21일 (금) 14:23 판
SEED 또는 시드 블록 암호 알고리즘은 전자상거래, 금융, 무선통신 등에서 전송되는 개인정보와 같은 중요한 정보를 보호하기 위해, 1999년 2월 한국인터넷진흥원과 국내 암호전문가들이 순수 국내기술로 개발한 128비트 및 256비트 대칭 키 블록의 암호 알고리즘이다. 미국에서 수출하는 웹브라우저 보안의 수준이 40비트로 제한함으로써 128비트 보안을 위해서 자국에서 개발한 별도의 알고리즘이다.
목차
개요
시드 블록 암호 알고리즘(SEED)는 민간 부분인 인터넷, 전자상거래, 무선 통신 등에서 공개 시 민감한 영향을 미칠 수 있는 정보의 보호와 개인 프라이버시 등을 보호하기 위하여 1992년 2월 한국 정보보호센터(KISA)에 의해 개발된 블록 암호 알고리즘이다. 대칭키 블록 암호알고리즘으로 비밀성을 제공하는 암호시스템의 중요 요소이다. 블록암호알고리즘 SEED는 128비트의 비밀키를 이용해 128비트의 평문을 암호문으로 변환한다. 금융권, 전자상거래, 정보 보호제품(VPN) 등의 다양한 분야에서 데이터의 기밀성과 무결성 기능을 제공하기 위해 사용되고 있다. 국외 주요 정보 보호업체를 포함한 670개 이상의 국내 외 산업계와 학계와 연구분야에서 SEED를 사용하고 있다. 블록 암호 알고리즘의 경우, 암호 알고리즘이 적용되는 블록 크기가 정해져 있기 때문에 정해진 길이보다 긴 데이터를 암호화하거나 데이터 무결성 검증을 하기 위해서는 블록 암호 알고리즘의 운영 모드를 반드시 사용하게 된다. 입력 데이터의 길이가 기본 블록 크기의 배수가 되지 않으면 처리가 불가능하므로 입력 메시지의 길이가 기본 블록 크기의 배수가 되지 않으면 처리가 불가능해 입력 메시지의 길이가 블록 길이의 배수가 되도록 하기 위해 덧붙이기 방법을 사용해야 한다. 이에, 한국 정보보호진흥원에서는 안전성 측면과 효율성 측면을 고려하여 SEED의 사용을 촉진하기 위해 SEED의 운영 모드를 TTA 표준으로 제안하여 2003년 12월 TTA표준으로 제정하였다.
역사
- 1999년 2월 한국 인터넷진흥원과 국내 암호전문가들이 개발
- 1999년 9월 정보통신 산체표준(TTA)으로 제정
- 2005년 국제 표준화 기구인 ISO/IEO 국제 블록 암호 알고리즘, IETF 표준으로 제정
- 2009년 256비트 키를 지원하는 SEED 256 개발
고려사항
SEED를 실제로 사용하기 위해서는 구현 환경에서 사용되는 엔디안(Endianness)과 암호화된 데이터가 저장되는 데이터 형식을 고려해야 한다. 또한, 입력 블록을 블록 암호에 적용하는 방법인 운영 모드와 마지막 블록의 크기를 맞추기 위한 패딩을 함께 구현해 주어야 한다.
엔디안
엔디안이란, 컴퓨터 메모리의 바이트를 배열하는 순서를 말한다. 엔디안은 보통 큰 단위가 앞에 나오는 빅 에디안과 작은 단위가 앞에 나오는 리틀 엔디안, 그리고 두 경우에 속하지 않거나 둘 모두를 지원하는 미들 엔디안으로 분류한다. 현재 빅 엔디안과 리틀 엔디안이 많이 사용되나 x86 아키텍처가 리틀 엔디안을 쓰기 때문에 대부분의 x86 아키텍처를 사용하는 데스크탑은 리틀 엔디안을 사용하며, SEED 소스코드도 기본적으로 리틀 엔디안을 사용하고 있다.
데이터형식
일반적으로 암호 알고리즘은 비트단위 연산을 포함한 다양한 연산을 수행하여 평문 메시지를 무의미한 비트열인 암호문으로 변환한다. 이 때 만들어진 암호문 비트열은 랜덤한 비트들로 구성되기 때문에 이를 문자열의 형태로 저장하거나 처리할 경우에는 문제가 발생할 수 있다. 따라서 암호화된 메시지는 항상 문자열이 아닌 이진 형태로 처리해 주어야 한다.
운영 모드
운영 모드란, 여러 개의 입력 블록들을 블록 암호에 적용하여 암호화, 복호화 하는 방법에 대한 정의이다. 이러한 운영 모드는 블록 암호와는 독립적으로 정의된다. 대표적으로 가장 널리 이용되는 블록 암호 운영모드에는 ECB(Electronic Code Book)모드, CBC(Cipher Block Chaining)모드, CFB(Ciphertext FeedBack)모드, OFB(Output FeedBack)모드, CTR(Counter)모드가 있다.
패딩
메시지를 SEED에 입력하기 위해 여러 개의 128비트 블록으로 나눌 때, 마지막 블록이 정확히 그 크기를 맞추기 어렵다. 예를 들어, 300비트의 메시지를 128비트의 블록으로 나눌 경우, 300 = 128 + 128 + 44 로 나뉘어 세 개의 블록을 구성하게 되는 데, 이때 마지막 블록이 44비트로 128비트를 만족하지 못한다. 이 경우 나머지 부족한 84비트를 채워주어야 SEED의 입력값으로 사용할 수 있다. 이렇게 부족한 부분을 채우는 방식을 패딩이라고 한다. SEED에 주로 사용되는 패딩은 TTA 표준의 부록으로 다루고 있다.
그 외의 알고리즘
국내
- ARIA :
- HIGHT :
- LEA
국외
- IDEA
- PGF채택, 8라운드의 알고리즘, 128비트키, 64비트 블록크기
- RC5
- 알고리즘이 간다하며 속도가 빠름, 23/64/128비트의 블록크기
- DES : 미국 연방정부(NIST)에서 1977년 표준으로 공표, 16라운드의 알고리즘, 64비트 블록크기
- AES : 미국 연방정부에서 표준으로 공표, 128/192/256 비트키
- FEAL : 소프트웨어 구현에 적합하다. 64/128비트 블록크기
각주
참고자료
- SEED 위키백과 - https://ko.wikipedia.org/wiki/SEED
- SEED 나무위키 - https://namu.wiki/w/SEED
- 한국인터넷진흥원 공식홈페이지 SEED - https://seed.kisa.or.kr/kisa/algorithm/EgovSeedInfo.do
- 한국인터넷진흥원, 〈[SEED 128 알고리즘 상세 명세서]〉, 《한국인터넷진흥원》, 2009-07
- ojava, 〈KISA 권고 암/복호화 방식:SEED 128, SEED 256〉, 《티스토리》, 2017-05-15
- 관리자1, 〈암호알고리즘 소스코드〉, 《한국인터넷진흥원》, 2019-01-31
- 와이준 Nye, 〈(암호학) 기타 대칭키 암호 알고리즘 - IDEA, RC5, SEED, ARIA, HIGHT, LEA〉, 《티스토리》, 2019-11-19
같이 보기