Стеганографик

## Стегaнографик 
Энэ арга нь мэдээллийг зурган, видеон, текстэн,аудион зэрэг файлд нуух арга. Энд яригдах гол асуудал нь мэдээллийг хэрхэн тараан байршуулах. Хүлээн авагч хэрхэн тайлах зэрэг. Давуу тал гадны этгээд нь мэдээг нуусан зурган, видеон, текстэн,аудион зэрэг файл зэргийг хараад шууд мэдэх боломжгүй. Энд хүний мэдэрч чадахгүй тийм хэмжээний өөрчлөлт хийх арга юм.
Энэ арга нь нууцалсан мэдээг гадны  этгээдэд мэдээг танигдахгүй болгоход гол зорилго оршдог. Ингэхдээ яаж нуух аргаа боловсруулан түүний дагуу текст,аудио,зурган файлд нуудаг. Өнөөгийн мэдээг нууцлах асуудал ихэнхдээ сүлжээнд дээр яригдаж байна. Гол нь сүлжээн дээр урсаж байгаа өгөгдлийг хэрхэн яаж зөв цагт, зөв газарт, зөв хүндээ хүргэх нь вэ гэдэг асуудал юм. Өнөөгийн байдлаар өгөгдлийг криптографикийн аргаар, сүлжээний төхөөрөмжөөр, стегонаграфикийн аргаар хамгаалж байна.

## Стеганографик  үүсэл   
Модон дээр мэдээгээ бичиж дээр нь сөрөг нөлөөгүй лав түрхэж мэдээгээ халхалдаг байжээ. Эртний Грект элч өөрийн бие дээр мэдээг нуудаг байсан бөгөөд энэ нь хамгийн их итгэсэн боолынхоо толгой дээр мэдээгээ шивээс хийн дараа нь үсийг ургуулж нуудаг байсан байжээ. Үүний адилаар Дэлхийн 2-р дайны үед үл харагдах бэх ашиглан элчийн нуруун дээр бичиж илгээж.
## Стеганографикын алгоритм 
Энэ ойлголт нь  текст,аудио,зурганд файлд нуухад ашиглагдаж байгаа арга. Энэ асуудал нь зургийн битийн түвшинд хийгддэг. Яагаад гэвэл зурганд битийн түвшинд өөрчлөлт хийвэл энэ өөрчлөлт хүний үл мэдрэгдэх өөрчлөлтийг бий болгож чаддаг. Өөрөөр хэлбэл зурганд дахь өөрчлөлт нь хүний нүдэнд мэдрэгдэхгүй өөрчлөгдөх хийх үйл явц битийн түвшин дээр яригддаг. Өнөө үед стегонаграфик+криптографик энэ аргыг ашигласнаараа мэдээллийн хамгаалалтыг улам сайжруулж өгч байгаа юм. Гэхдээ текст,аудио,зурганд зэрэг файлд нуухад нэг асуудал гарч том хэмжээний өгөгдлийг нуух боломж байхгүй учир олон удаа дамжуулах хэрэг гардаг энэ үед гаргадаг алдаа гэвэл нэг файлд олон удаа мэдээг нэг аргаар нууж дамжуулдаг. Энэ үед 3дагч этгээд тэдгээр зургууд дээр дүн шинжилгээ хийж эх зургийг гарган авч түүнийгээ зөөвөрлөгч зургуудтай харьцуулж үзэн мэдээг гарган авч дараагаар шифрлэгдсэн мэдээг тайлах гэж оролддог. Хэрхэн? Ямар аргаар? сайн алгоритм зохиох вэ гэдэг нь гол асуудал болж байна. Бидний өнөөдрийн зорилго бол тайлагдашгүй, төгс алгоритмийг бүтээх юм.

## Стеганографикын төрлүүд
   1. Техникийн стеганографик
   2.  Хэл шинжлэлийн стеганографик
**Техникийн стеганографик** нь ямар нэгэн биет зүйлийг ашиглан нууцлах аргуудыг ашиглан хэрэгжүүлдэг.

**Хэл шинжлэлийн стеганографик** нь стеганографикийн орчинд ямар нэгэн тэмдэг тэмдэглэгээ тэдгээрийг  ашиглан нууцлалын аргуудыг хэрэгжүүлдэг.

