티스토리 뷰
SEED 암호화 (1) - SEED 암호화 알고리즘 이란
출처 : ukzang's blog
JCE에는 포함되어 있지 않은 SEED 알고리즘에 대해 (1), (2) 부로 하여 간단하게 알아보고 API를 사용하여 테스트 예제도 한번 만들어 본다.
-- SEED 암호화 알고리즘 이란?
SEED 암호화 알고리즘은 민간 부분인 인터넷, 전자상거래, 무선 통신 등에서 공개 시 민감한 영향을 미칠 수 있는 정보의 보호황 개인 프라이버시 등을 보호하기 위하여 1999년 2월 한국정보보호센터(KISA)에 의해 개발 된 블럭암호알고리즘이다.
대칭키 블록 암호알고리즘으로 비밀성을 제공하는 암호시스템의 중요 요소이다. n 비트 블록 암호알고리즘이란 고정 된 n 비트 평문을 같은 길이의 n 비트 암호문으로 바꾸는 함수를 말한다. 이러한 변형 과정에 암/복호키가 작용하여 암호화와 복호화를 수행한다.
Feistel 구조란 각각 n/2 비트인 L0, R0 블록으로 이루어진 n 비트 평문 블록 (L0, R0)이 r 라운드(r ≥ 1)를 거쳐 암호문(Lr, Rr)으로 반환되는 반복 구조이다.
-- SEED 알고리즘 구조
SEED 알고리즘의 전체 구조는 Feistel 구조로 이루어져 있으며, 128비트의 평문 블록과 128비트 키를 입력으로 사용하여 총 16라운드를 거쳐 128비트 암호문 블록을 출력한다.
JCE에는 포함되어 있지 않은 SEED 알고리즘에 대해 (1), (2) 부로 하여 간단하게 알아보고 API를 사용하여 테스트 예제도 한번 만들어 본다.
-- SEED 암호화 알고리즘 이란?
SEED 암호화 알고리즘은 민간 부분인 인터넷, 전자상거래, 무선 통신 등에서 공개 시 민감한 영향을 미칠 수 있는 정보의 보호황 개인 프라이버시 등을 보호하기 위하여 1999년 2월 한국정보보호센터(KISA)에 의해 개발 된 블럭암호알고리즘이다.
대칭키 블록 암호알고리즘으로 비밀성을 제공하는 암호시스템의 중요 요소이다. n 비트 블록 암호알고리즘이란 고정 된 n 비트 평문을 같은 길이의 n 비트 암호문으로 바꾸는 함수를 말한다. 이러한 변형 과정에 암/복호키가 작용하여 암호화와 복호화를 수행한다.
Feistel 구조란 각각 n/2 비트인 L0, R0 블록으로 이루어진 n 비트 평문 블록 (L0, R0)이 r 라운드(r ≥ 1)를 거쳐 암호문(Lr, Rr)으로 반환되는 반복 구조이다.
-- SEED 알고리즘 구조
SEED 알고리즘의 전체 구조는 Feistel 구조로 이루어져 있으며, 128비트의 평문 블록과 128비트 키를 입력으로 사용하여 총 16라운드를 거쳐 128비트 암호문 블록을 출력한다.
F 함수
Feistel 구조를 갖는 블록 암호알고리즘은 F 함수의 특성에 따라 구분될 수 있다. SEED의 F 함수는 수정된 64비트 Feistel 형태로 구성된다. F 함수는 각 32비트 블록 2개 (C, D)를 입력으로 받아, 32 비트 블록 2개(C', D')를 출력한다. 즉, 암호화 과정에서 64비트 블록(C, D)와 64비트 라운드 키 Ki = (Ki,0 : Ki,1)를 F 함수의 입력으로 처리하여 64비트 블록(C', D')을 출력한다. (i : 라운드 수)
Feistel 구조를 갖는 블록 암호알고리즘은 F 함수의 특성에 따라 구분될 수 있다. SEED의 F 함수는 수정된 64비트 Feistel 형태로 구성된다. F 함수는 각 32비트 블록 2개 (C, D)를 입력으로 받아, 32 비트 블록 2개(C', D')를 출력한다. 즉, 암호화 과정에서 64비트 블록(C, D)와 64비트 라운드 키 Ki = (Ki,0 : Ki,1)를 F 함수의 입력으로 처리하여 64비트 블록(C', D')을 출력한다. (i : 라운드 수)
G 함수
G 함수는 다음과 같다.
G 함수는 다음과 같다.
S-Box
G 함수의 내부에 사용되는 비선형 S-Box S1, S2는 다음의 식을 이용하여 생성된다. (n1 = 247, n2 = 251, b1 = 159, b2 = 56)
G 함수의 내부에 사용되는 비선형 S-Box S1, S2는 다음의 식을 이용하여 생성된다. (n1 = 247, n2 = 251, b1 = 159, b2 = 56)
라운드 키 생성과정
SEED 의 라운드 키 생성과정은 128비트 암호키를 64비트씩 좌우로 나누어 이들을 교대로 8비트씩 좌/우로 회전이동한 후, 결과의 4워드들에 대한 간단한 산술연산과 G 함수를 적용하여 라운드 키를 생성한다. 라운드 키 생성과정은 기본적으로 하드웨어나(모든 라운드 키를 저장할 수 없는) 제한 된 자원을 갖는 스마트카드와 같은 응용에서의 효율성을 위하여, 암호화나 복호화시 암호화키로부터 필요한 라둔드 키를 간단히 계산할 수 있도록 설계되었다.
주어진 128비트 암호키 K = A || B || C || D를 32비트 레지스터 A, B, C, D로 나눈다. 각 라운드 i에 사용되는 라운드 키 Ki = (Ki,0 : Ki,1)는 다음과 같은 방식으로 생성한다.
SEED 의 라운드 키 생성과정은 128비트 암호키를 64비트씩 좌우로 나누어 이들을 교대로 8비트씩 좌/우로 회전이동한 후, 결과의 4워드들에 대한 간단한 산술연산과 G 함수를 적용하여 라운드 키를 생성한다. 라운드 키 생성과정은 기본적으로 하드웨어나(모든 라운드 키를 저장할 수 없는) 제한 된 자원을 갖는 스마트카드와 같은 응용에서의 효율성을 위하여, 암호화나 복호화시 암호화키로부터 필요한 라둔드 키를 간단히 계산할 수 있도록 설계되었다.
주어진 128비트 암호키 K = A || B || C || D를 32비트 레지스터 A, B, C, D로 나눈다. 각 라운드 i에 사용되는 라운드 키 Ki = (Ki,0 : Ki,1)는 다음과 같은 방식으로 생성한다.
지금까지 SEED 암호알고리즘에 대해 알아봤다. 위의 내용은 한국정보보호진흥원(KISA)에서 제공한 정보가 거의 대부분이다. 상단에 KISA에서 제공하는 SEED에 관련 된 문서를 올리니 참조하기 바란다.
KISA의 SEED HomePage : http://www.kisa.or.kr/kisa/seed/jsp/seed.jsp
다음은 KISA에서 제공하는 SEED 알고리즘 Java API를 조금 변형한 것과 사용예를 다룬다.
[출처] SEED 암호화 (1) - SEED 암호화 알고리즘 이란|작성자 마지막
'보안 > 보안알고리즘' 카테고리의 다른 글
SEED 암호화 (2) - SEED 암호화 알고리즘 적용 (0) | 2011.10.11 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- jason marz im yours
- 자바스크립트강의
- Marry You
- java파일복사
- dom vs sax
- java파일삭제
- lol 서포터
- javascript강의
- 자바 객체
- 자바정의
- MySQL
- Split
- eclipse 단축키
- java 객체
- marry you 프로포즈
- sax vs dom
- jason maraz
- 문자열자르기
- 이클립스 단축키
- This Android SDK requires An...e ADT to the latest version
- bruno mars marry you
- 갈릴레오 svn
- 스크린세이버
- 불독맨션 좋아요
- 펌방지해제
- java 인스턴스
- 타루 예뻐할께
- 체크박스
- eclipse svn
- Mysql명령어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함