В тривиальном случае Ваш корреспондент может просто использовать созданную Вами программу кодирования/декодирования, имея соответствующий идентичный *.exe модуль. При этом Вы должны предварительно передать ему свою программу и договориться об использовании общего пароля. Как мне кажется, для сферы личной переписки с друзьями это вполне приемлемый вариант!
В более сложном случае может быть использована разновидность схемы шифрования с открытым ключом. Реализация данной схемы потребует от Вас создания и передачи Вашему корреспонденту программы, которая будет автоматически шифровать вводимый им пароль по известному только Вам RND алгоритму и хитро маскировать пароль в кодируемом файле. Тогда, получив от корреспондента по E-MAIL зашифрованный файл, Вы сначала декодируйте произвольный пароль, использованный корреспондентом. Затем, расшифровав данный пароль, вы декодируете само информационное сообщение.
Недостатком данной схемы является теоретическая возможность вскрытия и использования хакером Вашего алгоритма шифрования пароля. Правда для реализации данной возможности злоумышленник будет вынужден: похитить *.exe файл с программой у Вашего корреспондента, восстановить исходный текст программы по исполняемому файлу (а это не просто!), понять использованный Вами алгоритм шифрования (а это тоже не просто!) и написать соответствующие программы декодирования.
Заключение
В силу простоты и прозрачности изложенных принципов шифрования информации для защиты домашнего компьютера от несанкционированного доступа к конфиденциальным файлам, написание соответствующей личной программы кодирования/ декодирования является чисто технической процедурой и, как мне кажется, не представляет большой сложности для программирующего пользователя. Поэтому пример исходного текста подобной программы настоящем очерке не приводится. (За пару дней программист средней квалификации, используя изложенный методический подход и быструю среду проектирования типа DELPHI, VISUAL BASIC и т.п., в состоянии самостоятельно “сваять” собственную уникальную и вполне приличную по эффективности версию “шифровалки”!) Кроме того, любые конкретные алгоритмы и создаваемые на их основе программные продукты все же считаются авторским ноу–хау и могут представлять самостоятельную ценность...
Кстати, если Вы не поленитесь написать еще несколько вспомогательных строк программы кодирования, придающих дополнительный блеск Вашему “нетленному программному произведению” и изменяющих атрибуты создаваемого зашифрованного файла (например, делая его графическим или звуковым), то будущий сетевой взломщик Ваших “секретных” файлов будет “приятно” удивлен! При попытке открытия данных файлов с помощью обычных программ-редакторов (графических или звуковых) вместо вожделенной адресной книги, пикантного фотоальбома или номера кредитной карты с текущим балансом он услышит из динамиков компьютера Ваше “злобное шипение” или увидит на экране монитора произведение “абстрактной живописи”...
Что же касается эффективности предложенного методического подхода к созданию криптографических программ защиты информации для домашнего применения с использованием “подручных” средств ОС Windows, то автор настоящего очерка пребывает в состоянии понятной эйфории преуспевшего дилетанта (тестовые программы написаны, надежно работают с неплохим быстродействием, а закодированные файлы не взламываются известными ему средствами).
Справедливости ради необходимо отметить, что, скорее всего, существуют и более эффективные, чем рассмотренные выше, способы взлома файлов, зашифрованных с помощью предложенных принципов кодирования информации. О подобных способах декодирования, основанных на специализированных криптографических методах анализа, имеется достаточно много “туманных” и, по понятным причинам не раскрывающих сути декодирования, статей в INTERNET. Поэтому приведенные мной оценки криптостойкости могут оказаться, мягко говоря, оптимистичными (конечно, если за дело дешифрирования возьмется профессионал!), а предложенный подход к кодированию и создаваемые на его основе программы, по-видимому, требуют дополнительной оценки и тестирования специалистами.
Приложение
Для тех, кого заинтересовали изложенные соображения (несмотря на то, что сама по себе идея применения RND датчика для кодирования не нова и не очень убедительно, но критиковалась в ряде публикаций) и у кого появилось желание лично убедиться в эффективности предложенных принципов шифрования далее приведен упрощенный (диапазон псевдослучайного приращения ASCII кодов уменьшен более чем в 30 раз против максимально возможного, а для кодирования использованы всего лишь две псевдослучайные последовательности!) наглядный пример результата работы одной из демонстрационных программ.
С помощью имени (которому соответствует начальное псевдослучайное число 0.7058184) и фамилии (которой соответствует начальное псевдослучайное число 0.5759676) автора в качестве пароля закодировано название очерка, который Вы, надеюсь, дочитали до конца. Название очерка дословно (с сохранением всех шрифтов, пунктуации и настроек) повторено в редакторе Word и сохранено в отдельном файле формата *.rtf. Далее этот файл целиком закодирован тестовой программой.
ИСХОДНЫЙ RTF ФАЙЛ (текст с названием настоящего очерка)
{\rtf1\ansi\ansicpg1251\uc1 \deff0\deflang1049\deflangfe1049{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Arial;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f116\froman\fcharset238\fprq2 Arial CE;}{\f117\froman\fcharset204\fprq2 Arial Cyr;}{\f119\froman\fcharset161\fprq2 Arial Greek;}{\f120\froman\fcharset162\fprq2 Arial Tur;}
{\f121\froman\fcharset177\fprq2 Arial (Hebrew);}{\f122\froman\fcharset178\fprq2 Arial (Arabic);}{\f123\froman\fcharset186\fprq2 Arial Baltic;}{\f124\fswiss\fcharset238\fprq2 Arial CE;}
{\f125\fswiss\fcharset204\fprq2 Arial Cyr;}{\f127\fswiss\fcharset161\fprq2 Arial Greek;}{\f128\fswiss\fcharset162\fprq2 Arial Tur;}{\f129\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f130\fswiss\fcharset178\fprq2 Arial (Arabic);}
{\f131\fswiss\fcharset186\fprq2 Arial Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;
\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
\fs24\lang1049\langfe1049\cgrid\langnp1049\langfenp1049 \snext0 Normal;}{\s1\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs32\lang1049\langfe1049\kerning32\cgrid\langnp1049\langfenp1049
\sbasedon0 \snext0 heading 1;}{\*\cs10 \additive Default Paragraph Font;}}{\info
{\title \'ca\'d0\'c8\'cf\'d2\'ce\'c3\'d0\'c0\'d4\'c8\'d7\'c5\'d1\'ca\'c0\'df \'c7\'c0\'d9\'c8\'d2\'c0 \'c8\'cd\'d4\'ce\'d0\'cc\'c0\'d6\'c8\'c8 \'c4\'ce\'cc\'c0\'d8\'cd\'c5\'c3\'ce \'ca\'ce\'cc\'cf\'dc\'de\'d2\'c5\'d0\'c0 \'cf\'d0\'c8 \'d0\'c0\'c1\'ce\'d2
\'c5 \'c2 \'d1\'c5\'d2\'c8 INTERNET: \'ef\'f0\'e8\'ed\'f6\'e8\'ef\'fb \'f0\'e0\'e7\'f0\'e0\'e1\'ee\'f2\'ea\'e8 \'f1\'ee\'e1\'f1\'f2\'e2\'e5\'ed\'ed\'fb\'f5 \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec}{\author Person}{\operator Person}
{\creatim\yr2004\mo4\dy3\hr11\min18}{\revtim\yr2004\mo4\dy3\hr11\min27}{\version1}{\edmins7}{\nofpages1}{\nofwords0}{\nofchars0}{\*\company Home}{\nofcharsws0}{\vern8249}}\paperw11906\paperh16838\margl1134\margr567\margt851\margb851
\deftab708\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1134\dgvorigin851\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale75\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule \fet0\sectd \linex0\headery680\footery709\colsx708\endnhere\sectlinegrid360\sectdefaultcl {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s1\qc \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0
\b\f1\fs32\lang1049\langfe1049\kerning32\cgrid\langnp1049\langfenp1049 {\f117\fs28 \'ca\'d0\'c8\'cf\'d2\'ce\'c3\'d0\'c0\'d4\'c8\'d7\'c5\'d1\'ca\'c0\'df \'c7\'c0\'d9\'c8\'d2\'c0 \'c8\'cd\'d4\'ce\'d0\'cc\'c0\'d6\'c8\'c8 \'c4\'ce\'cc\'c0\'d8\'cd\'c5\'c3\'ce
\'ca\'ce\'cc\'cf\'dc\'de\'d2\'c5\'d0\'c0 \'cf\'d0\'c8 \'d0\'c0\'c1\'ce\'d2\'c5 \'c2 \'d1\'c5\'d2\'c8 }{\f0\fs28\lang1033\langfe1049\langnp1033 INTERNET}{\f0\fs28 : }{\f117\fs28 \'ef\'f0\'e8\'ed\'f6\'e8\'ef\'fb \'f0\'e0\'e7\'f0\'e0\'e1\'ee\'f2\'ea\'e8 \'f1
\'ee\'e1\'f1\'f2\'e2\'e5\'ed\'ed\'fb\'f5 \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec}{\f0\fs28
\par }}
Результат кодирования исходного файла
VV'/d&x2&n5a3`Jck.^"rb^,p%Zk]4]a7`ceb_c[bi[1k$2mVZZ-bo`33,_$p*_0s]jmac":i]mY+`sd_mr/jdmkh,#gfjmn+W.ailepcmy,4`ap"1r.^xw,s]olf:t5pegWLV-Whi/sZlvbW&Xqa,b-%ab[1b`o_a4e+Xn2v6_fl``:w`Y"p+YV/3VrW{l+_-qumf/,b?c5/&n1%ZVaW-r1l3mvbfcZpa.cpZ]1,la[-hmy]_lvmtm]bladz..Zl@Bp`f&nl1mEms\ls^dZ`0bj_ldpSoc2hme_+%Zk.+_WolsYbYWs`#a`+{k+V&n`,n&$`-W[4N[\r%`3oiwY+Wo_pePl^anv1Zdeo+XWomme`k,`4Xq/la5loaankXaq_kpZX\.06X]kt^W&g_ccl^hnu5Za1g+Habj0__"bV__M,^pnih4n_.$b^o_qooqmd#slWd_Xc1l_do[k_/znd]ap`.oi?bnccfZ*+z&&mYm/^hVekXdjY_oiju4_-_q_Wbyem[*ccs_gL-d`]`p.1[Z,(4w$_cW.xW{VQl^i+a^Z&-5nnmWnVb[{_l_0_eXq+i_^_Zju%^_<0ebma\x_X-V,`qVrm\qnb{cg%m-_Wb(+1r-^1lg___h^YVgdp
!wWd.Z8omd-``pgr^/\`q2lbn.ookm5Vn0c2_i.pXmXi$l2ylm.#p5Y$/o7r_pa_-W-V2bVg_hb-XdXh`--\acz{uZYaY3GZck%cq[]abl"``0-4"2,j19/4_cnbqYld%do&d++fdgn,dYq0?4cb\k0a_-y5_aqV+^=X5^W_VqVonqh%q#]-c
V-X&YZY-9`ehl]WWl`692`nnWqheh0a{^{p0,[x_r0q_q fqbcb+cW]:g#]io\5W-_`."aocdbVso.mNogR_mClfkjZ3cuz\[d/\o+zoopg!_d1pv*h^dn\hn+[#n0-N[h/`.j+Wl5[$]0Z*i ]j\"o^c[k`_q`__o%|0Xd&ed_.YZmZiNoV__ff0d&`cZm_W2+Vc#cldh,>fW&YhZmrpt`Vix^i[caV[seVZXpa_aab0`*aXg$cYpik.Xl_w`Z$X-^84^_%olZ_pn4b1ho_0YkxWia_Xb03n"xaX\_&^mcfiqZ3Y5X+coaob]j[W*Ri0i`p_{+5caZV7b]h4,1h_ygY^06XYu__+b["V`&[+#Xhqz&WecX/`_]llejf_ek,1d+ob_d-fbb2-jldoo-d_1o$-Zob[`VlZ`\chbY-by-ldg^lWmih__fZXnc$+lW,5n_>6l1Z`{aa`V`0ddn//j_/qspmflbg.6Z$`-k[n+k0vpas_k`XIncsn_j3iV`-,jckb[XbphiYf|`/.W&[c1o_Vofl!cdrWg1d\n[_^Z1[+y[g^]2.bXa[V-ka0oXsmZhbbjZa
i9s1_dxm[40%n[5hi"mZYZ *17owkk.__uVpWibx\gk`dfa.3g 8X\^]lX-bYpn^_3og]Z_g,kna+W0XchV-polds24-!q""q`h%"d5nd0.o/V0r7x8dX!an%$ohiYdn.,#1d`g`)c[YYam+Z4Yh[,cbrZh\lcm1naPuhg.nn^t_^`3/`fg&^%r^fmj,dlk[an&W_VYmXh47^qZZn,-fi]j`p*.e]_q%k`YX[`.aaV/6opb5#[kYhlXZrsWj#noj8_bi-anm$.o
*zhca_BclX7xv^7f$am_+zooz]q`_o&qX0%o`%il4.&p0_Q*[i$saZ/bii$Cbm^jb/WV0YZV2j+[|XlZg0#[0Y^k&%jhg_!jbz_#Z5q[qe3!oL_w^4m+.jsjdb3/jj!$#dga,g]iq_7-qpduZannVm]VcncV]wx^^.Yl|`2bq^X`0Yb`s\kn#t,ajYpjorra"Yqd0]ca_#Zjj#_h-u-[Zqn^-,__ja XZ1ie3/Z+$`+0VW_q`jbdlW^^_Vu_j_=p^Ydue]Xs^binY_wr03c4eclkZq&{]_ab6Zk3]2h"d_:[ZXVYPhbnn3hdrl",[Z1W`drd7c#,kVhb0#t^WXVWVl,ao/7a`ne_nl/dc2,klXlb^b]ecY]#o$_!du[$^^bX/wjl5YxV#_doXn0-/#OY4d-`"c ._jZr@d,Zlaf^rdar3_m[V$gf/aqtu&[qhg-``]Z[^[Z_m+f_``Y`oZbj_mimq4bbWb1fb^dxcW\$_qlnen%`m_^,WZu`c!p#_r%/2dh_1ap[Zih*_{ig/![m[i.__cB*_cp`uBn#&nmkh-Z^Wr_pth-kwq0Z_YfYrakjc3iW|!j`lo`g-vf&Vh`wyhpV5`z`lml\doW7hY^e[jlc5e_-qcruot[ojmp1aahlh`+_`_nmq9^XY[0_`wmo_gW7n03zv+Z]`_aw$_,,hXjlqmW&Z/_6rj-r:`V^hbd!AZe[Vu_Y-uMjks4mmr/qdZ6agooa1,r,qjjWWmX.h^poC%xp `i6Y1Y^aot0oj,Wbm\`o_mn-hZV-1n-krYZ^lok[wkif_kbm`Xhcr_]jXhf,Wb#kVlVk_Zb*0/cY`_/-[/c#,ja4_nlCXVcaV_sbc`u$dYrpoj#p^lVbmm2d`2d^0_y^[#--Wqqjdp_Ziap]f3dV8&e.c[",e_WncZnpak.4V[h__a!6ebkj.k_Vmt]kxkahbj$b[Xe4lI_X2_u_j|soqpbl`1`jj]Vt^[jlc$`_dhwj---rXWmn,-w`[n_lqlmqYecmV]-sdkcXh0/0YVj0,]ZV0qtYV]l1pc`s],YndVi`[_blqf^%48`o.Zcb__gbf.taclbobc[`WXb"*`-*`mZa`43-no-r yqV_d[Z$n-gvud*o-i2V,mP^arXuWb"_oco``[Wb,q_arYmX`\[+Vp^-1)qa*l!d`uk*cdVnc0caWW_Xqr'11"/jd`0lv0L@Xk'maf_p2+'.h5Wih_^ty/kXmlg0-[i|glipclgpo+Wj`hh[_Yyejiij0[[_lm+0V`idi"x[a/%lwY_!izwd(scqlpox_kqcjJc__X_V_f&x".mqhibblm[2ac&akm`mHxcj._Y%``,sl_a7dnhoa`W$olcndqwplW`mud[bgnd]*_Yolsk&0zZo"_yX%nj.2p`p^-]_,_Y[,F2[__4uf1^bXZS^l3a3XMaV/sa3_kh!aZoW`v_Xl.b__c`Xa-2^q^b[ob%a_p0_$aqs-`2bO/srcZ.tV^W_ah^>4^^YbJsDhVqMi,b,la2niYi*2kdol.xXh_nts.*p`xw`[hZa-apq_X|`a7it.^XkmeX/0m`c_.oan-Qs1fnX`[j a#.o1W,i,_]pagg_lp\n`_-^#!gfrw]a6zz_y+&odnt/$ZvZ--\hj*[x^`^m`&_Lo40llck^c&k6/^..#$5Vk1b_1m_ww.alYxcnhl+rr-bVze/a\pq0WZnk67'{X%[aiV;`pck`h-^u]/efbVg[c67bk.br-czlfi4il`eXhaYoabdn^_bfj[6ol.e``n(V-s_-Z_lm[2$ccqadZX+2e0a_`@kcqlk/Zo!k`azp%2,Y0V"1V_qack[ZZ__.,w^q!Zp]spWmal,[!,]fa/bnZd`[$rnZV,ahncox_o7nc[0eov00_d!o[Wap&kd0dbzzZYfpXXp`_Zm$`bg[i85fm/Y_,nZ#[$0mfm+.n_dZ/jqacej^-1[zpou+r2bd%0f0n_+_]m13Xqj!`!j-ZZmZo0^d]wX/_rXp_mopA7\oY2Z-X.aff3X46nWXZcg_ltc-b#Wh^j|Vs/^oc^r6l]+oj_VVh7zb`VW9"_^/4k#/`kah$"z-_/6ki[]^t6b/zh%r`%Y`7"&4b [koo,!do%0,bm4a_5b(cjka_`bL^a`^Yp+pq%qYg__W_gYaa%$>bn#dbZ^cebXqVQ^n/r,kpq5Y"ht[cb$@c_Y``sZ.k2^%WkXYecankb^m+c_&i]L^:jXa,noq&djqYc,^[eig-&X[X*`pd]mWlaa_^\aa-W"b/.f.d0`4ph#cij%e[[1a+RnYbrdy
Z1_XipVc=`w.`Y`caPVNksV-c$8ca%r"/+^[a!pbf`zqrdgkrpX0_m]^d!pv,h!s[/cZ,&!|_X\mpp"[l/.[x-W\^tb`0_jd+bXkuWcjV1-^Z&"4l-``gXsqjm/8cw2i2.X[YiZhqq^3h!ff3plcmsy[r.dYqjs1X|abVl\maQq]d.dv`_i#_pboVhds/uoq&jlf