랑아
article thumbnail

02. 블록 암호와 스트림 암호

01. 블록 암호

1) 블록 암호의 특징

  • 블록 암호는 평문을 일정한 단위(블록)로 나누어서 단위마다 암호화 과정을 수행하여 암호문을 얻는 방법
  • 고정된 길이의 입력 블록을 고정된 출력 블록으로 암호화하는 방식
  • 출력 블록의 각 비트는 입력 블록과 키의 모든 비트에 의존함
  • 블록의 길이가 정해져 있으므로 기호의 삽입, 삭제가 불가능함
  • 평문 비트들을 블록화해야 하므로 블록의 크기에 따라 암호화 속도가 지연될 수 있음
  • 대부분 64, 80, 128, 256비트 크기의 키를 이용함
  • 암호화 과정에서의 오류는 여러 변환 과정의 영향을 미치므로 오류의 파급력이 큼
  • 블록 암호는 구현이 용이하며 혼돈과 확산 이론을 기반으로 설계됨

2) 블록 암호의 알고리즘 구조

  • Feistel 암호 구조 : DES, SEED, IDEA, CAST-128, BLOWFISH
  • SPN 암호 구조 : AES, SAFER, CRYPTON

3) Feistel 암호 구조의 특징

  • 독일 학자인 Horst Feistel에 의해 개발된 방식
  • 평문을 2개의 블록으로 나누어 암호화함
  • Feistel 암호 방식은 대칭키 암호 알고리즘에서 사용됨
  • 배타적 논리합(XOR), 치환(Swap), 순환(Round)을 이용함
  • 확산(암호문과 평문 사이의 관계를 숨김)과 혼돈(암호문과 키 사이의 관계를 숨김)의 성질을 동시에 갖도록 하고, 반복적으로 수행함으로써 안전성을 높일 수 있음
  • 암호 강도는 평문 블록의 길이, 키의 길이, 라운드의 수에 의하여 결정됨
  • 암호화 과정과 복호화 과정이 동일함
  • 수행 속도가 빠르며, H/W 및 S/W로 구현이 가능함
  • 블록 암호화 방식 중 라운드 함수를 반복적으로 사용하는 방식
  • 별도의 복호화기를 구현하지 않아도, 암호화 키를 이용해 복호화를 할 수 있다는 정점이 있음
  • Feistel 구조는 역함수가 필요 없다는 장점이 있음
  • 구현 시 Swap 단계 때문에 연산량이 많이 소요되며 암호에 사용되는 라운드 함수를 안전하게 설계해야 한다는 단점이 있음

4) SPN(Substitution-Permutation Network) 암호 구조의 특징

  • 대입과 치환을 이용한 망 구조
  • 암호화 과정과 복호화 과정이 다름
  • 암호를 풀기 위해서는 별도의 복호화 키를 필요로 함
  • 중간에 비트의 이동 없이 한 번에 암호화, 복호화가 가능하므로 Feistel 구조에 비해 효율적으로 설계할 수 있는 장점이 있음
  • 암호화, 복호화 과정에서 역함수가 필요하도록 설계되어야 한다는 단점이 있음



02. DES 알고리즘

1) DES(Data Encryption Standard)의 특징

  • Feistel 암호 구조의 대표적인 방식
  • 평문 블록에 대해 동일한 연산을 수행하는 16회전을 통해 암호화됨
  • 56비트 키를 사용하고, 64비트의 블록을 암호화하는 블록 암호 방식
  • 8비트는 검사용(패리티 비트)으로 사용됨
  • DES는 암호화 키와 복호화 키가 동일한 대칭 암호 방식
  • DES 알고리즘의 출력 비트는 모든 입력 비트에 의존하고 있음
  • DES 알고리즘은 평문 또는 키의 작은 변화가 결과적으로 암호문에 큰 변화를 일어나게 하는 쇄도 효과(Avalanche Effect)가 있음



03. 기타 블록 암호

1) SEED-128, SEED-256

  • 우리나라에서 개발된 암호화 알고리즘
  • 1999년 한국인터넷진흥원에서 개발된 블록 암호화 알고리즘
  • 사용하는 암호화 키 길이에 따라 SEED-128과 SEED-256이 있음
  • 128비트 고정키를 사용하고, 128비트의 블록을 암호화하는 블록 암호 방식
  • 16라운드를 통해 암호화됨
  • 변형된 Feeistel 암호 구조
  • 8비트를 8비트로 변환하는 2개의 S-box를 사용함

