RC4
- 암호 시스템은 바이트 단위로 작동하며, 다양한 크기의 키를 사용하는 스트림 암호란 무엇인가이다
- 암호화 알고리즘에는 랜덤 치환에 기초해서 만들어졌다
- SSL/TLS, WEP, WPA 프로토콜에 상요 된다.
RC4 알고리즘
상태 벡터 S 초기화
상태 벡터 S 초기화는 RC4 알고리즘에서 가장 먼저 수행되는 과정입니다.
상태 벡터 S는 0부터 255까지의 정수를 원소로 가지며, 각 원소는 8비트 숫자입니다.
초기화 과정은 다음과 같이 이루어집니다:
- 상태 벡터 S를 초기화합니다. 처음에는 S[i] = i (0 <= i <= 255)로 설정합니다. 즉, S[0] = 0, S[1] = 1, …, S[255] = 255입니다.
- 주어진 키를 사용하여 상태 벡터 S의 원소들을 섞습니다. 길이가 1~256 바이트인 키를 사용하며, 이 키를 바탕으로 S의 원소들을 서로 치환하는 과정을 거칩니다.
- 키를 확장하여 256바이트 길이로 만든 후, 상태 벡터 S와 함께 사용하여 원소들을 섞습니다. 이 과정에서 한 개의 인덱스 변수 j가 사용되며, j는 다음과 같이 갱신됩니다
- j = (j + S[i] + 키 확장 배열[i % 키 길이]) % 256
- (RC4는 키의 길이가 255를 초과하는 것을 허락하지 않는다)
- 이후, S[i]와 S[j]를 교환합니다.
- 키를 확장하여 256바이트 길이로 만든 후, 상태 벡터 S와 함께 사용하여 원소들을 섞습니다. 이 과정에서 한 개의 인덱스 변수 j가 사용되며, j는 다음과 같이 갱신됩니다
- 초기화가 완료되면, 이 상태 벡터 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 |