회사에서 보안이라고 하면 가장 기본적인 것이 데이터 암호화라고 할 수 있다.

이 암호화라는 것이 사용 목적에 따라 다른 방법을 사용해야 한다.


암호화를 크게 구분하자면, 복호화가 가능한지의 여부에 달라진다.

다시 말해서, 암호를 만들었는데, 이를 다시 평문으로 되돌릴 수 있는지에 다르다.

주로 패스워드는 단방향 암호화를 사용한다.

중요하지 않은 정보들은 암호화 하지 않는 경우가 많고, 보안적으로 껄끄럽거나 중요한 정보(개인정보 등)은 양방향 암호화를 한다.

물론, 복호화가 불가능한 알고리즘이라고 하더라도, 알고리즘별로 보안적 이슈가 존재한다.


단순히 생각해서, 모든 암호화 알고리즘을 강력한 것으로 사용하면 좋을까?

당연히 보안성 측면에서는 좋다. 하지만, 실용성에서는 큰 무리가 따른다.

예를 들어, 실시간성이 보장되어야 하며, 높은 TPS (Transaction Per Second)가 요구되는 시스템에서는 강력한 알고리즘을 사용하기에는 큰 비용이 요구된다.

따라서 보안 레벨과 실용성에 맞는 적절한 암호화 적용이 필요하다.



암호화를 실제로 사용하기 위해서는

1. DBMS에서 제공하는 알고리즘 사용

2. (Application 또는 Server Side에서) Library 사용

3. 직접 구현 (올ㅋ)

의 방법이 있을 것이다.


상황별로 차이가 있겠지만, 

1번의 경우에는 데이터 저장,

2번의 경우에는 네트웍 구간에서의 적용이 주된 목적일 것이다.



앞 이야기가 길었는데, 제목과 같이 1번에 해당하는 암호화 방식을 '간단한' 방식으로 소개한다.



1. MD5


허무할 정도로 간단하다.

다음 것도 그렇다.


2. SHA2

SHA256


SHA 512


3. AES128

MariaDB에서는 기본적으로 AES128 암호화 방식을 지원한다. Rijndael 이라는 수학자가 제시한 알고리즘을 사용하고 있으므로, Rijndael의 이름을 가진 라이브러리를 사용하는 경우가 많다.

AES도 두가지 종류가 있는데, ECB와 CBC 방식이다.

CBC 방식은 IV (initialization vector)라는 값을 사용한다는 차이가 있다.

(MariaDB에서 제공하는 방식은 ECB 이다.)

앞의 두가지 방식은 단방향 암호화이며, AES128은 양방향 (복호화가 가능한) 암호화이다.


앞에 입력한 것이 암/복호화 대상 String 이며, 뒤에 있는것이 암/복호화에 사용되는 Key 이다. (Key는 보관을 잘 해야겠지)

-암호화

-복호화



+ Recent posts