рдЦреБрдж рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреИрд╕реЗ рдХрд░реЗрдВ

рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ - рдореИрдВ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдИрдбреАрдПрд╕) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рд╢реМрдХрд┐рдпрд╛ рд╣реВрдВред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░, рдореИрдВрдиреЗ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗрдВрджреНрд░реЛрдВ рдореЗрдВ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ 100500 рд▓реЗрдЦреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддреИрдпрд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдПред рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рдпрд╣ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпрджрд┐ рдЖрдк "рдЕрдиреБрднрд╡реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░" рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдЕрдХреБрд╢рд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдореИрдВ рднреА рдХрдо рд╕реЗ рдХрдо "рдЕрдиреБрднрд╡реА" рдмрдирдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдЕрдВрджрд░ рд╕реЗ рдЗрд╕ рд░рд╕реЛрдИ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рдордЬрд╝реЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдкреАрдЬреАрдкреА рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рдПрдХ рдЕрдпреЛрдЧреНрдп рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВред рдпрд╣ рд╕рдордЭрддреЗ рд╣реБрдП рдХрд┐ рдХреЛрдИ рднреА рдЕрдореЗрд░рд┐рдХрд╛ рдЦреБрд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ, рдлрд┐рд░ рднреА, рдИрдбреАрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╢реМрдХреАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЫреЛрдЯреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рдЙрддрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╕рд╡рд╛рд▓ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯрд╛ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдЬреЛ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдИрдбреАрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдкрд░рд┐рдЪрд┐рдд рдХреЗ рд▓рд┐рдП - рдмрд╕ рд╕рд╣реАред


рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреНрдпрд╛ рд╣реИ


рд╕рднреА рдирд┐рдпрдо рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдХрд╛рдиреВрди рдореЗрдВ рджреА рдЧрдИ рд╣реИрдВ , рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕рдм рдХреБрдЫ рд░рд╛рдЬреНрдп рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╢рдмреНрджреЛрдВ рдХреЗ рдкреВрд░реНрдг рдХрд╛рдиреВрдиреА рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдвреЛрдВрдЧ рдХрд┐рдП рдмрд┐рдирд╛ред


рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдИрдбреАрдПрд╕) рдПрдХ рдЙрдкрдХрд░рдг рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓реЗрдЦрдХ (рдпрд╛ рдХрд┐рд╕реА рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдХрд░реНрддрд╛) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рдЦреБрдж рдХреЛ рд▓реЗрдЦрдХ рдХрд╣рддрд╛ рд╣реИред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ, рдИрдбреАрдПрд╕ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрд░реВрдк рд╣реИ: рдпрджрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ "рдХрд╛рдЧрдЬрд╝" рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд▓реЗрдЦрдХ рдЗрд╡рд╛рдиреЛрд╡ рд╣реИ, рдФрд░ рдкреЗрдЯреНрд░реЛрд╡ рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдиреАрдЪреЗ рд╣реИ, рддреЛ рдЖрдк рдЗрд╡рд╛рдиреЛрд╡ рдХреЗ рд▓реЗрдЦрдХ рд╣реЛрдиреЗ рдкрд░ рд╕рдВрджреЗрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд░рд▓ рдФрд░ рдмрдврд╝рд╛рдпрд╛ рд╣реИ ред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдорд╛рдирдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рд╕рднреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддрд░реАрдХреЗ (рдкреНрд░рд╛рдзрд┐рдХрд░рдг) рдЬреЛ рдИрдбреАрдПрд╕ рдХреЗ рдпреБрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдП рдЧрдП рдереЗ - рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕рд░рд▓ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИред рдпрджрд┐ рдЖрдк, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рддреЛ рдПрдХ рдмрд╣реБрдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХреЗрдВрджреНрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдХрд░ рдЕрдкрдиреА рдкрд╣рдЪрд╛рди рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рд░рдХрд╛рд░реА рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рдЕрдкреАрд▓ рднреЗрдЬреЗрдВ, рддреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХрд╛ рдЖрдВрддрд░рд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдЧрд╛ред


рдореИрдВ рдПрдХ рдмрд╛рд░ рдПрдХ рд╕рдВрдЧрдарди рдореЗрдВ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рдРрд╕реЗ рддрд░реАрдХреЗ рд╕реЗ рдорд┐рд▓рд╛ рдерд╛: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХрд╛ рд╣реИрд╢ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ( , ). ( ) , . , : , fetch- ajax- . , : , .