2) ARIA

  • 전자정부를 추구하기 위해 다양한 환경에서 적합한 알고리즘이 필요하여 국가보안기술연구소(NSRI)가 주도하여 학계, 연구소, 정부 기관이 공동으로 구현된 국가 암호화 알고리즘
  • 학계, 연구소, 정부 기관에서 경량화 및 하드웨어 환경에 최적화되도록 국가정보원에서 산학연과 같이 개발한 블록 암호화 알고리즘
  • 암호화 블록 크기는 128비트이며, 암호화 키의 길이에 따라 ARIA 128, 192, 256으로 분류됨
  • ARIA는 우리나라 국가 표준으로 지정되었으며 경량 환경 및 하드웨어 구현에서의 효율성 향상을 위해 개발된 128비트 블록 암호 알고리즘
  • ARIA는 민간 암호화 알고리즘인 SEED와 함께 전자 중부의 대국민 행정 서비스용으로 보급되고 있음

3) AES-128, AES-192, AES-256

  • AES는 미국의 연방 표준 알고리즘으로 DES를 대신할 차세대 표준 알고리즘
  • 암호화 과정과 복호화 과정이 다른 SPN 암호 구조
  • 8비트를 8비트로 변환하는 1개의 S-box를 사용함
  • 128비트 크기의 입, 출력 블록을 사용하고 128/192/256비트의 가변 크기 키 길이를 제공함
  • 사용하는 키 길이에 따라 128, 192, 256이 있음
  • 라운드 횟수는 한 번의 암, 복호화를 반복하는 라운드 함수의 수행 횟수이고, 10/12/14라운드 수로 이루어져 있음

4) IDEA(International Data Encryption Algorithm) - Feistel 암호 구조

  • 1991년에 제작된 블록 암호이며, 국제 데이터 암호화 알고리즘
  • 64비트의 블록에 고정된 128비트의 키를 이용하며, 8라운드로 구성되어 있음
  • 64비트 블록 암호화 알고리즘 중에서 가장 안전하고, 뛰어나다는 평가를 받음
  • 하나의 블록을 177Mbps의 빠른 속도로 암호화함
  • 0이 많이 들어간 키 같은 특정키에 대해서는 취약함

5) CAST-128/256 - Feistel 암호 구조

  • Carlisle Adams가 개발한 대칭 암호화 알고리즘
  • DES와 같은 Feistel 구조로 DES의 대안으로 사용됨
  • 128비트와 256비트 등 대형키를 사용하여 암호화함
  • 단일키는 암호화한 측에서 보존되고, 상대방에게 전달되어 데이터를 해독함
  • 가변적인 키의 크기와 큰 블록 크기를 지원함으로써 높은 수준의 보안을 제공하여 처리 속도가 빠른 것이 특징

6) 블로피시(Blowfish) - Feistel 암호 구조

  • DES와 IDEA를 대신하여 사용되는 암호화 알고리즘
  • 키의 길이가 32 ~ 448비트인 가변 길이 키를 사용하는 비밀키 블록 암호
  • 1993년에 만들어져 현재는 비특허로 모든 사용자에게 무료로 개방되어 있음

7) SAFER - SPN 암호 구조

  • 64비트 블록의 길이와 64비트의 키를 사용하는 알고리즘
  • 키를 확장하여 128비트의 키를 사용할 수도 있음
  • 64비트 키를 사용할 때는 8라운드로, 128비트 키를 사용할 때는 10라운드로 사용함

8) CRYPTON - SPN 암호 구조

  • 국내의 퓨처 시스템에서 자체 개발한 128비트 블록을 사용하는 알고리즘
  • NIST(미국 국립표준기술연구소)의 AES 공모에서 1차 평가대상으로 선정되었던 알고리즘
  • 최대 256비트의 비밀키를 사용하며, 12라운드를 사용함
  • 현재 존재하는 차분 공격이나 선형 공격과 같은 암호 공격으로부터 안전성을 보장함
  • 키 스케줄링이 단일 블록 암호화보다 훨씬 빠름
  • 키 스케줄링 과정을 제외하고 암호화 과정과 복호화 과정이 동일하도록 설계됨
  • 암호화 과정과 복호화 과정이 동일하므로 하드웨어 구현이 효율적이로, 비용도 절감됨

