wget, но передайте его в bash, только если SHA256 скрипта соответствует однострочному

Теперь это может быть исправлено. При ошибке # 1495097 вы найдете ссылку на PPA с версией libhunspell-1.3-0, которая исправляет аналогичные сбои в 14.04.

7
задан 3 April 2017 в 22:11

12 ответов

Итак, вы хотите загрузить и запустить http://example.com/install.sh.

На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:

sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt

Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).

Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"

Немного укороченная и уродливая версия без пробелов:

t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"

Размещено на нескольких строках для удобочитаемости:

t=$(mktemp) && 
wget 'http://example.com/install.sh' -qO "$t" && 
if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt 
    then bash "$t" 
    else echo FAIL 
fi 
rm "$t"

Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]

Объяснение:

Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.

Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.

На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.

3
ответ дан 23 May 2018 в 00:00
  • 1
    Это отлично работает! Я заметил, что ваш неуправляемый однострочный заголовок '^\w+ ' вместо '^\w+', который не работает. Единственное, что мне не хватает, это указать хэш SHA256 изнутри однострочного. Есть ли более чистый способ сделать это, чем h=$(mktemp); t=$(mktemp); echo '14b652ef7e7a5b3ae92351ee9695bce956a904db562f16a7c48cfcd3f4b7c937' > $h; wget 'https://example.com/install.sh' -qO "$t" && if sha256sum "$t" |grep -Eo '^\w+' |cmp -s $h ; then bash "$t" ; else echo ERROR: Invalid SHA256 hash ; fi ; rm "$t"; rm "$h";? – maqp 4 April 2017 в 09:02
  • 2
    В моем случае есть условие гонки для системного компрометации от точки загрузки пользователем install.sh до точки install.sh убивает сетевые интерфейсы. Ручная загрузка программы / ключа / подписи, импорт ключей, проверка подписи, распаковка, навигация и выполнение install.sh тратят много времени. Однострочный SHA256 добавляет доверие между загрузками, но изменения для каждой версии моей программы. Поэтому мне очень нужен один лайнер с прикрепленным отпечатком пальца PGP, который загружает и импортирует ключ, сравнивает отпечаток пальца, а затем загружает install.sh и его подпись, проверяет файл, а затем pipe install.sh в bash. – maqp 4 April 2017 в 09:34
  • 3
    @maqp Я до сих пор не совсем понимаю, какова ваша настоящая цель и почему вы устанавливаете себе такие необычные ограничения. Может быть, было бы полезно, если бы вы могли поделиться большей картиной о том, что вы собираетесь делать? Я также могу посоветовать вам посетить чат , возможно, проще иметь быстрый диалог для разъяснения там и получить информацию от многих людей. – Byte Commander 4 April 2017 в 23:28
  • 4
    Кажется, я понял: gpg --keyserver pgp.mit.edu --recv-keys <GPG pub key SHA1 fingerprint> && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh – maqp 5 April 2017 в 15:29
  • 5
    @maqp Возможно, вы хотите опубликовать это как отдельный ответ для лучшей удобочитаемости? Ограниченные варианты форматирования в комментариях здесь немного сложны. – Byte Commander 28 February 2018 в 14:13

Итак, вы хотите скачать и запустить http://example.com/install.sh.

на данный момент я предполагаю, что у вас есть свои sha256 хэш локально сохранены в файле под названием my-sha256.txt. Файл содержит только хэш-и Unix-стиля linebreak характер, поэтому ее размер должен быть ровно 65 байт. Вы можете создать его, выполнив это:

sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt

как вы распределите этот хэш-файл на своей машине разработки клиент не является частью этого ответа (еще, можно уточнить Ваш вопрос и попросить обновить эту часть на основе ваших подробных спецификаций).

фактическая команды ваш клиент должен работать для того, чтобы скачать, проверить, и при успешном выполнении скрипта может выглядеть так:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"

немного сокращен и уродливую версию без пробелов:

t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"

размещен на несколько строк для удобочитаемости:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt then bash "$t" else echo FAIL fi rm "$t"

если вы хотите, чтобы непосредственно обеспечить хеш внутри командной как строки, а не значение из файла, просто используйте один из моих оригинальной версии, и заменить в наступлении my-sha256.txt с [F8] и вводить ваши реальные хэш вместо "YOUR_HASH" заполнитель конечно.

объяснение:

сценарий/сценарий сначала создается временный файл, используя на [F9] (используется папка Temp системы /tmp). Затем он использует [F11], чтобы загрузить ваш скрипт установка из указанного URL и сохранить его в файл Temp. Сейчас мы можем вычислить его хеш-сумму, фильтра только хэш-значение с выхода [F12] и сравните, что у нас хранится в [от f13]. Если оба хэши равны, мы будем ссылаться на bash с нашими временный файл скрипта в качестве аргумента, то мы [с f15] или вы могли бы вывести настраиваемое сообщение об ошибке. В конце концов мы очистить, удалив наш временный файл в обоих случаях.

[однако Д16], возвращаясь к проблеме безопасного распространения хэш для проверки оригинальный сценарий, это решение выше не поможет вам много, так как он решает одну проблему, создавая еще один из того же рода.

[dиода d17], что вы действительно должны сделать, это создать пару ключей gpg (и опубликовать свой открытый ключ на сервер ключей), подписывают свой скрипт с ним и предложить сжатого подписал бинарных для скачивания. Затем пусть клиент проверить и расшифровать скрипт еще раз, используя gpg и запустить его на успех.[!dиода d17]
3
ответ дан 18 July 2018 в 15:35

Итак, вы хотите загрузить и запустить http://example.com/install.sh.

