gpg rehberleri ve yazisma güvenliğinde hiyerarşik değişiklikler

pull/77/head
AA 4 years ago
parent d0690343d4
commit 978e10257b
Signed by: AA
GPG Key ID: 471A839AB4DD8E6D
  1. 15
      src/yazisma_guvenligi/gpg/gpg.md
  2. 394
      src/yazisma_guvenligi/gpg/gpg_gelismis_anahtar_uretimi.md
  3. 97
      src/yazisma_guvenligi/gpg/ucbirim_gpg.md
  4. 0
      src/yazisma_guvenligi/mailvelope.md
  5. 3
      src/yazisma_guvenligi/thunderbird_enigmail.md
  6. 114
      src/yazisma_guvenligi/ucbirim_eposta.md

@ -0,0 +1,15 @@
# GnuPG veya GPG Nedir?
## Buradan başlayın
* [Kolay GPG anahtar üretimi](gpg-anahtar-uretimi.md)
* [Gelişmiş GPG anahtar üretimi](gpg_gelismis_anahtar_uretimi.md)
* [GPG anahtar yönetimi](anahtar-saklama.md)
* [GPG ile uçbirimde işlemler](ucbirim_gpg.md)
* [GPG ile e-posta şifreleme](yazisma_guvenligi/openpg.md)

@ -0,0 +1,394 @@
# İleri Anahtar Üretimi
GPG, RSA algoritmasına dayalı asimetrik şifreleme kullanmaktadır. RSA anahtar çiftinin uzun dönem kullanılması ve hali ile saklanması gereklidir. Bu bakımdan hem üretimi hem de saklanması bakımından dikkat gösterilmesi gereklidir. Özellikle şifreleme ihtiyacınız mahremiyet beklentisini aşıp güvenlik gerektiren durumlara yönelik ise anahtar üretimi gibi kritik bir aşamayı olabilecek en az etmen ve şüphe ile yürütmek gerekmektedir.
## Güvenli ortam
Anahtarın üretimi sırasında kullanılan bilgisayar çok önemli bir girdinin kaynağıdır. Entropi, yani cihazınızda anahtar üretimi sırasında kullanılacak rastgeleliğin kalitesi bilgisayarınız ve işletim sisteminize bağlıdır. Aynı zamanda bilgisayarınızda kötücül bir yazılımın çalışmaması veya bilmediğiniz bir açığın söz konusu olması durumunu da göz önünde bulundurmanız faydalı olabilir. Sonuç olarak tehdit modeliniz bu tip sorunları kapsamıyor olsa bile bir kere üretip belki hayatınız boyunca kullanacağınız bir anahtarı çok kolay tedbirler altında üretmenin bir zararı da yoktur.
Şayet bu amaçla rastgele bir konumdan nakit ödeme ile bir bilgisayar alıp tüm ağ araçlarını söküp asla İnternet'e bağlamamayı gerektirecek bir tehdit modeliniz yok ise yapabileceğiniz en kolay ve etkili yöntem bir USB bellek üzerinden [Tails](https://tails.boum.org) başlatarak anahtarınızı bu işletim sistemi üzerinde üretmeniz olacaktır.
[Tails rehberinin yazılmasına katkı verebilirsiniz](https://git.oyd.org.tr/oyd/guvenlik/issues/46)
Bir diğer seçenek ise anahtarınızı bir güvenlik donanımı olan [Gnupg akıllı kart](https://www.floss-shop.de/en/security-privacy/smartcards/13/openpgp-smart-card-v3.3?number=654010) veya [Yubikey](https://www.yubico.com/products/) üzerinde üretmektir. Bu yöntemin faydası güvenlik donanımından başka bilgisayarın hiç bir sistemi anahtarla temas etmemiş olacaktır. Tüm kriptografik işlemler bu cihaz üzerinde güvenli olarak gerçekleşeceğinden birden fazla cihazda güvenli şekilde anahtarınızı kullanmak da kolaylaşmaktadır. Akıllı kart üzerinde anahtar oluşturmanın kötü tarafı ise yedekleme imkanınızın olmamasıdır. Şayet kartınızı kaybeder veya bir sebepten bozarsanız anahtarınız sonsuza kadar şifrelediğiniz verilerle birlikte kaybolacaktır. Akıllı kart kullanmak ama yedek de almak istiyorsanız anahtarınızı bilgisayarda üretip ardından akıllı karta yüklemeniz de mümkündür.
[Akıllı kart ve Yubikey rehberi yazarak bu rehbere katkı verebilirsiniz](https://git.oyd.org.tr/oyd/guvenlik/issues/59)
## Anahtarı Planlamak
### Anahtar işlevleri
Bir GPG anahtarı 4 temel işlev taşıyabilir. Bunlar; sertifika, şifreleme, imzalama, yetkilendirmedir.
* Sertifika: Başka anahtarları imzalamak için gereken işlevdir.
* Şifreleme: Anahtar ile şifreleme yapmak için gereken işlevdir.
* İmzalama : Mesaj veya dosyaların bütünlüğünü ve aitliğini kanıtlamak için gereken imzanın atılabilmesi için gereken işlevdir.
* Yetkilendirme: SSH ve benzeri sistemlerde kimlik kanıtlayarak yetkilendirme almak için gereken işlevdir.
GPG anahtarları bir tane ana anahtar ve çeşitli sayıdaki alt anahtardan oluşur. Sertifika yetkisi ana anahtara ait olmakla birlikte şifreleme, imzalama ve yetkilendirme yetkileri ana anahtara veya alt anahtarlara verilebilmektedir.
### Sertifika yetkisinin önemi
Anahtar sayısı ve yetkilerini değerlendirirken sertifika yetkisi önemlidir. GPG bir şifreleme yazılımı olduğu kadar kimlik yönetimi de sağlamaktadır. Sertifika yetkisi GPG kullanıcısının diğer kullanıcıların anahtarlarını imzalayarak [güven ağı](https://en.wikipedia.org/wiki/Web_of_trust) oluşturulmasını sağlamakta ve alt anahtarlara duyulan güveni de getirmektedir. Bu bakımdan alt anahtarların ifşa olması gibi olumsuz bir durumda ana anahtarın korunabilmiş olması yeni alt anahtarların eski güven ağı kaybedilmeden tekrar oluşturulmasına imkan sağlamaktadır.
Günlük kullanımda sertifika yetkisi özellikle gerekli değildir. Keza alt anahtarlara ait olan şifreleme imzalama ve yetkilendirme işlevleri GPG'nin günlük kullanımı için yeterlidir. Ancak bir başka GPG anahtarının imzalanması, yeni bir alt anahtar oluşturulması veya tarihi geçen bir anahtarın yenilenmesi gibi sıklıkla gerekmeyen durumlarda ana anahtar gerekli olmaktadır. Bu bakımdan ana anahtarı güvenle saklanacağı bir ortama alıp, çalınma ve ifşa olma tehlikesi taşıyan cihazlarda sadece alt anahtarları bulundurarak belirli bir güvenlik elde etmek mümkündür. Bu uygulamanın kötü tarafı ise tüm anahtarlarınızın bir akıllı karta alamayacak olmanız ve her sertifika işlemi için anahtarınızı güvenli alandan çıkarmanın zahmetine katlanmaktır.
### Anahtar boyutu
Anahtarınızın boyutu doğrudan sağlayacağı güvenlik ile ilişkilidir. GPG'nin kullandığı RSA algoritmasında 1024 ile 4096 bit arasında bir anahtar seçmeniz mümkündür. Bugün Türkiye'de kanuna bağlı olarak kullanılan e-imza sertifikaları RSA2048 bit idir. RSA1024 ise artık güvenli kabul edilmemektedir. Anahtarınızın büyüklüğü geleceğe dönük olarak güvenli sayılacağı ömrü de uzatacağından en büyük anahtar genişliğini seçmeniz kesinlikle tavsiye edilir. Anahtar boyutuna ilişkin temel endişe kriptografik işlemlerin işlemci gücü bakımından giderek zorlaşmasıdır. Günümüzde en kötü akıllı mobil cihazın bile işlemci gücü 4096 bit anahtar boyutları ile makul sürelerde işlem yapma imkanı sağladığından bu endişe güncelliğini temel kullanımlar açısından görece yitirmiş durumdadır.
### Anahtar algoritması
GPG'nin güncel versiyonu olan 2.0.19 artık tarihi olarak kullanılan RSA algoritmasının yanında [Elliptic-curve cryptography (ECC)](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography) de desteklemeye başlamıştır. ECC, RSA ile karşılaştırılabilir güvenlik seviyeleri için daha kısa anahtarlar oluşturulmasına imkan sağlamaktadır. [Kuantum bilgisayarlar](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography#Quantum_computing_attacks) ve [arkakapı](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography#Backdoors) endişeleri taşımakla birlikte pratik ve daha kolay yönetilebilir anahtarlara ihtiyaç duyulması durumunda en yüksek anahtar genişliğinde tercih edilmesi düşünülebilir.
### Anahtar yapısı
Şayet GPG'den standart bir anahtar üretmesi istenir ise aşağıdaki gibi bir anahtar oluşturacaktır.
├─Ana anahtar (sertifika ve imzalama)
└─Alt anahtar (şifreleme)
Bu anahtar ana anahtar ile imzalama işlemini yapacağından neredeyse her işlemde ana anahtarın da sistemde bulunması ve kullanılabiliyor olması gereklidir. GPG'nn böyle bir tercihte bulunmasının iki nedeni vardır. Öncelikle sertifika ve imza işlemleri temelde benzerdir ve ikisi de güven ilişkisi yaratır. Bu bakımdan iki benzer işlemi tek anahtarın görmesi anlamlıdır. İkinci olarak temel işlemleri yapmak için gereken en az anahtar miktarı bu şekilde elde edildiği için anahtar boyutu da küçük olmaktadır.
Fakat tehdit modelinize bağlı olarak daha güvenlik işlevi gösterebilecek bir düzen oluşturmak mümkündür. Sertifika yetkisinin anahtara sağladığı güven ilişkisini günlük kullanımdan yalıtarak alt anahtarların; vadesini, güvenini ve döngüsünü güvenli şekilde yönetmek mümkündür. Şöyle ki;
* Şifreleme anahtarınız çalınan dizüstü bilgisayarınız ile birlikte açığa çıkarsa geçmişe dönük olarak tüm iletişim ve şifreli dosyalarınızın açılması mümkündür.
* İmza anahtarınız benzer bir talihi paylaşırsa bir salırgan bu anahtarı kullanarak sizi taklit edebilir; kullandığınız amaca bağlı olarak size ait görünen metin, dosya ve kod yaratabilir.
* yetkilendirme anahtarınızın ortaya çıkması bu anahtara bağlı olarak giriş yaptığınız tüm sistemlerin ele geçirilmesi anlamına gelebilir.
Bu neden ile GPG'nin kalıcı anahtar modelini biraz kullanım pürüzü yaratacak da olsa elle [geçici(ephemeral)](https://cryptography.fandom.com/wiki/Ephemeral_key) anahtar modeline çevirebilirsiniz. Bu yöntem bir bakııma [OTR](yazisma_guvenligi/otr.md) ve [OMEMO](yazisma_guvenligi/omemo.md) sistemlerinde kullanılan yönteme benzemekle fark olarak her mesajda değil sizin belirleyeceğiniz daha uzun aralıklarda değişim yapmanızı gerektirir.
Basitçe ifade etmek gerekirse;
1. Ana anahtara sadece sertifika yetkisi verilir.
2. 3 alt anahtara şifreleme, imzalama, yetkilendirme işlevleri verilir.
3. Ana anahtara 3 yıl gibi uzun bir vade süresi verilir.
4. Alt anahtarlara 3 ay gibi görece kısa bir vade süresi verilir.
5. Ana anahtar anahtarlardan ayrılır ve offline olarak güvenli saklanır.
6. Alt anahtarlar cihazlara aktarılır ve kullanılır. Gerekli görüldükçe veya belirlenen süreler ile değiştirilir. Değişim ana anahtarla yapılır ve imzalanarak güven ağına dahil edilir.
Bu çabaya katlanmak her kullanıcının kendi durumuna göre karar vermesi gereken bir tercih. Keza sizin güvenlik ihtiyaçlarınız için bu durum aşırı olabilir ve sürekli GPG ile uğraşmak canınızı sıkabilir. Geçmişe dönük olarak şifreli verilerinizi sürekli olarak yeniden şifrelemek veya yokoluşa terk etmek sorun yaratabilir. Sizinle iletişime geçen kişiler sürekli olarak anahtarınızın yeni versiyonunu edinmekten sıkılabilir.
Bu süreci işletebilmek için ne yazık ki anahtarınızı baştan buna uygun olarak üretmeniz gerekmektedir. Anahtarlara verilen işlevler daha sonra değiştirilememektedir. Bu rehberde yukarıdaki amacı gösterebilecek bir anahtarın üretim ve kullanım süreci işlenecektir.
## Güvenli Anahtar Üretimi
Anahtar üretimi için güvenli ortamınızı elde ettikten sonra bir uçbirim açarak anahtar üretim sürecine başlayabilirsiniz.
GPG'nin uzman modunu çağırarak anahtar üretim sürecine başlayın.
`gpg --full-gen-key --expert`
Karşınıza aşağıdaki seçenekler çıkacaktır.
```
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Lütfen istediğiniz anahtarı seçiniz:
(1) RSA ve RSA (varsayılan)
(2) DSA ve Elgamal
(3) DSA (yalnız imzalamak için)
(4) RSA (sadece imzalamak için)
(7) DSA (yeteneklerini belirtin)
(8) RSA (yeteneklerini belirtin)
(9) ECC and ECC
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(13) Existing key
(14) Existing key from card
Seçiminiz?
```
Bu noktada RSA veya ECC algoritmaları arasındaki kararı vermiş olmanız gereklidir. Rehber RSA algoritmasını geçmişi ve kuantum endişeleri nedeni ile tercih edecektir. 8 tuşuna basıp "enter" ile devam edin.
```
bir RSA anahtarı için olası eylemler: İmzalama Onayla Şifrele Kimlik kanıtla
Şimdilik mümkün eylemler: İmzalama Onayla Şifrele
(1) İmzalama yeteneğini açar/kapar
(2) Şifreleme yeteneğini açar/kapar
(3) Kimlik kanıtlama yeteneğini açar/kapar
(0) Bitti
Seçiminiz?
```
Bu aşamada ana anahtarınızı ürettiğiniz için amacımıza bağlı olarak sadece Onaylama (sertifika) yetkisinin *mümkün eylemler* arasında kalmasının sağlanması gerekli. Bunun için sırası ile 1-enter-2-enter tuşlayarak imzalama ve şifreleme yetkisini anahtardan ayırabilirsiniz. Bu aşamadan sonra aşağıdaki noktaya vardığınızda 0 tuşlayıp "enter" ile işlemi tamamlayabilirsiniz.
```
bir RSA anahtarı için olası eylemler: İmzalama Onayla Şifrele Kimlik kanıtla
Şimdilik mümkün eylemler: Onayla
(1) İmzalama yeteneğini açar/kapar
(2) Şifreleme yeteneğini açar/kapar
(3) Kimlik kanıtlama yeteneğini açar/kapar
(0) Bitti
Seçiminiz?
```
GPG sizden anahtar boyutunuzu girmenizi isteyecektir. En yüksek güvenliği sağlayan anahtar genişliği olan 4096 sayısını girerek "enter" tuşlayın.
```
RSA anahtarları 1024 bit ile 4096 bit arasında olmalı.
İstediğiniz anahtar uzunluğu nedir? (3072) 4096
```
Bu aşamadan sonra anahtarınızın geçerlilik süresini belirlemeniz istenecektir. Bu süre tercihi size kalmış olmakla birlikte ana anahtarınızın geçerliliğini yıl düzeyinde yapmanız kolaylık sağlayacaktır. Süreyi belirlemek için istediğiniz miktarı ardından birimi belirten harf ile girip "enter" tuşlayın.
```
İstenen anahtar uzunluğu: 4096 bit
Lütfen anahtarın ne kadar süreyle geçerli olacağını belirtin.
0 = anahtar süresiz geçerli
<n> = anahtar n gün geçerli
<n>w = anahtar n hafta geçerli
<n>m = anahtar n ay geçerli
<n>y = anahtar n yıl geçerli
Anahtar ne kadar geçerli olacak? (0) 3y
```
GPG'nin süreyi doğrulamak için sorduğu soruya evet anlamında "y" veya "e" tuşlayarak devam edebilirsiniz.
```
Anahtarın geçerliliği Cum 25 Ağu 2023 09:45:04 +03 de bitecek.
Bu doğru mu? (e/H ya da y/N) y
```
Bu aşamadan sonra GPG size adınız ve e-posta adresinizi soracaktır. Doğal olarak burada doğru cevap vermek zorunda değilsiniz. Bir rumuz ve geçersiz bir e-posta adresi kullanabilirsiniz. Lakin bu durumda anahtarınız ile sosyal çevrenizde bir güven anahtarı oluşturmanızı zorlaştıracağı gibi size e-posta şifrelemek isteyen insanlara da bir külfet getirecektir. Kararı kullanım amacınıza göre belirleyebilirsiniz.
```
GnuPG anahtarınızı betimlemek için bir kullanıcı kimliği oluşturmaya ihtiyaç duyuyor.
Adınız ve Soyadınız: Claude Shannon
E-posta adresiniz: entropyrulez@bell.com
Önbilgi:
```
Karşınıza çıkacak doğrulamayı denetledikten sonra tamam anlamında "t" tuşlayarak devam edebilirsiniz.
```
Seçtiğiniz KULLANICI-KİMLİĞİ:
"Claude Shannon <entropyrulez@bell.com>"
(A)dı ve Soyadı, (Y)orum, (E)posta alanlarını değiştir ya da (T)amam/Çı(k)?
````
GPG size parolanızı soracaktır. Burada bir [**Zarola**](https://zarola.oyd.org.tr) kullanmanız hararetle tavsiye edilir. Anahtarınızın güvenliği bu parolaya doğrudan bağlı olduğundan bu parolanın unutmayacağınız şekilde olması ve yeterince entropi içermesini sağlamanın en kolay yolu Zarola yönteminden geçmektedir.
Bu aşamadan sonra cihazınız anakartınızın köşelerinde kalmış entropi için çırpınıp size anahtarınızı üretecektir. Bu süreç `/dev/random` aygıtınızda kalan entropi miktarı ve yenilenme hızına bağlı olarak yavaş olabilir. Bilgisayarınız ile bir şeyler yaparak bu süreci hızlandırabilirsiniz. Anahtarınız hazır olduğunda GPG sizi aşağıdaki çıktı ile karşılayacaktır.
``
(A)dı ve Soyadı, (Y)orum, (E)posta alanlarını değiştir ya da (T)amam/Çı(k)? t
Bir miktar rasgele bayt üretilmesi gerekiyor. İlk üretim sırasında biraz
hareket (klavyeyi kullanmak, fareyi hareket ettirmek, disklerden yararlanmak)
iyi olacaktır; bu yeterli rasgele bayt kazanmak için rasgele sayı
üretecine yardımcı olur.
gpg: anahtar 6CD5E60735205895 son derece güvenli olarak imlendi.
gpg: revocation certificate stored as '/home/alper/.gnupg/openpgp-revocs.d/A09D0D53E6BEEF6A971F64036CD5E60735205895.rev'
genel ve gizli anahtar üretildi ve imzalandı.
pub rsa4096 2020-08-25 [C] [son kullanma tarihi: 2023-08-25]
A09D0D53E6BEEF6A971F64036CD5E60735205895
uid Claude Shannon <entropyrulez@bell.com>
```
Şayet `gpg --list-secret-keys` komutunu çağırırsanız yeni anahtarınızı ve detaylarını görecek olmalısınız.
```
sec rsa4096 2020-08-25 [C] [son kullanma tarihi: 2023-08-25]
A09D0D53E6BEEF6A971F64036CD5E60735205895
uid [ son derece ] Claude Shannon <entropyrulez@bell.com>
```
Artık alt anahtarların üretimine geçmek ve kullanılabilir bir anahtar oluşturmaya başlamak mümkündür. Aşağıdaki komut ile anahtarınızı düzenlemeye başlayabilirsiniz.
`gpg --edit-key --expert [key ID veya e-posta]`
Komut sizi aşağıdaki gibi bir çıktı ile karşılayacak ve promt'ta bekleyecektir.
```
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Gizli anahtar mevcut.
sec rsa4096/6CD5E60735205895
oluşturuldu: 2020-08-25 son kullanma tarihi: 2023-08-25 kullanımı: C
güvencesi: son derece geçerliliği: son derece
[ son derece ] (1). Claude Shannon <entropyrulez@bell.com>
gpg>
```
`help` yazarak bu aşamada yapabileceğiniz işlemler hakkında bilgi alabilirsiniz.
```
gpg> help
quit bu menüden çık
save kaydet ve çık
help bunu gösterir
fpr parmakizini gösterir
grip show the keygrip
list anahtarı ve kullanıcı kimliğini gösterir
uid N kullanıcı kimliğini seçer
key N yardımcı anahtarını
check imzaları sınar
sign seçilen kullanıcı kimliği imzalar [* ilgili komutlar için aşağıya bakın]
lsign kullanıcı kimlikleri yerel olarak imzalar
tsign seçili kullanıcı kimlikleri bir güvence imzasıyla imzalar
nrsign seçili kullanıcı kimlikleri yürürlükten kaldırılamayan bir imzayla imzalar
adduid bir kullanıcı kimliği ekler
addphoto bir foto kimliği ekler
deluid seçili kullanıcı kimlikleri siler
addkey bir yardımcı anahtar ekler
addcardkey bir akıllı karta bir anahtar ekler
keytocard bir akıllı karttan bir anahtarı taşır
bkuptocard bir akıllı karttan bir yedekleme anahtarını taşır
delkey seçili yardımcı anahtarları siler
addrevoker bir yürürlükten kaldırma anahtarı ekler
delsig seçili kullanıcı kimliklerden imzaları siler
expire anahtar için ya da seçili yardımcı anahtarlar için zamanaşımı tarihini değiştirir
primary seçili kullanıcı kimliğini asıl olarak imler
pref tercihleri listeler (uzman)
showpref tercihleri listeler (ayrıntılı)
setpref Seçili kullanıcı kimlikler için tercih listesini belirler
keyserver seçili kullanıcı kimlikler için tercih edilen anahtar sunucu adresini belirler
notation seçili kullanıcı kimlikleri için bir simgelem belirler
passwd anahtar parolasını değiştirir
trust sahibiningüvencesini değiştirir
revsig Seçili tüm kullanıcı kimliklerdeki imzaları yürürlükten kaldırır
revuid Seçili tüm kullanıcı kimlikleri yürürlükten kaldırır
revkey anahtarı ya da seçili yardımcı anahtarları yürürlükten kaldırır
enable anahtarı kullanıma sokar
disable anahtarı iptal eder
showphoto seçili foto kimlikleri gösterir
clean kullanışsız kullanıcı kimlikleri sıkıştırır ve kullanışsız imzaları anahtardan kaldırır
minimize kullanışsız kullanıcı kimlikleri sıkıştırır ve tüm imzaları anahtardan kaldırır
* The 'sign' command may be prefixed with an 'l' for local signatures (lsign),
a 't' for trust signatures (tsign), an 'nr' for non-revocable signatures
(nrsign), or any combination thereof (ltsign, tnrsign, etc.).
```
`addkey` komutu ile anahtara alt anahtarlar eklemeye başlayabilirsiniz. Alt anahtar ekleme süreci ana anahtarın üretimi ile tamamen aynıdır. Yukarıdaki adımları tekrar ederek son noktada bir ana anahtar ve 3 belirli işlevi taşıyan alt anahtar üretmiş olmanız gereklidir.
```
sec rsa4096/6CD5E60735205895
oluşturuldu: 2020-08-25 son kullanma tarihi: 2023-08-25 kullanımı: C
güvencesi: son derece geçerliliği: son derece
ssb rsa4096/9D0FFCD0DE126F3D
oluşturuldu: 2020-08-25 son kullanma tarihi: 2021-08-25 kullanımı: E
ssb rsa4096/3F7DB977B818DDB4
oluşturuldu: 2020-08-25 son kullanma tarihi: 2021-08-25 kullanımı: S
ssb rsa4096/841A8F682342D15B
oluşturuldu: 2020-08-25 son kullanma tarihi: 2021-08-25 kullanımı: A
[ son derece ] (1). Claude Shannon <entropyrulez@bell.com>
```
Yukarıdaki gibi veya arzu ettiğiniz sonucu elde ettikten sonra `save` komutu ile değişiklikleri kaydedip çıkabilirsiniz. Artık anahtarınızın aşağıdaki gibi görünüyor olması gereklidir.
```
sec rsa4096 2020-08-25 [C] [son kullanma tarihi: 2023-08-25]
A09D0D53E6BEEF6A971F64036CD5E60735205895
uid [ son derece ] Claude Shannon <entropyrulez@bell.com>
ssb rsa4096 2020-08-25 [E] [son kullanma tarihi: 2021-08-25]
ssb rsa4096 2020-08-25 [S] [son kullanma tarihi: 2021-08-25]
ssb rsa4096 2020-08-25 [A] [son kullanma tarihi: 2021-08-25]
```
**ÇOK ÖNEMLİ NOT:** Bu noktada anahtarınızın yedeğini güvenli şekilde almanız **hayati** öneme sahiptir. Bunun için rehberdeki [Anahtar Yönetimi](anahtar-saklama.md) ve [Paperbackup ile kağıt yedek](paperbackup.md) rehberlerinden yardım alabilirsiniz.
## Ana anahtarın ayrılması
Ana anahtarı alt anahtarlardan ayırmanın GPG'de belirgin bir yolu bulunmamakta. Bu amacı gerçekleştirmek için biraz dolambaçlı bir yol kullanmak gerekiyor.
**ÖNEMLİ NOT:** Bu bölümde anahtar üzerinde geri döndürülemez işlemler yapılacağından ve işlemlerin bir kısmı yedekten anahtar almayı gerekli kıldığından tüm anahtarınızın yedeğni aldığınızdan emin olun.
Öncelikle anahtarınızın alt anahtarlarını dışarı çıkartmanız gerekmekte. Bu aşamada anahtarın UID'sini belirtmeniz gerekmekte keza e-posta ile bu işlem gerçekleşmiyor.
`gpg --armor --export-secret-subkeys [anahtar ID] > [kayıtdizini]`
Bu işlemin ardından anahtarınızı silin.
`gpg --delete-secret-keys [anahtar ID veya e-posta]`
GPG israrla bu anahtarı silmek isteyip istemediğinizi sorgulayacaktır. Endişesi konusunda haklı olmakla birlikte kararlılığınızı gösterip tüm sorularına olumlu cevap verin.
```
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sec rsa4096/6CD5E60735205895 2020-08-25 Claude Shannon <entropyrulez@bell.com>
Bu anahtar, anahtar zincirinden silinsin mi? (e/H ya da y/N) y
Bu bir gizli anahtar! - gerçekten silinecek mi? (e/H veya y/N) y
```
Bu aşamadan sonra anahtarlığınızda sadece "pub" ile işaretli umumi anahtarınız kalmış olacaktır.
```
pub rsa4096 2020-08-25 [C] [son kullanma tarihi: 2023-08-25]
A09D0D53E6BEEF6A971F64036CD5E60735205895
uid [ son derece ] Claude Shannon <entropyrulez@bell.com>
sub rsa4096 2020-08-25 [E] [son kullanma tarihi: 2021-08-25]
sub rsa4096 2020-08-25 [S] [son kullanma tarihi: 2021-08-25]
sub rsa4096 2020-08-25 [A] [son kullanma tarihi: 2021-08-25]
```
Artık yedeğini aldığınız alt anahtarları geri yükleyerek ana anahtarınızı içermeyen kullanım anahtarınızı tamamlayabilirsiniz.
`gpg --import [yedek dizini]`
GPG parolanızı soracak ve doğru girmeniz ardından alt anahtarları ekleyecektir.
```
gpg: anahtar 6CD5E60735205895: "Claude Shannon <entropyrulez@bell.com>" değişmedi
gpg: To migrate 'secring.gpg', with each smartcard, run: gpg --card-status
gpg: anahtar 6CD5E60735205895: gizli anahtar alındı
gpg: İşlenmiş toplam miktar: 1
gpg: değişmedi: 1
gpg: gizli anahtarlar okundu: 1
gpg: gizli anahtarlar indirildi: 1
```
`gpg --list-secret-keys` ile gizli anahtarlarınızı listelerseniz aşağıdaki gibi ana anahtarınızın sec# şekline işaretli olduğundan eksik olduğunu görebilirsiniz.
```
sec# rsa4096 2020-08-25 [C] [son kullanma tarihi: 2023-08-25]
A09D0D53E6BEEF6A971F64036CD5E60735205895
uid [ son derece ] Claude Shannon <entropyrulez@bell.com>
ssb rsa4096 2020-08-25 [E] [son kullanma tarihi: 2021-08-25]
ssb rsa4096 2020-08-25 [S] [son kullanma tarihi: 2021-08-25]
ssb rsa4096 2020-08-25 [A] [son kullanma tarihi: 2021-08-25]
```
Artık cihazlarınızda kullanacağınız sıyrılmış alt anahtarlarınızı dışarı çıkarıp aktarabilirsiniz.
`gpg --export-secret-keys --armor [anahtar ID veye e-posta]`
## Anahtarları akıllı karta aktarmak
Ürettiğiniz anahtarlarınızı daha güvenli kullanmak isterseniz bir Gnupg akıllı karta veya Yubikey gibi bir donanıma aktarabilirsiniz. Bu konuda yardıma ihtiyaç duyarsanız rehberlerimize danışabilirsiniz.
[Yubikey rehberi yazarak katkıda bulunabilirsiniz]
[GnuPG akıllı kart rehberi yazarak katkıda bulunabilirsiniz]
## Kaynaklar
- [Getting Started with GNU Privacy Guard ](https://spin.atomicobject.com/2013/09/25/gpg-gnu-privacy-guard/)
- [GPG Tutorial](https://futureboy.us/pgp.html#GettingStarted)
- [EFF GPG Guide](https://ssd.eff.org/en/module/how-use-pgp-linux)

@ -0,0 +1,97 @@
## GPG ile uçbirimde işlemler
GPG temel olarak komut satırında çalışan bir yazılımdır. Bu bakımdan grafik arayüzler tarafından sunulmayan pek çok faydalı özelliği uçbirim aracılığı ile kullanmak ve kimi zaman grafik arayüzlerin sunduğu işlevleri daha kolay yerine getirmek mümkündür. Pek çok kullanıcı için uçbirim korkutucu olabilmektedir. Lakin her Gnu/Linux cihazda bir uçbirim ve GPG kurulu olduğu düşünüldüğünde GPG'nin evrensel kullanımı uçbirimde toplanmaktadır.
GPG'nin man sayfası çok kalabalıktır. Bu rehberde son kullanıcıya lazım olabilecek temel ve orta seviyedeki işlevler ipuçları ile birlikte sunulacaktır. Şayet GPG ile ilgili daha çok şey öğrenmek istenirse aşağıdaki komut ile man sayfasının okunması veya pratik olarak yardım sayfasının çağrılması mümkündür.
`man gpg` ve `gpg --help`
## Şifreleme ve İmzalama
[Uçbirim aracılığı ile e-posta](yazilim_guvenligi/ucbirim_eposta.md) şifreleme, imzalama ve deşifre rehberine bu başlıktaki detaylar için başvurulabilir.
## Simetrik şifreleme
GPG sadece RSA ve ECC gibi asimetrik şifreleme algoritmalarını değil aynı zamanda AES gibi simetrik şifreleme imkanlarını da sunmaktadır. Bu şifreleme yönteminde bir parola hem şifreleme hem deşifre için kullanıldığından özel bir anahtar yönetimine ihtiyaç duyulmaz ve kimi zaman kullanımı tercih edilebilir.
Bir mesajı veya dosyayı simetrik olarak şifrelemek için aşağıdaki komutları kullanabilirsiniz:
`gpg --symmetric --armor` veya `gpg -ca`
Bir dosyayı şifrelemek isterseniz aşağıdaki komutu girebilirsiniz. GPG şifrelenmiş dosyayı .asc uzantısı ile aynı yere kaydedecektir:
`gpg --symmetric --armor [dosya dizini]`
Şifrelediğiniz veriyi aynı zamanda bir anahtarınız var ise imzalayarak sizden geldiğine ve bütünlüğüne kanıt oluşturabilirsiniz.
`gpg --symmetric --sign --armor` veya `gpg -csa`
## İmzalama
GPG birden fazla şekilde imzalama yapabilmektedir. Her imzalama tipi iletim ve gereken karakter bakımından farklılık arz ettiğinden kullanıcının beklentisine göre tercih yapması mümkündür.
### Clear-sign
Clear-sign veya açık imza imzalanan içeriğin okunabilmesine imkan sağlamaktadır. Bu sayede mesajınız gözle okunabilirken dileyen biri altında bulunan imza bloğu ile birlikte mesajınızın doğruluğunu denetleyebilmektedir. Bu şekilde bir mesaja imza atmak isterseniz aşağıdaki komutu girip mesajınızı yazın ve `ctrl + D` komutu ile sonlandırın.
`gpg --clear-sign`
### Embeded-sign
Embeded veya gömülü imza, mesaj ve imza bloğunun tek bir base64 bloğunda kodlanması ile ortaya çıkar. Bu mesaj şifreli olmamakla birlikte okunabilmesi için yine de çözülmesi gereklidir. Bu şekilde bir imza elde etmek için aşağıdaki komutu girip mesajınızı yazın ve `ctrl + D` komutu ile sonlandırın.
`gpg --sign --armor`
### Detached-sign
Detached veya ayrık imza, imzalanan veri ile imza bloğunun ayrı dosyalar olması anlamına gelmektedir. Çoğunlukla dijital verilerin doğruluğunu göstermek için kullanır. Dosyanın yanında aynı isimde .sig uzantılı imza dosyası da gelir. Bu tip bir imza oluşturmak için aşağıdaki komutu kullanabilirsiniz. GPG imza dosyasını imzalanan dosyanın yanına .sig uzantısı ile ekleyecektir.
`gpg --detached-sign [dosya dizini]`
Şayet imzayı metin olarak aktarmayı düşünüyorsanız `--armor` paramteresini ekleyerek base64 kodlama ile aynı işlemi gerçekleştirebilirsiniz.
`gpg --detached-sign --armor [dosya dizini]`
## İmza denetleme
GPG ile imzalanmış bir metni doğrulamak için aşağıdaki komutu kullanıp mesajı yapıştırdıktan sonra `ctrl + D` komutu ile işlemi tamamlayabilirsiniz.
`gpg --verify`
Şayet bir dosyaya ait .sig uzantlı imzayı denetleyecekseniz ve dosya ile imza dosyasının adı aynı ise aşağıdaki komutu kullanabilirsiniz.
`gpg --verify [imza dosyası.sig]`
## Umumi anahtarları listeleme
GPG kullanımı iletişime geçeceğiniz kişilerin umumi anahtarlarını da bulundurmanızı gerektirmekte. Bu anahtarlar bir firhist gibi cihazınızda tutulmaktadır. Bunları listelemek için aşağıdaki komutu kullanabilirsiniz.
`gpg --list-keys`
Anahtarlığınızdaki belirli bir anahtarı arıyor iseniz aşağıdaki şekilde arama yapabilirsiniz.
`gpg --list-keys [anahtar ID veya e-posta]`
## Özel anahtarları listeleme
Şayet size ait özel anahtarlarınızı listelemek isterseniz aşağıdaki komutu kullanabilirsiniz.
`gpg --list-secret-keys`
## İmzaları listeleme
## Anahtar imzalarını kontrol etme
## Umumi anahtar dışa çıkartma
## Sunucuda anahtar arama
## Sunucuya anahtar gönderme
## Anahtarları güncelleme
## Anahtar içe aktarma
## Anahtar düzenleme
## Anahtar imzalama

@ -0,0 +1,3 @@
# GnuPG ile e-posta şifreleme
## Bu rehber, Thunderbird 78'in GnuPG desteği kararlı hale geldiğinde tekrardan yazılacaktır.

@ -0,0 +1,114 @@
# Uçbirim ile E-posta Şifrelemek
Şayet oldschool yöntemi benimsemek isterseniz e-posta şifrelemek adına, bu işlemi terminalden yapmaktan daha iyi bir yol bulamazsınız! GPG ilk ortaya çıktığında kullanımı terminalden bir mesajı şifrelemek göndermek üzere e-posta istemcisine yapıştırmak ve tekrar aynı yoldan deşifre etmekten geçiyordu. Günümüzde [Thunderbirg/Enigmail](thunderbird_enigmail.md) gibi yazışmayı çok kolaylaştıran arayüzler geliştirilmiş olsa da terminalden bu işlemi gerçekleştirebilmek hala temel düzeyde faydalı olabilmektedir.
## E-postanızı yazın
Öncelikle e-postanızı daha rahat ettiğiniz bir yerde yazmak isteyebilirsiniz. Bunun için tercihiniz olan bir metin editörünü seçebilir veya bir kelime istemci de kullanabilirsiniz. GPG sadece salt metin olarak çalışacağından formatlama detaylarının mesajınıza aktarılmayacağını hatırlatmalıyız.
## Bir uçbirim açın
Kullandığınız Gnu/Linux dağıtımında bulunan bir uçbirim penceresini, GPG anahtarınızın sahibi olan kullanıcı olarak açın. Bunun için grafik arayüzden faydalanabilir veya aşağıdaki tuş kombinasyonunu kullanabilirsiniz.
`ctrl + alt + t`
## GPG ile mesajınızı şifreleyin ve imzalayın
Aşağıdaki komut ile GPG'yi mesaj şifreleme aşamasına geçirin.
`gpg --encrypt --armour` veya `gpg -ea`
Tercihen mesajınızı imzalamayı da seçebilirsiniz. Bu hem alıcınızın mesajın sizden geldiği konusunda emin olmasını sağlar hem de mesajın bütünlüğünü garanti eder.
`gpg --encrypt --sign --armour` veya `gpg -esa`
Mesajınızı sadece imzalayarak sizden geldiğini de kanıtlamak isteyebilirsiniz. Bu imkan GPG anahtarı olmayan birinin dahi mesajın size ait olduğunu doğrulamasına imkan sağlar.
`gpg --clear-sign`
Şayet sisteminizde varsayılan olan bir anahtar var ise GPG imzalama için kendiliğinden bu anahtarı kullanacaktır. Şayet sisteminizde olan başka bir anahtarı kullanmak isterseniz aşağıdaki ek komut ile anahtarınızı belirtin.
`gpg --clear-sign -u (anahtar ID veya e-posta)`
Dilediğiniz komutu çalıştırdığınızda aşağıdaki şekilde GPG sizden alıcının e-posta adresini veya kullanılacak anahtarın ID'sini isteyecektir.
```
gpg: using "xxxxxxxxxxxxxxxx" as default secret key for signing
You did not specify a user ID. (you may use "-r")
Current recipients:
Enter the user ID. End with an empty line:
```
Alıcınızın kullandığı anahtarda belirttiği e-posta adresini girip "enter" tuşuna basın ve başka bir alıcı yok ise tekrar gelen ekrande bir adres girmeden "enter" tuşlayın.
Terminal sizi yanıp sönen imleci ile karşılayacaktır. Buraya mesajınızı yazın veya kopyalayın. Her şeyin yerinde göründüğünü düşündüğünüzde aşağıdaki tuş kombinasyonu ile işlemi tamamlayın.
`ctrl + D`
GPG size mesajınızın şifreli çıktısını verecektir.
```
-----BEGIN PGP MESSAGE-----
hQIMA2YZNFxt9JB3AQ/7BW72H19P3yYliDyn5DOjxrTaQ0DZGLI3iRMXIb11JWEC
rCRvN8pokKeSa/8jcWFodWmsbj1hz5apFQho54HUuTRu3Q91QNgKOEXphiHGeEG8
Io1EYV/xzeH0v/NzJsQprqeEcr1hdbN3IfDkVV6jE2XZckZ6plOFM+Ubxe2UhXiE
EFx8x6p6mO8tNESy/TBGlIk/6hhrXISMqSz1JKdsbiyUTYGzmcM0lz7UzidMtjhJ
npb8b0nRSfBNufavqFRNhqedkYc9+dDvILs8VH2KVSPJjtSrUOPuKgcBWcLDMFl7
y94MaZwh3aIPOlEyVId8iCLO1XyzYRN8MWyyvsK7Z5O+Fs8sfmGTSBiKfzKP+7aU
Ine1cUjPXvh3DDHm9qPbSRGr/nr5W+Pt5TvEzNs2hiS4LuM9kQW2+FZYCMJgJXaE
DeRyx8RrPUJG8LnazZ4yFVNfQq8CBxcR+xjKDbtPtgiI9u2Cvoo/H1rQzOS+1/nQ
kq4xmdjrYTHLr0VXWWU+Zjy/qXNHYAvkwKXNwqJ58W+eQBQwc2GeYW79fo+cc2DV
7zv078sbodikV1uda7jQvHuDnSUa8nJPpoSjTWb+Fv/YAesQjgJlDjsqm/K3ElUq
UvcJOSf31P2PytfUxH8saI/sRe0ciX2PFSvhLBKygLtxzBOOkzFqh6UO9JzVv1rS
6QFIjHJTZebjytaMF/iGJnL99F7kaLUzdBJh7zpkT3Blj3Bldk2zo7lZOoJxHTGI
kfIJRWYPkP1qStTqu6EKr8NaJkbtM2SZ7uZgqXIxX+ncX4bLXsTj63y3jytVO/Q8
yiMJva+8nK6mwu1dqN8zsPHwaaggH16JXlBwcwtdB9mze7OAmRfwirMWwnHtsc8S
zuRUHPdlXbjRuPzBJA8tChl4LvSdqivjlGq7XK+hcfmjmevc7DnaJznSR++Q52O/
E16lKbQCmf/9c1l19f2HuNWHscxppLaeGqM7+5EFgj13riN08wKiMODBtJyH/vbP
nt3XamHevon7H0rsXse/0TY8BomEaaVlpn85MgGNVA0Zb3UxaZm++bWwBW/Kvpu3
1LWPWZx4WmJwT+EA4nSF2HwxUWyy6FeQf2z+mfyEnbhxueFnig6f5hfm6OvIR4PJ
5LwHDXgcKCzvNUGFLLFf5ZR/6lLJZ7wFvlNvqdvNNTrkhqU5/qw5uJuA1F5jUYf7
Rl5WGSLBJN0FWryW30SuFlNcQgU0xxyKwPSnrPRg3mPMumQ1LaOPO8SCzogklQM6
jdktewFEJb5A4LR+Fh/MpwP5AiPwpl+CAMe3jZSiOhJzBjun/UJS2M8s1hIVTzSd
gLa/ewTVc6jkyGDmUpQMOQTumm7IIyX0HBhZBYtDBxq9lPStrCpNkgmPIblHLwtX
95krDh2WORbuYxlzlE8/R6KfhqCxPMMn4+eS401zeSv3Z/u+3ImHXZTAz/qf+rcl
vn7ufVp6IyzMHmQ742l1tpaX3PRq0V+AprSbupodAACzf+zrkJqiC08O6Bz7cX0c
WtrjYbxxnjdYPsuV3HGS380HSrdlp8LhMAHDpha5gT7Ge7FHdCk=
=ezWd
-----END PGP MESSAGE-----
```
Bu noktadan sonra soz konusu çıktıyı alıp dilerseniz e-posta ile dilerseniz mektup ile mesajın şifrelendiği kişiye gönderebilirsiniz.
**BONUS:** Şayet mesajınızı metin olarak yazdıysanız **pro** şekilde aşağıdaki komutla da doğrudan şifreleyebilirsiniz:
`cat [metin yolu] | gpg -esa`
Şayet mesajınızı Libreoffice ile yazdıysanız daha ilginç şekilde aşağıdaki komut ile doğrudan mesajınızı metin olarak şifreleyebilirsiniz:
`soffice --cat [belge yolu] | gpg -esa`
## Mesajınızı deşifre edin
Yukarıdaki gibi bir mesajın alıcısı iseniz Terminalden bu mesajı deşifre etmeniz çok kolay. Tek yapmanız gereken aşağıdaki komutu girip ardından mesajı yapıştırmak.
`gpg --decrypt` veya `gpg -d`
Mesajı yapıştırdıktan sonra `ctrl + D` ile işlemi sonlandırabilirsiniz. GPG size parolanızı soracak ve ardından mesajınızı gösterecektir.
```
gpg: encrypted with 4096-bit RSA key, ID 6619345C6DF49077, created 2016-10-26
"Alper Atmaca <info@alperatmaca.com.tr>"
entropi ne süpergpg: Signature made Pzt 24 Ağu 2020 22:41:49 +03
gpg: using RSA key 8F2E9434DDFF4613F6829D8B471A839AB4DD8E6D
gpg: Good signature from "Alper Atmaca <info@alperatmaca.com.tr>" [ultimate]
gpg: aka "Alper Atmaca <alperatmaca@riseup.net>" [ultimate]
gpg: aka "Alper Atmaca <alperatmaca@gmail.com>" [ultimate]
gpg: aka "Alper Atmaca <alper@oyd.org.tr>" [ultimate]
gpg: aka "Alper Atmaca (alperatmaca@gmail.com) <alperatmaca@gmail.com>" [ultimate]
```
Loading…
Cancel
Save