GNU/Linux >> Belajar Linux >  >> Linux

Memulai dengan alat enkripsi baris perintah di Linux

1 Pendahuluan

Enkripsi adalah proses penyandian pesan atau informasi sedemikian rupa sehingga hanya pihak yang berwenang yang dapat membacanya. Dengan hampir tidak ada privasi di generasi digital kami ini, enkripsi data kami adalah salah satu alat yang paling dibutuhkan. Sebagian besar aplikasi seperti gmail mengenkripsi data kami, tetapi data di sistem Anda masih tidak aman dan ada peretas atau pengguna tidak sah yang menunggu untuk mengaksesnya. Salah satu cara untuk meminimalkan risiko pencurian data adalah dengan mengenkripsi data yang ada bahkan di sistem lokal kita.

Tutorial ini mendemonstrasikan beberapa metode enkripsi data pada sistem Linux menggunakan alat baris perintah.

2 Enkripsi menggunakan GPG

2.1 Pengenalan GPG

GPG adalah singkatan dari GNU Private Guard yang merupakan utilitas baris perintah yang digunakan untuk mengenkripsi dan mendekripsi file atau folder data menggunakan enkripsi kunci simetris atau publik. GPG adalah alternatif Berlisensi GPL untuk rangkaian perangkat lunak kriptografi PGP. GPG juga digunakan oleh sistem kompilasi OpenPGP.

2.2 Enkripsi menggunakan Kunci Simetris

Di sini saya memiliki file bernama "test.txt" bahwa saya akan mengenkripsi dan kemudian mendekripsi dengan kunci simetris dan mencetak teks yang didekripsi ke file lain yang disebut "output.txt".

Jalankan perintah berikut untuk mengenkripsi file test.txt menggunakan kunci simetris. Opsi "-c" menunjukkan GPG untuk menggunakan kunci simetris.

gpg -c test.txt

Hasil dari ini akan terlihat seperti gambar di bawah ini. Saat pertama kali GPG dijalankan, folder .gnupg dibuat. Ini berisi file yang diperlukan untuk proses enkripsi. Kemudian meminta Anda untuk memasukkan kata sandi dua kali. Harap pastikan bahwa Anda memasukkan frasa sandi yang kuat dan Anda mengingatnya karena Anda memerlukannya di masa mendatang untuk mendekripsi file Anda.

Jadi, setelah frasa sandi dimasukkan dengan benar, file bernama "test.txt.gpg" dibuat. Ini adalah file terenkripsi. Gambar berikut menunjukkan file sebelum dan sesudah enkripsi. Anda dapat melihat bahwa teks terenkripsi dalam format yang tidak dapat dibaca.

Gunakan perintah berikut untuk mendekripsi file terenkripsi

gpg -o output.txt test.txt.gpg

Anda akan diminta untuk memasukkan frasa sandi yang digunakan untuk mengenkripsi. Setelah Anda memasukkannya dengan benar, file "output.txt" akan dibuat dengan konten yang sama dengan "test.txt". Output dari dekripsi mungkin terlihat seperti gambar di bawah ini:

2.3 Enkripsi Kunci Publik

Di sini kita akan mengenkripsi satu set file menggunakan mekanisme enkripsi kunci publik / pribadi GPG. Ini melibatkan pembuatan kunci pribadi yang tidak boleh dibagikan dengan siapa pun dan kunci publik yang harus dibagikan dengan orang-orang yang ingin mengirimi Anda data terenkripsi.

Pertama, kita harus mengemas file ke dalam folder terkompresi. Di sini saya memiliki direktori bernama "enctest" dengan tiga file test1.txt ke test3.txt. Kami akan mengompres file tar.gz direktori ini. Saya akan menggunakan perintah berikut untuk membuat arsip tar.gz terkompresi:

tar czf files.tar.gz ~/enctest

Ini membuat file "files.tar.gz" . Kita sekarang harus membuat pasangan kunci publik/pribadi. Jalankan perintah berikut untuk menghasilkan kunci:

gpg --gen-key