На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:

sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt

Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).

Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"

Немного укороченная и уродливая версия без пробелов:

t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"

Размещено на нескольких строках для удобочитаемости:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt then bash "$t" else echo FAIL fi rm "$t"

Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]

Объяснение:

Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.

Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.

На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.

3
ответ дан 24 July 2018 в 20:40

Итак, вы хотите загрузить и запустить http://example.com/install.sh.

На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:

sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt

Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).

Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"

Немного укороченная и уродливая версия без пробелов:

t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"

Размещено на нескольких строках для удобочитаемости:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt then bash "$t" else echo FAIL fi rm "$t"

Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]

Объяснение:

Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.

Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.

На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.

4
ответ дан 31 July 2018 в 11:14

Итак, вы хотите загрузить и запустить http://example.com/install.sh.

На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:

sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt

Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).

Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"

Немного укороченная и уродливая версия без пробелов:

t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"

Размещено на нескольких строках для удобочитаемости:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt then bash "$t" else echo FAIL fi rm "$t"

Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]

Объяснение:

Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.

Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.

На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.

4
ответ дан 31 July 2018 в 12:15

Итак, вы хотите загрузить и запустить http://example.com/install.sh.

На данный момент я предполагаю, что ваш SHA256-хэш хранится локально в файле с именем my-sha256.txt. Файл содержит только сам хеш и символ разрыва в стиле Unix, поэтому его размер должен быть ровно 65 байтов. Вы можете создать его, просто выполнив это:

sha256sum ORIGINAL_FILE.SH | grep -Eo '^\w+' > my-sha256.txt

Как вы распространяете этот хеш-файл с вашей машины разработки на клиента, не является частью этого ответа (но вы можете уточнить свой вопрос и попросить меня обновите эту часть на основе ваших подробных спецификаций).

Фактическая команда, которую должен выполнить ваш клиент для загрузки, проверки и успешного выполнения сценария, может выглядеть так:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt ; then bash "$t" ; else echo FAIL ; fi ; rm "$t"

Немного укороченная и уродливая версия без пробелов:

t=$(mktemp)&&wget 'http://example.com/install.sh' -qO"$t"&&if sha256sum "$t"|grep -Eo '^\w+'|cmp -s my-sha256.txt;then bash "$t";else echo FAIL;fi;rm "$t"

Размещено на нескольких строках для удобочитаемости:

t=$(mktemp) && wget 'http://example.com/install.sh' -qO "$t" && if sha256sum "$t" | grep -Eo '^\w+' | cmp -s my-sha256.txt then bash "$t" else echo FAIL fi rm "$t"

Если вы хотите напрямую предоставить хэш внутри команды в качестве строки вместо чтения из файла, просто используйте одну из моих исходных версий команд выше и замените появление my-sha256.txt на <(echo YOUR_HASH), вставив ваш реальный хэш вместо «YOUR_HASH» заполнителя, конечно. [ ! d7]

Объяснение:

Сценарий / однострочный файл сначала создает временный файл, используя mktemp (использует временную папку системы /tmp). Затем он использует wget, чтобы загрузить скрипт установки из указанного URL-адреса и сохранить его во временном файле. Теперь мы вычисляем его хэш-сумму, фильтруем только хэш-значение из вывода sha256sum и сравниваем это с тем, что мы сохранили вне my-sha256.txt. Если оба хэша равны, мы будем вызывать bash с нашим временным файлом сценария в качестве аргумента, иначе мы echo FAIL, или вы можете вывести собственное сообщение об ошибке. В конце мы очищаем, удаляя наш временный файл в обоих случаях.

Однако, возвращаясь к проблеме безопасного распространения хэша для проверки исходного скрипта, это решение выше вам не поможет, поскольку он решает одну проблему, создавая еще один такой же тип.

На самом деле вам нужно создать пару ключей GPG (и опубликовать свой открытый ключ на сервере ключей) подпишите свой скрипт и предложите сжатый подписанный двоичный файл для загрузки. Затем позвольте клиенту проверить и расшифровать скрипт с помощью gpg еще раз и запустить его с успехом.

4
ответ дан 31 July 2018 в 23:41

Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды

gpg --export <key ID> | sha256sum

:

h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;

0
ответ дан 23 May 2018 в 00:00

Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды

gpg --export <key ID> | sha256sum

:

h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;

0
ответ дан 18 July 2018 в 15:35

Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды

gpg --export <key ID> | sha256sum

:

h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;

0
ответ дан 24 July 2018 в 20:40

Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды

gpg --export <key ID> | sha256sum

:

h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;

0
ответ дан 31 July 2018 в 11:14

Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды

gpg --export <key ID> | sha256sum

:

h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;

0
ответ дан 31 July 2018 в 12:15

Поскольку отпечатки пальцев GPG используют небезопасный хэш SHA-1, вот однострочный, который позволяет аутентификацию с помощью неофициального хэша SHA256, вычисленного из открытого ключа с помощью команды

gpg --export <key ID> | sha256sum

:

h="<SHA256 hash of exported public key>"; fp="<PGP key SHA1 fingerprint>"; f='key.pub'; gpg --keyserver pgp.mit.edu --recv $fp && gpg --export $fp > $f && if sha256sum $f | grep -Eo '^\w+' | cmp -s <(echo $h); then rm $f && wget https://example.com/install.sh{,.asc} -q && gpg --verify install.sh{.asc,} && bash install.sh; else rm $f; echo "ERROR: Signing key had invalid SHA256 hash"; fi;

0
ответ дан 31 July 2018 в 23:41

Другие вопросы по тегам:

Похожие вопросы: