봄수의 연구실

RC4란 무엇인가 본문

Computer Science/Security

RC4란 무엇인가

berom 2023. 4. 2. 14:57

RC4

  • 암호 시스템은 바이트 단위로 작동하며, 다양한 크기의 키를 사용하는 스트림 암호란 무엇인가이다
  • 암호화 알고리즘에는 랜덤 치환에 기초해서 만들어졌다
  • SSL/TLS, WEP, WPA 프로토콜에 상요 된다.

RC4 알고리즘

상태 벡터 S 초기화

상태 벡터 S 초기화는 RC4 알고리즘에서 가장 먼저 수행되는 과정입니다.
상태 벡터 S는 0부터 255까지의 정수를 원소로 가지며, 각 원소는 8비트 숫자입니다.

초기화 과정은 다음과 같이 이루어집니다:

  1. 상태 벡터 S를 초기화합니다. 처음에는 S[i] = i (0 <= i <= 255)로 설정합니다. 즉, S[0] = 0, S[1] = 1, …, S[255] = 255입니다.
  2. 주어진 키를 사용하여 상태 벡터 S의 원소들을 섞습니다. 길이가 1~256 바이트인 키를 사용하며, 이 키를 바탕으로 S의 원소들을 서로 치환하는 과정을 거칩니다.
    • 키를 확장하여 256바이트 길이로 만든 후, 상태 벡터 S와 함께 사용하여 원소들을 섞습니다. 이 과정에서 한 개의 인덱스 변수 j가 사용되며, j는 다음과 같이 갱신됩니다
      • j = (j + S[i] + 키 확장 배열[i % 키 길이]) % 256
      • (RC4는 키의 길이가 255를 초과하는 것을 허락하지 않는다)
    • 이후, S[i]와 S[j]를 교환합니다.
  3. 초기화가 완료되면, 이 상태 벡터 S는 키 스트림 생성을 위한 기본 구조로 사용됩니다.

상태 벡터 S 초기화는 키를 기반으로 원소들이 섞인 상태 벡터를 생성하는 과정으로, 이를 통해 암호화와 복호화에 사용되는 키 스트림이 준비됩니다.

상태 벡터 초기화의 요점

  • 키 배열 생성
    • 키 K가 256 바이트이면, 임시 벡터에 T에 바로 저장
    • 키 K가 256이하이면, T가 찰 때까지 반복해서 K 요소 저저장
  • 상태 벡터 S 초기화
    • S[0 ~ 255] = 0~255로 1:1 매핑해서 값을 채운다
  • 상태 벡터 S 완성
    • S[i]와 S[j]를 반복적으로 swap
    • j : S[i]와 T[i]와 j를 모듈러 합 연산하여 구한 인덱스

스트림 생성


스트림 생성 단계는 즉 아래와 같다

  • i 값을 1 증가시킵니다.
  • j 값을 S[i]와 j의 값을 더한 값으로 계산합니다.
  • S[i]와 S[j]의 값을 교환합니다.
  • t 값은 S[i]와 S[j]의 값을 더한 값으로 계산합니다.
  • 스트림의 다음 바이트는 S[t]입니다.

초기화 과정에서는 S를 무작위로 설정하여 강력한 암호화를 보장하였다면, 이제는 생성된 스트림을 이용하여 S를 계속 수정한다.

레퍼런스

부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

728x90

'Computer Science > Security' 카테고리의 다른 글

메시지 인증 방법은 무엇인가  (0) 2023.04.02
암호 블록 운용 모드  (0) 2023.04.02
스트림 암호란 무엇인가  (0) 2023.03.31
난수란 무엇인가  (0) 2023.03.31
의사 난수  (0) 2023.03.30