9) HIGHT(HIGh security and light weigHT) 암호 - Feistel 변형 구조

  • 한국방송통신위원회와 KISA(한국인터넷진흥원)는 최근 HIGHT 암호기술을 개발하여 2010년 ISO/IEC 국제 표준으로 채택되었음
  • 암호의 최적화 소스 코드, 암호 기술 이용 안내서 등을 무료로 보급함
  • 금융, 무선 통신을 비롯한 정보보호 제품/서비스 이용 시 국산 암호 기술을 손쉽게 사용 가능하도록 지원하고 있음
  • 현재 대부분의 공개 암호 라이브러리는 PC 기반으로 개발되어 연산 속도가 느리거나 전력 소모 등의 이유로 스마트폰과 같은 경량 디바이스에 적용하기 어려웠던 부분을 극복한 국산 암호화 기술
  • 저전력, 경량화를 요구하는 컴퓨터 환경에서 기밀성을 유지하기 위해 개발한 64비트 블록 암호 방식
  • HIGHT는 128비트 마스터키, 64비트 평문으로부터 64비트의 암호문을 출력함
  • 제한적 환경에서 구현될 수 있도록 8비트 단위의 기본 산술 연산만으로 구성되어 있음
  • HIGHT는 SEED, AES 등의 방식보다 간단하며, 처리량은 AES보다는 15배, 처리 속도는 3대 이상 빠름
  • HIGHT는 Feistel 변형 구조로 이루어져 있으며, 64비트의 평문과 128비트의 마스터키로부터 생성된 8개의 8비트 화이트닝 키와 128개의 8비트 서브키를 입력으로 사용하여 총 32라운드를 거쳐 64비트 암호문을 출력함

10) A5/1, A5/2, A5/3

  • GSM(유럽, 중국, 러시아 등에서 70% 이상 사용하는 이동 통신 방식)에서 데이터를 암호화할 대 사용되는 스트림 암호 방식
  • A5/1은 OECD에 가입된 유럽 국가에서만 사용되는 암호 방식
  • A5/2는 OECD에 가입되지 않은 국가에서 사용되는 암호 방식
  • A5/3는 A5/1과 A5/2의 안전성이 취약한 것으로 드러나면서, 이들을 대신하여 사용하기 위해 개발된 암호 방식
  • A5/1, A5/2는 64비트, A5/3은 128비트를 암호화함
  • 시프트 레지스터 기반의 하드웨어적 암호 방식

11) ECC(Ellippptic Curve Crypto, 타원곡선암호)

  • 1985년 Miller와 Koblitz에 의해 독립적으로 제한된 암호 알고리즘으로 디지털 서명, 비밀키의 안전한 분배 그리고 보안을 요하는 정보의 안전한 전송에 이용됨
  • 무선 통신, 서명, 인증 등 빠른 속도와 제한된 대역폭 등이 요구되는 무선 통신 분야에 유용한 암호 알고리즘
  • 타원곡선과 임의의 곡선과의 교점 연산에서 정의되는 이산대수 문제의 어려움을 이용한 암호 방식
  • ECC는 타원곡선 수식에 의해서 정의되는 특수한 가산법을 기반으로 하여 암호화, 복호화를 하는 암호화 방식
  • ECC로 만든 암호문을 해독하는 것은 타원곡선 상의 이산대수 문제는 푸는 것과 같을 정도로 어렵기 때문에 해독하는 방법은 발견되지 않았음
  • 정보처리 능력이 그다지 높지 않은 스마트카드 등의 기기에서 이용하기에 적합한 암호화 방식
  • 유한체 위에 정의된 타원곡선을 기반으로 하는 타원곡선 암호는 빠른 속도와 제한된 대역폭을 요구하는 환경에 적합한 알고리즘
  • 전자서명 알고리즘과 키 교환 알고리즘에서 주로 사용됨
  • 타원곡선 암호 방식의 안전도는 키 길이의 증가에 따라 거의 지수 함수적으로 증가함

12) Skipjack 암호

  • Skipjack 알고리즘은 미 국가 안보국(NSA)에서 개발한 Clipper 칩에 내장된 블록 알고리즘으로, 전화기와 같이 음성을 암호화하는 데 주로 사용함
  • 1998년에 알고리즘의 형태와 구조가 공개되었는데 이를 소프트웨어로 구현되는 것을 막고자 Fortezza Card에 칩 형태로 구현되었음
  • 64비트의 입출력, 80비트의 키, 총 32라운드를 가짐
  • Skipjack 암호는 대표적인 암호키 위탁 관리 방식



