티스토리 뷰

반응형

※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.




암호화 함수


    - 흔히 일반적으로 우리가 사용하는 문자열이나 데이터를 평문이라 하고, 이 평문을 암호화 하여 쉽게 알아볼 수 없게 만들어주는 함수를 암호화 함수라고 한다. MySQL에서 사용되는 몇 가지 암호화 기법과 관련된 함수를 알아보았다.


        - DES (Data Encryption Standard) : 블록 암호(고정 크기인 64 혹은 128bit의 블록 단위로 작업을 수행한다. 이 방식에서는 동일한 키를 사용했을 경우 한 평문 블록이 항상 같은 암호 블록으로 암호화 된다.)의 한 종류로써 미국 NBS에서 국가 표준으로 정한 암호다. 1975년에 발표된 암호 알고리즘으로써 56bit의 키 길이를 가지고 있다. 현재는 기술의 발달 등의 요인으로 인해 2005년 공식적으로 사용이 만료되었으며 AES 방식으로 대체 되었다.


        - AES (Advanced Encryption Standard) : DES와 마찬가지로 블록, 대칭 암호 방식을 가지고 있다. 기존의 DES를 대체하기 위해 2001년에 제정 되었으며 레인달(Rijndael)’이라고 불리기도 한다. 56bit의 키 길이를 가졌던 DES와는 다르게 128, 192, 256bit 길이의 키 값을 가지나 이론적으로 키 크기에 대한 제한이 없다. 블록 크기는 128bit의 블록 크기를 가진다.


        - AES_ENCRYPT() : AES 방식을 사용하여 평문을 암호화 하는 함수

        - AES_DECRYPT() : AES_ENCRYPT()로 암호화된 값을 복호화한다.

        - DES_ENCRYPT() : DES 방식을 사용하여 평문을 암호화 하는 함수

        - DES_DECRYPY() : DES_ENCRYPT()로 암호화된 값을 복호화한다.

        - COMPRESS() : 문자열을 압축해서 바이너리 값으로 나타낸다.

        - UNCOMPRESS() : COMPRESS()로 압축한 문자열을 복호화한다.

        - ENCODE() : 문자열을 암호화한다.

        - DECODE() : ENCODE()를 통해 생성된 값을 복호화한다..

        - PASSWORD() : 평문을 암호화한다. 키 값이 사용되지않고, MySQL 패스워드를 암호화 하는데 사용하는 함수이다.

 




해시 함수


    - 해시함수는 가변적인 길이의 데이터를 입력 받아 고정된 길이의 해시 값을 출력하는 함수이다. 해시 함수는 특정한 키를 따로 사용하지 않기 때문에 같은 입력 값에 대해서는 항상 같은 출력이 나오게 된다. 이러한 특성을 이용해서 메시지나 파일의 무결성을 판단하는데 주로 사용된다.


    - 그렇지만 해시 값은 유일성을 만족할 수 없다. 따라서 같은 해시 값이지만 서로 다른 두 개의 입력이 존재할 수가 있다. 해시에 사용되는 대표적인 함수는 다음과 같다.


     - MD5 (Message-Digest algorithm 5) : 1991년에 발표 되었으며특정 값에 대해 12bit checksum을 계산한다. 32bit 2진수 값으로 리턴된다 2000년도에 들어서 안전하지 않다는 것이 증명되었으며 SHA-1과 같은 알고리즘으로 대체하는 것을 권장한다.


     - SHA (Secure Hash Algorithm) : 1993년 미국 국가 안전 보장국(NSA)가 설계한 것이 최초의 버전(SHA-0)이다. 이후 비트 회전 연산을 하나 추가한 SHA-1이 발표 되었으며, SHA-224, SHA-512 등이 추가적으로 발표 되었다. 이들을 통칭하여 SHA-2라고 한다. 최근에는 SHA를 사용할 경우 SHA-2를 사용할 것을 권장하고 있다.


     - HAS-160 : 국내에서 개발된 대표적인 해시 함수다. SHA와 설계 사상이 비슷하지만, 기존 MD계열의 해시 함수와는 차이가 존재한다. 최근에 제안되는 다양한 해시 함수 분석 기법에 대하여 아직까지는 안정성을 가지고 있다.

반응형
프로필사진

Yowu (Yu Yongwoo)

흔한 Node.js/Java 백엔드 개발자입니다
Ubuntu와 MacOS 데스크탑 개발 환경을 선호합니다
최근에는 vscode와 IntelliJ를 사용하고 있습니다
vscode에는 neovim, IntelliJ는 ideaVim
개발용 키보드는 역시 HHKB Pro 2 무각입니다
락 밴드에서 드럼을 쳤습니다

최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
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
글 보관함
Total
Today
Yesterday