## Стеганографикын арга техникүүд
             1.	Физик Стегонаграфик
             2.	Дижитал Стегонаграфик
             3.	Сүлжээний Стегонаграфик
             4.	Текст Стегонаграфик
             5.	Хэвлэмэл Стегонаграфик
             6.	Эвлүүлэг Стегонаграфик
**Физик Стеганографик** нь бодит төхөөрөмж хийгддэг. Тухайн төхөөрөмж дээр өгөгдлийг тараан байршуулдаг.Жишээ нь:

Номон дээр бичсэн ч харагдахгүй балаар мэдээллийн үсэгнүүдийг дугуйлж тодруулан номонд өгөгдлөө хадгалах нөгөө хүндээ бэлэглэх. Нөгөө мэдээг тайлж унших. Энэ хоёр хүн хоорондоо тохиролцсоны үр дүнд мэдээг солилцож байна. Мөн ямар нэгэн дохиог  ашиглан мэдээллээ илгээх юм.

**Дижитал Стеганографик** 
Энэ нь зураг, дуу, бичлэгт өгөгдлөө нуух арга юм.
Жишээ PNG format-ыг ашиглан өөрчилж болох хэсэг дээр өгөгдлөө бит битээр нуух. Энд хүний нүдэнд үл мэдрэгдэх өнгө болгон өөрчлөхыг эрмэлздэг.

 Туршилтын орчин ямар нэг програмчлалын хэл тухайн зургийн, дууны, бичлэгийн форматын дагуу хийж гүйцэтгэнэ. Энд мөн маш сайн алгоритм хэрэгтэй. Алгоритм нь мөн мэдээллийн нууцлалыг улам сайжруулдаг.  
Давуу тал нь сүлжээн дээрх мэдээлэл маань ил явдаггүй. Гуравдагч этгээд нууц мэдээллээ дамжуулж байгаа эсэхийг мэдхэд хүнд болгож байгаа юм. Иймээс аюулд орох магадлал буурдаг. Стеганографикийн гол зорилго нь гуравдагч этгээдэд мэдээг мэдэгдэхгүй байх зорилготой.

**Сүлжээний Стеганографик**
Сүлжээний төхөөрөмжийг ашиглан бусад хэрэглэгчдэд мэдэгдэлгүйгээр мэдээллээ дамжуулах юм. Энд сүлжээний бодит төхөөрөмжүүд ашиглагддаг. Жишээ нь:

Wireless-аар интернетэд холбогдох үед router болон тухайн хэрэглэгч хооронд хоолой үүсгэн мэдээллээ дамжуулах. Энэ үед бусад хэрэглэгчдэд мэдээлэл харагдаггүй.

**Текст стеганографик**
Тухайн програмыг ашиглан өөрсдийн гэсэн үсгийн кодчлолыг ашиглан хоорондоо мэдээллээ дамжуулах. Үүнийг гадны этгээд сэжиглэж мэдэх ч тайлахад нилээн төвөгтэй.

**Хэвлэмэл стеганографик** дижитал стеганографикыг ашигладаг ч гаралт 3D орчин бий болдог.  Жишээ нь:

Ямар нэгэн зүйлийг мэдэрдэг нүдний шил. Түүний хэрэглэж байгаа тохиолдол мэдээллийг олж хардаг.

## Стеганографикийн архитектур 
1.**Carrier буюу Тээвэрлэгч** дамжиж буй дохио,өгөгдлийн урсгал болон файлын өгөгдөлд нарийн өөрчлөлт хийж далдлах юм.Жишээ нь аудио,видео, зурган файлууд, бичиг баримт зэрэг ажиллах файлуудыг ашигладаг.Мөн тээвэрлэгч файл асуудалгүй ажиллаж байх хэрэгтэй.Энд хуучирсан програм,файлуудыг ашиглан хийх давуу талтай юм.

2.**Chain буюу Гинжин** мэдээ нь багц файлууд дунд хуваагдаж нууцлагдаж болох ба,нууц мэдээг авахын тулд зөв дарааллаар боловсруулж байж нууц мэдээ үүснэ. Нууцлахдаа өөр өөр криптографикийн алгоритмуудыг болон буцааж сэргээж авах аргыг бодолцож үзнэ.

3.**Robustness and cryptography**'- Криптографик болон найдвартай стеганографик хэрэгсэл нь статистикийн буюу стеганоанализ эсрэг зорилготой. Стеганоанализ арга нь  орчин үеийн арга гэж нэрлэгддэг.Энд олон давхар нууцлалтыг хийж өгдөг.

4.** Carrier engine- Зөөгч** болон тээвэрлэгч хөдөлгүүр нь стеганографикийн хэрэгслийн цөм юм. Янз бүрийн файлын хэлбэршилт нь нууцаар тэдний дотор талд мэдээллээ оруулах зорилгоор, янз бүрийн байдлаар өөрчлөгддөг.
                 -Тарилгын буюу файлын хэмжээ гэнэт ихсэх.
                 -Генераци буюу тээвэрлэгч файлыг сэжиглэх.
                 -Нэмэлт мэдээлэл оруулах

## Стеганоанализ 
Стеганографикийн эсрэг үйлдэл буюу файл болон програм доторх нууц мэдээллийг оршин байгааг тодорхойлох ба түүнийг тайлах арга юм. Ингэхдээ дамжуулсан файлууд дээр дүн шинжилгээ хийх буюу харьцуулах аргаар энэ аргыг хэрэгжүүлдэг. Мэдээг илрүүлэхдээ ашигладаг арга нь нэг түлхүүрээр олон  удаа нууцалж байгааг, зөөвөрлөгч нэг файл ашиглаж байгааг ба файлд хэрхэн өөрчлөлт орж байгааг авч үздэг. Том хэмжээний өгөгдлийг олон хэсэг болгон дамжуулдаг учир тэдгээр зургуудыг ашиглан хоорондох ялгааг олох замаар эх зургийг гарган авах мөн текстийг гарган авдаг.

## Стеганоанализид тулгуурласан халдлагууд
         1. Only Stego
         2. Known cover attack
         3. Known message attack
         4. Chosen stego attack
         5. Chosen message attack
**Only Stego** халдлага нь тухайн файл болон програмд дүн шинжилгээ хийх боломжтой халдлага юм.

**Known cover attack** халдлага нь эх файл болон програмыг зөөвөрлөгч файл болон програмтай харьцуулах арга юм.

**Known message attack** халдлага нь түгээмэл ашиглагддаг үг болон өгүүлбэрүүдийг таних замаар мэдээг тайлах арга юм.

**Chosen stego attack** халдлага нь хэрэглэсэн файл болон програм дээр нэмэх алгоритм мэдсэн үед хийгддэг тайлалтын арга юм.

**Chosen message attack** халдлага эхний мэдээнд ашиглагдсан нууцлалын арга нь дараа дараагийн мэдээнд ашиглагдах үед үүсдэг халдлага юм.

## LSB(Least Significant Bit) буюу Хамгийн бага битийн стеганографик 
Энэ арга нь орчин үед өргөн  хэрэглэгдэж байгаа  юм. Мэдээг зөөгч зургийн өнгөний хамгийн бага бит дээр өөрчлөлт оруулах аргаар хийгддэг. Ингэж байршуулснаар хүний хийсвэр сэтгэлгээнд ялгаж таньж чаддаггүй. LSB-ийн утгууд нь зургийн битийн тоог илэрхийлдэг. Зургийн байт тус бүрийн 8 дугаар бит дээр мэдээний 1 нэг битээр өөрчилж тавьдаг. Зургийн 24 бит энэ нь  зургийн өнгө илэрхийлэл болох RGB (red,green,blue) улаан, ногоон, цэнхэр өнгөний битээр илэрхийлэгдэх тооны урт юм. LSB нь зургийн өнгөний 2-тын тооны цувааны хамгийн бага бит юм. LSB стеганографик мөн RSS криптографикийн алгоритм,НАSH шахалтын алгоритмыг хамт ашиглагддаг. Ингэснээрээ мэдээг илүү сайн нууцалж чаддаг.

## RSA алгоритм 
Энэ нь нийтийн түлхүүртэй алгоритм өөрөөр хэлбэл мэдээг нууцлахдаа нийтийн түлхүүрээр(public key) ашиглан нууцалдаг.Харин тайлж уншихдаа хувийн түлхүүр (private key) ашиглан мэдээгээ тайлж уншдаг. Нууцалсан мэдээг шифр текст(сipher text) гэж нэрлэх ба нууцлаагүй мэдээг plain text  гэж нэрлэдэг.

