보관소에 서명 할 수 있습니까?


15

openssl을 사용하여 pub / prv 키를 만들고 파일의 서명을 만들고 유효성을 검사했습니다. 나는 Cryptophane (windows gnupg frontend)을 가지고 놀았으며 키 서버에 대해 듣고 서명 텍스트로 연주했습니다.

그러나 파일 아카이브에 서명 한 적이 없습니다. 보관소 (7z, rar 또는 zip, 중요하지 않음)를 게시하고 싶은데 사용자 또는 소프트웨어가 해당 보관소에 서명했는지 확인하려면 어떻게해야합니까? 공개 키는 공개적으로 사용 가능해야합니다. 그러나 서명을 아카이브에 추가하는 것이 나를 귀찮게합니다. 소프트웨어 + 아카이브로 압축 된 아카이브 파일에 서명하고 확인할 수 있습니까?


왜 서명하고 싶습니까? SHA1 해시를 만들어 클라이언트 / 사용자가 확인할 해시를 만들 수 있습니다. 파일이 변경되지 않았 음을 확인하기에 충분합니다. 사용자는 해시를 확인할 수 있어야하지만 서명을 확인하는 것 이상은 아닙니다.
BJ292

@ BJ292 : 해시 가 변조되지 않았 는지 어떻게 확인 합니까?
user1686

@ grawity-확실하지 않습니다-해시를 변경하는 요점은 무엇입니까? 파일과 해시를 보냅니다. 파일에서 해시를 다시 만들어 일치하는지 확인하면 파일이 변경되지 않았 음을 확인합니다. 대부분의 상황에서 이것은 대부분의 사람들이 원하는 것입니다-파일이 A에서 B로 바뀌지 않았다는 확인. OP와 같은 것이 확실합니다.
BJ292

3
@ BJ292 : OP가 우발적 인 데이터 손상에만 관련되어 있다고 가정합니다. 이것은 질문에 언급되지 않았거나 거부되었지만 OP는 디지털 서명에 대해 묻기 때문에 의도적 (악의적 인) 데이터 수정 으로부터 보호해야한다고 가정 합니다.
user1686

1
@ BJ292 : 파일이 다른 ppls 사이트에서 미러링됩니다. 거울에

답변:


10

일반적인 방법은 파일 에서 분리 된 서명작성하고.sig (보통 gpg -b– X.509 를 사용하여 PGP 서명 은 매우 드물게) 두 파일을 동일한 위치에 제공하는 것입니다. 예를 들면 다음과 같습니다.

ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2
ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2.sig

이 파일은 모든 종류의 파일과 함께 사용할 수 있지만 사용자는를 사용하여 수동으로 서명을 확인해야 gpg --verify합니다.


불행하게도, 현재 사용중인 사람들 가운데 에 아카이브 형식은 (내가 아는) 에 대한 지원이 없습니다 내장 된 서명 PGP 또는 X.509를 사용하여. (이것은 Windows가 내부적으로 사용하지만 실제로는 다른 곳에서 사용되며 서명하기가 다소 어려운 CAB은 제외합니다.) WinRAR 4는 독점 형식을 사용하여 "인증 확인"레코드를 추가 할 수 있었지만 WinRAR 라이센스를 서명 키로 사용하여 반복적으로 크랙되었습니다. (업데이트 :이 기능은 불안정하여 WinRAR 5에서 제거되었습니다 .)


Windows (및 곧 Mac OS X)에서는 "자체 압축 풀기 아카이브"(자체 내부에서 아카이브를 추출하는 디지털 서명 된 실행 파일)를 만들 수 있습니다. 이는 Windows의 소프트웨어 설치 프로그램이 작동하는 방식입니다. 그러나 SFX는 단일 운영 체제로 제한되므로 문서 나 그림이 아닌 프로그램 배포에만 적합합니다 . (Java 프로그램에 서명하고 크로스 플랫폼 일 수 있지만 여전히 Java 런타임이있는 시스템은 거의 없습니다.)


2

Javas jar-tool로 빌드 된 Jar-archives는 효과적으로 zip-Archives이며, jarsigner라는 도구가 있습니다.

유용한 링크는 다음과 같습니다.

처음에는 약간 복잡해 보이지만 ( "무엇을, keeytool이 필요합니까? 다른 것?") 간단한 방법으로 해결하기위한 단계를 따르는 것이 쉽습니다. 효과가있다. 그럼 당신은 그 문제에 더 깊이 빠져들 수 있습니다.


이것은 (XPI 아카이브도 매우 유사한 방식으로 서명 ZIP 파일입니다) 사실이지만, AFAIK 만 자바 런타임 실제로 확인 JAR 서명을하고, 수동 검증을 할 필요하면 그것은 더 적은 실제 GnuPG는 이상합니다.
user1686 2016 년

무슨 소리 야 manual verification? 대안은 무엇입니까? 10 분마다 자동 확인되는 자동 팝업? 부팅시 OS가 자동으로 아카이브를 확인해야합니까? 보관 파일을 받으면 CD, 이메일 첨부 파일, 다운로드 파일 등으로 보관됩니까? 바이러스 스캐너의 플러그인이어야합니까?
사용자가 알 수 없음

추출 전 / 중에 아카이브 추출 도구 또는 프로그램 실행 중 OS / 런타임에 의해 검증이 수행되었음을 의미했습니다. 예를 들어, .deb패키지 서명은 사용자가 추가 작업을 수행 하지 않고dpkg 패키지를 설치하기 전에 확인됩니다 .
user1686 2016 년

@grawity : jar에 압축 된 서명 된 애플릿은 실행 전에 확인됩니다. 검증 (jarsigner)과 추출 (jar)을 결합한 최소한의 쉘 스크립트를 생성하는 것은 쉽지 않습니다.
사용자 알 수 없음

세 번째 링크 "jar 파일 서명에 대한 위키"가 깨짐
Jason S

0

서명 된 소프트웨어를 설치할 때마다 서명 된 아카이브를 확인해야합니다. 하나를 만들려면 개발자가 사용하는 것과 동일한 패키징 도구를 사용해야합니다. 크로스 플랫폼 호환성에 대한 몇 가지 장단점이 있습니다. 크로스 플랫폼에 서명 한 자동 압축 풀림 보관 파일을 만드는 방법을 생각할 수 없습니다.

Windows의 경우 iexpress 도구를 사용하여 자동 압축 풀기 아카이브를 작성한 후 여기에 설명 된대로 signtool.exe를 사용하여 서명 하십시오 . 사용자가 파일을 두 번 클릭하면 친숙한 창이 확인 메시지를 표시하여 사용자를 아카이브 게시자로 식별합니다.


-1

다음 두 명령으로 jarsigner를 사용하여 파일에 서명 할 수 있습니다.

keytool -genkeypair -alias <key-alias> -keyalg RSA -keystore <keystore> -validity 180

jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore <keystore> <file-to-sign> <key-alias>

PC에 java jdk를 설치해야합니다.

-첫 번째 명령은 현재 디렉토리에 키 저장소를 작성합니다 (아직없는 것으로 가정). 알고리즘 SHA-256을 사용하여 공개 / 개인 키 쌍을 생성합니다.

두 번째는 동일한 알고리즘, 키 저장소 및 첫 번째 알고리즘에서 생성 된 별명을 사용하여 파일에 서명합니다.

키 저장소를 사용하여 서명 된 파일을 확인하려면 다음 명령을 실행할 수 있습니다.

jarsigner -keystore <keystore> -verify -verbose -certs <file-signed>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.