summaryrefslogtreecommitdiff
path: root/plugins/CryptoPP/docs/readme.txt
blob: 9030e21e0218cec3fe9b572afdd59705c370ae31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

-*-*-*-*-*-*-*-*- Îïèñàíèå RSA/AES àëãîðèòìà (íàèáîëåå ñâåæåå) -*-*-*-*-*-*-*-*-


Ðåàëèçîâàíî òîëüêî RSA4096/AES256, áåç âûáîðà äëèí êëþ÷åé


ñòîðîíû (1) è (2) - ó÷àñòíêè óñòàíîâêè êðèïòîñåññèè
sha(1) è sha(2) - sha îò ïàáëèêîâ (èëè md5)
tlv() - type length value (ôîðìàò óïàêîâêè çíà÷åíèé)

priv = privkey
pub = tlv(1,mod)+tlv(2,exp)


rsa_init(pRSA_EXPORT* e,pRSA_IMPORT i)
rsa_done()

(cpp) rsa_gen_keypair(PBYTE priv, int* len, PBYTE pub, int* len) cntx==-2
(cpp) rsa_set_keypair(priv,len,pub,len) cntx==-2

(cpp) rsa_connect(cntx,pub,len) - óñòàíîâèòü êðèïòîñåññèþ
(cpp) rsa_disconnect(cntx) - ðàçîðâàòü êðèïòîñåññèþ
(cpp) rsa_recv(cntx,msg) - âñå ïðèíÿòûå ñîîáùåíèÿ çàñîâàåì ñþäà, âîçâðàùàåò 0, èëè ðàñøèôðîâàííîå ñîîáùåíèå
(cpp) rsa_send(cntx,msg) - âñå îòïðàâëÿåìûå ñîîáùåíèÿ çàñîâàåì ñþäà, âîçâðàùàåò ñòàòóñ îòïðàâëåíî èëè íåò

(sim) rsa_inject(cntx,msg) - âñòàâëÿåò ñîîáùåíèå â î÷åðåäü íà îòïðàâêó íà òó ñòîðîíó, âîçâðàùàåò îê èëè íå îê
(sim) rsa_check_pub(cntx,sha,sha_len,pub,pub_len) - äèàëîã äëÿ ïðîâåðêè sha è åñëè îê - òî íàäî ñîõðàíèòü êëþ÷ â áàçå, âîçâðàùàåò îê èëè íå îê
(sim) rsa_notify(cntx,int) - íîòèôèêàöèÿ î óñòàíîâêå/ðàçðûâå êðèïòîñåññèè (event)


RSA_EXPORT rsa;
RSA_IMPORT cb = {
	rsa_inject,
	rsa_check_pub,
	rsa_notify
};


ñòîðîíà (1|2): ïðèøëà ïðåàìáóëà(0)
if( state ) {
	state=0
	send(ïðåàìáóëà(0)) - çàâåðøàåì ñåññèþ, åñëè áûëà îòêðûòà
	"íå ìîãó óñòàíîâèòü ñîåäèíåíèå!"
}

ñòîðîíà (1): ïðåàìáóëà(1), base64(ïîääåðæèâàåìûå ôè÷è, sha(1), sha(2)) [2]

ñòîðîíà (2): ïðèøëà ïðåàìáóëà(1)
1 îáå sha ñîâïàëè?       ïðåàìáóëà(2.1), base64(rsa(aes êëþ÷ è âåêòîð), ïîäïèñü rsa)        [5]
2 ñîâïàëà òîëüêî sha(1)? ïðåàìáóëà(2.2), base64(âûáðàííûå ôè÷è, rsa-ïàáëèê ñâîé(2), sha)    [3.2]
3 ñîâïàëà òîëüêî sha(2)? ïðåàìáóëà(2.3), base64(âûáðàííûå ôè÷è, çàïðîñ rsa-ïàáëèêà(1), sha) [3.3]
4 íå ñîâïàëî íè÷åãî!     ïðåàìáóëà(2.4), base64(âûáðàííûå ôè÷è, rsa-ïàáëèê ñâîé(2), sha)    [3.4]

