나는 이미 토론을 읽었습니다. 우리는 서명 - 암호화 또는 암호화 - 서명해야합니까? 그리고 종이 결함 표시 & 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]