의견.png

"HIGHT"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글
1번째 줄: 1번째 줄:
HIGHT(HIGh security and light weigHT) 암호 알고리즘은 [[RFID]], [[USN]] 등과 같이 저전력ㆍ경량화를 요구하는 컴퓨팅 환경에서 기밀성을 제공하기 위해 2005년 [[KISA]], [[ETRI]] 부설연구소 및 [[고려대]]가 공동으로 개발한 [[GFS]]구조의 64비트 경량 블록 암호 알고리즘이다. 스마트폰, 스마트카드 및 RFID등과 같이 저전력, 경량화를 요구하는 모바일 환경에서 기밀성 있는 보안을 확보하기 위해 개발되었다.
+
'''HIGHT'''(HIGh security and light weigHT) 암호 알고리즘은 [[RFID]], [[USN]] 등과 같이 저전력ㆍ경량화를 요구하는 컴퓨팅 환경에서 기밀성을 제공하기 위해 2005년 [[KISA]], [[ETRI]] 부설연구소 및 [[고려대]]가 공동으로 개발한 [[GFS]]구조의 64비트 경량 블록 암호 알고리즘이다. 스마트폰, 스마트카드 및 RFID등과 같이 저전력, 경량화를 요구하는 모바일 환경에서 기밀성 있는 보안을 확보하기 위해 개발되었다.
  
 
== 특징 ==
 
== 특징 ==
 
 
* 휴대형 기기 및 모바일 환경에 적합하도록 특수 설계되었고, 전력 소비가 적도록 개발된 블록 암호화 알고리즘이다.
 
* 휴대형 기기 및 모바일 환경에 적합하도록 특수 설계되었고, 전력 소비가 적도록 개발된 블록 암호화 알고리즘이다.
 
* 8비트 단위의 기본적인 산술연산, XOR, 순환이동만으로 사용가능 하도록 간단구조로 설계되었다.
 
* 8비트 단위의 기본적인 산술연산, XOR, 순환이동만으로 사용가능 하도록 간단구조로 설계되었다.
9번째 줄: 8번째 줄:
 
* 2006년 12월 정보통신단체 표준으로 제정되었다.
 
* 2006년 12월 정보통신단체 표준으로 제정되었다.
 
* 2010년 12월 ISO/IEC 국제 표준으로 제정되었다.
 
* 2010년 12월 ISO/IEC 국제 표준으로 제정되었다.
 
  
 
== 알고리즘 ==
 
== 알고리즘 ==
 
 
HIGHT 알고리즘은 전체적으로 일반화된 Feistel 변형 구조로 이루어져 있으며, 64비트의 평문과 128비트의 키로부터 생성된 8개의 8비트 화이트닝키와 128개의 8비트 서브키를 입력으로 사용함으로써 총 32라운드를 거쳐서 64비트 암호문을 출력한다.
 
HIGHT 알고리즘은 전체적으로 일반화된 Feistel 변형 구조로 이루어져 있으며, 64비트의 평문과 128비트의 키로부터 생성된 8개의 8비트 화이트닝키와 128개의 8비트 서브키를 입력으로 사용함으로써 총 32라운드를 거쳐서 64비트 암호문을 출력한다.
  
 
=== 기호와 표기 ===
 
=== 기호와 표기 ===
 
 
64비트 평문과 암호문은 각각 8개의 바이트로 다음과 같다.
 
64비트 평문과 암호문은 각각 8개의 바이트로 다음과 같다.
 
:* 평문 : <math>{\displaystyle P_{7} || P_{6} || \cdots || P_{0}}</math>
 
:* 평문 : <math>{\displaystyle P_{7} || P_{6} || \cdots || P_{0}}</math>
34번째 줄: 30번째 줄:
  
 
=== 키 스케줄 ===
 
=== 키 스케줄 ===
 
 
HIGHT의 라운드키는 화이트닝키와 LFSR을 사용하여 생성한 서브키들로 이루어진다.
 
