Differences

This shows you the differences between two versions of the page.

Link to this comparison view

uso:cursuri:curs-12 [2016/01/10 19:50]
razvan.deaconescu [Folosire John the Ripper pentru password cracking]
uso:cursuri:curs-12 [2023/01/09 00:11] (current)
sergiu.weisz
Line 1: Line 1:
-====== Curs 12 - Elemente ​de securitate ​=======+====== Curs 12 - Administrarea spatiului ​de stocare ​=======
  
-  * [[http://​elf.cs.pub.ro/​uso/​res/​cursuri/​curs-12/curs-12-handout.pdf | Slide-uri curs]] +  ​* [[https://​docs.google.com/​presentation/​d/​1RXPvEXsuRNRrdo3VsfG_EtUHS9en4ncd/​edit?​usp=sharing&​ouid=108131427433094834232&​rtpof=true&​sd=true| Slide-uri curs]] 
-  * [[http://​elf.cs.pub.ro/​uso/​res/​cursuri/​curs-12/curs-12-handout-4on1-notes.pdf | Handout 4on1 and notes space]] +  * **Cuvinte cheie**: HDD, SSD, Partiționare,​ Formatare, MBR, GPT, RAID, Back-up, LVM, mount, umount 
-  * [[http://​elf.cs.pub.ro/​uso/​res/​cursuri/​curs-12/curs-12-handout-8on1.pdf | Handout 8on1]]+  * **Suport de curs** 
 +    * [[https://​github.com/​systems-cs-pub-ro/​carte-uso/​releases| Utilizarea sistemelor de operare]] 
 +        * Capitolul 10 - Administrarea spațiului de stocare  
 + 
 +<​HTML>​ 
 +<​center>​ 
 +<iframe src="​https://​docs.google.com/​presentation/​d/​e/​2PACX-1vTTVzrqv76petP3yVxZ76OvlBZae1pPfMxV3IhLVta7DKdtACTsaZc11DM4ofRRuQ/​embed?​start=false&​loop=false&​delayms=3000"​ frameborder="​0"​ width="​480"​ height="​389"​ allowfullscreen="​true"​ mozallowfullscreen="​true"​ webkitallowfullscreen="​true"></​iframe>​ 
 +</​center>​ 
 +</​HTML>​ 
 + 
 +/* 
 +  * [[https://​drive.google.com/​open?​id=1aN0VW-LvefVPyJKyI_mFjFTlKEjbu8oM|Handouts 3on1 and notes space]] 
 +  * [[https://​drive.google.com/​open?​id=1ilzrwOlni4nnUUgO6g_X_fB6Ktg0sqZD|Handouts 6on1]] 
 +  * **Cuvinte cheie**:  
 + 
 +*/ 
 + 
 +/* 
 +  * **Suport de curs** 
 +    * [[http://​elf.cs.pub.ro/​uso/​res/​carte/​uso_cap-13-auto.pdf|Capitolul 13: Automatizarea sarcinilor]] 
 +*/ 
 + 
 +/* 
 + 
 +====== Curs 11 - Elemente de securitate ======= 
 + 
 +  ​* [[http://​elf.cs.pub.ro/​uso/​res/​cursuri/​curs-11/curs-11-handout.pdf | Slide-uri curs]] 
 +  * [[http://​elf.cs.pub.ro/​uso/​res/​cursuri/​curs-11/curs-11-handout-4on1-notes.pdf | Handout 4on1 and notes space]] 
 +  * [[http://​elf.cs.pub.ro/​uso/​res/​cursuri/​curs-11/curs-11-handout-8on1.pdf | Handout 8on1]]
   * **Cuvinte cheie**: securitate, privilegii, principii de securitate, agenți, obiecte, ''​umask'',​ autentificare,​ autorizare, controlul accesului, ''​root'',​ ''​sudo'',​ parole, //password cracking//, //​passphrase//,​ ''/​etc/​passwd'',​ ''/​etc/​shadow'',​ criptografie,​ criptare, decriptare, //plain text//, //​ciphertext//,​ chei simetrice, chei asimetrice, semnătură digitală, semnare, verificare   * **Cuvinte cheie**: securitate, privilegii, principii de securitate, agenți, obiecte, ''​umask'',​ autentificare,​ autorizare, controlul accesului, ''​root'',​ ''​sudo'',​ parole, //password cracking//, //​passphrase//,​ ''/​etc/​passwd'',​ ''/​etc/​shadow'',​ criptografie,​ criptare, decriptare, //plain text//, //​ciphertext//,​ chei simetrice, chei asimetrice, semnătură digitală, semnare, verificare
   * **Suport de curs**   * **Suport de curs**
Line 11: Line 39:
 <​HTML>​ <​HTML>​
   <​center>​   <​center>​
-    <iframe src="http://​docs.google.com/​viewer?​url=http://​elf.cs.pub.ro/​uso/​res/​cursuri/​curs-12/curs-12-handout.pdf&​embedded=true"​ width="​600"​ height="​480"​ style="​border:​ none;">​+    <iframe src="https://​docs.google.com/​viewer?​url=http://​elf.cs.pub.ro/​uso/​res/​cursuri/​curs-11/curs-11-handout.pdf&​embedded=true"​ width="​600"​ height="​480"​ style="​border:​ none;">​
     </​iframe>​     </​iframe>​
   </​center>​   </​center>​
Line 200: Line 228:
 ==== Criptare/​decriptare folosind chei simetrice ==== ==== Criptare/​decriptare folosind chei simetrice ====
  
-TODO+Pentru securizarea informației transmise sau stocate este recomandat ca aceasta să fie criptată. În Internet, foarte multe site-uri folosesc acum ''​HTTPS''​ (HTTP securizat). Pentru date locale se pot folosi utilitare de criptare.
  
 +Un utilitar folosit pentru criptare (și alte operații criptografice) este ''​openssl''​. Cu ''​openssl''​ putem cripta și folosind chei simetrice și chei asimetrice.
 +
 +Pentru testare, să creăm un fișier //plain text// (ușor de citit):<​code>​
 +student@uso-demo:​~$ echo "This is my life's biggest secret: I have no life" > plain.txt
 +student@uso-demo:​~$ cat plain.txt ​
 +This is my life's biggest secret: I have no life
 +</​code>​
 +
 +Pentru a cripta accest fișier, folosim algoritmul ''​AES''​ (//Advanced Encryption Standard//​),​ un standard de facto de criptare, cu ajutorul comenzii<​code>​
 +student@uso-demo:​~$ openssl enc -e -aes-256-cbc -in plain.txt -out encrypted.dat
 +enter aes-256-cbc encryption password:
 +Verifying - enter aes-256-cbc encryption password:
 +student@uso-demo:​~$ ls -l encrypted.dat ​
 +-rw------- 1 student student 80 Jan  5 12:17 encrypted.dat
 +student@uso-demo:​~$ xxd encrypted.dat ​
 +0000000: 5361 6c74 6564 5f5f 6b32 c1b2 6580 bcfe  Salted__k2..e...
 +0000010: f988 bd4d 4432 9aa3 8925 0097 4262 1732  ...MD2...%..Bb.2
 +0000020: 119a c5c8 f5de bca0 3a9e 4d96 57c7 1e1f  ........:​.M.W...
 +0000030: 3e22 e8ec eeec 3905 4e93 3ee8 fb5e c04a  >"​....9.N.>​..^.J
 +0000040: e443 955f c693 7171 fa10 f5ac ded1 f947  .C._..qq.......G
 +</​code>​
 +În prima comandă am realizat criptarea fișierului ''​plain.txt''​ în fișierul ''​encrypted.dat''​. Utilitarul ne-a cerut cheia de criptare și apoi a realizat criptarea în fișierul ''​encrypted.dat''​. Fișierul este un fișier binar; putem urmări conținutul său folosind comanda ''​xxd''​.
 +
 +De obicei vom șterge fișierul ''​plain.txt''​ și apoi vom decripta, la nevoie, fișierul ''​encrypted.dat''​. Facem acest lucru folosind comenzile de mai jos<​code>​
 +student@uso-demo:​~$ rm plain.txt ​
 +student@uso-demo:​~$ openssl enc -d -aes-256-cbc -in encrypted.dat -out plain.txt
 +enter aes-256-cbc decryption password:
 +student@uso-demo:​~$ cat plain.txt ​
 +This is my life's biggest secret: I have no life
 +</​code>​
 +Observăm că, după ștergerea fișierului //plain text// inițial, și după operația de decriptare căreia i-am transmis cheia folosită la pasul anterior, am obținut fișierul inițial.
 +
 +<​note>​
 +Sunt și alți algoritmi posibili pentru criptare simetrică folosind comanda ''​openssl''​. Pentru a-i determina folosim comanda<​code>​
 +student@uso-demo:​~$ openssl enc -help
 +</​code>​
 +</​note>​
 +
 +Dacă dorim să stocăm fișierul criptat într-o formă de fișier text (dar tot criptat) putem realiza o codificare [[https://​en.wikipedia.org/​wiki/​Base64|base64]] a acestuia. Pentru aceasta, folosim pentru criptare și decriptare comenzile în forma de mai jos:<​code>​
 +student@uso-demo:​~$ openssl enc -e -base64 -aes-256-cbc -in plain.txt -out encrypted.dat
 +enter aes-256-cbc encryption password:
 +Verifying - enter aes-256-cbc encryption password:
 +student@uso-demo:​~$ cat encrypted.dat ​
 +U2FsdGVkX18HD7U8AkSTfWFQEryHAjfJ7hQlWZQSdMvmdwZSES76zQz7JioIultg
 +x4sLDHbAA6xTo8ioX3gG/​L+7REMUuN46hUXCBB+G1c4=
 +
 +student@uso-demo:​~$ openssl enc -d -base64 -aes-256-cbc -in encrypted.dat -out plain.txt
 +enter aes-256-cbc decryption password:
 +student@uso-demo:​~$ cat plain.txt ​
 +This is my life's biggest secret: I have no life
 +</​code>​
 +
 +Observăm mai sus că avem o formă ASCII a fișierului criptat ''​encrypted.dat''​.
 ==== Criptare/​decriptare folosind chei asimetrice ==== ==== Criptare/​decriptare folosind chei asimetrice ====
  
-TODO+Criptarea cu chei simetrice are avantajul vitezei dar dezavantajul că trebuie știută (și partajată între cel care criptează și cel care decriptează) cheia de criptare. Mai mult, dacă acea cheie este slabă, un atacator poate sparge cheia și decripta fișierul.
  
 +Criptarea cu chei asimetrice folosește cheia publică pentru criptare; oricine poate astfel cripta. Pentru decriptare se folosește cheia privată și doar cel care o deține poate decripta.
 +
 +Pentru aceasta, vom folosi tot utilitarul ''​openssl''​. Vom folosi algoritmul ''​RSA''​ (//​Rivest-Shamir-Adleman//​) pentru criptarea asimetrică. Pentru început vom genera cheia privată și cheia publică:<​code>​
 +student@uso-demo:​~$ openssl genrsa -out privkey 2048
 +Generating RSA private key, 2048 bit long modulus
 +......................................................+++
 +.....................+++
 +e is 65537 (0x10001)
 +student@uso-demo:​~$ cat privkey ​
 +-----BEGIN RSA PRIVATE KEY-----
 +MIIEowIBAAKCAQEA4o1PEkzZawYItZFdxsPwA/​7kbffcDLQOSCtbdORA23uO6zk8
 +[...]
 +-----END RSA PRIVATE KEY-----
 +student@uso-demo:​~$ openssl rsa -pubout -in privkey -out pubkey
 +writing RSA key
 +student@uso-demo:​~$ cat pubkey ​
 +-----BEGIN PUBLIC KEY-----
 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4o1PEkzZawYItZFdxsPw
 +A/​7kbffcDLQOSCtbdORA23uO6zk8+4WLYrc1tgh827N2qcW28UsIxaA2YlowXJu7
 +[...]
 +-----END PUBLIC KEY-----
 +</​code>​
 +
 +Mai sus am generat cheia privată în fișierul ''​privkey''​ și cheia publică în fișierul ''​pubkey''​. Cheia publică este derivată din cheia privată. Formatul în care sunt stocate cele 2 cheie se numește PEM (//​Privacy-enhanced Electronic Mail//).
 +
 +Ca să criptăm fișierul ''​plain.txt''​ folosind cheia publică din fișierul ''​pubkey'',​ vom rula comanda<​code>​
 +student@uso-demo:​~$ openssl rsautl -encrypt -in plain.txt -out encrypted.dat -pubin -inkey pubkey ​
 +
 +student@uso-demo:​~$ xxd encrypted.dat ​
 +0000000: 97e7 bc72 4d76 708f 5b2b 7437 b698 2937  ...rMvp.[+t7..)7
 +[...]
 +00000f0: dfd0 3bfc f5b1 9a17 9655 2b9b e441 7bba  ..;​......U+..A{.
 +</​code>​
 +
 +Fișierul criptat este un fișier binar; îl putem vizualiza folosind comanda ''​xxd''​.
 +
 +Pentru a decripta fișierul ''​encrypted.dat''​ înapoi în fișierul ''​plain.txt''​ folosind cheia privată din fișierul ''​privkey''​ vom rula comanda de mai jos:<​code>​
 +student@uso-demo:​~$ openssl rsautl -decrypt -in encrypted.dat -out plain.txt -inkey privkey
 +student@uso-demo:​~$ cat plain.txt ​
 +This is my life's biggest secret: I have no life
 +</​code>​
 +
 +<​note>​
 +Cheia privată, la fel cum este cheia/​parola în criptare simetrică, trebuie ținută în siguranță. O recomandare este ca o cheie privată să fie protejată și de un passphrase. Introducerea passphrase-ului condiționează folosirea cheii private. O altă recomandare este folosirea unui [[http://​lifehacker.com/​5529133/​five-best-password-managers|Password manager]] care să rețină toate parolele și cheile în mod sigur (să nu fie scrise plain text undeva) sub protecția unui master password.
 +</​note>​
 ==== Semnare/​verificare folosind chei asimetrice ==== ==== Semnare/​verificare folosind chei asimetrice ====
  
-TODO+Un alt scenariu de folosire a cheilor asimetrice este pentru semnarea unor mesaje. Semnarea se face cu ajutorul cheii private (doar posesorul are acces) iar verificarea cu ajutorul cheii publice (oricine poate verifica). De obicei se transmite mesajul în plain text dar este de știut că cel care a trimis mesajul chiar este cel care l-a trimis, și pentru aceea se atașează fișierul de tip semnătură mesajului. 
 + 
 +Vom folosi tot cheia privată ''​privkey''​ și cheia publică ''​pubkey''​ de mai sus. 
 + 
 +Pentru semnarea mesajului vom folosi<​code>​ 
 +student@uso-demo:​~$ openssl rsautl -sign -in plain.txt -out signature -inkey privkey  
 +student@uso-demo:​~$ xxd signature  
 +0000000: 910f be3f 6a47 b150 f239 8105 3d64 a60d  ...?​jG.P.9..=d.. 
 +[...] 
 +00000f0: 7ffd 183f 26e4 221f c9dc 90b5 9510 7eca  ...?&​."​.......~. 
 +</​code>​ 
 + 
 +Pentru verificarea semnăturii vom folosi comanda<​code>​ 
 +student@uso-demo:​~$ openssl rsautl -verify -in signature -pubin -inkey pubkey  
 +This is my life's biggest secret: I have no life 
 +</​code>​ 
 + 
 +<​note>​ 
 +Pentru criptare/​decriptare și semnare/​verifcare cu chei asimetrice putem folosi și suita [[https://​www.gnupg.org/​|GnuPG]] (//GNU Privacy Guard//). 
 +</​note>​ 
 + 
 +*/
uso/cursuri/curs-12.1452448214.txt.gz · Last modified: 2016/01/10 19:50 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0