Ingat, ini harus dilakukan hanya sekali dan sejumlah file dan folder dapat dienkripsi dengan kunci ini. Setelah Anda mengetik perintah ini, berbagai pertanyaan akan diajukan. Pertanyaannya adalah:

  • Jenis enkripsi apa yang digunakan? Saya memilih 1 yaitu RSA dan RSA.
  • Berapa ukuran kuncinya? Saya memilih 2048, Anda dapat memilih ukuran apa pun dalam kisaran 1024 dan 4096.
  • Kapan Kunci tersebut kedaluwarsa? Saya memilih 0 , yang berarti kuncinya tidak pernah kedaluwarsa. Tetapi dapat memberikan hari, minggu, atau tahun jika Anda ingin itu berakhir dalam waktu tertentu.

Hal-hal lain seperti frasa sandi akan ditanyakan, Anda akan diminta untuk memasukkannya dua kali. Pastikan Anda menggunakan yang kuat dan Anda mengingat kata sandinya. Kredensial Anda juga akan digunakan. Kredensial yang saya gunakan di sini (disediakan di bawah) hanya untuk pengujian. Disarankan agar Anda menggunakan kredensial asli Anda seperti nama, ID email, dan memberikan beberapa komentar.

Konten berikut menunjukkan jawaban saya dan bagaimana hasilnya:

gpg (GnuPG) 1.4.16; Copyright (C) 2013 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.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <[email protected]>"

Real name: John Doe
Email address: [email protected]
Comment: tis is key generation
You selected this USER-ID:
    "John Doe (tis is key generation) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
    

Setelah Anda memasukkan frasa sandi, itu mulai menghasilkan kunci. Ini akan meminta Anda untuk melakukan beberapa pekerjaan. Disarankan untuk menggerakkan mouse atau mengetik sesuatu atau menggunakan drive untuk membuka beberapa file. Ini akan menggunakan pekerjaan ini untuk menghasilkan bit acak. Anda mungkin harus melakukan ini beberapa kali. Output untuk saya ditunjukkan di bawah ini:

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.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 187 more bytes)
+++++
...+++++
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.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 92 more bytes)
.....+++++

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 114 more bytes)

+++++

Setelah selesai, kunci telah dibuat. Ini akan terlihat mirip dengan konten di bawah ini:

gpg: /home/akshay/.gnupg/trustdb.gpg: trustdb created
gpg: key FA2314B6 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/FA2314B6 2015-04-02
      Key fingerprint = 5A02 5D77 3E0A 8B69 8086  3032 DE51 6EA5 FA23 14B6
uid                  John Doe (tis is key generation) <[email protected]>
sub   2048R/6F78E642 2015-04-02

Ada dua hal penting di sini:berikan frasa sandi yang kuat dan pastikan untuk mengingat frasa sandi Anda

Sekarang setelah kunci dibuat, kita sekarang harus mengekspor file kunci publik untuk diimpor ke sistem lain atau untuk mengirimnya melalui email. Untuk memulai ekspor, gunakan perintah berikut:

gpg --armor --output file-enc-pubkey.txt --export 'John Doe'

Ganti 'John Doe' dengan nama yang Anda gunakan saat membuat kunci.

Disarankan juga untuk mengambil cadangan kunci pribadi. Kita dapat menggunakan gpg untuk melakukan itu. Untuk mengambil cadangan, gunakan perintah berikut:

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'John Doe'

Di sini file "file-enc-privkey.asc" akan menyimpan cadangan kunci pribadi dengan aman. Setelah ekspor dan pencadangan kunci selesai, kami sekarang dapat mengenkripsi dan mendekripsi file .tar.gz. Gunakan perintah berikut untuk mengenkripsi:

gpg --encrypt --recipient 'John Doe' files.tar.gz

Ingatlah untuk mengubah 'John Doe' pada perintah di atas menjadi nama yang Anda berikan selama pembuatan kunci, jika tidak enkripsi akan gagal. Ketika perintah berhasil dijalankan, file terenkripsi bernama "files.tar.gz.gpg" akan dibuat.

Sekarang kita dapat mendekripsi arsip tar.gz menggunakan perintah berikut. Ini akan menggunakan kunci pribadi bersama dengan frasa sandi untuk mendekripsi dan menyediakan folder yang didekripsi. Gunakan perintah berikut untuk mendekripsi:

gpg --output output.tar.gz --decrypt files.tar.gz.gpg

