xmr.club
EN 中文 ES RU
← все гайды
гайд · разбор

Старый iPhone как cold storage для Monero — переосмысление «адреса доставки»

Три инцидента с вендорами аппаратных кошельков за 18 дней разбили trust-нарратив вдребезги. **2026-07-30 Coldcard** — 5-летний латентный weak-RNG баг в прошивке позволил атакующему увести ~594 BTC (~$38M) с ~500 кошельков менее чем за 30 минут. **2026-08-13 Trezor** — брешь shipping-провайдера раскрыла полные ФИО + телефон + адрес доставки + email 11 742 клиентов. **2026-08-16 SafePal** — брешь плагина order-tracking раскрыла ещё ~39 798 клиентов, в окне 13 месяцев. Три вендора, три разных вектора — прошивка устройства и две supply-chain PII-утечки — 51 540+ адресов подтверждённых крипто-холдеров на чёрном рынке. Правильная рамка для инцидентов с shipping-address — не риск phishing, а физический риск: домашние вторжения, преследование, похищение, «атака гаечным ключом за $5». Всё, что отправляется на вашу правовую идентичность, приносит этот класс экспозиции с первого дня. Ниже: как использовать старый iPhone как Monero cold wallet — купленный за наличные, air-gapped, визуально неопознаваемый, полностью вне сети адресов доставки.

Почему старый iPhone работает как cold wallet

  • Нет PII в supply-chain. Trezor / Ledger / Cypherock отправляются на ваше имя и адрес — эта запись живёт в fulfillment-стеке вендора (и теперь на чёрном рынке). Подержанный iPhone, купленный за наличные у незнакомца, — устройство, которое ни один вендор не связывает с крипто-холдером.
  • Визуально неопознаваем. Аппаратный кошелёк в ящике кричит «кошелёк». Старый iPhone в ящике — это телефон. Вор, знающий ваш адрес, не знает, что нужно требовать именно это устройство.
  • Secure Enclave. iPhone с 6s имеют Secure Enclave — усиленное хранилище ключей, архитектурно сопоставимое с тем, что несут выделенные аппаратные кошельки.
  • Повсеместность + доступность запчастей. Если устройство умирает или батарея вздувается, замена в любой мастерской, за наличные, без таможенной записи.
  • Air-gap тривиален. Авиарежим + отключённый Wi-Fi + отключённый Bluetooth + вынутая SIM = устройство, которое не может exfiltrate seed, пока вы намеренно не включите сеть.

Sourcing — правило «наличные + б/у»

  1. Покупайте наличными, лично, у частного продавца. Avito / Craigslist / Facebook Marketplace / ремонтная мастерская — цель: устройство, которое никогда не касалось вашей идентичности или карточной записи.
  2. Подойдёт любая модель от iPhone 6s / SE (1st gen) вверх — Secure Enclave присутствует. iPhone SE (2/3-е поколение) — sweet spot: дёшево, компактно, всё ещё поддерживается.
  3. Factory-reset перед использованием. Настройки → Основные → Перенос или сброс iPhone → Стереть контент и настройки.
  4. Пропустите настройку Apple ID. Когда Setup Assistant просит войти, выберите «Настроить как новый iPhone», затем откажитесь от Apple ID («Забыли пароль или нет Apple ID?» → «Нет Apple ID» → «Настроить позже»). Ваш cold wallet не должен быть привязан к реальному Apple ID.
  5. Если нужно установить кошелёк через App Store, создайте одноразовый Apple ID с masked-email (SimpleLogin, addy.io) без метода оплаты. Установите кошелёк, выйдите из одноразового Apple ID перед генерацией seed.

Air-gap настройка

  1. Авиарежим ON.
  2. Wi-Fi OFF — отдельно, в Настройки → Wi-Fi.
  3. Bluetooth OFF — Настройки → Bluetooth.
  4. SIM извлечена. Нет cellular attack surface.
  5. Авто-обновления OFF. Настройки → Основные → Обновление ПО → Автообновления → OFF. Обновляйте вручную по вашему графику, на доверенном Wi-Fi, потом возвращайтесь к air-gap.
  6. Privacy hardening. Отключите Siri, аналитику, геолокацию, Handoff.
  7. Храните устройство offline когда не подписываете. Faraday pouch — overkill; ящик достаточен. Батарея: заряд ~60% для хранения; проверяйте дважды в год.

