ααΆααααααααΆααααΆαααααα·αααΆααα»ααααα·ααΆααα α αΎαααΆααααααααΆαααααα»αααααΆαααΊαα·αα’αΆα
α
αα
αΆαααΆαααα αααα αΎαααΆααΌαα ααα»ααααα½αααααααααααα
αααα
ααΎαααααΆαααα’α·ααα
αααααααααΆαα
α»α
α¬αα
ααΎαααΌααΈαααα ααΎααααΈααΆααΆααΆααΆααααααααΆαααα
ααααΆααα
αααα»ααααα·αααααα’αααααααΎααααΆαα "ααααα
" αα·αααΆαααΏααΆααααααΆαααΆαααΆααα·αααααΌαααΆαααΆαααααααααα ααΆαααΆααααααααααΆααααΈααααααΆ (2FA)α
αααααΆαααααΆααα½ααααα αΌαααααΆααααΆαααΆααααΆααα§ααααα αα·αααΉαααΈααααααααΆααααααααΆ ααΌα PIN αααα½αααΆα’αΆα ααΆααααααΆαααα αα·αααΆααααα½αα αα αΆαα αα»ααα·ααααα·αααααααα PIN α¬α αααααααααΌαααΆαααΌααΆααααααααααΌαααΆααααααα·αααα·ααΆαααΆα αα·αααΆαααΉααααααΉαααΎαααααΆαα PIN brute forceα
ααΎαααΈααααααααΆααΎαα‘αΎααα αααα»αααααΆααααΆααααααΆαα·ααΆαααααα½αααα ααα±ααα’αααΈαααααΎαααΆαααααααΆα GOST α αααααΎα 2FA ααααααααΆααααΆαα αΌααα αααα»αααΈαα»α ααΉαααααΌαααΆααα·ααΆααααΆα αααα»αααΉαα αΆααααααΎαααΈα ααααΆαα
αααΌαα»α PAM
Pluggable Authentication Modules (PAM) ααΊααΆαααΌαα»ααααααΆα API αααααααΆα αα·αααΆαα’αα»ααααααααααΆααααααααααΆαααααααααα
αααα»ααααααα·ααΈα
α§αααααααααΎααααΆαα αα·ααααααα·ααΈααΆααα’αααααα’αΆα
ααααΎααΆαααΆαα½α PAM ααααΎαααΎααα½αααΆ α αΎαα’αΆα
ααααΎααΆαααααΆααααΆααααααααααΆααα’αααααααΎααααΆααα
αα
αααα»αααΆαα’αα»αααα ααΆααααΎαααΆαααΌα
αααα ααΆααααααααΆα
αΌαα α
PAM αααααααΎααΆααααα½ααα·αα·αααα
αΆαααΆα
αααΆααα’αααααααααΎαααΌαα»ααααααΆααααααΆαααα
αααα»αα―αααΆαααααααα
ααΆαααααααα α αΎααααα‘αααααααααααα‘αααα
ααΆααααααααΆα
αΌααα·αα
librtpam
αααΌαα»αααααααααΎαα‘αΎαααααααα»αα αα»α Aktiv ααααααααΆααααααααααΆααααΈααααααΆααα’αααααααΎααααΆαααααααααΎααΆαααααΆααα α¬αααααΆαααααΆαα USB αααααααΎαα asymmetric αααααΆααααααααΆαα α»αααααααααα»αααααΆαααααΈααααα»ααααα»αα
αααααΎααααααΆαααααααααα·ααααα·ααΆαααααααΆα
- αααααΆαααααΆαααααααΆαα»ααα·ααααΆααααααααααα’αααααααΎ αα·αααα―αααααααααΆ;
- αα·ααααΆααααααααααΌαααΆααααααΆαα»ααααα»αααααααααααα’αααααααΎααΆααΆααα»αα α·αααα
ααααΎαααΆααααααααααΆααααΎαα‘αΎαααΌα ααΆααααααα
- Rutoken ααααααααα·ααααΆααααααααααΆαααααα½αααααα’αααααααΎα
- ααΌα PIN αα·αα·ααααααααΆααααΌαααΆαααααΎαα»αα
- αα·ααααααα αααααααααΌαααΆαα α»αα αααααααΆααΎααα―ααααααααααΆαααα αααα»ααααααααΈα Rutoken α
- α αααααααΆααααααααααΌαααΆααααααααααΆαααααααααΎααααΆααΆαααααΈαα·ααααΆααααααααααα’αααααααΎα
- αααΌαα»ααααα‘αααααααααααααααααΆααα αααααααΆαα αααααα·ααΈα α ααΌαααααα
α’αααα’αΆα αααααααααΆαααααααααΎααααΆααα α»α GOST R 34.10-2012 (αααααα 256 α¬ 512 αααΈα) α¬ GOST R 34.10-2001 α α½αααααα
α’ααααα·αα αΆαααΆα ααααα½αααΆααααα’αααΈαα»ααααα·ααΆαααααααααα αα½αααΆααααΌαααΆααααααΎααααααααΆαααα αααα»α Rutoken α αΎααα·αααααα»αα’αααα αα αΆαααααααΆαααα»αα’αα‘α»ααααααααα·ααααα·ααΆαααααΈααααααα
Rutoken EDS 2.0 ααααΌαααΆααααααΆααααα FSB αα·α FSTEC αααααΆα ββNDV 4 ααΌα
ααααααΆα’αΆα
ααααΌαααΆαααααΎαα
αααα»αααααααααααααααΆααααααααΎαααΆαααααααΆααααααΆααα
ααΆαααααΎααααΆααααΆααααααα
ααααΎαααααΈαα»α ααααΎαααΆαα½αααΉαααααΎ α§ααΆα ααα ααΎαααΉαααααΎ xUbuntu 18.10α
1) ααα‘αΎααααα ααα αΆαααΆα α
sudo apt-get install libccid pcscd opensc
ααααα·αααΎα’αααα
ααααααααααΆαα
αΆαααααααααα»αααααααΎααΆαα»αααααΆα’αααααα ααΌαααα‘αΎααααα
αααααααα libpam-pkcs11
.
2) αααααααααΌαα»α PAM ααΆαα½αααΉαααΆαααΆαααα GOST
αααα»ααααα»ααααααΆαααααΈ
α
ααααααΆαα·ααΆαααα PAM librtpam.so.1.0.0 αα
αααααααααα
/usr/lib/
α¬ /usr/lib/x86_64-linux-gnu/
α¬ /usr/lib64
3) ααα‘αΎααααα ααααΆαα½α librtpkcs11ecp.so
ααΆααα αα·αααα‘αΎααααα
αα DEB α¬ RPM ααΈαααα
4) αα·αα·αααααΎαααΆ Rutoken EDS 2.0 ααααΎαααΆααα αααα»ααααααααα
αα
αααα»αααααΆααΈαααΎαααααα·ααααα·
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
ααααα·αααΎα’αααααΎααααααΆαα Rutoken ECP <no label>
- ααΆααΆααααααΆα’αααΈααααααααΆαααΊααα’
5) α’αΆααα·ααααΆαααααα
αααα»ααα·αα·αααααΎαααΆα§αααααααΆααα·ααααΆαααααα
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
ααααα·αααΎαααααΆααααΈαααααΆαα:
Using slot 0 with a present token (0x0)
- ααααααΆαααααΌαααΆααααα αΆα α’αααΈααΌααα αα·ααα·ααααΆαααααα α’αααααααΌαα’αΆααα·ααααΆαααααα α αΎααααααΆαα»αααΆαα
αααα»αααΆαα ααΎααααΈααααΎααΌα
αααα ααΌαααααΎαααΆαααΆααααααααΆααΆαααααα ααααααα½αα±αα {id} α’αααααααΌααααα½αααααααααΆαααα·ααααΆαααααααααα’αααααΆαααΎααα
αααα»αααααααααααΆααααααααΆααΈαα»αα
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
ααααα·αααΎα―αααΆα cert.crt ααααΌαααΆααααααΎα ααΌααααααα ααα αΆαααΈ 6)α - αα·αααΆαα’αααΈααΆααα’ααααααααΆααααα§αααααααΊαααα ααΆααααα’ααααααααααααααααα’ααα α¬αααααΎααα αα·ααα·ααααΆααααααααααααα½αα―α αααααααΎααΆαααα αΆααααααΆααα
5.1) αααααΎααα·ααααΆααααααααΆααααα
ααα α·ααααα»αααΆαα! αα·ααΈααΆααααααααααΆααα·αααααΆαααααΆααααΆααααααΎααα αα·ααα·ααααΆααααααααΊαααααααααααΆααααΆαααααΎααααα α αΎααα·αααΆααααααααααΆααααααΎαααα»αααααααααα»αααααα ααΎααααΈααααΎααΌα αααα α’αααααααΌαααααΎαα αα·ααα·ααααΆαααααααααα αααααα’αΆααααΆαααα·ααααΆαααααααααα’αΆα αα»αα α·αααααΆαααααααααΆαααααααα’ααα α¬α’αΆααααΆαααααααΆααααΆαααα½αααααΆααα
αααΌαα»α PAM ααααΌαααΆααα ααΆα‘αΎαααΎααααΈααΆαααΆααα»αααααΌααααααα»ααααα»α αα·αααααΌαααΆααα ααΆα‘αΎαααΎααααΈααααΎααΆααα αααα»αα’αααααΆαααΌα αα αααααΆαααΆαα’αααααααΎααααΆαααα·α αα½α α’ααααααααααααα’αΆα αααα½ααα·αα·αααααΆαααα αΌααα·ααααΆαααααα αα·ααα·αααααΈααααα ααααΌα ααΆαααααααα»ααααΆααααα·ααααΆαααααααααααα αααΌαα»α PAM αα·αααΆααααΉαααΈαααααααααααααΆαααα·ααααΆαααααααααααααΎ CRLs αα·ααααααΎααααααααααΆααααααΆαααΏαα»αα α·ααααα α‘αΎαα
αααααααΆαααΆααααα½α (ααΆαααααααααα·ααΈαα»ααα)
ααΎααααΈααα½αααΆααα·ααααΆααααααααΆααααα ααΌαααααΎ
ααααΌααααα geek (ααΆαααααα»αααΌα αα·αα’αΆα ααΆαααααα·ααΈα ααααα)
αα·αα·αααααΎααααα OpenSC
$ opensc-tool --version
ααααα·αααΎαααααα·α
ααΆα 0.20 αααααΆααααααααΎαα
αα
α»ααααααααΆα α¬ααααΆαααΆ
αααααΎαααΌαααααΉααααααΆααααΆαααΆααααααααΆααααααα
--key-type: GOSTR3410-2012-512:Π (ΠΠΠ‘Π’-2012 512 Π±ΠΈΡ c ΠΏΠ°ΡΠ°ΠΌΡΠ΅ΡΠΎΠΌ Π), GOSTR3410-2012-256:A (ΠΠΠ‘Π’-2012 256 Π±ΠΈΡ Ρ ΠΏΠ°ΡΠ°ΠΌΡΠ΅ΡΠΎΠΌ A)
--id:
α§ααααααααααα’ααααααααΆαααααα» (CKA_ID) ααΆααααα½α’ααααααααααααααΆαααΈααααααααΈααΆααΆα ASCII α ααααΎαααααααΌα ASCII αααααΆαααα½α’αααααααα’αΆα
ααααα»αααααΆα ααΈααααα... ααααααααΆααααΉαααααΌααααααΌααα
OpenSSL ααΆααααα’ααααα α§ααΆα ααα αααααΌα ASCII β3132β ααααΌαααααΆααΉαααααα’αααα β12βα ααΎααααΈααΆαααΆααααα½αα’αααα’αΆα
ααααΎ
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
αααααΆααααΎαααΉααααααΎααα·ααααΆααααααα αα·ααΈααΈαααΉαααααΌαααΆααα·αααααΆααΌα
ααΆααααααα ααΈαα½αααΊααΆαααα CA (ααΎαααΉαααααΎ CAs ααΆααααα) ααΈααΈαααΊα
α»αα αααααααΆααααααα½αα―αα ααΎααααΈααααΎααΌα
αααααααΌαα’αααααααΌαααα‘αΎα αα·αααααααα
ααΆαααααααα OpenSSL αααα 1.1 α¬αααααααα ααΎααααΈααααΎααΆαααΆαα½α Rutoken ααΆαααααααΌαα»α rtengine αα·ααααααααααΎααααα
ααα
α§ααΆα αααα αααααΆαα '--id 3132
'αα
αααα»α OpenSSL α’αααααααΌααααααΆαα "pkcs11:id=12
"α
α’αααα’αΆα
ααααΎααααΆαααααα CA ααΆααααα ααααααα»ααααααΆαα
αααΎαα§ααΆα αααα
αααααΎααα½ααααααΊααααΌααααααααΆααααα·α αα·ααααααΎαααΆαα
α»αα αααααααΆααααααα½αα―αα
$ openssl req -utf8 -new -keyform engine -key "pkcs11:id=12" -engine rtengine -out req.csr
αααα»ααααα αααα·ααααΆαααααααα
α§ααααα
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
6) α α»αααααααα·ααααΆαααααααα αααα»ααααααααα
ααΌαααααΆααααΆαα·ααααΆααααααααααα’αααααΎααα ααΌα ααΆα―αααΆα base64α
ααααα·αααΎαα·ααααΆααααααααααα’αααααΎααα
ααΌα
αααα
αααααΆααααα’αααααααΌαααααααααα·ααααΆααααααααΈαααααα DER αα
ααΆαααααα PEM (base64)
$ openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
ααΎααα·αα·αααααΎααααααααααΆα’αααΈαααΊαααα·ααα
αααα»αααααΆααα₯α‘αΌααααα
αααααααα·ααααΆαααααααα
αααα»ααααααΈαααα·ααααΆαααααααααα’αΆα
αα»αα
α·αααααΆαα
$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates
αααααΆααα
α»ααααααααΆαααΆααααααΈαα·ααααΆαααααααααα’αΆα
αα»αα
α·αααααΆαααΈααΆαααααΌαααΆαααααΆααααααΌααααα
ααααα α¬αααα
ααααΆαααα’αααααααΎααααΆααααααααααα ααΆααΆααΆααααααΆααααΆααααΈααΆααααααααα·ααααΆαααααααααααα½ααααα
ααΈααα αα·αα’αΆα
α
αΌααααα½αα’αααα
7) αααααααΆααααααααααΆαα
ααΆαααα‘αΎααααΌαα»α PAM ααααααΎαααΊααΆααααααααααααααΆαααΆαααααα»α α αΎαααααΌαααΆαααααΎααΆαααααααΌα
ααααΆαα
ααΉαααΆαααα‘αΎααααΌαα»ααααααααααααα αααααΎαβααΆβα―αααΆα /usr/share/pam-configs/rutoken-gost-pam
αααααΆααααααααααααααααΌαα»α ααΆααΎααΆααααΌαααΆαααΎαααΆαααααΆαααΎα α’αΆαα·ααΆααααααααΌαα»α αα·ααααΆαααΆααααααααααΆααααααααααΆααα
αααΆαααΆαααααααααααααααΆααααΆααααααΌαααΆααααααΆααααΆαααααααααααααα·ααααα·ααΆαα
- ααΆαααΆαα αααΌαα»αααααααααααΌααααααα‘ααααΆαααααΎαααααΆαα·αααααΆαα ααααα·αααΎααααααααααΆαα α ααΌααααααααΌαα»αααΆαααΆαααααΎαααα’αα·αααααΆα ααΆααΉααααααΆαα±ααααΆαααα α»ααααα»αααΆααααααααααΆααα ααααΎααΉαααααΌαααΆααααααΆαα ααα»αααααααΌαα»αααααα αααααΉαααααΌαααΆαα α α
- αααααΌαααΆαα ααααααααααΆαα ααΉααααααΌαααΆα ααα»ααααααααΆαααααΆααααααα»αααΆααααααααααΆαα α αΎααα·αα’αΎααΎααΉααααΌαα»αααααααααα
- αααααααααΆααα ααααα·αααΎααααΆααααΌαα»αααΆαα½ααααααααΌαααΆα α¬αααααααααΆαααα»αααααααΌαα»αααααααααΆααααα‘ααααααααα’αα·αααααΆααα ααααααΌαα»αααΉααααα‘ααααΆαααααΎαααααΆαα·αααααΆαα αααΌαα»αααααα αααααΉαααααΌααα·αα’αΎααΎα
- ααααα α α·αααα ααααα·αααΎαα·αααΆααααΌαα»ααααααααΌαααΆααα ααΎααα α αΎαααααΆααααΌαα»αααΆαα½ααααααααααΆααααααααααααααα·αααααΆααα ααααααΆαα αα ααΆαααααΌαα»ααααααΎααα½αααααΌαααααααααααααααα·αααααΆαα
ααΆαα·ααΆα―αααΆααααααα /usr/share/pam-configs/rutoken-gost-pam
:
Name: Rutoken PAM GOST
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient /usr/lib/librtpam.so.1.0.0 /usr/lib/librtpkcs11ecp.so
αααααΆαα»αα―αααΆααααααΆααααααααα·ααααα·
$ sudo pam-auth-update
αα
αααα»ααααα’α½α
αααααα
α‘αΎα ααΌαααΆαααααααΆααααΆααα
ααΆααααΆα Rutoken PAM GOST α αΎαα
α»α
OK
8) αα·αα·αααααΎαααΆαααααα
ααΎααααΈαααααΆα’αααΈααααααααΆαααααΌαααΆαααααααα
ααΆαααααααα ααα»αααααααα»αααααααα½ααα·αααΆααααααααααααΆααααα»αααΆαα
αΌααα
αααα»ααααααααα ααΌααααα
αΌαααΆααααααααΆ
$ sudo login
αααα
αΌααααααα’αααααααΎααααΆααααααα’αααα α’αααΈααααααααΆαααααΌαααΆαααα‘αΎααααΆαααααΉαααααΌα ααααα·αααΎααααααααααααΌαααΆααααααΌα PIN α§αααααα
9) ααααααα ααΆαααααααααα»ααααα½ααααααααααΌαααΆααΆαααα αααααααααααΆαααααΆααααααΌαααΆααααααα αα
αα½ααααα
αΌααα
αααα»ααααα
αα libpam-pkcs11
α§αααααααααΎααααΆαααα½ααααα
αΌα pkcs11_eventmgr,
αααα’αα»ααααΆαα±ααα’αααα’αα»αααααααααααΆααααααααα
ααααααααααΉαααα·ααΆααα PKCS#11 ααΎαα‘αΎαα
αααααΆααααΆαααααα pkcs11_eventmgr
αααααΎααΆα―αααΆαααααααα
ααΆααααααααα /etc/pam_pkcs11/pkcs11_eventmgr.conf
αααααΆααααΆαα
ααα
αΆαααΈαα»α
ααααααααααΆ ααΆααααααααΆααααααααΆαα±ααααααΈαα½αααααΌαααΆαα
αΆαααα αα
ααααααααΆαααααΆααα α¬αααααΆαααααΆααααααΌαααΆαααα
ααααΉααα»αααααΆα αααβααΈβαααβαα event card_remove
.
α§ααΆα αααα―αααΆαααααααα
ααΆααααααααααααΌαααΆααααα αΆαααΆααααααα
pkcs11_eventmgr
{
# ΠΠ°ΠΏΡΡΠΊ Π² Π±ΡΠΊΠ³ΡΠ°ΡΠ½Π΄Π΅
daemon = true;
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ
debug = false;
# ΠΡΠ΅ΠΌΡ ΠΎΠΏΡΠΎΡΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
polling_time = 1;
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠΌ-Π°ΡΡΠ° Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΡ
# ΠΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 0
expire_time = 0;
# ΠΡΠ±ΠΎΡ pkcs11 Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π ΡΡΠΎΠΊΠ΅Π½
pkcs11_module = usr/lib/librtpkcs11ecp.so;
# ΠΠ΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΊΠ°ΡΡΠΎΠΉ
# ΠΠ°ΡΡΠ° Π²ΡΡΠ°Π²Π»Π΅Π½Π°:
event card_insert {
# ΠΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ)
on_error = ignore ;
action = "/bin/false";
}
# ΠΠ°ΡΡΠ° ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π°
event card_remove {
on_error = ignore;
# ΠΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΊΡΠ°Π½Π°
# ΠΠ»Ρ GNOME
action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
# ΠΠ»Ρ XFCE
# action = "xflock4";
# ΠΠ»Ρ Astra Linux (FLY)
# action = "fly-wmfunc FLYWM_LOCK";
}
# ΠΠ°ΡΡΠ° Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π°
event expire_time {
# ΠΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ)
on_error = ignore;
action = "/bin/false";
}
}
αααααΆααααΈααααααααααααααα·ααΈ pkcs11_eventmgr
ααΎααααΈα
αΆααααααΎαα ααΎααααΈααααΎααΌα
αααα ααααααα½αα―αααΆα .bash_profileα
$ nano /home/<ΠΈΠΌΡ_ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ>/.bash_profile
αααααααααααΆαα pkcs11_eventmgr αα
α
α»ααααα
ααααα―αααΆα α αΎαα
αΆααααααΎαα‘αΎααα·αα
ααα αΆααααααΆααα·αααααΆαααααΆααααΆαααα‘αΎαααααααααααααα·ααααα·ααΆαα’αΆα ααααΌαααΆαααααΎααΆααΆαααααΆααα αααα»αααΆαα ααα αΆαααΈαα»α ααααΎαααΆαα½α αα½αααΆαααααααααααααα»ααααα»ααααααα
ααα ααααΈααααα·ααααΆα
αα»αααααΌαααααΈαα»α
αααα»αααΆααααααΆαααα·αααΆαααΆααααααααΆααα‘αΎααα
αααα»αααΈααααΆααααΆααααααΆαα·ααΆααα»αααααΈ α αΎαααΆαααα‘αΎαααΆααααααααααΆαααααααΆααΈααααα’αΆα
αα»αα
α·αααααΆααα
αααα»α OS ααααα·ααααααααΆααααα½ααααααα ααΎαααΉαααΈαααΆααααα»αααΆααα½αα’ααααααα»αααΆααααααααΆααααα αΆ "ααΆααααααααΆαα" ααΆαα½αααΉαααΆαααααΆααααα αΎαα’αΆα
ααΆαααΆαααΆαα
αΌαααααΎαα»αααααΌαααααααα’ααααααααΆαααΏααΆααααααα·αα
αΆαααΆα
αα
αααΆααααα
αααΎαααΎααΆα
ααααα: www.habr.com