본문 바로가기
해킹 슈퍼 기초 연습

webgoat rsa 암호

by codeStudyCafe 2024. 9. 24.

서명을 통해서 데이터의 유효성을 판단할 수 있습니다.

유효성 판단

보통 다음과 같은 과정을 거칩니다.

  1. A는 전달하려는 정보(문서, 텍스트 등)을 해시를 합니다.
  2. 공개키를 이용해 정보와 해시 값을 암호화 합니다.
  3. 암호화 된 값을 B에세 보냅니다.
  4. B는 정보를 받으면 개인키로 복호화를 합니다. 그럼 정보와 해시 값이 나옵니다.
  5. 정보를 해시를 해서 받은 해시 값과 일치하면 해당 정보는 변조되지 않은 것입니다.

이번 문제에서는 rsa를 이용해서 해결해야 합니다.

rsa 암호

문제에서 암호 키를 주면 modulus와 

우선 문제에 있는 비밀키를 rsa.txt로 저장해 줍니다.

터미널에서

openssl rsa -in rsa.txt -pubout > public.pub

 

를 실행하면 공개키를 얻을 수 있습니다. window의 경우 powershell로 할 수 있습니다.

cat public.pub를 하면 공개키를 볼 수 있습니다.

 

이제 터미널에

openssl rsa -in public.pub -pubin -modulus -noout

 

를 입력해서 공개키의 Modulus를 획득합니다.

 

modulus= 뒷 부분을 복사한 다음 첫번째 입력 창에 넣으면 됩니다.

 

이제 해시를 만들어 봅시다.

 echo -n "{{아까 얻은 modulus}}" | openssl dgst -sign rsa.txt -sha256 -out sign.sha256
dgst: 메시지 해시를 생성하는 명령
-sign rsa.txt: rsa.txt 파일에 저장된 개인 키를 사용하여 서명을 생성
-sha256: SHA-256 해시 알고리즘을 사용
-out sign.sha256: 생성된 서명을 sign.sha256 파일에 저장

 

이제 인코딩을 합니다.

openssl enc -base64 -in sign.sha256 -out sign.sha256.sha256

 

 

 

enc: 파일의 인코딩을 처리하는 기능.
-base64: Base64 인코딩. 바이너리 데이터를 ASCII 문자열로 변환
-in sign.sha256: Base64 인코딩할 원본 파일로 sign.sha256을 지정합니다.
-out sign.sha256.sha256: 인코딩된 결과를 sign.sha256.sha256라는 새로운 파일에 저장합니다.

 

그렇게 나온 값을 두번째 창에 넣으면 해결할 수 있습니다.

'해킹 슈퍼 기초 연습' 카테고리의 다른 글

webgoat 강의 만들기  (0) 2024.10.11
webgoat 지워지지 않은 암호키  (0) 2024.10.01
webgoat Crypto Basics  (0) 2024.09.19
webgoat CIA Triad  (0) 2024.09.11
webgoat 개발자 도구  (0) 2024.09.07