AES 암호화 및 BASE64 인코딩을 사용하는 SSH 개인 키의 크기가 지정된 크기보다 작을 수 있는 방법은 무엇입니까?

AES 암호화 및 BASE64 인코딩을 사용하는 SSH 개인 키의 크기가 지정된 크기보다 작을 수 있는 방법은 무엇입니까?

이것은 일부 사람들에게는 분명할 수 있지만 다음을 사용하여 크기 8192의 키를 생성했는지 궁금합니다.

ssh-keygen -t rsa -b 8192

AES 암호화 및 BASE64 인코딩을 사용하는 SSH 개인 키의 크기가 지정된 8192보다 작을 수 있습니까?

크기는 6446입니다.

약간의 압축이 포함되어 있나요?

답변1

8192 rsa 키는8192비트, 바이트가 아닙니다. 1024바이트입니다.

BASE64의 인코딩된 바이트 크기는 4/3배 증가합니다.

$ echo $((1024*8/6))
1365

이는 공개 키 파일의 키 크기와 비슷합니다.

$ awk '{print $2}' rsatest.pub | wc -c
1397

물론 "개인 키 파일"입니다(적어도) 포함:

  1. m 값(공통 계수)
  2. e의 가치
  3. d의 값
  4. p의 값
  5. q의 가치

실제로 여기에는 8개의 (큰 숫자와 작은 숫자) 숫자가 포함되어 있습니다.

cat rsatest | grep -v -- ----- | tr -d '\n' | base64 -d | openssl asn1parse -inform DER

크기는 6363바이트를 포함하도록 4배 이상 증가합니다.

개인 파일 내부를 보는 다른 방법은 다음과 같습니다.

openssl rsa -text -in rsatest

이는 파일에 정수가 포함되어 있음을 나타냅니다.

  • 계수
  • 공개 색인
  • 프라이빗 인덱스
  • 소수 1
  • 소수 2
  • 색인 1
  • 인덱스 2
  • 계수

답변2

RSA 키 길이는 바이트가 아닌 비트로 지정됩니다. RSA 키 모듈로의 길이는 8192비트 또는 1024바이트입니다.

관련 정보