암호_
경량 블록 암호란?
정지홍
2024. 9. 19. 00:57
경량 블록 암호란?
- 제한된 자원 환경에서도 효율적이고 안전하게 동작하게 만든 블록 암호.
- 주로 IoT , RFID , 센서 네트워크와 같은 저자원 시스템에서 사용.
- 특징들...
- 작은 블록 크기와 크기 => 일반적으로 64비트 이하의 블록 크기 및 128비트 이하의 키 크기
- 표준 블록 암호인 AES보다 작음
- 낮은 연산 복잡도 => 복잡한 연산 or 메모리를 많이 요구하지 않게 설계
- 적은 메모리 사용
- 보안성 => 자원 제약이 있는 환경에서도 일정 수준의 보안성 요구
- 작은 블록 크기와 크기 => 일반적으로 64비트 이하의 블록 크기 및 128비트 이하의 키 크기
설계 원리
- 1. 구조를 단순화해서 hw와 sw에서 효율적으로 구현할 수 있게 한다.
- 간단한 암호 연산 => 복잡한 연산 줄임. 기본적은 xor , bit shift , 비트순서 변경 같은 단순한 연산 주로 사용
- 적은 라운드 수 => 라운드 수를 줄여서 연산을 단순화하며 처리 속도를 높임. 단, 라운드 수가 낮아지면 보안성 낮아질수 있음
- 2. 적은 메모리를 사용하게 한다.
- 암호 알고리즘의 상태, 키, 중간 결과 등을 저장하는 메모리 사용량을 최소화 시킴
- 사용하는 테이블들을 최소화해서 메모리 소모를 줄임
- 3. 비트 연산과 병렬처리를 적용해서 효율적으로 연산하게 함.
설계시 보안적 고려 사항
- 공격 저항성
- 차분 분석 , 통계적 분석 , 선택 평문 공격에 대한 저항성을 갖춰야 함.
- 키 관리
- 안전한 키 생성 및 분배 및 교환
- 표준화
- 국제적인 표준화 과정을 거쳐야 함.
KATAN
- 2009년에 제한 된 암호. 매 라운드마다 키를 동적으로 변경하는 키 스케쥴 사용.
- 블록 크기 : 32 , 48 , 64 bit
- 키 길이 : 80 bit ( 제한된 자원 환경에서는 적절하나, 더 높은 수준의 보안 요구시 성능은 낮아질 수 있음)
- 라운드 수 : 254 라운드
- 라운드 수가 많아 보이나 각 라운드에서는 매우 간단한 비트 연산 수행됨.
- 구조: 피어스텔 구조를 사용하지 않고, 작은 상태 레지스터와 간단한 비트 연산으로 설계 함.
- 적은 하드웨어를 사용한다.
- 주요 구성 요소
- 매우 단순한 구조를 가짐. 특히. LFSR기반의 구조와 단순한 비트 연산을 사용함.
- 1. LFSR기반 피드백 구조 ( Linear Feedback Shift Register , LFSR )
- 암호화 과정에서 입력 데이터를 순차적으로 시프트하며 간단한 피드백 연산을 수행하여 블록을 암호화.
- 2. 간단한 비트 연산
- 두 개의 레지스터에서 입력된 비트에 대한 간단한 AND OR XOR연산이 수행됨
- 3. 라운드함수. ( 크게 두가지 주요 연산으로 구성)
- 비트 연산: 입력된 두 레지스터에서 일부 비트에 대해서 and xor or연산을 적용해서 상태 갱신
- 피드백: 연산 결과는 다시 레지스터에 피드백되어서 다음 라운드의 입력으로 사용됨.
- 4. 키 스케줄
- 80비트 키를 기반으로 라운드 마다 다른 부분 키를 생성해서 사용함.
- 각 라운드에서 키의 일부가 사용되며, 이를 통해서 각 라운드의 결과가 서로 독립적으로 변화함.
- 1. LFSR기반 피드백 구조 ( Linear Feedback Shift Register , LFSR )
- 소프트웨어적으로는 성능은 다소 낮을 수 있음. 매우 단순한 비트 연산 기반의 구조이기 때문.
- 작은 게이트 수, 낮은 전력 소모가 장점
- 매우 단순한 구조를 가짐. 특히. LFSR기반의 구조와 단순한 비트 연산을 사용함.
SIMON
- 블록 크기 : 64 bit 혹은 128 bit
- 키 길이 64 or 96 or 128 비트
- 구조: 피어스텔 구조를 기반으로 함. 단순한 암호화 라운드 사용.
- hw , sw에서 모두 효율적으로 동작. 저전력 및 저비용 환경에서도 사용 가능
- 2013년 미국 NSA에서 개발한 경량 블록 암호
SPECK
- 블록 크기 : 64 or 96 비트
- 키 길이 : 64 or 96 or 128 비트
- SIMON과 유사한 구조지만, 암호화 라운드 및 연산 방식이 다름.
- sw에서의 효율성을 고려하며 설계함. 저비용의 처리 성능을 제공
- 미국 NSA에서 개발한 경량 블록 암호
PRESENT
- 2007년에 처음 발표된 경량 블록 암호.
- 단순한 구조와 효율적 구현이 목표임.
- 게이트 수를 최수화해서 적은 hw자원에서도 동작 가능.
- 블록 크기 : 64비트
- 키 크기: 80 or 128 bits
- 라운드 수 : 31라운드
- 반복적인 라운드로 암호 강도를 높임. 이로 인해 암호 분석 공격에 저항력을 강화
- SPN구조를 사용. ( substitution - permutation network )
- 이는 s-box를 이용한 치환(substitution)과 p-box를 이용한 순열(permutation)을 반복해서 암호화 함.
- 알고리즘 구조....
- 1. 초기상태
- 입력된 64비트 블록은 암호화의 첫 단계에서 키와 결합된 초기 상태로 설정
- 2. 라운드 함수. (여기에서는 3가지의 주요 단계를 반복 )
- AddRoundKey: 혼합을 적용시켜 블록 암호 구조를 분석하기 어렵게 만듬.
- 각 라운드에서 64 비트 상태와 라운드 키가 xor연산으로 결합됨.
- Substitution Layer: 비선형성을 제공해서 암호 강도를 높힘.
- 64비트의 상태는 4비트 단위로 나누어짐. 그리고 나누어 진것은 s-box에 의해서 치환됨.
- Permutation Layer: 각 비트가 서로 상호 의존성을 가지게 해서 복잡성을 추가함.
- 위에서 4비트의 16개 데이터를 64 비트로 묶는다. 그리고 비트간의 순서를 바꾼다.
- AddRoundKey: 혼합을 적용시켜 블록 암호 구조를 분석하기 어렵게 만듬.
- 3. 키 스케쥴. (각 라운드마다 고유한 라운드 키를 생성)(매우 단순해보이나 매우 효율적이다.)
- 3-1. 순환이동: 키의 비트가 왼쪽으로 순환
- 3-2. s-box적용: 최상위 4비트에 s-box를 적용하여 치환
- 3-3. 라운드 카운터 xor : 라운드 번호를 키의 특정 비트에 xor연산해서 라운드 키를 독립적으로 만듬.
- 4. 최종 라운드
- 마지막 31라운드에서는 p-box는 생략되며, 마지막 addroundkey만 적용해서 완료 함.
- 1. 초기상태
- 장점:
- 적은 게이트 수: 매우 작은 게이트 수는 낮은 전력 소비와 작은 공간을 차지함.
- 효율적인 키 스케줄: 키 스케줄이 간단하여 빠른 키 생성 가능.
- 높은 보안성: S-Box와 P-Box를 통한 강력한 비선형성 및 순열 구조로 차분 및 선형 공격에 저항성을 가짐.
- 단점:
- 64비트 블록 크기는 큰 데이터를 처리할 때 충돌 위험이 상대적으로 높다.
- 소프트웨어 환경에서 PRESENT는 다른 경량 암호나 표준 암호( AES )에 비해 성능이 떨어질 수 있다.
LEA
- 2013년 대한민국에서 발표된 경량 블록 암호 알고리즘
- 소프트웨어 구현에서 효율적이게 설계함. 특히, 64비트 정수 연산을 기반으로 한다.
- 블록 크기: 고정된 128비트. => 보안성,효율성을 둘 다 고려
- 키 크기: 128,192,256비트
- 라운드 수: 24,28,32라운드
- 피어스텔 구조가 아닌 ARX구조를 사용.
- ARX구조: addition , xor , rotation.
- 키 스케줄은 덧셈,xor,비트 횐전 연산으로 키를 라운드별로 확장함. 각 라운드에서는 고유한 서브 키를 생성하여 데이터 블록과 xor연산을 수행.
- 암호화 과정
- 1.초기상태 설정
- 128비트의 입력 데이터를 32비트 단위로 4개의 블록으로 나눔
- 2. 라운드 수행
- 각 라운드에서 addition , xor , rotation을 수행 및 고유한 서브키로 데이터 블록과 xor연산
- 3.최종 상태 출력
- 1.초기상태 설정
- 다양한 키 지원으로 확장성 및 구조가 간단
- 저자원 환경에 적합
HIGHT
- 2006년에 발표한 경량 블록 암호
- High Security and Lightweight
- 블록 크기 : 64 비트
- 키 크기 : 128비트
- 라운드 수 : 32라운드
- 피어스텔 구조 대신 ARX구조를 사용
SYCON
- SYNCHRONOUS CONSTRUCTION
- hw,sw에서 효율성을 고려하여 설계됨.
- 피어스텔 구조를 기반.
- 64비트 블록 크기와 128비트 키 크기를 사용함. 라운드는 16라운드