맨위로가기

RC6

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

RC6는 블록 암호화 알고리즘으로, RC5와 유사한 키 확장 알고리즘을 사용하며, 암호화 및 복호화 절차를 거친다. 2016년 NSA의 "임플란트"에서 사용되었을 가능성이 있으며, AES로 선정되지 않아 특허 만료 전까지 라이선스 및 로열티 지불이 요구되었을 수 있다.

더 읽어볼만한 페이지

  • 블록 암호 - 데이터 암호화 표준
    데이터 암호화 표준(DES)은 미국 국립표준기술연구소에서 개발되어 널리 사용되었던 대칭키 암호 알고리즘이지만, 짧은 키 길이와 취약점 때문에 고급 암호화 표준(AES)으로 대체되었고, 트리플 DES 형태로 일부 시스템에서 사용되며 암호학 발전에 기여한 역사적 의미가 있다.
  • 블록 암호 - 고급 암호화 표준
    고급 암호화 표준(AES)은 미국 국립표준기술연구소에서 제정한 대칭 키 암호화 블록 암호 표준으로, 치환-순열 네트워크 구조에 기반하여 128비트 블록 크기와 다양한 키 크기를 지원하며, 빠른 속도와 효율성으로 널리 사용된다.
RC6
암호 알고리즘 정보
이름RC6
RC6 암호 알고리즘
RC6 알고리즘의 Feistel 함수
고안자로널드 리베스트, Matt Robshaw, Ray Sidney, Yiqun Lisa Yin
발표일1998년
기반 알고리즘RC5
인증AES 최종 후보
키 크기128, 192 또는 256비트
블록 크기128비트
구조Feistel 구조 (Type 2)
라운드 수20

2. 암호화/복호화

RC6의 암호화복호화 과정은 네 개의 w-비트 레지스터(A, B, C, D)를 사용하며, RC5와 유사한 구조를 가진다. 암호화는 평문과 라운드 키를 입력받아 암호문을 생성하고, 복호화는 암호문과 라운드 키를 입력받아 원래의 평문을 복원하는 역과정이다.

키 확장 알고리즘은 RC5와 거의 동일하지만, RC6에서는 사용자가 제공한 키로부터 더 많은 워드(word)가 파생된다는 차이가 있다.[1] 암호화와 복호화 모두 `2r + 4`개의 라운드 키 `S[0, ..., 2r + 3]`를 사용하며, 여기서 `r`은 라운드 수를 나타낸다.

암호화 절차는 초기화, `r`번의 라운드 반복, 최종 처리 단계로 구성된다. 각 라운드에서는 데이터 의존적 회전, XOR 연산, 모듈러 덧셈 등이 복합적으로 사용된다. 복호화 절차는 암호화의 각 단계를 정확히 역으로 수행하여 데이터를 복원한다. 자세한 절차는 하위 섹션에서 설명한다.

2. 1. 암호화 절차

RC5의 키 확장 알고리즘과 거의 동일하며, 유일한 차이점은 RC6에서 사용자가 제공한 키로부터 더 많은 워드(word)가 파생된다는 점이다.[1]

RC6 암호화는 4개의 w비트 레지스터 A, B, C, D에 저장된 평문을 입력으로 받는다. 여기서 w는 워드 크기(예: 32비트), r은 라운드 수, b는 키의 바이트 길이를 나타낸다. 암호화에는 총 2r + 4개의 w비트 라운드 키 S[0], ..., S[2r + 3]가 사용된다. 이 라운드 키는 사용자가 제공한 키로부터 키 확장 알고리즘을 통해 생성된다.

암호화 과정은 다음과 같다.

1. 초기화:

  • 레지스터 B에 라운드 키 S[0]을 더한다 (모듈러 2w 덧셈).
  • 레지스터 D에 라운드 키 S[1]을 더한다 (모듈러 2w 덧셈).

```c

B = B + S[0]

D = D + S[1]

```

2. 라운드 반복: i = 1부터 r까지 다음 과정을 반복한다.

  • 임시 변수 t를 계산한다. t는 B * (2B + 1) 값을 왼쪽으로 lg w 비트만큼 비트 회전 시프트(circular left shift)한 결과이다. 여기서 lg w는 워드 크기 w에 따른 비트 수(예: w=32이면 lg w=5)이다.
  • 임시 변수 u를 계산한다. u는 D * (2D + 1) 값을 왼쪽으로 lg w 비트만큼 비트 회전 시프트한 결과이다.
  • 레지스터 A를 업데이트한다. A와 t를 XOR 연산한 값을 왼쪽으로 u 비트만큼 비트 회전 시프트하고, 그 결과에 라운드 키 S[2i]를 더한다.
  • 레지스터 C를 업데이트한다. C와 u를 XOR 연산한 값을 왼쪽으로 t 비트만큼 비트 회전 시프트하고, 그 결과에 라운드 키 S[2i + 1]을 더한다.
  • 레지스터 값들을 순환시킨다. (A, B, C, D)의 값을 각각 (B, C, D, A)로 변경한다.

