Credit

What is Sage?

Sage (SageMath)는 파이썬 기반의 수학 프로그래밍 언어로, 복잡한 수학 문제를 해결할 때 쓰인다.

Sage가 많이 사용되지 않는 이유는 수학을 전문적으로 계산할 일이 없기도 하고, document가 죄다 수학 영단어로 도배돼 있어 진입장벽이 높다는 점이 있다.

이런 관점에서 해킹에서 Sage를 사용하는 것이 좋은 분야는 암호학이다.

Why do we use Sage?

Sage는 “수학” 프로그래밍 언어 답게, 행렬, 고차 방정식, 특수한 수 체계에서의 연산 등 수많은 수학적 도구들을 사용하기 편리하게 모두 구현해두었다. 이런 점에서 까다로운 연산을 요구하는 암호학에서 유용하게 사용된다. 이미 구현되어 있어 편리하게 사용할 수 있으며,

하지만 리버싱 분야에서도 간간히 쓰인다. 문제를 ‘해결’하는 것보다 문제를 ‘이해’하는 것이 중요한 Real-World에서는 거의 쓰이지 않지만 문제를 ‘해결’하는 것이 주된 목표인 CTF계에서는 Sage를 종종 이용한다.

가령 쉬운 CTF 문제에서는 간단한 역연산을 하여 풀리는 문제가 있으나 문제의 난이도가 점점 어려워질수록 역산하는 것이 어려워진다. 이때 역산하는 데 상당한 수준의 수학 문제가 출제될 수 있는데, 이럴 때 사용된다. [ref1][ref2]

How do we use Sage?

공식 사이트에 접근하여 다운로드 할 수 있다. Windows 및 Linux에서 구동할 수 있다. 보통 CTF 암호학 문제는 Python File로 제작되어 소스 코드를 알아볼 수 있게 출제되고, 알다시피 Python File은 모든 머신에서 구동 가능하다.

따라서 우리는 Windows 및 Linux에서 모두 제약 없이 Sage를 사용 가능 하지만, 접근성과 편의성의 차이에 따라 Windows에서 구동하는 것을 추천하는 바이다.