
age v1.3.2
أداة تشفير بسيطة وحديثة وآمنة (ومكتبة Go) بمفاتيح واضحة وصغيرة، بدون خيارات تهيئة، وقابلية للتركيب على نمط يونكس.
age هي أداة تشفير ملفات بسيطة وحديثة وآمنة، وصيغة، ومكتبة Go.
تتميز بمفاتيح صغيرة وواضحة، ودعم ما بعد الكم، وعدم وجود خيارات إعداد، وقابلية تركيب على نمط UNIX.
$ age-keygen -o key.txt
Public key: age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p
$ tar cvz ~/data | age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p > data.tar.gz.age
$ age --decrypt -i key.txt data.tar.gz.age > data.tar.gz
📜 مواصفات الصيغة موجودة في age-encryption.org/v1. صُمم age بواسطة @benjojo و@FiloSottile.
🦀 يوجد تنفيذ بديل متوافق بلغة Rust في github.com/str4d/rage.
🌍 Typage هو تنفيذ بلغة TypeScript. يعمل في المتصفح، وNode.js، وDeno، وBun.
🔑 تُدعم رموز PIV للأجهزة مثل YubiKeys من خلال إضافة age-plugin-yubikey.
✨ لمزيد من الإضافات والتنفيذات والأدوات والتكاملات، اطّلع على قائمة awesome age.
💬 ينطق المؤلف الاسم [aɡe̞] بـ g قاسية، مثل GIF، ويُكتب دائمًا بأحرف صغيرة.
التثبيت
| Homebrew (macOS أو Linux) |
brew install age
|
| MacPorts |
port install age
|
| Windows |
winget install --id FiloSottile.age
|
| Alpine Linux v3.15+ |
apk add age
|
| Arch Linux |
pacman -S age
|
| Debian 12+ (Bookworm) |
apt install age
|
| Debian 11 (Bullseye) |
apt install age/bullseye-backports
(فعّل backports لإصدار age v1.0.0+)
|
| Fedora 33+ |
dnf install age
|
| Gentoo Linux |
emerge app-crypt/age
|
| Guix System |
guix package -i age
|
| NixOS / Nix |
nix-env -i age
|
| openSUSE Tumbleweed |
zypper install age
|
| Ubuntu 22.04+ |
apt install age
|
| Void Linux |
xbps-install age
|
| FreeBSD |
pkg install age (security/age)
|
| OpenBSD 6.7+ |
pkg_add age (security/age)
|
| Chocolatey (Windows) |
choco install age.portable
|
| Scoop (Windows) |
scoop bucket add extras && scoop install age
|
على Windows وLinux وmacOS وFreeBSD يمكنك استخدام الملفات الثنائية المُجمّعة مسبقًا.
- https://dl.filippo.io/age/latest?for=linux/amd64
- https://dl.filippo.io/age/v1.3.2?for=darwin/arm64
- ...
إذا قمت بتنزيل الملفات الثنائية المُجمّعة مسبقًا، يمكنك التحقق من إثباتات Sigsum.
إذا كان نظامك يحتوي على إصدار مدعوم من Go، يمكنك البناء من المصدر.
go install filippo.io/age/cmd/...@latest
المساعدة من مُعبّئي الحزم الجدد مرحّب بها جدًا.
الاستخدام
للحصول على التوثيق الكامل، اقرأ صفحة الدليل age(1).
Usage:
age [--encrypt] (-r RECIPIENT | -R PATH)... [--armor] [-o OUTPUT] [INPUT]
age [--encrypt] --passphrase [--armor] [-o OUTPUT] [INPUT]
age --decrypt [-i PATH]... [-o OUTPUT] [INPUT]
Options:
-e, --encrypt Encrypt the input to the output. Default if omitted.
-d, --decrypt Decrypt the input to the output.
-o, --output OUTPUT Write the result to the file at path OUTPUT.
-a, --armor Encrypt to a PEM encoded format.
-p, --passphrase Encrypt with a passphrase.
-r, --recipient RECIPIENT Encrypt to the specified RECIPIENT. Can be repeated.
-R, --recipients-file PATH Encrypt to recipients listed at PATH. Can be repeated.
-i, --identity PATH Use the identity file at PATH. Can be repeated.
--version Print the version.
INPUT defaults to standard input, and OUTPUT defaults to standard output.
If OUTPUT exists, it will be overwritten.
RECIPIENT can be an age public key generated by age-keygen ("age1...")
or an SSH public key ("ssh-ed25519 AAAA...", "ssh-rsa AAAA...").
Recipient files contain one or more recipients, one per line. Empty lines
and lines starting with "#" are ignored as comments. "-" may be used to
read recipients from standard input.
Identity files contain one or more secret keys ("AGE-SECRET-KEY-1..."),
one per line, or an SSH key. Empty lines and lines starting with "#" are
ignored as comments. Passphrase encrypted age files can be used as
identity files. Multiple key files can be provided, and any unused ones
will be ignored. "-" may be used to read identities from standard input.
When --encrypt is specified explicitly, -i can also be used to encrypt to an
identity file symmetrically, instead or in addition to normal recipients.
مستلمون متعددون
يمكن تشفير الملفات لمستلمين متعددين بتكرار -r/--recipient. سيتمكن كل مستلم من فك تشفير الملف.
$ age -o example.jpg.age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p \
-r age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg example.jpg
ملفات المستلمين
يمكن أيضًا سرد مستلمين متعددين، واحد لكل سطر، في ملف واحد أو أكثر يُمرَّر عبر علامة -R/--recipients-file.
$ cat recipients.txt
# Alice
age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p
# Bob
age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg
$ age -R recipients.txt example.jpg > example.jpg.age
إذا كانت الوسيطة لـ -R (أو -i) هي -، يُقرأ الملف من الإدخال القياسي.
مفاتيح ما بعد الكم
لتوليد مفاتيح هجينة لما بعد الكم، وهي آمنة ضد هجمات الحواسيب الكمومية المستقبلية، استخدم علامة -pq مع age-keygen. قد يصبح هذا هو الافتراضي في المستقبل.
تبدأ هويات ما بعد الكم بـ AGE-SECRET-KEY-PQ-1... والمستلمون بـ age1pq1.... للأسف، يبلغ طول المستلمين حوالي 2000 حرف.
$ age-keygen -pq -o key.txt
$ age-keygen -y key.txt > recipient.txt
$ age -R recipient.txt example.jpg > example.jpg.age
$ age -d -i key.txt example.jpg.age > example.jpg
دعم مفاتيح ما بعد الكم مدمج في age v1.3.0 والإصدارات الأحدث. بدلاً من ذلك، يمكن تثبيت الملف الثنائي age-plugin-pq ووضعه في $PATH لإضافة الدعم إلى أي إصدار وتنفيذ من age يدعم الإضافات. سيعمل المستلمون مباشرة، بينما يجب تحويل الهويات إلى هويات إضافات باستخدام age-plugin-pq -identity.
عبارات المرور
يمكن تشفير الملفات بعبارة مرور باستخدام -p/--passphrase. بشكل افتراضي، يولّد age تلقائيًا عبارة مرور آمنة. تُكتشف الملفات المحمية بعبارة مرور تلقائيًا عند فك التشفير.
$ age -p secrets.txt > secrets.txt.age
Enter passphrase (leave empty to autogenerate a secure one):
Using the autogenerated passphrase "release-response-step-brand-wrap-ankle-pair-unusual-sword-train".
$ age -d secrets.txt.age > secrets.txt
Enter passphrase:
ملفات مفاتيح محمية بعبارة مرور
إذا كان ملف الهوية المُمرَّر إلى -i هو ملف age مشفر بعبارة مرور، فسيتم فك تشفيره تلقائيًا.
$ age-keygen | age -p > key.age
Public key: age1yhm4gctwfmrpz87tdslm550wrx6m79y9f2hdzt0lndjnehwj0ukqrjpyx5
Enter passphrase (leave empty to autogenerate a secure one):
Using the autogenerated passphrase "hip-roast-boring-snake-mention-east-wasp-honey-input-actress".
$ age -r age1yhm4gctwfmrpz87tdslm550wrx6m79y9f2hdzt0lndjnehwj0ukqrjpyx5 secrets.txt > secrets.txt.age
$ age -d -i key.age secrets.txt.age > secrets.txt
Enter passphrase for identity file "key.age":
ملفات الهوية المحمية بعبارة مرور ليست ضرورية لمعظم حالات الاستخدام، حيث أن الوصول إلى ملف الهوية المشفر يعني الوصول إلى النظام بأكمله. ومع ذلك، يمكن أن تكون مفيدة إذا كان ملف الهوية مخزنًا عن بُعد.
مفاتيح SSH
كميزة ملائمة، يدعم age أيضًا التشفير إلى مفاتيح SSH العامة ssh-rsa وssh-ed25519، وفك التشفير بملف المفتاح الخاص المقابل. (لا يُدعم ssh-agent.)
$ age -R ~/.ssh/id_ed25519.pub example.jpg > example.jpg.age
$ age -d -i ~/.ssh/id_ed25519 example.jpg.age > example.jpg
لاحظ أن دعم مفاتيح SSH يستخدم تشفيرًا أكثر تعقيدًا، ويضمّن علامة مفتاح عام في الملف المشفر، مما يجعل من الممكن تتبع الملفات المشفرة إلى مفتاح عام محدد.
التشفير إلى مستخدم GitHub
بدمج دعم مفاتيح SSH مع -R، يمكنك بسهولة تشفير ملف إلى مفاتيح SSH المدرجة في ملف تعريف GitHub.
$ curl https://github.com/benjojo.keys | age -R - example.jpg > example.jpg.age
ضع في اعتبارك أن الأشخاص قد لا يحمون مفاتيح SSH على المدى الطويل، لأنها قابلة للإلغاء عند استخدامها فقط للمصادقة، وأن مفاتيح SSH المخزنة على YubiKeys لا يمكن استخدامها لفك تشفير الملفات.
فحص الملفات المشفرة
يمكن لأمر age-inspect عرض بيانات وصفية حول ملف مشفر دون فك تشفيره، بما في ذلك أنواع المستلمين، وما إذا كان يستخدم تشفير ما بعد الكم، وحجم الحمولة.
$ age-inspect secrets.age
secrets.age is an age file, version "age-encryption.org/v1".
This file is encrypted to the following recipient types:
- "mlkem768x25519"
This file uses post-quantum encryption.
Size breakdown (assuming it decrypts successfully):
Header 1627 bytes
Encryption overhead 32 bytes
Payload 42 bytes
-------------------
Total 1701 bytes
Tip: for machine-readable output, use --json.