개발자 끄적끄적
RC4, A5/1 본문
<RC4>
- RC4는 바이트 단위 스트림 암호로서, 평문 1바이트(8비트)와 키 1바이트가 XOR되어 암호문의 1바이트를 생성한다
- 상태(State)
- RC4는 상태 개념을 사용한다
S[0]. S[1], S[2], ... , S[255]
- 초기화(Initialization) //S값과 K값는 256
- 초기화는 2단계로 수행된다
for(i=0 to 255)
{
S[i] <- i
K[i] <- Key[i mod KeyLength]
}
j<-0
for(i=0 to 255)
{
j<-(j+S[i]+K[i])mod 256
swap(S[i], S[j]
}
- 키 스트림 생성(Key Stream Generation)
- 키 스트림의 키는 한 개씩 생성
i<-(i+1) mod 256
j<-(j+S[i])mod 256
swap(S[i], S[j])
k<-S[(S[i]+S[j])mod256] //K는 사용자가 입력한 키 값
<A5/1>
- 휴대 전화 통신을 위한 네트워크인 Global System for Mobile Communication(GSM)에서 사용된다
- Key stream generator(Secret Key 64bits) -> 1bit -> 288bits(Key stream buffer) -> 228bits(Plaintext frame) XOR 288bits(Key stream buffer) ->228bits(Ciphertext frame)
- 키 생성기(Key Generator)
- A5/1은 18, 22, 23개의 셀을 갖는 세 개의 LFSR을 사용한다
- LFSR 1 : 19bits(x^19 + x^5 + x^2 + x + 1)
- LFSR 2 : 22bits(x^22+x+1)
- LFSR 3 : 23bits(x^23 + x^15 + x + 1)
- 초기화(Initialization)
- 1. 세 개 LFSR의 모든 셀을 0으로 초기화
- 2.다음 코드에 따라 레지스터의 값을 64비트 키로 섞는다
for(i=0 to 63){
Exclustive-or K[i] with the leftmost bit in all three registers
Clock all three LFSRs
}
- 3. 22비트 프레임 넘버를 이용하여 이 과정을 반복
for(i=0 to 21){
Exclusive-or FrameNumber[i] with the leftmost bit in all three registers
Clock all three LFSRs
}
- 4. 100 사이클 동안 전체 생성기를 클럭킹한다
그러나 LFSR은 클럭은 Majority 함수를 이용
for(i=0 to 99){
Clock the whole generator based on the majority function
}
- 문제) 특정 시점에 클럭킹 비트가 1,0,1이다. 어떤 LFSR 클럭(이동)되는가?
- 1=19bit, 0=22bit, 1=23bit 라고하면, majority함수의 결과값은 Majority(1,0,1)=1 -> 가장 많은 값(1)을 만족한다. 따라서 LFSR1과 LFSR3은 이동되고 LFSR2는 이동되지 않는다
- 암호화/복호화(Encryption/Decryption)
- 키 생성기로부터 생성된 비트 스트림 암호문 프레임을 생성하기 위하여 평문프레임과 XOR하기 위한 288비트 키를 형성하기 위하여 버퍼에 저장된다
- 암호화/복호화는 동시에 한 프레임에 대하여 수행된다
<기타(Other Issues)>
- 대칭기 블록이나 스트림 암호를 사용하는 환경은 또 다른 관점에서 논의가 필요하다
<키 관리(Key Management)>
- Alice와 Bob은 대칭키 암호를 이용하여 안전하게 통신을 하기 위하여 그들 사이에 비밀키를 공유하여야 한다
- 만약 커뮤니티에 n명의 구성원이 있다면, 각 구성원은 n-1명과 비밀 통신을 하기 위하여 비밀키가 필요하다
- 그러므로 총 n(n-1)/2개의 비밀키가 필요하다
- 대칭키 암호가 사용되는 환경에서의 또 다른 논점은 비밀키를 생성하는 방법이다
- 다양한 대칭키 암호는 다양한 사이즈의 키를 필요로 한다
- 키는 랜덤하게 선택되어야만 한다
- 이는 난수 생성기에 대한 필요성을 야기한다
'정보보안' 카테고리의 다른 글
현대 블록암호의 이용 (0) | 2023.05.06 |
---|---|
AES(Advanced Encryption Standard) (0) | 2023.04.29 |
라운드(round), DES (0) | 2023.04.17 |