HIGHT의 라운드키는 화이트닝키와 LFSR을 사용하여 생성한 서브키들로 이루어진다.
  
==== 1. 화이트닝키 생성 ====
+
==== 1. 화이트닝키 생성 ====
 
 
 
화이트닝키는 마스터키를 사용하여 다음과 같은 방법으로 생성한다.
 
화이트닝키는 마스터키를 사용하여 다음과 같은 방법으로 생성한다.
  
 
<math> {\displaystyle WK_{i} = \begin{cases} MK_{i+12} & , & 0 \le i \le 3 \\ MK_{i-4} & , & 4 \le i \le 7\end{cases}}</math><br>
 
<math> {\displaystyle WK_{i} = \begin{cases} MK_{i+12} & , & 0 \le i \le 3 \\ MK_{i-4} & , & 4 \le i \le 7\end{cases}}</math><br>
 +
 
==== 2. LFSR(Left Feedback Shift Register) <math>h</math> ====
 
==== 2. LFSR(Left Feedback Shift Register) <math>h</math> ====
 
 
LFSR <math>h</math>의 연결 다항식은 <math>{\displaystyle x^{7}+x^{3}+1}</math>이다. 이 다항식은 <math>{\displaystyle F_2[x]}</math>에서 원시다항식이기 때문에 <math>h</math>는 <math>{\displaystyle 2^{7}-1=127}</math>의 주기를 갖는다. <math>h</math>의 초기 내부 상태 값은 <math>{\displaystyle \delta_{0}=(s_{6},s_{5},s_{4},s_{3},s_{2},s_{1},s_{0})=(1,0,1,1,0,1,0)_{2}}</math>으로 정해진다. 그러면 <math>i=1,\cdots,127</math>에 대하여 <math>{\displaystyle \delta_{i}}</math>는 다음과 같이 생성된다.
 
LFSR <math>h</math>의 연결 다항식은 <math>{\displaystyle x^{7}+x^{3}+1}</math>이다. 이 다항식은 <math>{\displaystyle F_2[x]}</math>에서 원시다항식이기 때문에 <math>h</math>는 <math>{\displaystyle 2^{7}-1=127}</math>의 주기를 갖는다. <math>h</math>의 초기 내부 상태 값은 <math>{\displaystyle \delta_{0}=(s_{6},s_{5},s_{4},s_{3},s_{2},s_{1},s_{0})=(1,0,1,1,0,1,0)_{2}}</math>으로 정해진다. 그러면 <math>i=1,\cdots,127</math>에 대하여 <math>{\displaystyle \delta_{i}}</math>는 다음과 같이 생성된다.
  
52번째 줄: 46번째 줄:
  
 
==== 3. 서브키 생성 ====
 
==== 3. 서브키 생성 ====
 
 
서브키를 생성하는 알고리즘은 다음과 같이 구성된다.
 
서브키를 생성하는 알고리즘은 다음과 같이 구성된다.
  
  
 
==== 4. 암호화키 생성 ====
 
==== 4. 암호화키 생성 ====
 
 
HIGHT의 암호화 알고리즘이 수행되기 위하여 라운드키 생성과정은 바이트 단위의 8개의 화이트닝키 <math>{\displaystyle WK_{0},\cdots,WK_{7}}</math>와 128개의 서브키 <math>{\displaystyle SK_{0},\cdots,SK_{127}}</math>를 생성한다.
 
HIGHT의 암호화 알고리즘이 수행되기 위하여 라운드키 생성과정은 바이트 단위의 8개의 화이트닝키 <math>{\displaystyle WK_{0},\cdots,WK_{7}}</math>와 128개의 서브키 <math>{\displaystyle SK_{0},\cdots,SK_{127}}</math>를 생성한다.
  
 
==== 5. 복호화키 생성 ====
 