Perintah di atas akan meminta kata sandi dan kemudian mendekripsi file terenkripsi dan membuat file terkompresi bernama "output.tar.gz" yang kemudian dapat diekstraksi ke folder dengan tar untuk mendapatkan kembali file. Gambar berikut menunjukkan output dari perintah enkripsi dan dekripsi:

2.4 Mengapa GPG?

GPG mendukung keduanya:enkripsi kunci publik dan enkripsi simetris dan ini memberikan fleksibilitas yang baik dan dapat digunakan untuk berbagai aplikasi. Tidak perlu memberikan informasi sensitif apa pun dan juga gpg dapat memiliki sejumlah penyandi dengan menggunakan kunci publik. Pilihan diberikan kepada pengguna untuk memilih dari beberapa algoritma enkripsi. Alasan ini menjadikannya alat keamanan yang sangat berguna untuk enkripsi file dan folder atau data.

3 Enkripsi menggunakan OpenSSL

3.1 Pengenalan OpenSSL

Proyek OpenSSL adalah upaya kolaboratif untuk mengembangkan toolkit OpenSource yang kuat, kelas komersial, berfitur lengkap dan mengimplementasikan protokol Secure Sockets Layer (SSL v2/v3) dan Transport Layer Security (TLS) serta protokol umum kekuatan penuh perpustakaan kriptografi tujuan. OpenSSL tersedia untuk sebagian besar sistem operasi mirip Unix dan didasarkan pada SSLeay. OpenSSL juga mendukung banyak aplikasi SSH, SFTP, dan SCP. Di sini kami menggunakan OpenSSL untuk mengenkripsi data dengan menggunakan enkripsi asimetris dan cipher AES. Enkripsi simetris dapat digunakan untuk mengenkripsi file atau data yang lebih besar.

3.2 Membuat kunci Publik dan Pribadi

Hal pertama yang harus kita lakukan adalah menghasilkan kunci publik dan pribadi. Pertama-tama kita membuat kunci pribadi. Untuk melakukannya, gunakan perintah berikut:

openssl genrsa -out private_key.pem 1024

Perintah di atas menginstruksikan OpenSSL untuk menggunakan RSA untuk menghasilkan kunci pribadi dengan ukuran 1024 byte. Kunci tersebut kemudian disimpan dengan aman di dalam file bernama "private_key.pem" . Output dari perintah ini akan terlihat seperti gambar di bawah ini:

Setelah kunci privat (rahasia) dibuat, kita dapat menggunakannya untuk menghasilkan kunci publik sehingga mereka membentuk pasangan. Gunakan perintah berikut untuk membuat kunci publik:

openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout

Maka akan terlihat seperti gambar di bawah ini:

3.3 Mengenkripsi data

Kita sekarang dapat menggunakan kunci publik untuk mengenkripsi data. Di sini kita akan mengenkripsi file "test.txt" dan menyimpan teks terenkripsi di file encrypt.dat. Jalankan perintah berikut:

openssl rsautl -encrypt -inkey public_key.pem -pubin -in encrypt.txt -out encrypt.dat

Gambar berikut menunjukkan file teks sebelum dan sesudah enkripsi:

3.4 Mendekripsi data

Di sini kami menggunakan kunci pribadi untuk mendekripsi file. Jalankan perintah berikut:

openssl rsautl -decrypt -inkey private_key.pem -in encrypt.dat -out decrypt.txt

File decrypt.txt akan berisi data yang didekripsi. Eksekusi perintah di atas dan juga isi file ditunjukkan pada gambar di bawah ini:

4 Kesimpulan

Metode yang ditunjukkan di atas sangat aman bila digunakan dengan hati-hati dan memungkinkan beberapa sandi dan tingkat keamanan untuk menyesuaikan dengan tingkat keamanan yang berbeda. Jadi semua ini dapat digunakan adalah berbagai skenario untuk mengenkripsi file/folder dan data mentah.

  • OpenSSL
  • BukaPGP

Linux
  1. Memulai dengan firewall Linux

  2. Memulai dengan perintah tac Linux

  3. Memulai dengan perintah cat Linux

  1. Memulai PiFlash:Mem-boot Raspberry Pi Anda di Linux

  2. Memulai PostgreSQL di Linux

  3. Memulai SSH di Linux

  1. Memulai dengan btrfs untuk Linux

  2. Saran untuk memulai dengan GNOME

  3. Memulai dengan desktop GNOME Linux