ñòîðîíà (1): ïðèøëà ïðåàìáóëà(2)
1 ïðåàìáóëà(2.1) - ïðåàìáóëà(5), base64(aes("random"),sha) [6]
2 ïðåàìáóëà(2.2) - âûäàëè sha(2) äëÿ ïðîâåðêè. ïðåàìáóëà(3.2), base64(rsa(aes êëþ÷ è âåêòîð), ïîäïèñü rsa) [5]
3 ïðåàìáóëà(2.3) -                             ïðåàìáóëà(3.3), base64(rsa-ïàáëèê ñâîé(1), sha)             [4]
4 ïðåàìáóëà(2.4) - âûäàëè sha(2) äëÿ ïðîâåðêè. ïðåàìáóëà(3.4), base64(rsa-ïàáëèê ñâîé(1), sha)             [4]

ñòîðîíà (2): ïðèøëà ïðåàìáóëà(3)
1 
2 ïðåàìáóëà(3.2) - ïðåàìáóëà(5), base64(aes("random"),sha) [6]
3 ïðåàìáóëà(3.3) - âûäàëè sha(1) äëÿ ïðîâåðêè. ïðåàìáóëà(4), base64(rsa(aes êëþ÷ è âåêòîð), ïîäïèñü rsa) [5]
4 ïðåàìáóëà(3.4) - âûäàëè sha(1) äëÿ ïðîâåðêè. ïðåàìáóëà(4), base64(rsa(aes êëþ÷ è âåêòîð), ïîäïèñü rsa) [5]

ñòîðîíà (1): ïðèøëà ïðåàìáóëà(4)
1 ïðåàìáóëà(4) - ïðåàìáóëà(5), base64(aes("random"),sha) [6]

ñòîðîíà (1|2): ïðèøëà ïðåàìáóëà(5)
ïðåàìáóëà(6), base64(aes("random_new"),sha) [7]
"!!!êðèïòîñåññèÿ îòêðûòà!!!"

ñòîðîíà (1|2): ïðèøëà ïðåàìáóëà(6)
"!!!êðèïòîñåññèÿ îòêðûòà!!!" [7]

ñòîðîíà (1|2): ïðèøëà ïðåàìáóëà(7) - çàøèôðîâàííîå ñîîáùåíèå

ñòîðîíà (1|2): ïðèøëà ïðåàìáóëà(F)
if( state ) {
	state=0
	"disconnected by other side"
}


Çàìåòêà0: ââîäèì ñ÷åò÷èê è óâåëè÷èâàåì åãî íà êàæäîì øàãå, åñëè ïðèõîäèò ñîîáùåíèå íå ñ ýòîãî øàãà èëè íå ïðîõîäèò ïðîâåðêà,
  îáðûâàåì îáìåí êëþ÷àìè è ïîñûëàåì ïðåàìáóëà(0)
  çàâîäèì òàéìåð ïîñëå îòïðàâêè êàæäîãî ñîîáùåíèÿ, åñëè èñòåêëî âðåìÿ - òî øëåì ïðåàìáóëà(0) è ïðåðûâàåì ñåñèèþ

Çàìåòêà1: Ïîëüçîâàòåëü äîëæåí áûòü âêóðñå î âûáðàííûõ ôè÷àõ è â èíòåðôåéñ õîðîøî ññûïàòü êàæäîå èç âîçìîæíûõ
  5-òè ñîáûòèé, ÷òîáû ìîæíî áûëî êîíòðîëèðîâàòü âîçìîæíûé ñïàì (ìàëî ëè). Èíôîðìèðîâàíèå î øàãàõ òàêæå
  áëàãîïðèÿòñòâóåò óâåäîìëåíèþ î ïåðåóñòàíîâêå ñåññèè - äëÿ ïîëüçîâàòåëÿ ïîâûøåíèå âíèìàíèÿ.

Çàìåòêà2: Äëÿ êðèïòîñåññèè - ïðåàìáóëà(7), aes(zlib(ñîîáùåíèå))
  zlib - áåç çàãîëîâêà, ñáðîñ ïîòîêà ïåðåä êàæäûì ñîîáùåíèåì. Ñæèìàåòñÿ âíå çàâèñèìîñòè îò èçáûòî÷íîñòè
  (ìîæíî âûíåñòè â ôè÷è, íî ïî-ìîåìó íå çà÷åì).

Çàìåòêà3: âûáðàííûå ôè÷è îòíîñÿòñÿ ê ïîääåðæèâàåìûì àëãîðèòìàì ñèìåòðè÷íûì (åñëè áóäåøü äåëàòü ïîääåðæêó
  äðóãèõ, òî ìîæíî è àñèì òóäà âêëþ÷èòü): ðàçìåð êëþ÷à è áëîêà.
  Ìèíèìàëüíûå: RSA-2048, AES-128/128.


// EOF