==== 5. 복호화키 생성 ====
 
 
HIGHT의 복호화 알고리즘은 암호화 알고리즘과 같은 화이트닝키와 서브키 바이트들을 이용하지만 순서가 다르다. 복호화 알고리즘에서는 <math>{\displaystyle WK_{4},WK_{5},WK_{6},WK_{7}}</math>이 초기변환에, <math>{\displaystyle WK_{0},WK_{1},WK_{2},WK_{3}}</math>이 최종변환에 사용된다. 복호화 알고리즘에서 사용되는 서브키 바이트들은 <math>{\displaystyle SK'_{i}}</math>로 표시되며, 다음과 같이 정의된다.
 
HIGHT의 복호화 알고리즘은 암호화 알고리즘과 같은 화이트닝키와 서브키 바이트들을 이용하지만 순서가 다르다. 복호화 알고리즘에서는 <math>{\displaystyle WK_{4},WK_{5},WK_{6},WK_{7}}</math>이 초기변환에, <math>{\displaystyle WK_{0},WK_{1},WK_{2},WK_{3}}</math>이 최종변환에 사용된다. 복호화 알고리즘에서 사용되는 서브키 바이트들은 <math>{\displaystyle SK'_{i}}</math>로 표시되며, 다음과 같이 정의된다.
  
69번째 줄: 60번째 줄:
  
 
==== 1. 암호화 초기변환 ====
 
==== 1. 암호화 초기변환 ====
 
 
HIGHT 암호화의 초기변환은 네 개의 화이트닝키 바이트 <math>{\displaystyle WK_{0},WK_{1},WK_{2},WK_{3}}</math>를 이용하여 평문 <math>P</math>를 첫 번째 라운드 함수의 입력인 <math>{\displaystyle X_{0}=X_{0,7}||X_{0,6}||\cdots||X_{0,0}}</math>
 
HIGHT 암호화의 초기변환은 네 개의 화이트닝키 바이트 <math>{\displaystyle WK_{0},WK_{1},WK_{2},WK_{3}}</math>를 이용하여 평문 <math>P</math>를 첫 번째 라운드 함수의 입력인 <math>{\displaystyle X_{0}=X_{0,7}||X_{0,6}||\cdots||X_{0,0}}</math>
 
로 변환한다.
 
로 변환한다.
76번째 줄: 66번째 줄:
  
 
==== 2. 암호화 라운드 함수 ====
 
==== 2. 암호화 라운드 함수 ====
 
 
HIGHT의 라운드 함수는 다음과 같은 두개의 보조 함수를 갖는다.
 
HIGHT의 라운드 함수는 다음과 같은 두개의 보조 함수를 갖는다.
  
 
== 전망 ==
 
== 전망 ==
 
 
국산 암호화 기술이 [[스마트폰]], [[USN]], [[U-City]], [[U-Health]]등 [[유비쿼터스]] 환경에서 널리 활용될 수 있도록 중소기업을 포함한 산학연(산업계, 학계, 연구분야)을 대상으로 무료로 소스코드를 배포하는 등 암호이용 활성화를 위해 지속적으로 지원할 계획이라고 한다.
 
국산 암호화 기술이 [[스마트폰]], [[USN]], [[U-City]], [[U-Health]]등 [[유비쿼터스]] 환경에서 널리 활용될 수 있도록 중소기업을 포함한 산학연(산업계, 학계, 연구분야)을 대상으로 무료로 소스코드를 배포하는 등 암호이용 활성화를 위해 지속적으로 지원할 계획이라고 한다.
  
 
{{알고리즘|토막글}}
 
{{알고리즘|토막글}}

2019년 7월 4일 (목) 19:52 판

HIGHT(HIGh security and light weigHT) 암호 알고리즘은 RFID, USN 등과 같이 저전력ㆍ경량화를 요구하는 컴퓨팅 환경에서 기밀성을 제공하기 위해 2005년 KISA, ETRI 부설연구소 및 고려대가 공동으로 개발한 GFS구조의 64비트 경량 블록 암호 알고리즘이다. 스마트폰, 스마트카드 및 RFID등과 같이 저전력, 경량화를 요구하는 모바일 환경에서 기밀성 있는 보안을 확보하기 위해 개발되었다.

특징

  • 휴대형 기기 및 모바일 환경에 적합하도록 특수 설계되었고, 전력 소비가 적도록 개발된 블록 암호화 알고리즘이다.
  • 8비트 단위의 기본적인 산술연산, XOR, 순환이동만으로 사용가능 하도록 간단구조로 설계되었다.
  • 128비트 국산암호화 알고리즘 SEED에 비해 제한된 호나경에 적용하기위해 매우 간단한 구조의 안전성, 효율성을 동시에 고려하였다.
  • 메모리와 같은 하드웨어 자원이 부족한 환경에 적합하도록 일반적인 블록 암호화 알고리즘과는 다르게 S-Box(Substitution-box)를 제거하였다.
  • 2006년 12월 정보통신단체 표준으로 제정되었다.
  • 2010년 12월 ISO/IEC 국제 표준으로 제정되었다.

알고리즘

HIGHT 알고리즘은 전체적으로 일반화된 Feistel 변형 구조로 이루어져 있으며, 64비트의 평문과 128비트의 키로부터 생성된 8개의 8비트 화이트닝키와 128개의 8비트 서브키를 입력으로 사용함으로써 총 32라운드를 거쳐서 64비트 암호문을 출력한다.

기호와 표기

64비트 평문과 암호문은 각각 8개의 바이트로 다음과 같다.

  • 평문 :
  • 암호문 :

64비트 라운드함수 입·출력은 8개의 바이트로 다음과 같다.

128비트 키(마스터키)는 16개의 바이트로 다음과 같다.

라운드함수에 적용되는 라운드키는 서브키 와 화이트닝키

산술 연산 기호

  • ⊞ : 법 덧셈
  • ⊟ : 법 뺄셈
  • ⊕ : XOR (배타적 논리합)
  •  : 8비트 값 A에 대한 8비트 좌측 순환 이동

키 스케줄

HIGHT의 라운드키는 화이트닝키와 LFSR을 사용하여 생성한 서브키들로 이루어진다.

1. 화이트닝키 생성

화이트닝키는 마스터키를 사용하여 다음과 같은 방법으로 생성한다.


2. LFSR(Left Feedback Shift Register)

LFSR 의 연결 다항식은 이다. 이 다항식은 에서 원시다항식이기 때문에 의 주기를 갖는다. 의 초기 내부 상태 값은 으로 정해진다. 그러면 에 대하여 는 다음과 같이 생성된다.


   

의 주기가 127이기 때문에 이다.

3. 서브키 생성

서브키를 생성하는 알고리즘은 다음과 같이 구성된다.


4. 암호화키 생성

HIGHT의 암호화 알고리즘이 수행되기 위하여 라운드키 생성과정은 바이트 단위의 8개의 화이트닝키 와 128개의 서브키 를 생성한다.

5. 복호화키 생성

HIGHT의 복호화 알고리즘은 암호화 알고리즘과 같은 화이트닝키와 서브키 바이트들을 이용하지만 순서가 다르다. 복호화 알고리즘에서는 이 초기변환에, 이 최종변환에 사용된다. 복호화 알고리즘에서 사용되는 서브키 바이트들은 로 표시되며, 다음과 같이 정의된다.

   

암호화

1. 암호화 초기변환

HIGHT 암호화의 초기변환은 네 개의 화이트닝키 바이트 를 이용하여 평문 를 첫 번째 라운드 함수의 입력인 로 변환한다.

(작성예정)

2. 암호화 라운드 함수

HIGHT의 라운드 함수는 다음과 같은 두개의 보조 함수를 갖는다.

전망

국산 암호화 기술이 스마트폰, USN, U-City, U-Health유비쿼터스 환경에서 널리 활용될 수 있도록 중소기업을 포함한 산학연(산업계, 학계, 연구분야)을 대상으로 무료로 소스코드를 배포하는 등 암호이용 활성화를 위해 지속적으로 지원할 계획이라고 한다.


  의견.png 이 HIGHT 문서는 알고리즘에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.