Gae Ko's Blog

[암호] 암호화 알고리즘에 따른 암호화 속도 비교하기 본문

암호

[암호] 암호화 알고리즘에 따른 암호화 속도 비교하기

Gae Ko 2018. 1. 24. 19:06

블록 암호화 방법 중 어떤 방법이 빠를까?


aes_256_cbc, seed_cbc, des_cbc. 3des_cbc 이 세 암호알고리즘을 사용하여 암호화하는 데에 걸린 시간 비교하고자 한다.그래서 64MB, 256MB, 500MG, 1GB, 3GB 처럼 크기의 종류가 5개의 파일을 각 방법마다 암호화하고 걸린 시간을 기록하도록 해보도록 한다,


각 방법의 암호알고리즘 소스는 앞에서 포스팅한 aes-256-cbc 암호화알고리즘 소스코드에서 EVP_CipherInit( )함수의 type 인수와 암호화하는 함수의 이름을 암호화방법에 맞게 변형해주면 된다. (des의 경우 IV값이 필요없으므로 EVP_CipherInit( )함수의 IV인수에 null )


각 방법의 암호알고리즘 소스파일을 만들었다면 *스크립트 파일을 사용하여 한꺼번에 암호화한다.



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
31
32
33
34
35
36
37
38
39
40
41
42
43
44

#!/bin/bash
 
echo "check the time that encrypt by aes_256_cbc"
./aes_256_cbc ./testFile/64MB ./testFile/enc_64MB
./aes_256_cbc ./testFile/256MB ./testFile/enc_256MB
./aes_256_cbc ./testFile/500MB ./testFile/enc_500MB
./aes_256_cbc ./testFile/1GB ./testFile/enc_1GB
./aes_256_cbc ./testFile/3GB ./testFile/enc_3GB
 
rm ./testFile/enc_64MB
rm ./testFile/enc_256MB
rm ./testFile/enc_500MB
rm ./testFile/enc_1GB
rm ./testFile/enc_3GB
 
echo "check the time that encrypt by seed_cbc"
./seed_cbc ./testFile/64MB ./testFile/enc_64MB
./seed_cbc ./testFile/256MB ./testFile/enc_256MB
./seed_cbc ./testFile/500MB ./testFile/enc_500MB
./seed_cbc ./testFile/1GB ./testFile/enc_1GB
./seed_cbc ./testFile/3GB ./testFile/enc_3GB
 
rm ./testFile/enc_64MB
rm ./testFile/enc_256MB
rm ./testFile/enc_500MB
rm ./testFile/enc_1GB
rm ./testFile/enc_3GB
 
echo "check the time that encrypt by des_cbc"
./des_cbc ./testFile/64MB ./testFile/enc_64MB
./des_cbc ./testFile/256MB ./testFile/enc_256MB
./des_cbc ./testFile/500MB ./testFile/enc_500MB
./des_cbc ./testFile/1GB ./testFile/enc_1GB
./des_cbc ./testFile/3GB ./testFile/enc_3GB
 
rm ./testFile/enc_64MB
rm ./testFile/enc_256MB
rm ./testFile/enc_500MB
rm ./testFile/enc_1GB
rm ./testFile/enc_3GB
 
echo "check the time that encrypt by 3des_cbc"
 
cs


이 스크립트 파일을 실행하기 위한 명령어는 다음과 같다.


./encTest.sh > encTest.txt


encTest.sh라는 스크립트 파일을 실행하는데 실행 결과는 encTest.txt파일에 저장해라. 라는 의미 

실행결과 생긴 encTest파일엔 걸린 시간이 기록되어 있다. (암호알고리즘에 시간을 기록하도록 코딩되어 있기 때문)



엑셀파일을 이용하여 결과를 정리하고 그래프로 그려보면 다음과 같다.


(단위는 초)


위 차트를 통해 모든 파일 용량에서 aes_256방법이 가장 시간이 적게 걸림을 알 수 있다. (암호화 속도가 빠르다)

그리고 파일 용량이 커짐에 따라 시간의 차이는 더 커지므로 

aes방법이 다른 블록 암호화 방법에 비해 시간적인 면에서 우월함을 알 수 있다.

또한 triple des방법은 des의 약 3배의 시간이 걸림을 알 수 있다. (∵ triple-des는 des를 3번 거치는 방법을 사용하는 블록암호 알고리즘)



* 스크립트 파일이란?

리눅스에서 사용자는 shell(쉘)이라는 것을 통하여 컴퓨터에 명령을 보낸다.

이때 명령을 여러 개를 순차적으로 해야하는 경우에 각본처럼 적어놓은 파일을 쉘 스크립트 파일이라고 한다.

이 파일을 실행하면 그 안에 적은 명령들이 순차적으로 자동으로 실행된다.

자세한 내용은 ☞ http://gaeko-security-hack.tistory.com/118


bmp 파일의 구조 / 헤더부분 / http://edps5091.tistory.com/entry/bitmap%ED%8C%8C%EC%9D%BC%EA%B5%AC%EC%A1%B0-1

'암호' 카테고리의 다른 글

[암호] 대칭키 암호 vs 공개키 암호  (0) 2018.01.24
[암호] 비트맵 파일 암호화하기  (0) 2018.01.24
[암호] aes_256_cbc 암호화 알고리즘 소스 코드  (1) 2018.01.16
[암호] SEED  (0) 2018.01.16
[암호] AES  (0) 2018.01.15