. ; , , . - ( , , ), : . ; (public key), тАФ (private key). , , .


, ( ? ) , , , . , , , . , , , .


, : , тАФ . ( ) . , , , , - ! . ( ), , .


. , . : . ( ) . , , , , .


. (detach), . , - .


? : , . :


  • ;
  • , ;
  • , , ( ). !

, , , ┬л┬╗. , . , , . : , . , ...


. , , , ( , ). ( ), . , , (fingerprint), , , . , , , , , . , ( 40 ).


, , , тАФ , . . : , ( ). , , .


, (, ) , . , ( ): .


, : - (, ) . , , .


, ( ) ( ). , (, ). (, ) , , .



, . , , , (public key) (private key).


. , , PGP (Pretty Good Privacy). 1991 , (, OpenPGP). 1999 GNU Privacy Guard (GnuPG, GPG). GPG ; - Windows , , gpg4win. - .


, (- , - root')


gpg --full-generate-key

:


  • ┬лRSA RSA ( )┬╗;
  • , 2048 ;
  • ┬л ┬╗;
  • , , , ; ;
  • , .

GPG , . , , , GPG . , , , .


( , , , , ) :


gpg --export -a "  " > public.key
gpg --export-secret-key -a "  " > private.key

, private.key , public.key .



, (ASCII) :


gpg -ba __

, asc. , , privet.doc, privet.doc.asc. , , privet.sig, .


, , , :


#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import *
from tkFileDialog import *
import os, sys, tkMessageBox

def die(event):
    sys.exit(0)

root = Tk()
w = root.winfo_screenwidth()//2 - 400
h = root.winfo_screenheight()//2 - 300
root.geometry("800x600+{}+{}".format(w, h))
root.title(" ")

flName = askopenfilename(title=" ?")

if flName:
    os.system("gpg -ba " + flName)
    button = Button(text=" ")
    button.bind("<Button-1>", die)
    button.pack(expand=YES, anchor=CENTER)
else:
    die()

root.mainloop()


, , , ( ) , :


gpg --verify __ __

- (, ):


  • public.key , () , , GPG;
  • - , .

- ( , ) .


, OpenPGP.js; ( тАФ 506 ) dist/lightweight/openpgp.min.js html- ( meta-):


<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body>

<label for="doc">   </label>
<input id="doc" type="file" onChange="readDoc('doc')">

<label for="sig">   </label>
<input id="sig" type="file" onChange="readDoc('sig')">

<button type="button" disabled onClick="check()"></button>
<output></output>

<script src="openpgp.min.js"></script>
<script src="validate.js"></script>

</body>
</html>

, public.key openpgp.min.js , .


validate.js:


"use strict";
let cont   = {doc:'', sig:''},
    flag   = {doc:false, sig:false},
    pubkey = '',
    mess   = '';

//    ( ),
//    ( )
const readDoc = contKey => {
    let reader = new FileReader();
    reader.onload  = async e => {
        cont[contKey] = contKey == "sig" ?
                        e.target.result :
                        new Uint8Array(e.target.result);
        flag[contKey] = true;
        pubkey = await (await fetch("public.key")).text();   
        if (flag["doc"] && flag["sig"])
            document.querySelector("button").disabled = false;
    }
    reader.onerror = err => alert("  ");

    let fileObj = document.querySelector(`#${contKey}`).files[0];
    if (contKey == "sig") reader.readAsText(fileObj);
    else                  reader.readAsArrayBuffer(fileObj);
}

//  
const check = async () => {
    try {   
       const verified = await openpgp.verify({
           message:    openpgp.message.fromBinary(cont["doc"]),
           signature:  await openpgp.signature.readArmored(cont["sig"]),
           publicKeys: (await openpgp.key.readArmored(pubkey)).keys
       });
       const {valid} = verified.signatures[0];
       mess = "    !";
       if (valid) mess = "   .";
    } catch(e) {mess = "    .";}
    document.querySelector("output").innerHTML = mess;
}

рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред рдЕрдм, GOST 7.0.97тАУ2016 рдХреЗ рдЦрдВрдб 5.23 рдХреЗ рдЕрдиреБрд╕рд╛рд░ , рдЖрдк рдЗрд╕ рдЦреВрдмрд╕реВрд░рдд рддрд╕реНрд╡реАрд░ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЬрд╣рд╛рдВ рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП):



All Articles