본문 바로가기

스터디/암호학

(4)
tcp Follow TCP Stream으로 RSA 공개키와 암호문 확인 공개키(n, e), 암호문(c)가 주어졌다. n=306690912829134319005344686555829317139 e=65537c=36791610765900199461745332937 factordb공격으로 p, q값 찾아서 복호화개인키의 단서를 찾아보려 하였으나 도저히 못찾겠던 와중에, n, e, c가 작길래 RsaCtfTool로 크랙을 시도해봤다.n, e, c의 값을 입력해주니 factordb 공격으로 평문을 찾아주고, 개인키도 찾아주었다. n값이 일반적으로 공개키로 사용되는 n값들에 비해 비교적 작은 축에 속하기 때문에 db에 존재하는 소수여서 p, q값을 쉽게 구해서 복호화를 한것같다. 평문 : 0xaef4f1131d583d4d..
암호학 문제 square암호화한 python코드를 보면 p=q인 것을 확인할 수 있다. 따라서 n=p*q=p^2이므로 p, q는 n의 제곱근이다.sqrt()로 n의 제곱근을 구해주었다. 구한 값을 제곱하여 제대로 구해진 것이 맞나 확인해보니, 제곱근이 잘 구해졌음을 알 수 있었다. e 모듈로 phi의 역을 구하는 과정으로 d값을 찾아준 후, c모듈로 phi의 d제곱을 해주어 m값을 구했다. 파이썬에서 pycrypto의 long_to_bytes함수를 이용하여 바이트로 바꿔주었는데, 값이 이상하게 나왔다. phi를 p(p-1)로 바꿔서 다시 FLAG : flag{squarePrime_is_dangerous} rememberSWINGCTF문제의 파이썬 코드에서 p를 임의적으로 선택한 후, q값은 next_prime(p)로..
간단한 암호 문제 풀이 [문제1] easy_e : 낮은 지수 공격 이용 우선 낮은 지수 공격은 암호화 시에 모듈러스 연산의 영향이 없어야 성공할 수 있다. RSA암호화 시 평문 뒤에 padding을 덧붙인 뒤 암호화하는 경우가 많은데, 그렇게 되면 모듈러스 연산에 영향을 받게 되어 낮은 지수 공격이 불가능하다.(따라서 padding을 덧붙이는 것은 현실에서 암호의 해석을 어렵게 하는 것이라고 볼 수 있다.) 그러나 padding이 없고, n에 비해 e가 매우 작을 때는 모듈러스 연산에 영향을 받지 않기 때문에 지수의 크기만큼 역연산을 해주면 평문 M으로 복원된다. gmpy모듈의 root함수로 세제곱근을 구해보자. [gmpy모듈 이용] - e 제곱근 계산gmpy.root(c, e) : 암호문 c의 e제곱근을 구해준다. 이후의 사..
[2주차 스터디] RSA, AES 등 대표적 암호 학습(하스타드 어택, 위너 어택 등) 통신으로 전달되는 암호문은 누구나 접근가능하기 때문에, 해독 및 변조를 어렵게 암호화 해야한다.암호화 방식 중 대칭키 암호(Symmetric Key Encryption), 공개키 암호(Asymmetric Key Encryption, Public Key Encryption)이 대표적인데, 이 둘은 암호화와 복호화키의 동일함의 여부에 차이를 갖는다.사전키 공유방식을 한계로 갖는 대칭키 암호화 방식에는 DES, AES이 해당하고, 복잡한 연산량으로 인한 속도저하를 단점으로 갖는 공개키 암호화 방식에는 RSA, EIGamal이 해당한다. 이번 글에서는 AES와 RSA에 대해 자세히 알아보자. 1. AES(Advanced Encryption Standard)-대칭키 암호화 방식원래 대칭키 암호화 방식으로 사용되던..