Pytania dotyczące podpisywania kodu SHA-2

3

Przede wszystkim jest to moje pierwsze doświadczenie z podpisywaniem kodu .

Kupiłem Standard Code Signing od Certum na 3 lata.

Jest oparty na SHA-2 :

Zabezpieczona SHA-2 funkcji

Wszystkie są normalnymi plikami wykonywalnymi Windows ; dla użytkowników końcowych, zarówno przenośnych, jak i instalatorów.

Pytania:

  1. Mając na uwadze, że certyfikat został wydany 10. 10. 2016 r., Tj. Po 1. 1. 2016 r., Czy ma to jakoś wpływ na zachowanie podpisu? Pytam o to w imieniu czytania o wycofaniu SHA-1 , np .:

    1 stycznia 2016 r. - produkty Microsoft, w tym Internet Explorer i Chrome, przestaną ufać certyfikatom SHA-1 Code Signing ( źródło )

  2. Czy powinienem także znacznik czasu? Do czego to służy? Czy są jakieś wady znacznika czasu? Znalazłem to, co tak naprawdę nie wyjaśnia rzeczy:

    Znacznik czasu powinien być stosowany, jeśli podpis ma być używany (w celu potwierdzenia autentyczności autora dokumentu lub autora danych) w długim okresie, tj. Dłużej niż jeden lub kilka dni. ( Źródło )

  3. Przypuśćmy, że porzucę obsługę systemów XP i Vista, czy podpis SHA-2 będzie działał poprawnie w systemie Windows 7? Czytałem na DigiCert, że obsługa podpisywania kodu SHA-2 w Windows 7 jest częściowa:

    Szczegółowa kompatybilność systemu operacyjnego: Windows 7 Partial ( Source )

  4. Nastąpiło spustoszenie w przypadku krzyżowego podpisywania SHA-2 (w szczególności SHA-256) i SHA-1 . Przypuśćmy, że jak już powiedziałem, nie będę już obsługiwał WinXP i Visty, czy potrzebuję tego?

LinuxSecurityFreak
źródło

Odpowiedzi:

7

Mając na uwadze, że certyfikat został wydany 10. 10. 2016 r., Tj. Po 1. 1. 2016 r., Czy ma to jakoś wpływ na zachowanie podpisu? Pytam o to w imieniu czytania o wycofaniu SHA-1, np .:

Nie zrobi tego.

Czy powinienem także znacznik czasu? Do czego to służy? Czy są jakieś wady znacznika czasu?

Sygnatury czasowe są dowodem strony trzeciej, że podpis został faktycznie wykonany w określonym czasie i nie był jedynie wynikiem cofnięcia zegara komputera.

Zatem podstawowym zastosowaniem znaczników czasu jest udowodnienie, że podpis został złożony przed wygaśnięciem certyfikatu - lub, co ważniejsze, przed jego unieważnieniem.

Na przykład, jeśli ktoś wycieknie z prywatnego klucza podpisu i unieważni swój certyfikat, zwykle oznacza to, że wszystkie podpisy wykonane za jego pomocą (przeszłość i przyszłość) staną się nieważne. Jednak sygnatury oznaczone znacznikiem czasu mogą pozostać ważne, ponieważ wiadomo, że zostały złożone przed odwołaniem.

Wycofanie SHA-1 w Windows Authenticode wydaje się również używać znaczników czasu, dzięki czemu stare programy podpisane przy użyciu SHA-1 nadal będą wyświetlać się jako poprawnie podpisane, jednocześnie uniemożliwiając każdemu po odcięciu się od nowych podpisów „randkowania wstecznego”.

Ponieważ istnieje wiele bezpłatnych i publicznych organów ds. Oznaczania czasu, nie ma powodu, aby tego nie robić.

Przypuśćmy, że porzucę obsługę systemów XP i Vista, czy podpis SHA-2 będzie działał poprawnie w systemie Windows 7?

Nastąpiło spustoszenie w przypadku krzyżowego podpisywania SHA-2 (w szczególności SHA-256) i SHA-1. Przypuśćmy, że jak już powiedziałem, nie będę już obsługiwał WinXP i Visty, czy potrzebuję tego?

Po pierwsze, należy zauważyć, że SHA-1 / SHA-2 jest zaangażowany w kilku miejscach - jest używany osobno, gdy wystawiający certyfikat CA podpisuje twój certyfikat, i kiedy podpisujesz rzeczywisty plik wykonywalny (a nawet gdy organ znaczników czasu podpisuje Twój podpis). Innymi słowy, istnieje łańcuch podpisów, a każdy z nich ma swój własny skrót.

Możliwe jest również, że podpisy na certyfikatach są sprawdzane przez inny kod niż podpisy na plikach wykonywalnych, a jeden może obsługiwać SHA-2, podczas gdy drugi nadal tego nie robi.

Tak więc rzeczywista sytuacja jest taka, że ​​system Windows XP SP3 w pełni obsługuje certyfikaty podpisane przy użyciu SHA-2, po prostu nie obsługuje plików wykonywalnych podpisanych przy użyciu SHA-2. Jest to wspomniane w KB 968730 , także w tym poście TechNet .

Jednak w Authenticode możliwe jest dodawanie wielu podpisów do tego samego pliku wykonywalnego (inaczej podpisywanie podwójne lub podpisywanie zagnieżdżone), dzięki czemu możesz mieć podpis oparty na SHA-1 dla starszych systemów i podpis oparty na SHA-2 dla nowszych.

Za pomocą osslsigncodemożesz najpierw zrobić podpis SHA-1 za pomocą -h sha1, a następnie uruchomić go ponownie za pomocą, -nest -h sha256aby dodać podpis SHA-2. To samo działa z signtool sign /as /fd sha256 /td sha256(dołącz podpis). Na przykład, nocne kompilacje PuTTY są podwójnie podpisane i działają na wszystkich wersjach systemu Windows, pomimo użycia certyfikatu SHA-256.

(Nie liczę tutaj XP SP2 i starszych, ponieważ, cóż.)

grawitacja
źródło
Tak więc w przypadku chcę do datą i tylko z sha256, by to zrobić, zakładając Mam importowany certyfikat do mojego lokalnego repozytorium: signtool sign /fd SHA256 /a /tr http://time.certum.pl "Test.exe"?
LinuxSecurityFreak
1
Inną zaletą znaczników czasowych jest to, że podpisana weryfikacja nadal przejdzie, nawet po wygaśnięciu certyfikatu. Jeśli więc teraz oznaczysz datą, Twoja aplikacja będzie nadal działać za 4 lata
Matthew Steeples