본문 바로가기

Subject/Crypto

RC4 알고리즘

CTF를 푸는데 RC4 문제가 나왔습니다만


알고리즘에 대해 검색해보니 죄다..




이런 사진과 함께 이상한 외계어로 설명인듯 아닌듯한 설명을 하더군요.

(암호학이라 설명도 암호화 되있는 건지...)



결국 해석하기를 포기하고.. 예제 코드를 보며 이해를 했습니다.



그럼 설명드리겠습니다.


------------------------------------------------


RC4는 입력 값을 두 개 받습니다.


Input: originText(원본 텍스트), key



그리고 나중에  원본 텍스트와 XOR될 sbox[256] 배열(XORKEY) 존재하는데 


입력받은 key값과 함께 더하고 섞는 과정을 통해 랜덤한 값으로 셋팅을 해놓습니다.

(sbox[0~255]={random1, random2, random3 .... random256} )


이 과정은 중요하지 않은 것 같습니다. (랜덤한 값에 규칙이 없고, 단순히 더하고 섞기만 하기 때문에)


다만, key값에 따라 sbox 값이 변한다는 사실만 알면 됩니다.



그렇게 만들어진 sbox값과 원본데이터를 XOR 합니다.

그것이 encrypt Data.



여기서 중요한 사실, key값에 따라 sbox 값이 변한다는 것은

key값이 같으면 XORKEY인 sbox 값도 같다는 얘기입니다.



A XOR B= C

A XOR C= B


XOR 연산 특징에 의해


sbox XOR originText = encrypt Data

sbox XOR encrypt Data = originText



즉, 암호화 함수에 originText 대신 encrypt Data와 key값을 집어넣으면

복호화가 가능합니다.

(암호화 함수는, 단순히 XOR 연산을 수행할 뿐이니까요.)


암호화 함수=복호화 함수



 정리하자면, 


1)key 값이 같으면 XORKEY인 sbox 값이 같다.

2)따라서, 암호화 함수가 복호화 함수로 사용될 수 있다.







'Subject > Crypto' 카테고리의 다른 글

Tools] 존 더 리퍼(John the Ripper)  (0) 2016.07.22