Jane Street ASIC 리버스 엔지니어링 도전 해결기
원제: Solving the Jane Street reverse engineering challenge
왜 중요한가
전문 EDA 도구 없이 ASIC 역분석 과정을 공개해、칩 설계 리터러시 확산과 오픈소스 툴체인의 가능성을 보여준다。
소프트웨어 엔지니어 Jestoph가 금융사 Jane Street가 공개한 ASIC 리버스 엔지니어링 챌린지를 약 1개월에 걸쳐 독학으로 해결했다。챌린지는 GDS 파일로 제공된 칩 설계를 역분석해 동작을 파악하는 내용으로、Python 라이브러리 gdstk 등을 활용해 해석을 진행했다。
Jane Street는 정기적으로 기술 챌린지를 공개하고 있으며、이번 챌린지는 ASIC(Application-Specific Integrated Circuit)의 GDS 파일을 역분석해 칩의 동작을 해명하는 과제였다。Jane Street의 공식 블로그 게시물 「Can you reverse Engineer an ASIC?」이 배경 자료로 제공됐다。
작성자 Jestoph는 사전 조사 없이 파일 탐색을 시작했다。GDS 파일 내에서 'clk'(클럭), 'rst'(리셋), 'VGND'(접지 전압), 'VPWR'(전원 전압) 등의 키워드와 sky130_fd_sc_hd__로 시작하는 논리 소자 요소를 발견했다。Python 라이브러리 gdstk를 이용해 워밍업 퍼즐 GDS 파일을 읽은 결과、27개의 셀이 포함된 것을 확인했다。
또한 본 챌린지용 VCD 파일을 분석하기 위해 간단한 C 프로그램을 작성했고、출력 결과로 'TRY AGAIN'이라는 ASCII 문자열을 얻어 회로 내부에 메시지가 내장되어 있음을 확인했다。
그 과정에서 SQLite3를 백엔드로 사용한 자체 회로 시뮬레이터를 Python으로 구현했다。나아가 하드웨어 기술 언어 파서、테스트 하네스 등을 자체 제작하는 등 수 주에 걸친 우회 개발을 거쳤으며、최종적으로 파형 뷰어는 오픈소스 도구 'Surfer'를 활용해 대체했다。전체 코드는 GitHub에 공개되어 있다。