**RSA aлгоритмын** анхны тоон шинжийг ашиглаж шифрлэлтээ хийдэг. Ингэснээрээ мэдээг тайлах үйл явцыг удаашруулж байгаа юм. Key generation үүсгэхдээ:
n = p*q p,q гэсэн хоёр анхны тоог generator ашиглан үүсгэн түүгээрээ φ(n) тоог олно.
φ(n)=(p-1)*(q-1) 

энэ тоог олсны дараа 
gcd(φ(n),e)=1 гэсэн томьёгоор e тоог олно.Public key нь pubkey(e,n) тооны хослол.Мөн хувийн түлхүүрийг хамт үүсгэдэг.Үүнийг үүсгэхдээ:
(e*d)mod(n)=1 харьцаагаар e тоо олдсон 
Тохиолдолд d тоог олон эргүүлэн задалж уншиж болно. Хувийн түлхүүр private key(d,n)  хослолоор үүсдэг. Эргүүлж мэдээг нууцлах буюу еncryption хийхдээ:
:  c \equiv m^e \mod{n}  
Тайлах буюу Decryption хийхдээ:
:c^d \equiv (m^e)^d \equiv m \mod{n}
Хоёр тал мэдээллээ солилцохдоо public key ашиглана. Энд баталгаажуулалт буюу хэнд итгэх вэ гэдэг асуудал гарч ирдэг. Үүнийг тоон гарын үсэг гэдэг. Энэ баталгаажуулалт RSS-ээ public кеу-ээ ашиглан хийдэг.Түлхүүрийг дамжуулахдаа:\\
               1.Шууд дамжуулах (public key хашилсан утгыг дамжуулах)
               2.Серверийн баталгаажуулалтыг авах
               3.Тусгай аудит байгууллагаар тухайн баталгаажуулах
гэсэн 3 төрлөөр  баталгаажуулалтаа хийдэг.

## LSB ба RSA 
Энэ аргаар нууцлахдаа эхлээд мэдээг RSA алгоритмаар оруулан нууцалж түүний дараагаар мэдээг бит битээр зөөвөрлөгч зурган тараан байршуулана.

Энэ аргаар нууцалсан үед эргүүлэн мэдээг тайлан уншихдаа зөөвөрлөгч зургийн хаана нь аль бит нь нуугдсан гэдгийг олж илрүүлэн. Зөв битүүдийг ялган авч дараалалд оруулан эргүүлэн 10-тын тооллын системд шилжүүлэн plain text гарган түүний дараагаар RSA алгоритмаар оруулан дамжуулсан мэдээг гарган авна. Ингэхдээ хүлээн авагч тал хувийн түлхүүрээ ашиглаж тайлалтыг хийдэг.RSA алгоритм болон дундын түлхүүртэй алгоритмыг өөрөөр симметрик биш алгоритм гэж нэрлэдэг. Харин нийтийн түлхүүртэй алгоритмийг симметрик  алгоритм гэдэг. Бит битээр нуухдаа эхлээд зурган дээр өнгөний анализ хийнэ. Яагаад зураг эвдэгдэхгүй боломжийн дээд цэг хүртэл мэдээг нуух гэж байвал заавал зурган дээр анализ хийж нуух хэрэгтэй.

## LSB стеганографикийн аргыг ашиглан програм бичих
                  c = imread('lena512.bmp');
                  message = 'This approach of image steganography is using RSA encryption' 
                  message = strtrim(message);
                  m = length(message) * 8;
                  AsciiCode = uint8(message); 
                  binaryString = transpose(dec2bin(AsciiCode,8));%8 heseg
                  binaryString = binaryString(:);%neg neg bit bolgoj baina
                  N = length(binaryString);
                  b = zeros(N,1); %b is a vector of bits

