вчора зіштовхнувся з такою ситуацією: якщо на віртуальній машині (локально, на aws тощо) з linux розпочати генерацію пари криптоключів

gpg2 --gen-key

то можна дуже довго просидіти перед екраном з таким от текстом, і в підсумку нічого не висидіти:

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

чому?

для генерації надійних криптоключів потрібна… гхм, випадковість. міру випадковості, що широко застосовується в комп’ютерних технологіях, називають інформаційною ентропією, або ентропією шеннона, або коротко (хоч і не дуже правильно) просто ентропією. звичайні комп’ютери не мають генераторів випадкових чисел*, але можуть «збирати» випадковість, нотуючи час виникнення деяких подій (дискові операції, мережеві повідомлення, ввід з клавіатури й миші). випадковість накопичується, і згодом операційна система її використовує, коли треба.

ось так можна поглянути, скільки ентропії доступно в linux:

watch -n 1 cat /proc/sys/kernel/random/entropy_avail

для генерації пари криптоключів з довжиною основи 2048 біт потрібно приблизно 300 біт інформаційної ентропії. у віртуальної машини доступу до випадкових подій значно менше, ніж у фізичної, тому її резерв ентропії, як правило, значно нижчий — особливо одразу після старту.

що робити?

найпростіше — згенерувати багато дискових операцій! наприклад, в сусідньому терміналі запустити щось подібне (читає весь диск і копіює в нікуди), і дати «покрутитися» кілька секунд:

(sudo) dd if=/dev/sda of=/dev/null status=progress

або щось таке (), щоби уникнути потреби в sudo:

find / | xargs file

…і спостерігати, як зразу пожвавиться накопичував ентропії! можна повертатися до генерації криптоключів.

* це не зовсім вірно; приміром, малинкамає о_О

mailvelope: шифрування пошти на gmail

колись шукав таке, не знайшов… аж ось, вісім років потому, натрапив: втулок для google chrome та firefox для шифрування електронної пошти на gmail за стандартом pgp.

називається mailvelope, налітай!
на gog.com чергова роздача задурно — цього разу obduction, фантастична пригода від компанії, що зробила свого часу легендарний myth…

…чого ви ще тут?!
як я міг цього не знати? монтування файлу як пристрою (loop device) з файловою системою (по суті, файлова система у файлі) за допомогою losetup — це вельми просто:

крок 1. створюємо порожній файл потрібного розміру (128 мб для прикладу):

head -c 128M /dev/zero > /path/to/file

крок 2. шукаємо першу вільну мітку пристрою (/dev/loopX):

losetup -f

крок 3. підключаємо файл file.img як пристрій (для прикладу /dev/loop1):

(sudo) losetup /dev/loop1 /path/to/file.img

крок 4. створюємо файлову систему (ext4 для прикладу):

(sudo) mkfs.ext4 /dev/loop1

крок 5. …і монтуємо пристрій куди треба (/mnt/mount_point):

(sudo) mount /dev/loop1 /mnt/mount_point

користуємося.

коли треба відмонтувати:

(sudo) umount /dev/loop1

коли треба взагалі відключити файл і звільнити мітку пристрою:

(sudo) losetup -d /dev/loop1

бонус! якщо маємо файл з уже створеною файловою системою (тобто крок 4 не потрібен) — тоді кроки 2, 3 та 5 можна об’єднати, бо mount вміє це робити сам:

(sudo) mount -o loop /path/to/file.img /mnt/mount_point

ще один бонус! команди для резервування місця під файл, в порядку спадання швидкості (для порівняння в дужках даю час, що знадобився на моєму ноутбуці з ssd):

  • fallocate -l 128M /path/to/file (3 мс)
  • dd if=/dev/zero of=/path/to/file (208 мс)
  • head -c 128M /dev/zero > /path/to/file (324 мс)

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

термоядерний пароль

гхм, знайшов ось таке: kali linux має пропатчену версію cryptsetup, котра дозволяє додати пароль для «самознищення» зашифрованих розділів диска. як це виглядає: під час завантаження система чекає на пароль для доступу до зашифрованих дисків, але якщо замість пароля доступу набрати інший спеціальний пароль — система нищить защифровані дані.

зненацька захотів зашифрувати якийсь диск з «ядерним» паролем qwerty чи 123456… =)

чому я на це втрапив? бо згадав, що давно треба скинути сховище з паролями pass (~/.password-store) до зашифрованого файлу з реплікацює на dropbox, і монтувати його до потрібної теки за допомогою cryptsetup/luks... навіщо? щоби не кусати лікті, якщо ноут загубиться чи згорить.

m.i.a.b. — identity

час від часу відкриваю для себе якихось знаменитих, але мені зовсім не відомих виконавців і треки завдяки комп'ютерним забавкам… наприклад, ось цез саундтреку project gotham racing 4 для xbox.


гаражні розпродажі в канаді

всі знають, що хокей — національна канадійська розвага. але насправді є ще принаймні одна, котра наближається до хокею за популярністю: гаражні розпродажі (фр. ventes-débarras або ventes de garage).

як і в спорті, тут є свої правила та визначні дати — і зручний сайт з мапою, щоби слідкувати за подіями і не пропустити цікавинку =) головне — не забути зняти трохи готівки, бо це чи не єдиний випадок (разом з kijiji), коли не можна розрахуватися платіжною карткою*.

* хоча потенційно можна переказати гроші interac’ом на телефоні, але далеко не всі погоджуються.
отже, другий день стажування після коледжа.

з місцем стажування мені надзвичайно поталанило: це чималенький стартап (який вже міцно стоїть на ногах) з офісами у сполучених штатах, канаді, аргентині, індії. ціла низка переваг відносно того, де стажуються мої колеги по групі:
  • стаж оплачуваний (що трапляється нечасто);
  • три кроки від метро (це важливо, тому що забудова в північно-американських містах — нещільна, тому відстані зазвичай великі);
  • вільний графік; більшість працівників приходять о 9:00—9:30 і йдуть собі о 16:30—17:00, залежно від родинних обставин чи інших потреб;
  • безкоштовна кухня (кава, чай, молоко, газовані напої, фрукти й овочі, три холодильники різних інгредієнтів для канапок, салати, різні пластівці, печиво тощо);
  • кавова машина! і не якась тарадайка на пігулках, а серйозний апарат;
  • щотижня: день бейглів (сьогодні), день кейтерінгу (п'ятниця); час від часу — день пива або дегустація вин.
роботи поки-що небагато: познайомився з колегами, офісом та тутешніми звичаями, отримав ноутбук з паролями і доступом до всього (о_О), налаштував робоче місце*, переглянув наявну документацію до мережевої інфраструктури, почав читати про ansible (знав, що знадобиться, але зовсім не мав на це часу під час навчання в коледжі) та накидав перший тестовий сценарій (playbook) для архівування конфігурацій пристроїв cisco.

план на найближчі дні:
  • з’ясувати, як обійти помилку архівування у версії ansible 2.8 (старіша, 2.4, працює);
  • повністю автоматизувати сценарій:
    • автоматичне розгортання мінімалістичної віртуальної машини або контейнера з linux + ansible за допомогою vagrant + ansible (бо робочі станції тут переважно на windows);
    • зберігання пароля доступу шифрованому сховищі ansible vault;
    • експорт конфігурацій до централізованого сховища (на сервер sftp, на диск google drive тощо).
* видали професійну ліцензію на mobaxterm, але я за старою звичкою знайшов безкоштовну альтернативу: superputty + kitty.