OutDoorFrog의 리버싱 이야기

암호화, 해시에 대해 알아보고 C로 구현해보자. (수정중) 본문

공부/TIP

암호화, 해시에 대해 알아보고 C로 구현해보자. (수정중)

OutDoorFrog 2018. 9. 22. 20:25

멘탈을 기르는 블로그의 주인장 OutDoorFrog입니다!


루시우 개구리에 대한 이미지 검색결과




오늘은 해시와 암호화에 대해 알아봅시다.




1. 목표



  • 암호화와 해시의 차이를 알아봅시다.

  • 특정한 암호화 함수의 알고리즘을 배우고 C로 구현해봅시다.

  • 특정한 해시 함수의 알고리즘을 배우고 C로 구현해봅시다.

  • 이런 분류의 문제를 대응할 방법을 생각해봅시다.


포스팅을 시작하겠습니다.



2. 배움이 필요하다고 느낀 이유



득도에 대한 이미지 검색결과



제가 참여한 여러 CTF에서 암호화, 해시에 관련된 문제가 많이 나왔습니다.


한 CTF마다 한 문제는 나오는 편이라 알아두는 편이 좋다고 판단했습니다.



(소스 코드도 있는 프로그램이 리버싱도 쉽지 않습니까?)



3. 암호화와 해시의 차이를 알아봅시다!





해시단방향 암호화 기법입니다.

암호화양방향 암호화 기법입니다.





단방향 암호화 기법은 평문을 암호화하는 것은 되지만 복호화 할 수 없는 기법입니다.

양방향 암호화 기법은 평문을 암호화하는 것도 되고 복호화를 할 수 있는 기법입니다.




3.1 해시에 대해서 조금 더 살펴봅시다.




  • 해시 알고리즘은 다양하며 알고리즘은 공개되어 있다.

  • 해시 알고리즘마다 해시의 길이가 다르다.

  • 이미 보안이 뚫린 해시가 존재한다.

  • 해시 알고리즘은 특정 입력에 대해 같은 값을 리턴한다.

  • 해시된 값은 입력이 다른 값이지만 같을 수 있다.


이러한 특징들이 있었군요! 

저는 만들어보면서 이해해보는 스타일입니다. 

(그러니까 만들어봅시다)

출처 : [정-아마추어]님의 블로그





여기서 잠깐!!!!


좋은 블로그에 대한 이미지 검색결과




제가 포스트에는 언급하지 않았지만

양방향, 단방향 암호화에서 더 많은 갈래로 암호화 기법으로 쪼개집니다.



여러분을 위해서 좋은 포스트를 소개해 드리겠습니다.



[자바공작소] 님의 블로그



대칭키, 비대칭키의 개념까지 설명이 되어 있는 포스트입니다. ^^



4. 암호화 함수를 골라보자.



친구가 언급해준 암호화 함수를 공부해봅시다.

AES(Advanced Encryption Standard) 입니다!



4.1 AES란?



암호화 이미지에 대한 이미지 검색결과




"Rijmen""Daemen"이라는 사람이 개발한 Rijndael 알고리즘이 AES 공모에서 선정됬습니다.
그 알고리즘이 AES(Advanced Encryption Standard)암호화 표준이 됬습니다.



4.2 AES, 암 / 복호화 알고리즘을 알아보자.



  • Plane Text : 읽을 수 있는 자료의 문자열만을 대표하는 데이터, "평문"이라고 부르기도 합니다.
  • Cipher Text : "암호문"이라고도 부르기도합니다.



개형을 보여드린 후 아래에서 함수, 각 부분에 대한 설명을 하도록 하겠습니다.








< AES 암호화 알고리즘 >




< AES 복호화 알고리즘 >




AES 알고리즘은 128bit 단위로 이루어집니다. 


AES 알고리즘은 Add Round Key, Sub Byte, Shift Row, Mix Column
반복
되어 이루어집니다.



이제 각 부분에 대해서 설명해 보겠습니다.




4.3 알고리즘 각 부분 설명 




블로그의 주인장은 열심히 멘탈이 깨지면서
이해하는 중(코딩 중)입니다!

안심하고 기다려주십시요!




AES 관련 자료 출처: [감파고]님의 블로그

'공부 > TIP' 카테고리의 다른 글

Angr를 써보자.  (0) 2019.01.16
CPU 아키텍쳐  (0) 2018.09.14
edb(evan's debugger)  (0) 2018.09.12
Detect It Easy  (0) 2018.09.05
Comments