Энд зурганд мэдээг нууж байгаа b list-ийн к дугаар элементэд ямар утга орсноос шалтгаалан тэдгээр утгууд зурагны өнгөний пикселийн утгуудаас модуль 2- оор авч тэдгээр утгууд b list-ийн к дугаар элементийн утгатай тэнцэж байвал шууд s гэсэн list-нд авч харин эсрэг тохиолдолд хэрвээ модулийн утга 1-тэй тэнцүү бол  зурагны өнгөний пикселийн утгаас нэгийг хасч эсрэг тохиолдолд 1 гэсэн утгыг нэмж өгч зурганд мэдээг нууж байна  

                  for k = 1:N
                      if(binaryString(k) == '1')
                          b(k) = 1;
                      else
                          b(k) = 0;
                      end
                  end
                  s = c;
                  height = size(c,1);
                  width = size(c,2);
                  k = 1; Array=[];l=1;my=1;
                  for i = 1 : height
                      for j = 1 : width
                           LSB = mod(double(c(i,j)), 2);%vldegdel
                          if (k>m || LSB == b(k))
                              s(i,j) = c(i,j);
                              l=k+1;
                          else 
                              if(LSB == 1)
                                  s(i,j) = c(i,j) - 1;
                              else
                                  s(i,j) = c(i,j) + 1;
                          Array(my)=l;
                          l=l+1;
                          my= my + 1;
                              end
                          
                          k = k + 1;
                          end
                      end
                  end
                   imwrite(s, 'h.bmp');

                  Давуу тал нь: 
                  1. Хүний нүдэнд үл мэдрэгдэх тийм хэмжээний өөрчлөлтыг хийж чаддаг.
                  2. Зурганы өнгөнд их хэмжээний мэдэгдэхүйц хэмжээний нөлөөг үзүүлддэггүй.
                  Сул тал нь:
                  1. Зөвхөн нэг зөөвөрлөгч зургаар олон удаа мэдээллийг зөөвөрлөхөд халдлагад өртөх боломжтой.
                  2. Давхар хамгаалалт ашиглаагүй учраас тэдгээр зургууд дээр анализ хийж plain text-ийг шууд задалж унших боломжтой.

## Стегонаграфикийг ашигласан authentication
Та хэн бэ гэдгийг танин баталгаажуулах нь мэдээлэл аюулгүй байдалтай шууд хамааралтай. Мэдээллийг халдагч итгээд уншихаас хамгаалж байгаа аргуудын нэг юм. Хурууны хээг авч үзэхэд нь энэ нь дахин давтагдашгүй шинж чанартай байдаг учир тэдгээр мэдээллийг авч зурганд  болон өөр бусад файлд нууж түүнийгээ өгөгдлийн санд байршуулж түүгээрээ танин баталгаажуулалтыг хийх юм. 

Интернетийн  орчинд танин баталгаажуулалтыг хийхэд давхар нууцлалт,баталгаажуулалт,файлын бүрэн бүтэн байдал. 

                  Давхар хамгаалалт дээр симметрик биш алгорим жишээ нь:
                  1.RSS
                  2.Diffie Hellman 

                  Баталгаажуулалт:
                  1.Тухайн серверийн баталгаажуулалт тоон гарын үсэг.
                  2.Аудит байгууллагын баталгаажуулалт.
                  3.Фaйлыг бүрэн бүтэн байдлыг хангахын тулд хаш функцийг ашиглах. Эдгээр аюулгүй байдлыг цогцоор хангаснаар энэ  системийн аюулгүй байдал хангагдана.

Стегонаграфик ашиглан вэб сайт нь баталгаажуулалтаа хийснээр баталгаажуулах хэрэглэгчийн нэр паспорт ил харагдахгүй түүнийг агуулсан зураг файл эсвэл өөр бусад файл болон хадгалагдана. Ингэснээр гадны этгээд шууд хэрэглэгчийн баталгаажуулах зүйлүүдийг харж чадахгүй. Энэ файлыг олж авсан тайлах арга нь нилээн удаан эсвэл тайлж чадахгүй.
Энэ системыг бид ашигласнаар бидний өмнө тулгарч байгаа мэдээллийн аюулгүй байдлыг нилээн сайн хангаж чадна. Файлын бүрэн бүтэн байдал, мэдээллийг шифрлэх арга нь RSS буюу симметрик биш алгоритмаар зохицуулж өгснөөр мэдээллийн тайлагдах магадллыг бууруулж өгч байгаа юм. Мөн Гуравдагч этгээд хараад шууд ойлгох боломжгүй болгож байгаа юм.

