Sign & Encrypt 대 Encrypt & Sign - GPG는 무엇을합니까?


3

나는 이미 토론을 읽었습니다. 우리는 서명 - 암호화 또는 암호화 - 서명해야합니까? 그리고 종이 결함 표시 & amp; S / MIME로 암호화, PKCS # 7, MOSS, PEM, PGP 및 XML . 제 질문은 gpg가하는 일과 관련이 있습니다. 이것은 경험적으로 분별하기가 어려웠습니다.

gpg --encrypt --sign <filename>

실행 할 때마다 변경됩니다. (왜?)

@Jens는 이유의 일부가 타임 스탬프가 포함되었다고 설명했습니다. 그걸 없앨 방법이 있습니까? gpg 옵션이 표시되지 않습니다.

옵션의 순서는 아무런 차이가 없으므로, --detach-sign 옵션 (하나의 출력 파일 만 생성됩니다.) 출력이 다음과 같은 것으로 의심됩니다.

\begin{equation}
E_r (msg\  \| \ E_s (\#msg))
\end{equation}

어디에 $E_r$ 수신자의 공개 키를 이용한 암호화, $E_s$ 보낸 사람의 개인 키로 암호화하는 것입니다. $msg$ 메시지입니다. $\#msg$ 메시지의 해시이며 $\|$ 연결입니다. 즉. 이것은 "sign-the-message-then-encrypt"일 것입니다. 이것이 맞습니까?

아니면 대신 :

\begin{equation}
E_r (msg) \  \| \ E_s (\#msg)
\end{equation}

즉, "암호화 - 서명 - 일반 텍스트를 사용합니까?"라고 가정합니다. 아니 "암호화 후 서명하다 - 암호문" ($E_r (msg) \ \| \ E_s (\# E_r (msg))$) 위에서 언급 한 논문의 1.2 절과 상반됩니다.

@Jens는 그것이 실제로 "sign-the-message-then-encrypt"라고 설명했습니다. 그래서 우리는 어떻게 출력을 단일 openpgp 파일 대신에 "일반 텍스트를 사용하여 암호화 한 후 서명"하겠습니까? 두 개의 파일, 하나는 암호화 된 데이터이고 다른 하나는 서명입니까?

또한 필자는 논문 & amp; 매뉴얼을 읽었습니다. 코드 자체가 아닌 다른 부분을 살펴 보겠습니다.

@ Jens는 다음을 제안했다.

echo 'foo' | gpg --recipient [key-id] --encrypt --sign | gpg --list-packets 

나는 그것을 달리고, 나 자신에게 암호화하고 산출을 아래에 찾아 냈다. 누군가 우리에게 말하는 것을 명료하게 해줄 수 있습니까?

[...]
gpg: okay, we are the anonymous recipient.
:encrypted data packet:
    length: unknown
    mdc_method: 2
gpg: encrypted with RSA key, ID 00000000
:compressed packet: algo=2
:onepass_sig packet: keyid C6701618143AFA1E
    version 3, sigclass 0x00, digest 10, pubkey 1, last=1
:literal data packet:
    mode b (62), created 1443494042, name="",
    raw data: 4 bytes
:signature packet: algo 1, keyid C6701618143AFA1E
    version 4, created 1443494042, md5len 0, sigclass 0x00
    digest algo 10, begin of digest d7 3a
    hashed subpkt 2 len 4 (sig created 2015-09-29)
    subpkt 16 len 8 (issuer key ID C6701618143AFA1E)
    data: [4095 bits]

나는 (묻힌) 질문에 대한 답에 여전히 관심이있다.
— Diagon

답변:


5

이것은 경험적으로 분별하기가 어려웠습니다.

gpg --encrypt --sign <filename>

내가 실행할 때마다 바뀐다. (왜?)

여기에는 두 가지 이유가 있습니다.

  1. OpenPGP의 대칭 암호화는 무작위 초기화 벡터 (또는 오히려 고정 초기화 벡터를 가진 비슷한 구조)를 사용합니다.
  2. 서명 생성 타임 스탬프가 포함됩니다.

로그인 & amp; 암호화 대 암호화 & amp; Sign - gpg는 무엇을합니까?

GnuPG는 먼저 메시지에 서명하고 암호화합니다. 다음을 사용하여이를 확인할 수 있습니다. gpg --list-packets:

echo 'foo' | gpg --recipient [key-id] --encrypt --sign | gpg --list-packets

패킷의 순서대로 메시지를 먼저 서명하고 암호화합니다.

내 이해에서 RFC 4880, OpenPGP OpenPGP 메시지는 서명, 암호화, 압축 및 리터럴 데이터가 될 수 있지만 서명은 OpenPGP 메시지에 적용되며 해독 된 메시지도 OpenPGP 메시지를 형성해야합니다.


추가 된 명령 출력 및 (지금까지 매우 도움이되는) 대답에 대한 설명을위한 요청.
— Diagon

@Diagon : 답안의 편집 내용이 요청시 명확한 설명을 위해 사용되지 않으므로 편집이 거부되었습니다. 대신 의견을 사용하거나 원래 질문을 수정하십시오 (그리고 원래 질문의 범위 내에 머물러 있는지 확인하십시오. 그렇지 않으면 새로 질문하십시오).
— Jens Erat

좋아, 나는 그 질문을 편집했다. 게시물에 올리려는 형식화 된 출력을 주석에 포함시키는 것이 가능하지 않기 때문에 이전의 jerry-rigged 솔루션이 가능합니다. 또한, 내 질문은 내 (현재) 질문의 첫 번째 링크에있는 crypto.stackexchange.com 질문과 직접 ​​관련이 있습니다. 따라서 수퍼 유저가 실제로 적절한 장소라고 생각하지 않습니다. 게다가 여기에 라텍스가없는 것 같아요. 그래서 제 질문은 이제 어떤 종류의 문제가되었습니다.
— Diagon

@JensErat 당신은 RFC에서 그것이 암호화 된 & amp; 서명은 허용됩니까? 대단 할 것입니다! 불행히도, 나는 그것을 찾을 수 없습니다.
— efie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.