Варианты кошельков для iOS + air-gap

  • Cupcake Wallet (основной выбор для airgap-стороны). Построен командой Cake Wallet ровно для этого паттерна. Слоган буквально: *"Your old phone? Your new hardware wallet."* Open-source + audited + бесплатно, iOS + Android, парится с Cake Wallet через QR restore. Airplane-mode-safe by design — без аккаунтов, без сетевой зависимости после установки. Это то приложение, которое гайд описывал ещё до появления Cupcake; используйте его вместо самодельной airgap-signer конфигурации.
  • Cake Wallet на online-стороне. iOS-нативный XMR-кошелёк как view-only companion на вашем повседневном устройстве — видит баланс, строит unsigned tx, передаёт QR в Cupcake для подписи, broadcast обратно. Одна семья, одна команда, спроектированы работать вместе.
  • Альтернатива — Feather (desktop) как online-сторона. Лучший desktop UX для view-only + offline signing. iPhone-с-Cupcake остаётся signer; Feather на ноутбуке заменяет Cake как online-драйвер, если вам удобнее desktop для tracking + tx-building.
  • Альтернатива — Monero GUI на спаренном offline ноутбуке. Если предпочитаете подписывать на ноутбуке, пропустите Cupcake — iPhone станет online view-only, hardened offline Mac / Linux — signer. Больше возни чем через Cupcake; используйте только при конкретной причине.
  • НЕ используйте: browser-extension кошельки, custodial мобильные кошельки, всё, что требует cloud backup во время setup.

Что мы проверили в коде Cupcake (RNG-аудит)

Разумный вопрос в reply-треде: был ли код Cupcake пере-аудирован против класса атаки Coldcard после инцидента? Мы потратили сессию читая релевантные пути в github.com/cake-tech/cupcake. Находки:

  • Cupcake не реализует собственный RNG для генерации wallet-seed. Monero-seed генерируется через FFI в C++ библиотеку monero-project/monero (monero.Wallet_createPolyseed() в lib/coins/monero/creation/new_wallet.dart). Bitcoin/Litecoin-seed через стандартный Dart-пакет bip39 плюс Random.secure() из Dart, который маршрутизирует к OS-уровневому CSPRNG — SecRandomCopyBytes на iOS, SecureRandom на Android.
  • Всё security-relevant использование RNG корректно применяет Random.secure(). Подтверждено в verify_seed_view_model.dart (перемешивание опций), random_name.dart, и flutter_secure_storage_value_outcome.dart (генерация 64 байт).
  • Есть два использования Random() (non-secure) — verify_seed_view_model.dart:25 выбирает индекс для того чтобы СПРОСИТЬ у пользователя какое слово (безопасно: атакующий предсказавший индекс ничего не выигрывает, пользователь всё равно должен знать слова), и ui_playground.dart (dev-only файл, не в production-путях).

Что это значит для вопроса Coldcard. Класс атаки Coldcard таргетировал device-side RNG в прошивке конкретного hardware-кошелька (см. /guides/hardware-wallets-for-monero-after-coldcard). Тот же класс атаки затронул бы Cupcake только если upstream Monero-библиотека или пакет bip39 несут ту же слабость — что было бы экосистемным событием, затрагивающим все кошельки на этих библиотеках (Monero GUI, Feather, Monerujo, Cake, Cupcake, все). Собственная attack surface Cupcake — это FFI-мост к C++ библиотеке Monero, стоит смотреть, но это не RNG-баг класса Coldcard.

Не замена профессиональному аудиту. Это чтение кода curator-side против конкретного вопроса, не формальный security review. Cupcake опубликовал предыдущий профессиональный аудит на сайте; публичного заявления команды Cake о пере-аудите после Coldcard у нас нет — если нужно, пишите support@cakewallet.com и делитесь ответом. И спросите того, кто задал вопрос — хороший инстинкт.

Канонический flow: view-only + air-gap signing

  1. Сгенерируйте seed на air-gapped iPhone (Cake Wallet → new wallet → запишите seed на металл offline). Никаких фото, никакого iCloud, никакого AirDrop.
  2. Экспортируйте view-only key из offline кошелька.
  3. Передайте view-only key на online устройство через QR (offline iPhone показывает QR, online устройство сканирует).
  4. Online устройство теперь видит баланс + строит unsigned tx — но не может тратить.
  5. Отправка: собираете unsigned tx онлайн → QR → offline iPhone сканирует и подписывает → offline iPhone генерирует QR подписанной tx → online сканирует и broadcast.
  6. Проверьте destination address на offline iPhone перед подписью. Malware на online устройстве может подменить адрес между «вставили» и «подписали». Offline устройство — последняя линия обороны.