04. 스티림 암호

1) 스트림 암호

  • 키 스트림의 한 비트와 평문의 한 비트가 XOR하여 암호화를 수행함
  • 해시 함수는 블록 암호화 방식이나 스트림 암호화 방식에서 선택적으로 이용될 수 있는 기술
  • 대칭키 암호화 방식은 데이터를 변환하는 방법에 따라 블록 암호화 스트림 암호로 구분됨
  • 인터넷의 컴퓨터 통신 암호화는 스트림 암호보다 블록 암호가 더 많이 사용됨
  • 스트림 암호는 작고 알고리즘 구현 속도가 빠르기 때문에 실용적이며, 휴대폰이나 컴퓨터 능력이 적게 사용되는 환경에 적합하여, 군사적인 목적으로 많이 사용됨
  • 스트림 암호는 한 비트에만 영향을 주기 때문에 암호문을 전송하는 과정에서 스트림 암호가 블록 암호보다 오류 발생에 영향을 덜 받음
  • 블록 암호는 암호 알고리즘이 공개된 상태에서 키를 지속적으로 사용할 수 있지만 스트림 암호의 키는 공개될 수 없고 한 번 사용된 알고리즘은 다시 사용할 수 없는 일회용으로 사용됨
  • 스트림 암호는 짧은 길이의 키로부터 긴 길이의 난수를 발생시켜 평문과 XOR 하는 방법을 말하며 SEAL, A5, F8 등이 있음
  • 스트림 암호는 난수와 같은 초기 값이 필요함

2) 동기식(Synchronous) 스트림 암호

  • 암호문을 전송할 때 송신 측과 수신 측에서 이미 약속된 키로 암호화와 복호화 알고리즘을 사용하기 때문에 암호문이 전송 중에 한 비트가 삽입되거나 삭제될 경우에는 복구할 수 없음
  • LFSR(선형 귀환 레지스터)처럼 처음 결정된 비트 값이 피드백 되면서 다음 비트를 생성하는 방식
  • 동기식 스트림 암호 방식에서는 키 스트림은 오직 키에 의존함
  • 특정 위치의 비트를 변경할 때 암호화된 결과에서도 같은 위치의 비트가 변경되고, 다른 비트는 변경되지 않음
  • 전송 시에 비트가 사라지거나 잘못된 비트가 추가될 때는 복호화가 실패하기 때문에 동기화가 필요함
  • 암호문을 복호화할 때 키 스트림과 암호문 사이에 동기가 필요함
  • 키 스트림은 독립적이어서 정보 유출 가능성이 적음
  • RC4가 가장 대표적인 동기식 스트림 암호 알고리즘

3) 비동기식(Asynchronous) 스트림 암호

  • 암호문을 전송할 대 송신 측과 수신 측 사이에 일정한 간격을 두어 수신 데이터를 확인하는 과정을 수행하기 때문에 암호문이 전송 중에 한 비트가 삽입되거나 삭제될 때도 복구할 수 있음
  • 비동기식 스트림 암호를 스스로 동기화한다고 하여 자기 동기식 스트림 암호라고도 함
  • 키 스트림은 평문이나 암호문으로부터 함수 관계를 생성함
  • 비동기식 스트림 암호 방식에서는 키 스트림은 암호문에 의존함
  • 전송 시에 비트가 사라지거나 잘못된 비트가 추가될 때는 일부분의 복호화가 실패하기 때문에 다시 정상적인 복호화를 위해 자기 동기화가 필요함
  • 오류 정정 기능을 포함함
  • 키 스트림과 암호문의 종속성으로 인해 해독이 쉽다는 단점이 있음
  • 암호문 귀환 자동키 방식이라고도 함

'정보처리기사 > 정보 시스템 구축 관리' 카테고리의 다른 글

암호 기술 5  (0) 2023.06.03
암호 기술 4  (0) 2023.06.02
암호 기술 2  (0) 2023.06.02
암호 기술 1  (0) 2023.06.02
보안 공격 및 예방 6  (0) 2023.06.02
profile

랑아

@RangA

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!