암호 학습
1. RSA (공개키 암호)
큰 수를 소인수분해 하기 어려운 것을 이용
예시를 들어보자면(위 사진 참고)
앨리스와 밥이 있다.
밥은 소수 두 개 p와 q를 선택한다.
두 소수의 곱은 n이다.(n=p*q)
그리고 오일러 파이 함수를 구한다.
Φ(n) = Φ(pq) = (p - 1) * (q - 1)
밥은 암호화 지수로 Φ(n)와 서로소인 e를 선택한 다음, 복호화지수 d를(확장 유클리드 호제법 사용해) 찾아낸다.
모듈로 n과 암호화지수 e가 밥의 공개키로써 공개가 되고, 복호화 지수 d는 밥의 개인키이므로 비밀로 한다. p,q, Φ(n)도 비밀로 해야한다.
앨리스는 밥에게 메시지를 보낼 때 밥이 공개한 공개키를 사용해 지수 암호로 메시지를 암호화해서 보낸다.
밥은 복호화 지수 d와 공개 모듈로 n으로 모듈로 n에대해 암호문을 d제곱해서 메시지를 복호화할 수 있다.
추가적인 설명)
2. AES (블록 암호)
DES 대체하기 위한 암호 알고리즘
128비트 블록암호
키 사이즈 128, 192, 256비트 -> 키 사이즈에 따라서 반복 횟수 다름
마지막을 제외한 각 라운드 구성은 SubBytes, ShiftRow, MixColum, AddRoundKey로 구성되고
마지막 라운드는 MixColum과정이 빠진 SubBytes, ShiftRow, AddRoundKey로 구성
키 사이즈 128비트라고 생각했을 때
128비트 평문이 들어오면
AddRoundKey 과정에서 128비트 라운드키를 XOR 연산 한다.
SubBytes에서는 State의 각 바이트를 S-box에 따라 다른 바이트로 치환 (비선형성)한다.
ShiftRows 에서는 각 행에 대해 정해진 숫자만큼 왼쪽으로 순환이동한다. -> 선형 변환이며 확산 효과 제공
1행은 그대로, 2행은 1칸, 3행은 2칸, 4행은 3칸
MixColumns 에서도 위와 비슷하지만 열에 대해 특정 행렬과 곱연산을 가한다.-> 선형 변환이며 확산 효과 제공
그러면 마지막 과정으로 AddRoundKey에서는 128비트 state와 128비트 라운드키를 XOR 연산 한다.
복호화 과정은 암호화 과정을 역변환하여 진행하면 된다.
암호 공격
[RSA]
1. 하스타드 어택
n값과 c값이 3개씩 주어지며 e값이 작은 경우 가능
e값은 주로 3으로 주어진다.
2. 위너 어택
e값이 큰 경우 가능
e값이 큰 경우 d값이 작을 확률이 높은데, d가 작다면 이를 쉽게 복구할 수 있다.
참고)
defenit.kr/2019/09/24/Crypto/%E3%84%B4%20Research/RSA_for_CTF/
'Cryptology' 카테고리의 다른 글
[crypto] rememberSWINGCTF (0) | 2020.09.29 |
---|
댓글