## Хаш функц
Энэ аргыг ашиглан зөөвөрлөгч зургийн бүрэн бүтэн байдлыг баталгаажуулдаг.
Хаш функцийн төрлүүд:
       
             1.MD5-ын утга 128 битийн урттай,128 битийг 4 блок болгон хувааж тэдгээр хэсгүүд дээр тооцоолол    хийдэг.
             2.SHA0 нь MD5-тай төстэй. 2010 онд энэ функцийн сул тал илэрч түүнийг засаж сайжруулан SHA1-г бий болгон гаргасан. 
             3.SHA1-ын утга 160 битийн урттай.   
             4.SHA2 төрлүүд нь sha384,sha512,sha512/224,sha512/256.
             5.SHA3 2015 онд анх хэрэглээнд гарсан.

*MD5* шахалтын алгоритм нь A,B,C,D гэсэн 4 хэсэг 32 битийн урттай 16тын тооллын системд байгаа утгууд тэдгээрээс B,C,D утгуудыг доорх функуудыг дагуу үйлдлийг хийж A-ийн утга болон нууцлах гэж мэдээний утгуудтай XOR хийж гарсан үр дүнг нь баруун тийш s удаа шифтлэнэ. Үр дүнд нь D-A,B-C,C-D,B утга шифтлэж гарч ирсэн үр дүн болно. Энэ үйлдлийг n удаа давтаж хийж. Энэ зөвхөн доорх функц тус бүр дээр хийж дууссны дараа эцсийн үр дүн бий болдог. MD5-ын Функцууд:

:\begin{align}
F(B,C,D) &= (B\wedge{C}) \vee (\neg{B} \wedge{D}) \\
G(B,C,D) &= (B\wedge{D}) \vee (C \wedge \neg{D}) \\
H(B,C,D) &= B \oplus C \oplus D \\
I(B,C,D) &= C \oplus (B \vee \neg{D})
\end{align}

## Халдлагууд
Стегонаграфик орчин үеийн арга хэдий ч үүний эсрэг арга хэмжээнүүд их бий болж байдаг. 
Өнөө үед тэдгээр халдлагын төрлүүдээс Watermark, Extract, Calc PSNR , Salt Attack халдлагын аргууд түлхүү ашиглагдаж байна.

**Watermark** халдлага нь битийн давалгаа үүсгэж зурагны өнгөний хэддүгээр бит дээр өөрчлөлт хийсэнг олох замаар мэдээг ялгаж авдаг.Өөрөөр зөөвөрлөгч зургууд дээр анализ хийх аргаар их зурагтай төстэй зургийг гарган аргаар мэдээг тайлан уншдаг.

**Extract** халдлагын арга нь watermark халдлагын аргатай төстэй юм. Эх зургаас зөөвөрлөгч зургийн ялгааг олох замаар ажиллладаг.

**Calc PSNR** халдлага нь эх зураг болон мэдээг нуусан хооронд PSNR(Peak signal-to-noise ratio) аргаар дүн шинжилгээ хийж энд мэдээ агуулагдсан байгааг тогтоодог арга. PSNR(Peak signal-to-noise ratio) арга нь зурагны хамгийн бага өөрчлөлтыг шүүж гаргаж ирдэг.

**Salt Attack** тухайн зурагны орчинд ажиллах горимоо сонгон түүнийхээ дагуу зурганд мэдээний битийн эрэл хайгуул хийдэг.

Гэсэн ч стегонаграфик улам сайжран хөгжсөөр байна.
## Холбогдох хуудас
* http://www.slideshare.net/sodhero/ss-12030772A.Содбаяр Криптолог
* https://www.youtube.com/watch?v=4zahvcJ9glg RSA алгоритмын хичээл
* http://airccse.org/journal/ijsptm/papers/1112ijsptm03.pdf H-LSB стегонаграфикийн арга
* http://www.ijera.com/papers/Vol3_issue2/BE32364369.pdfCтегонаграфик Authentication-д судалгааны ажил
* https://users.ece.cmu.edu/~adrian/487-s06/westfeld-pfitzmann-ihw99.pdfCтегонаграфикийн attack-ийн tool
* https://www.youtube.com/watch?v=aeOzBCbwxUoDiffie Hellman алгоритмын хичээл