Почему это побеждает Trezor в опсеке адреса доставки

Двухколонный reframe. Аппаратный кошелёк в ящике сегодня даёт атакующему:

  • Запись доставки, связывающую ваше имя + телефон + адрес с «владеет криптой».
  • Видимое устройство, идентифицирующее, какой софт / формат seed требовать под принуждением.
  • Brand-name attack surface — каждый firmware CVE, каждая утечка клиентской базы, каждая phishing-кампания предварительно нацелены на вас.

Air-gapped iPhone, купленный за наличные, в том же ящике даёт атакующему:

  • Ничего.

Подход iPhone не побеждает Trezor в криптографической безопасности — оба сильны. Он побеждает в threat-model surface, где аппаратные кошельки тихо перестали быть самым безопасным вариантом.

Прецедент — это не новая идея

Паттерн предшествовал утечке Trezor 2026-08-13. On-chain-исследователь ZachXBT — референс по forensics украденной крипты — публично рекомендовал его в своём Telegram-канале (пост набрал 88.3K просмотров), дословно:

«Hot take: Все аппаратные кошельки — полный мусор, и я не советую использовать их для важных задач вроде подписания транзакций или хранения средств. Гораздо лучше иметь отдельный iPhone единственная цель которого — быть вашим hardware wallet. Ledger — худший, а Ledger Live регулярно обновляет UI/приложения без причин, ломая простые действия.»

Утечка Trezor усилила аргумент: раньше case для separate-iPhone был про firmware trust и UX вендора; теперь тот же паттерн также закрывает shipping-address surface. Если самый активный исследователь украденной крипты был на этой позиции месяцами, а данные утечки теперь поддерживают его по основаниям, которые он даже не выдвигал, паттерн стоит взять всерьёз.

Ловушки

  1. Принудительные iOS-обновления после EOL. Apple прекращает security updates через ~5–7 лет для модели. Планируйте update cadence на доверенном Wi-Fi.
  2. App Store account entanglement. Если вошли под реальным Apple ID при setup, устройство связано с вашей идентичностью в Apple fulfillment. Factory reset + burner Apple ID.
  3. Вздутие батареи при долгом хранении. Литий не любит стоять на 100% или 0% годами. Храните ~60%; проверяйте дважды в год.
  4. Ловушка «в каком приложении настоящий seed». Если ставите несколько wallet apps для теста — seed confusion реальна. Wipe между тестами, потом чистый setup.
  5. Screenshot в неправильном приложении. Screenshot seed-экрана живёт в Photos, синхронится в iCloud если включён — и хоронит весь setup.
  6. Face ID на seed-view экране. Удобно. Также удобно атакующему, держащему устройство к вашему лицу, пока вы спите. Passcode-only на signer.

Когда это НЕ правильный паттерн

  • Маленькие балансы / активные траты. Hot wallet на повседневном телефоне ок для < 1 XMR.
  • Пользователи, которые не будут поддерживать процесс. Дисциплина air-gap — это и есть security-свойство. Если включите Wi-Fi «на минутку» — модель рушится.
  • Team / multisig setup. Multisig с аппаратными кошельками разных вендоров, юрисдикций и людей — сильнее single-device iPhone airgap.
  • Если у вас уже работающий Ledger / Trezor workflow. Не меняйте ради смены. Добавьте ротацию адреса доставки (PO box, drop shipper, mail forwarding) перед следующим заказом — и закроете большую часть shipping-address gap без смены кошелька.

Cross-refs куратора

Picks

  • Cupcake Wallet — Airgap-signer app от команды Cake Wallet ровно для этого паттерна. Слоган: "Your old phone? Your new hardware wallet." Open-source + audited + iOS/Android. На старом iPhone.
  • Cake Wallet — iOS-нативный XMR-кошелёк на online-стороне; парится с Cupcake через QR restore. Одна команда, спроектированы работать вместе.
  • Feather — Альтернативный desktop-драйвер на online-стороне. iPhone-с-Cupcake остаётся signer; Feather заменяет Cake для view + tx.
  • Monero GUI — Если предпочитаете подписывать на ноутбуке, пропустите Cupcake — Mac/Linux offline как signer.
  • Monerujo — Android-альтернатива если под рукой старый Android вместо iPhone; тоже может driver Cupcake на Android.