gpg에 SHA1이 포함되지 않도록 하는 방법은 무엇입니까?

gpg에 SHA1이 포함되지 않도록 하는 방법은 무엇입니까?

apt-get서명이 유효하지 않으며 InRelease파일이 서명되지 않았다고 불평합니다(참조Centos를 사용하여 .deb 패키지에 서명배경으로). 내가 확인한 서버에서는 실제로 서명 gpg되었습니다 InRelease.

모든Debian 9, APT 및 "GPG 오류: ...InRelease: 다음 서명이 유효하지 않습니다:", 다음 작업을 수행해야 합니다.

GPG 기본 설정에서 SHA-1을 제거하려면 $HOME/.gnupg/gpg.conf에서 개별 다이제스트 기본 설정 및 개별 다이제스트 기본 설정을 조정하세요. 이렇게 하면 새 키로 인해 문제가 반복되는 것을 방지할 수 있습니다.

내 담당자 설정을 확인한 후 릴리스 파일(및 InRelease Clearsign 서명)과 개별 패키지 파일 모두에 SHA1이 표시되었으므로 이것이 작동할 것으로 기대합니다.

~/.gnupg/gpg.confdefault-preference-list에 설명된 해싱 알고리즘을 사용한 다음 사용 가능한 경우 먼저 사용할 알고리즘을 나열할 것임을 나타내는 것 같습니다 .

[michael@bigbox ~]$ cat ~/.gnupg/gpg.conf
# Prioritize stronger algorithms for new keys.
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 BZIP2 ZLIB ZIP Uncompressed
# Use a stronger digest than the default SHA1 for certifications.
cert-digest-algo SHA512

man gpg상태:

--personal-digest-preferences string 개인 다이제스트 기본 설정 목록을 문자열로 설정합니다. 사용 가능한 알고리즘 목록을 얻으려면 gpg --version을 사용하고, 기본 설정을 전혀 지정하지 않으려면 none을 사용하세요. GPG는 모든 수신자가 사용할 수 있는 알고리즘만 선택하기 때문에 이를 통해 사용자는 수신자 키 기본 설정에 의해 선택된 알고리즘을 안전하게 무시할 수 있습니다. 이 목록에서 가장 높은 다이제스트 알고리즘은 암호화 없이 서명할 때도 사용됩니다(예: --clear-sign 또는 --sign).

gpg --version실제로 SHA1이 포함되어 있음을 알 수 있습니다 .

michael@bigbox ~]$ gpg --version
gpg (GnuPG) 2.0.22
libgcrypt 1.5.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ?, ?, ELG, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

나에겐 열쇠가 하나뿐이다.

[michael@bigbox ~]$ gpg --list-keys
/home/michael/.gnupg/pubring.gpg
--------------------------------
pub   2048R/542342AE 2018-02-08
uid                  Michael Jones <[email protected]>
sub   2048R/4D73CC3A 2018-02-08

그리고 한번 시도해 보세요...

[michael@bigbox ~]$ gpg --edit-key 542342AE
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

pub  2048R/542342AE  created: 2018-02-08  expires: never       usage: SC
                     trust: ultimate      validity: ultimate
sub  2048R/4D73CC3A  created: 2018-02-08  expires: never       usage: E
[ultimate] (1). Michael Jones <[email protected]>

gpg> setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
Set preference list to:
     Cipher: AES256, AES192, AES, CAST5, 3DES
     Digest: SHA512, SHA384, SHA256, SHA224, SHA1
     Compression: ZLIB, BZIP2, ZIP, Uncompressed
     Features: MDC, Keyserver no-modify
Really update the preferences? (y/N)

아직 SHA1거기 있어?

위에 참고한 포스팅을 참고해주세요Debian 9, APT 및 "GPG 오류: ...InRelease: 다음 서명이 유효하지 않습니다:"personal-digest-preferences규정을 두 번이나 조정해야 했는데 $HOME/.gnupg/gpg.conf, 또 바꿔야 할 부분이 있지 않을까 걱정됩니다.

중요하지 않다고 생각하지만 Centos7을 실행하고 있습니다.

gpg에 SHA1이 포함되지 않도록 하는 방법은 무엇입니까?

답변1

DEB 패키지 및 리포지토리에 관해서는 명시적으로 서명을 생성하는 것에 대해 이야기하고 있습니다. 이는 알려진 수신자 키를 사용하여 메시지를 암호화하고 서명하는 것과 다릅니다. 존재하다그 상황, gpg는 수신자의 주요 기본 설정을 사용자의 로컬 기본 설정과 결합하여 적절한 알고리즘 선택을 개발합니다.

안타깝게도 현재 독립형 서명에 사용할 수 있는 옵션이 많지 않습니다. GPG-2에서도 암호화 알고리즘을 비활성화하는 옵션만 있고 다이제스트(서명) 알고리즘은 비활성화할 수 없습니다.

따라서 당신이 할 수 있는 유일한 일은 기본 설정에서 고정 다이제스트(서명) 알고리즘을 명시적으로 정의하는 것입니다. 왜냐하면저것서명을 만들기 위해 로컬 GPG 설치를 호출할 때 데비안 도구가 사용하는 것입니다. 분명히 이는 서명 알고리즘의 자동 선택을 방해한다는 단점이 있습니다. 이는 이 옵션이 설정되면 SHA1만 지원하는 수신자가 더 이상 서명을 확인할 수 없음을 의미합니다.

어쨌든 다음을 설정하십시오.~/.gnupg/gpg.conf

digest-algo SHA256

어쩌면 거기에 개인 선호도 목록을 넣어야 할 수도 있습니다. 이는 새 키를 생성할 때 기본값에 영향을 미칩니다(그러나 그렇게 해도 당면한 문제가 즉시 해결되지는 않으며 해를 끼치지도 않습니다).

personal-digest-preferences SHA512,SHA384,SHA256,SHA224
default-preference-list SHA512,SHA384,SHA256,SHA224,AES256,AES192,AES,CAST5,3DES,BZIP2,ZIP,ZLIB,Uncompressed

SHA1 및 3DES는 PGP 프로토콜의 최소 공통 분모이므로 소프트웨어에 내장되어 있습니다. 프로토콜의 다른 (약한) 구현과의 상호 운용성을 보장하기 위해 기본 설정 목록 끝에 자동으로 추가됩니다.

바라보다RFC4880 섹션 13.2

SHA1은 반드시 구현해야 하는 해시 알고리즘이므로 목록에 명시적으로 나타나지 않으면 기본값은 끝입니다.

또한 SHA1은 여전히오직V4 지문 생성에 사용/허용되는 알고리즘(참조:섹션 12.2)

이제 다음 단계로 넘어갈 시간이 된 것 같습니다.하지만 표준이 업그레이드되지 않는 한 우리(사용자)가 할 수 있는 일은 많지 않습니다…

답변2

gpg에 SHA1이 포함되지 않도록 방지하는 방법에 대해 답하려면 약한 다이제스트 매개변수를 사용하도록 설정하거나 --weak-digest SHA1gpg.conf에 한 줄을 포함하면 됩니다 weak-digest SHA1.

관련 정보