На сьогоднішній день, коли я використовую gpg2
(встановлений через Homebrew) на своєму Mac (10.12.1), я бачу таке попередження:
Warning: using insecure memory!
Щодо того варто, я бачу таку саму поведінку на двох різних машинах: Mac mini (кінець 2012 р.) Та MacBook Pro (кінець 2012 р.), Обидві версії 10.12.1.
Як говориться в FAQ GnuPG :
GnuPG намагається заблокувати пам'ять, щоб жоден інший процес не міг бачити її, і пам'ять не буде записана на обмін. Якщо з якихось причин це не вдається зробити (наприклад, певні платформи не підтримують такий спосіб блокування пам’яті), GnuPG попередить вас, що він використовує незахищену пам’ять.
Хоча майже завжди краще використовувати безпечну пам’ять, не обов'язково погано використовувати незахищену пам’ять. Якщо ви є власником машини, і ви впевнені, що це не містить шкідливих програм, то це застереження, ймовірно, може бути проігноровано.
Що мене бентежить, це те, що gpg2
не змінилося з 12 вересня 2016 року . У мене з тих пір була встановлена версія 2.0.30 більш-менш, але сьогодні я почав бачити це попередження про незахищену пам’ять. Незважаючи на те, що gpg2
формула не змінилася з 12 вересня 2016 року, я можу точно сказати, що я робив на обох машинах до початку перегляду цього попередження brew update && brew upgrade
. Але я навіть не впевнений, як це може вплинути на це; враховуючи те, що говорить FAQ GnuPG, схоже, що це має щось більше спільного з блокуванням ОС та пам'яті.
... І що ще дивніше - це те, що я також gpg1
встановив з Homebrew (версія 1.4.21), що не попереджає про незахищену пам'ять, коли я її використовую:
$ gpg1 --require-secmem
gpg: Go ahead and type your message ...
^C
gpg: Interrupt caught ... exiting
$ gpg2 --require-secmem
Warning: using insecure memory!
gpg: will not run with insecure memory due to --require-secmem
Обидва бінарні файли належать одному власнику та групі та мають однакові дозволи:
-r-xr-xr-x 1 adamliter admin 681932 Dec 10 18:06 /usr/local/Cellar/gnupg2/2.0.30_2/bin/gpg2
-r-xr-xr-x 1 adamliter admin 929352 Aug 17 09:21 /usr/local/Cellar/gnupg/1.4.21/bin/gpg1
Я просто спробував перевстановити програму gpg2
Homebrew: і за допомогою попередньо складеного двійкового файлу, і за допомогою побудови джерела форми, але це нічого не змінює. Я все ще отримую попередження про використання небезпечної пам’яті.
Більше того, навіть виготовлення бінарного файлу gpg2 має перевернути встановлений корінь (як це пропонується, наприклад , тут ), не зникає повідомлення; він все ще попереджає про використання небезпечної пам'яті.
Хтось знає, що могло змінитись так, що я сьогодні раптом почав бачити це попередження? І чому я бачу це під час використання gpg2
двійкового, а не gpg1
двійкового?
Інша, можливо, відповідна інформація:
$ which gpg1
/usr/local/bin/gpg1
$ ls -al /usr/local/bin/gpg1
lrwxr-xr-x 1 adamliter admin 31 Aug 17 17:42 /usr/local/bin/gpg1 -> ../Cellar/gnupg/1.4.21/bin/gpg1
$ which gpg2
/usr/local/bin/gpg2
$ ls -al /usr/local/bin/gpg2
lrwxr-xr-x 1 adamliter admin 34 Dec 10 18:06 /usr/local/bin/gpg2 -> ../Cellar/gnupg2/2.0.30_2/bin/gpg2
Оновлення
Я думаю, що причина цього відбувається в новій версії libgcrypt
. Я досі не знаю, чому це відбувається, але я майже впевнений, що це хоча б першопричина проблеми. Формула libgcrypt
була тільки оновлена сьогодні для 1.7.4 шишка; це пояснило б, чому я бачу це на двох різних комп'ютерах після brew update && brew upgrade
. Це також пояснило б, чому це не відбувається gpg1
, оскільки gpg1
не покладався на зовнішню libgcrypt
криптографічну бібліотеку, натомість використовуючи власну інтегровану криптографічну бібліотеку.
Крім того, я також gpg2
встановив з MacGPG Suite, який не виявляє цієї проблеми і пов'язаний з іншою версією libgcrypt
:
$ /usr/local/MacGPG2/bin/gpg2 --version
gpg (GnuPG/MacGPG2) 2.0.30
libgcrypt 1.6.6
Copyright (C) 2015 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.
$ gpg2 --version
gpg (GnuPG) 2.0.30
libgcrypt 1.7.4
Copyright (C) 2015 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.
Тому я здогадуюсь, що це, мабуть, звіт про помилки для обслуговуючого персоналу libgcrypt
. Я опублікую їхній список розсилки, але поки що покину це тут, на випадок, якщо хтось інший натрапить на ту саму проблему та / або на випадок, якщо хтось інший знає, чому саме це відбувається. Якщо я отримаю підтвердження після того, як надішлю повідомлення в їхній список розсилки, що це помилка, я проголосую за закриття цього питання.
gpg1
та gpg2
і (ii) Я контролював пам'ять на своєму комп’ютері при тестуванні цього, і є багато невикористаної пам'яті коли я бачу попереджувальне повідомлення. Я думаю, що я локалізував корінь проблеми, але я все ще не впевнений, чому це відбувається. Оновіть питання через секунду.