```c

for i = 1 to r do

{

t = (B * (2B + 1)) <<< lg w

u = (D * (2D + 1)) <<< lg w

A = ((A ^ t) <<< u) + S[2i]

C = ((C ^ u) <<< t) + S[2i + 1]

(A, B, C, D) = (B, C, D, A)

}

```

3. 최종 처리:

  • 레지스터 A에 라운드 키 S[2r + 2]를 더한다.
  • 레지스터 C에 라운드 키 S[2r + 3]을 더한다.

```c

A = A + S[2r + 2]

C = C + S[2r + 3]

```

모든 과정이 끝나면 레지스터 A, B, C, D에 최종 암호문이 저장된다.

2. 2. 복호화 절차

RC6의 복호화 절차는 암호화의 역과정으로 수행된다. 복호화는 암호문이 저장된 네 개의 w-비트 레지스터 A, B, C, D와 라운드 키 S[0, ..., 2r + 3]를 입력으로 받아 평문을 출력한다. 여기서 w는 워드 크기(비트 단위), r은 라운드 수를 의미한다.

복호화 과정은 다음과 같다.

1. 마지막 라운드 키 뺄셈: 암호화의 마지막 단계에서 더해진 라운드 키 S[2r+3]과 S[2r+2]를 모듈러 2w 뺄셈을 이용하여 각각 C와 A에서 뺀다.

  • `C = C - S[2r + 3]`
  • `A = A - S[2r + 2]`

2. 라운드 반복: i를 r부터 1까지 1씩 감소시키면서 다음 과정을 반복한다.

  • 레지스터 순서 변경: 암호화 시 마지막에 수행했던 레지스터 교환 `(A, B, C, D) = (B, C, D, A)`의 역과정으로 `(A, B, C, D) = (D, A, B, C)`를 수행한다.
  • 임시 변수 t, u 계산: 암호화 과정에서 사용된 것과 동일한 방식으로 t와 u를 계산한다. 여기서 `*`는 모듈러 2w 곱셈, `<<<`는 왼쪽 비트 회전 연산이며, 회전량은 `log2 w` 비트이다.
  • `u = (D * (2D + 1)) <<< log2 w`
  • `t = (B * (2B + 1)) <<< log2 w`
  • C, A 복호화: 암호화 과정의 역순으로 연산을 수행하여 C와 A를 복원한다. `-`는 모듈러 2w 뺄셈, `>>>`는 오른쪽 비트 회전 연산(회전량은 t 또는 u 값의 하위 `log2 w` 비트만큼), `^`는 배타적 논리합(XOR) 연산이다.
  • `C = ((C - S[2i + 1]) >>> t) ^ u`
  • `A = ((A - S[2i]) >>> u) ^ t`

3. 초기 라운드 키 뺄셈: 암호화의 첫 단계에서 더해진 라운드 키 S[1]과 S[0]을 모듈러 2w 뺄셈을 이용하여 각각 D와 B에서 뺀다.

  • `D = D - S[1]`
  • `B = B - S[0]`


모든 복호화 과정이 끝나면 레지스터 A, B, C, D에는 원래의 평문이 저장된다.

3. NSA "임플란트"에서의 사용 가능성

2016년 8월, Equation Group 또는 NSA의 것으로 추정되는 여러 네트워크 보안 장치용 "임플란트" 코드가 공개되었다.[2] 함께 제공된 설명에 따르면, 이러한 프로그램 중 일부는 네트워크 통신의 기밀 유지를 위해 RC6을 사용한다.[3]

4. 라이선스

RC6가 AES로 선정되지 않았기 때문에, RC6 사용에 대한 로열티가 없을 것이라는 보장은 없었다. 2017년 1월 기준으로, RC6 설계자인 RSA Laboratories의 공식 웹사이트 페이지에는 다음과 같은 내용이 명시되어 있었다.[4]

:"우리는 RC6가 AES로 선정될 경우, RSA Security는 해당 알고리즘을 사용하는 제품에 대해 어떠한 라이선스나 로열티 지불도 요구하지 ''않을 것''임을 강조한다."

여기서 'if'(만약)라는 단어의 강조는 RSA Security가 AES로 선정되지 않은 RC6 알고리즘을 사용하는 제품에 대해 라이선스 및 로열티 지불을 요구했을 가능성이 있음을 시사한다. RC6는 특허받은 암호화 알고리즘이었으며(미국 특허 번호 5724428 및 5835600), 해당 특허는 2015년에서 2017년 사이에 만료되었다.

참조

[1] conference On Generalized Feistel Networks Springer 2010
[2] 뉴스 Confirmed: hacking tool leak came from "omnipotent" NSA-tied group https://arstechnica.[...] 2016-08-16
[3] 웹사이트 These instructions guide the INSTALLATION of BLATSTING using ELIGIBLEBACHELOR via NOPEN tunnel. https://github.com/n[...] 2016-08-16
[4] 웹사이트 3.6.4 What are RC5 and RC6? https://www.emc.com/[...] RSA Laboratories 2015-08-02



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com