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.