일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- pwnable
- wargame
- 정보처리기사 실기
- Pwnable.kr
- System
- Buffer Overflow
- 네트워크
- Shell code
- 운영체제
- hacking
- BOF
- LOB
- OS
- SQL
- Spring
- webhacking.kr
- Lord of BOF
- 정보보안기사
- Payload
- stack overflow
- PWN
- 웹해킹
- system hacking
- 워게임
- webhacking
- Operating System
- Spring MVC
- 해킹
- 정보보안기사 실기
- Spring Framework
- Today
- Total
DongDD's IT
[Cryptography] Stream Cipher - RNG, RC4 본문
[Cryptography] Stream Cipher - RNG, PRNG, RC4
Random Number
- Stream cipher에서 사용되는 Key stream을 생성하는데 사용
TRNG
- 실제로 랜덤성을 가진 source를 이용하여 random bit stream 생성
PRNG
- Seed를 입력으로하는 알고리즘을 사용하여 random bit stream 생성
- 공격자가 Seed를 알고 있을 경우, 해당 Seed를 이용해 같은 random number 재생성
1. Requirements
- Randomness : random number처럼 보여야함(uniformity, scalability, consistency)
- Unpredictability : Random한 수들의 규칙을 보고 앞, 뒤의 random number를 예측할 수 없어야함
- Seed : 예측 불가능하고 안전해야함
PRF
- 고정된 길이의 random bit stream 생성
Natural Random Noise
- 위에서 설명한 방법도 결국 완전한 Random number는 아니고 Random number처럼 보이게 해주는 Pseudo일 뿐임
- 실제적으로 random number를 발생하기 위해 Real World에 존재하는 여러가지의 natural randomness를 이용하여 random number를 발생시킬 수 있음
- 복합적인 source들을 이용하는 방법
Stream Cipher
Stream Cipher
- bit 단위(stream)으로 message 암호화
- pseudo random keystream 사용
- plaintext와 key stream을 xor하여 암호화/복호화
RC4
- byte-oriented stream cipher
- 다양한 key 길이
- web의 SSL/TLS에 사용되었고 무선 환경의 WEP/WPA에 사용되었음
1. RC4 Key 생성(초기 단계)
1 2 3 4 5 6 7 | for i = 0 to 255: S[i] = i T[i] = K[i % keylen] j = 0 for i = 0 to 255: j = (j + S[i] + T[i]) % 256 swap(S[i], S[j]) | cs |
- Byte 단위의 256개 배열 S와 T 생성
- S는 각 index 값으로 초기화
- T는 키를 반복하여 채움
- 0부터 255의 index를 반복하며 j = (j+S[i]+T[i])%256으로 설정하고 S[i]와 S[j] swap
2. RC4 Encryption
1 2 3 4 5 6 7 8 | i=0 j=0 for message: i = (i + 1) % 256 j = (j + S[i]) % 256 swap(S[i], S[j]) t = (S[i] + S[j]) % 256 Ci = Mi XOR S[t] | cs |
- i를 1씩 증가시켜가며 message의 길이만큼 반복
- j는 초기화 했던 S의 S[i]를 더해주며 반복
- S[i]와 S[j] swap
- t는 (S[i] + S[j]) % 256의 값으로 설정
- 평문의 i index와 S[t]를 xor하여 암호문 생성
3. Security
- 대부분의 공격에는 안전하다고 되어있음
- RC4는 key를 재사용하지 않음
- WEP가 안쓰이게 된 이유에는 RC4의 문제보다는 key를 잘못 사용했기 때문이라는 말이 있음
'IT 보안 > Cryptography' 카테고리의 다른 글
[Cryptography] Diffie-Hellman, ECC (0) | 2018.12.20 |
---|---|
[Cryptography] Public Key Cryptography - RSA (0) | 2018.12.15 |
[Cryptography] Modes of Operation(블록 암호 운용 모드) (0) | 2018.11.24 |
[Cryptography] AES(Advanced Encryption Standard) (0) | 2018.11.22 |
[Cryptography] DES(Data Encryption Standard) (0) | 2018.10.17 |