1. 서론
최근 IT기술의 발전과 컴퓨터의 보급이 증가함에 따라서 네트워크와 디지털 매체를 이용하는 정보의 교환이 증가하게 되었다. 하지만 네트워크 환경은 개방적인 특성을 가지고 있었기 때문에 네트워크상에서 송수신되는 정보들은 악의적인 공격자에게 탈취 및 변조되어 악용이 될 수 있었다. 따라서 악의적 인공격자로부터 정보가 불법적으로 악용되는 것을 방지하기 위해 암호(Cryptography)기법과 정보은닉 (DataHiding)기법이 제안되었다. 암호 기법은 악의적인 공격자에게 정보가 누설되는 것을 방지하기 위해서 정보를 암호화하여 정보의 내용을 알 수 없도록 하는 기법이다[1-2]. 정보은닉 기법은 인가받지 않은 악의적인 공격자의 공격으로부터 비밀자료를 안전하게 보호하기 위해서 제안되었다. 정보은닉 기법에서 비밀자료를 전달하는 송신자는 이미지 파일, 오디오 파일, 동영상 파일등과 같은 디지털 매체에 비밀자료를 삽입하여 수신자에게 전송한다[3-5]. 일반적으로 이미지 파일을 사용하는 정보은닉 기법에서 원본 이미지는 커버 이미지(CoverImage)로 정의하고, 비밀자료가 삽입 된 이미지는 스테고 이미지(Stego Image)로 정의한다. 이미지를 사용하는 정보은닉 기법에는 대표적으로 Kurah와 Mchughes가 제안한 LSB(LeastSignificantBit)기법과 Wu와 Tsai가 제안한 PVD(PixelValueDifferencing)기법이 있다. LSB기법은 그레이 스케일(GrayScale)이미지에 적용된 기법으로써 그레이 스케일 이미지는 그레이 컬러를 표현하기 위해서 각 픽셀이 8비트로 구성되어있다. 여기서 각 픽셀의 최하위 비트들을 LSB라고표현하는데 최하위 두 개의 비트까지는 변경이 되어도 사람의 육안으로 이미지의 왜곡을 탐지할 수 없다. 이러한 점을 이용해서 LSB 기법은 각 픽셀의 LSB영역에 비밀자료를 삽입하였다[6]. PVD기법은연속된 두 개의 픽셀 값의 차이에 따라서 삽입할 수 있는 비밀자료의 삽입용량이 결정된다[7]. PVD기법은 두 개의 연속된 픽셀들을 하나의 블록으로 설정하고 블록내의 픽셀 값의 차이 값과 log함수, 올림함수 (CeilingFunction), 내림 함수(FloorFunction)를 이용해서 비밀자료를 삽입 및 추출한다. 이러한 정보은닉 기법은 비밀자료를 안전하게 송수신 할 수 있지만, 수신자가 스테고 이미지로부터 비밀자료를 추출한 이후에 이미지가 왜곡된다는 문제점이 있었다. 이러한 문제는 이미지의 왜곡에 민감한 군사 영역, 의료영역, 예술 영역 등에서 큰 문제를 발생시킬 수 있었고, 이러한 문제를 해결하기 위해서 스테고 이미지로부터 비밀자료를 추출한 이후에도 이미지를 완벽하게 복원할 수 있는 가역 정보은닉(ReversibleData Hiding)기법이 제안되었다.대표적인 가역 정보은닉기법으로는 히스토그램 이동(Histogram Shifting) 기법과 PVO(PixelValueOrdering)기법 등이 있다. Ni등에 의해서 제안된 히스토그램 이동 기법은 커버 이미지 픽셀 값들의 빈도수를 계산하고 빈도수에 대한 히스토그램을 생성한다[8].히스토그램에 대한 최대 빈도수 픽셀 값을 피크 포인트(PeakPoint), 최소빈도수 픽셀 값을 제로 포인트(ZeroPoint)로 정의하는데, 이 기법에서는 피크 포인트에 비밀자료를 삽입하여 스테고 이미지를 생성하게 된다.Li등에 의해서 제안된 PVO기법은 픽셀 값 정렬과 차이 값을 이용해서 비밀자료를 삽입하는 가역 정보은닉 기법으로써, 커버 이미지를 중복이 없는 블록들로 분할하고 각 블록안의 픽셀 값들에 대해서 오름차순 정렬을 수행한다[9].그리고 상위 두 픽셀 값의 차이 값이 1이거나 하위 두 픽셀 값의 차이 값이 -1인 경우에 비밀자료를 삽입하여 스테고 이미지를 생성한다.본 논문에서는 Kim등이 제안한 이중 이미지(Dual Image) 와 픽셀들의 최대 차이 값을 이용하는 가역 정보은닉기법의 알고리듬을 수정해서 비밀자료의 절반을 삽입 및 추출한다[10]. Kim등이 제안한 기법은 픽셀 사이의 최대 차이 값을 이용해서 두 개의 커버 이미지에 비밀자료를 삽입하고 최종적으로 두 개의 스테고 이미지를 생성하는 기법이다.
위와 같은 기법들 이외에도 다양한 가역 정보은닉기법들이 제안되고 있으며, 지난 2009년에는 Jung과 Yoo에 의해서 보간법(Interpolation)을 이용한 가역 정보은닉 기법이 처음으로 제안되었다[11]. 이 기법은 보간법을 이용해서 w×w크기의 원본 이미지를 2w×2w크기의 커버 이미지로 확장하고 차이 값과 함수를 이용해서 비밀자료를 삽입한다. Jung과 Yoo 에 의해서 보간법 기반의 가역 정보은닉 기법이 제안된 이후에 다양한 보간법 기반의 가역 정보은닉 기법들이 제안되었다. 2012년에는 Lee와 Huang에 의해서 보간법과 최댓값을 이용하는 가역 정보은닉 기법이 제안되었다[12]. 이 기법은 log함수와 최댓값 그리고 픽셀 값들의 차이 값을 이용해서 비밀자료를 삽입한다. 지난 2015년에는 Hu등에 의해서 최댓값과 최솟값을 이용하는 보간법 기반의 가역 정보은닉 기법이 제안되었다[13]. 이 기법에서 최댓값은 보간 과정 중에 사용되고 최솟값은 차이 값을 계산하는데 사용되었다. 그리고 Jana등은 가중치 행렬(Weighted Matrix)과 보간법을 사용하는 가역 정보은닉 기법을 제안하였다[14]. 이 기법은 모듈러(Modular) 함수, 원본 이미지 픽셀 값 그리고 가중치 행렬을 이용해서 임의의 값을 계산하고, 이 임의의 값과 비밀자료의 차이 값의 결과에 따라서 커버 이미지의 픽셀을 변화시킨다. Lee등은 컬러 이미지의 R, G, B 화소 값을 기반으로 보간법을 적용하는 기법을 제안하였다 [15].Lee등이 제안한 기법은 그레이 스케일 이미지를 기반으로 보간법을 적용하지 않고 컬러 이미지를 기반으로 보간법을 적용하였으며 컬러 이미지를 R, G, B평면으로 분리한 후에 각 평면에 보간법을 적용하여 비밀자료를 삽입하였다. Lu에 의해서 제안된 보간법 기반의 가역 정보은닉 기법은 모듈러 함수와 재인 코딩 방법(Re-encoding strategy)을 이용한다 [16].이 기법은 삽입 가능한 비밀자료의 크기와 블록의 크기를 조절할 수 있으며, 재인코딩 방법을 통해서 이미지의 왜곡을 감소시켜서 이미지의 품질을 향상시켰다. 위와 같이 다양한 보간법 기반의 가역 정보은닉 기법들이 제안되었지만, 기존의 보간법 기반의 가역 정보은닉 기법들은 확장된 이미지에 비밀자료를 삽입하고 이미지의 보간 과정 중에는 비밀자료를 삽입하지 않았다. 하지만 이미지의 보간 과정 중에도 비밀자료를 삽입할 수 있다면 더 많은 비밀자료를 이미지에 삽입할 수 있을 것이고, 이러한 점을 개선하기 위해 본 논문에서는 이미지의 보간을 수행하면서 비밀자료를 삽입할 수 있는 새로운 기법을 제안한다. 본 논문에서는 w×w크기의 원본 이미지를 2× 2크기의 중복이 없는 블록들로 분할하고 각 블록에서 최솟값과 최댓값을 결정한다.그리고 각 블록 내의 최솟값을 기준으로 세 개의 쌍을 생성하고 최솟값을 기준으로 두 개의 쌍을 생성하여 총 다섯 개의 쌍을 생성한다.생성된 다섯 개의 쌍에는 PVD기법의 삽입 알고리듬을 적용해서 첫 번째 비밀자료를 삽입하고 비밀자료가 삽입된 다섯 개 쌍의 픽셀들은 이미지의 보간을 위해서 일정한 규칙에 의해서 커버 이미지에 배치된다.커버 이미지가 생성되면 Kim등이 제안한 기법을 수정한 알고리듬과 최대 차이 값, 2x2함수, 올림함수, 내림함수를 이용해서 두 번째 비밀자료를 삽입하면서 스테고 이미지를 생성한다.본 논문에서 제안하는 기법은 기존의 기법들에서 비밀자료를 삽입하지 않았던 이미지의 보간 과정 중에도 비밀자료를 삽입하기 때문에 비밀자료를 두 번 삽입할 수 있고 결과적으로 더 많은 비밀자료를 이미지에 삽입 할 수 있다.
본 논문의 구성은 다음과 같다.2장에서는 보간법 기반의 가역 정보은닉 기법들을 소개하고, 3장에서는 제안하는 기법의 비밀자료 삽입 및 추출 과정을 설명한다.4장에서는 제안 기법과 관련 연구에서 소개된 기법들에 대한 실험결과를 분석하고, 5장에서는 결론을 맺는다.
2. 관련연구
2.1 픽셀 값 차이 기법(Pixel Value Differencing, PVD)
Wu와 Tsai는 인접한 두 개의 픽셀들의 차이 값에 따라서 비밀자료의 삽입 용량을 조절할 수 있는 PVD(PixelValueDifferencing)기법을 제안하였다 [7].이 기법은 그레이 스케일 커버 이미지에서 두 개의 연속된 픽셀을 하나의 블록으로 설정하고 커버 이미지에 대해서 블록화를 수행한다.그리고 커버 이미지의 각 블록 내의 픽셀들에 대해서 차이 값을 계산하고 log함수를 이용해서 각 블록에서 포함할 수 있는 비밀자료의 크기를 결정한다. 삽입할 수 있는 비밀자료의 크기가 결정되면 각 블록의 최젓값에 비밀자료를 삽입하여 새로운 차이 값을 정의하고 각 블록에서 기존의 차이 값과 새로운 차이 값의 차이 값을 계산한다. 그리고 이 값을 커버 이미지의 각 블록의 픽셀들에 삽입하게 되면 각 블록에 대한 스테고이미지 픽셀들이 생성된다. 위와 같은 과정을 커버 이미지의 모든 블록들에 수행함으로써 비밀자료가 삽입된 스테고 이미지를 생성할 수 있다.
2.2 이중 이미지를 이용하는 픽셀 값 차이 기반의 가역 정보은닉 기법(Reversible data hiding scheme based on pixel value differencing in dual images)
2020년, Kim등은 비밀자료의 삽입용량을 증가시키기 위해서 이중 이미지와 픽셀 값들의 최대 차이 값을 이용하여 비밀자료를 삽입 및 추출하는 가역 정보은닉 기법을 제안하였다[10]. Kim등의 기법은 커버 이미지를 m×m크기의 중복이 없는 블록들로 분할하고 블록안의 모든 픽셀들에 대해서 최대 차이 값을 계산한다. 그리고 블록의 모든 픽셀들의 최대차이 값에 대해서 log함수를 적용해서 삽입 가능한 비밀자료의 크기를 결정하고 이 크기만큼 이진수 비밀자료를 십진수 형태의 비밀자료로 변환한다. 변환된 십진수 형태의 비밀자료들은 블록의 모든 픽셀들에 대해서 삽입되는데 하나의 커버 이미지 픽셀로부터 두 가지 형태의 삽입 과정을 적용하여 두 개의스테고 이미지 픽셀들을 생성한다. 위와 같은 과정을 커버 이미지의 모든 블록들에 수행하게 되면 최종적으로 하나의 커버 이미지로부터 두 개의 스테고 이미지가 생성된다.
2.3 인접 값 평균 보간법(Neighbor Mean Interpola- tion: NMI)
지난 2009년, Jung과 Yoo는 보간법을 이용하는 정보은닉 기법을 처음으로 제안하였다[11]. 보간법은미리 알고 있는 값들을 이용해서 모르는 값을 추정하는 방법으로써, 보간법과 이미지 영상을 이용하는 정보은닉 기법들은 사전에 알고 있는 원본 이미지의 픽셀 값들을 이용해서 커버 이미지의 새로운 픽셀값들을 추정하게 된다.그리고 추정된 새로운 픽셀값들에 비밀자료를 삽입하기 때문에 원본 이미지의 픽셀 값들을 유지하면서 비밀자료를 삽입 및 추출할 수 있다.인접 값 평균 보간법(Neighbor Mean Inter-polation:NMI)으로도 정의될 수 있는 Jung과 Yoo의기법은 원본 이미지의 픽셀 값들의 평균을 이용해서 이미지 보간을 수행하고, 보간 된 커버 이미지 픽셀값과 원본 이미지 픽셀 값의 차이 값을 이용해서 비밀자료를 삽입한다.NMI기법의 삽입과정은 Fig.1 에 보여 진다.예를 들어서, Fig.1에서 원본 이미지 I0,0과 I0,1의 픽셀 값이 120과 126인 경우에 (120+126)/ 2=123에 의해서 C0,1의 값은 123이 된다. 그리고 C0,1에 비밀자료를 삽입하기 위해서 C0,1과 C0,0의 픽셀값인 123과 120의 차이 값인 3을 계산하고, 이 값에 log2를 적용해서 1이라는 값을 도출해낸다. C0,1에 대한 log함수의 적용결과가 1이기 때문에 C0,1에는 비밀자료 1비트가 삽입될 수 있다. Fig.1에서 비밀자료가 1110110012라고 가정하였을 때, 첫 번째 1비트인 1을 C0,1에 삽입하게 되면 123+1=124에 의해서 S0,1의 값은 124가 된다.위와 같은 과정을 이미지 내의 모든 블록들에 수행해서 비밀자료를 삽입하게 되고, 비밀자료가 삽입 된 스테고 이미지를 생성하게 된다.
Fig. 1. Embedding example of NMI scheme.
2.4 최대 차분 값 인접 화소에 의한 보간법(Interpolation by Neighboring Pixels on max difference values: INP)
Lee와 Huang에 의해서 제안된 최대 차분 값 인접 화소에 의한 보간법(Interpolation by Neighboring Pixelsonmaxdifferencevalues: INP)은 NMI기법을 개선하기 위해서 두 번의 평균값 계산을 수행하여 이미지 보간을 수행한다[12]. 그리고 원본 이미지 픽셀 값의 최댓값과 보간된 커버 이미지 픽셀 값의 차이 값을 이용해서 비밀자료를 삽입한다. 예를 들어서, Fig.2에서 원본 이미지 I0,0과 I0,1의 픽셀 값이 120과 126인 경우에 {120+(120+126)/2}/2=121에 의해서 C0,1의 값은 121이 된다.그리고 C0,1에 비밀자료를 삽입하기 위해서 블록안의 최댓값 M인 126을 결정하고, M과 C0,1의 픽셀 값인 126과 121의 차이 값인 5를 계산한다. 차이 값에 log2를 적용하면 2라는 값이 도출되기 때문에 C0,1에는 비밀자료 2비트가 삽입될 수 있다. Fig.2에서 비밀자료가 1110110012라고 가정하였을 때, 2개 비트인 11을 C0,1에 삽입하게 되면 121+3=124에 의해서 S0,1의 값은 124가 된다. 위와같은 과정을 이미지 내의 모든 블록들에 수행해서 비밀자료를 삽입하게 되고, 비밀자료가 삽입 된 스테고 이미지를 생성하게 된다.
Fig. 2. Embedding example of INP scheme.
2.5 이미지 보간을 이용하는 가중치 행렬 기반의 가역 정보은닉 기법(Weighted Matrix Based Reversible Data Hiding Scheme Using Image Interpolation)
Jana등은 가중치 행렬과 보간법을 사용하는 가역 정보은닉 기법을 제안하였다[14]. Jana등의 기법은 원본 이미지로부터 커버 이미지를 생성하기 위해서 짝수의 경우와 홀수의 경우에 다른 보간 과정을 적용한다. 이미지의 확장이 완료되면 원본 이미지의 픽셀들과 가중치 행렬의 값들을 각각 곱하고 그 값들의 누적된 합을 계산한다. 누적된 합에는 모듈러 함수를 적용하여 임의의 값을 생성하고 삽입하고자 하는 비밀자료와 임의의 값의 차이 값을 계산한다. 만약에이 차이 값이 양수이면 보간 된 픽셀에 차이 값을 더해주고 차이 값이 음수인 경우에는 보간 된 픽셀에서 차이 값을 뺀다. 위와 같은 과정을 수행하면서 비밀자료를 삽입하고 최종적으로 스테고 이미지를 생성하게 된다. 예를 들어서, 짝수의 경우와 홀수의 경우에 대해서 다른 보간 과정을 적용하여 그림 Fig. 3(a)의 원본 이미지로부터 Fig.3(b)의 커버 이미지를 생성한다. 그리고 Fig. 3(a)의 원본 이미지와 Fig. 3(d)의 가중치 파일을 이용해서 Val=[(161×1)+(161 ×2)+(159×3)+(162×4)+(161×0)+(159×5)+(163×6)+ (158×7)+(159×8)] mod 16을 계산해서 누적된 합인 Val값 0을 계산한다. 만약에 십진수 비밀자료가 7일 경우에 비밀자료 7과 Val 값의 차이 값을 계산하는데 이 차이 값이 양수이기 때문에 C2,1에 7을 더해서 169 의 스테고 픽셀을 생성한다. 위의 예제는 Fig. 3에 보여 진다.
Fig. 3. Embedding example of Jana scheme. (a) Original Image, (b) Cover Image, (c) Stego Image, and (d) Weighted Matrix.
2.6 모듈러 함수와 재인코딩 방법을 사용하는 보간법 기반의 정보 은닉 기법(Interpolation-based hiding scheme using the modulus function and re-encoding strategy)
Jana가 제안한 기법은 보간 된 픽셀에 직접 값을 더하거나 빼기 때문에, 이미지의 왜곡이 발생할 확률이 높았다. 이러한 문제점을 극복하면서 이미지의 왜곡을 감소시키기 위해서 Lu는 재 인코딩 방법(Re- encodingStrategy)을 이용한 보간법 기반의 가역 정보은닉 기법을 제안하였다[16]. Lu가 제안한 기법은 이미지의 품질과 비밀자료의 삽입용량을 조절하기 위해서 임의의 파라미터(Parameter)들을 사용하고, 이미지의 확장을 위해서 Lee와 Huang이 제안했던 INP기법의 보간법을 사용한다. 커버 이미지는 3×3 혹은 4×4블록들로 분할될 수 있는데, 3×3 크기의 블록에는 5개의 보간 된 픽셀에 비밀자료가 삽입되고 4×4크기의 블록에는 12개의 보간 된 픽셀에 비밀자료가 삽입된다.비밀자료의 삽입용량도 조절할 수 있는데 임의의 파라미터의 값에 따라서 보간된 픽셀에 3개의 비밀비트를 삽입하거나 4개의 비밀비트를 삽입할 수 있다. 비밀자료의 삽입 과정에서 원본 이미지, 가중치 행렬, 모듈러 함수, 임의의 파라미터를 이용해서 누적된 값을 계산한다. 이 누적된 값과 비밀자료의 차이 값, 모듈러 함수, 임의의 파라미터를 이용해서 비밀자료를 삽입하여 임의의 변수를 생성한다. 비밀자료가 삽입된 임의의 변수들에 대해서 히스토그램을 생성하여 내림차순 정렬(Descending Order)을 수행한다. 빈도수에 대해서 내림차순 정렬된 값들의 새로운 인덱스를 재 인코딩 된 코드(Re- encodedCode)라고 하였을 때, 이미지의 왜곡 정도를 감소시키기 위해서 재 인코딩 된 코드의 짝수와 홀수의 경우에 따라서 코드의 값들을 새로운 값들로 변화시킨다.그리고 변화된 값들을 보간 된 픽셀에 삽입해서 비밀자료가 삽입 된 스테고 이미지를 생성한다. 예를 들어서, Fig.4(a)에서 (0, 1)위치의 첫 번째 보간 된 픽셀인 90에 3비트의 비밀자료를 삽입하고자 한다.원본 이미지와 가중치 파일, 그리고 임의의 파라미터 값인 4를 이용해서 Val = [(90x1)+(92x2)+(88x3)+(96x4)]mod(2x4+1) 를 계산하면 누적된 값인 Val 값은 4가 획득된다. 그리고 삽입하고자 하는 비밀비트를 10002라고 가정하였을 때 이 비밀비트를 십진수 형태의 비밀자료로 변환하면 십진수 8이 계산된다. 비밀자료와 Val값의 차이에 모듈러 함수를 적용한 결과를 DIFF라고 하였을 때, DIFF=(8-4)mod(2x4+1)를 계산하여 DIFF의 값 4를 획득한다. 그리고 DIFF 각각에 대한 빈도수를 H라고 정의하였을 때 전체 DIFF에 대한 빈도수를 Fig.5(a)와 같이 가정한다. Fig.5(a)에서 DIFF가 4인 경우에 빈도수는 5이다. 그리고 Fig.5(b)의 H'와 같이 빈도수에 대해서 내림차순을 수행해서 빈도수를 기준으로 DIFF의 값을 다시 정렬한다. 그리고 새로운 인덱스인 idx(DIFF)를 0부터 8까지 새롭게 부여한다. 하지만 idx(DIFF)를 커버 픽셀에 그대로 삽입하면 idx(DIFF)가 8인 경우에는 픽셀 값의 변화가 크다. 따라서 Lu가 제안한 기법에서는 짝수와 홀수의 경우에 따라서 Fig.5(c)와 같이 idx(DIFF)의 값들을 \(\overline{D I F F}\)로 변환한다. 본 예제에서 DIFF가 4인 경우에 idx(DIFF)의 값은 3인데 \(\overline{D I F F}\)로 변환하게 되면 2로 변환되고 결과적으로 픽셀 값이 3만큼 변화하는 것을 2만큼 변화하도록 함으로써 이미지의 왜곡을 감소시켰다. 최종적으로 변환된 \(\overline{D I F F}\)의 값을 첫 번째 보간 된 픽셀에 삽입해서 92의 값을 획득할 수 있다.
Fig. 4. Embedding example of Lu scheme. (a) Cover Image, (b) Weighted Matrix, (c) Stego Image.
Fig. 5. Re-encoding process of the example.
3. 제안한 방법
3.1 제안한 알고리듬의 개요
기존의 보간법 기반의 가역 정보은닉 기법에서는 원본 이미지에서 보간 과정을 수행해서 커버 이미지를 생성하고, 이 커버 이미지에 비밀자료를 삽입해서스테고 이미지를 생성하였다. 하지만 기존의 보간법 기반의 가역 정보은닉 기법들은 커버 이미지를 생성하기 위한 보간 과정 중에는 비밀자료를 삽입하지 않았다. 이러한 점을 개선하기 위해 본 논문에서는 이미지의 보간 과정 중에도 비밀자료를 삽입하는 기법에 대해서 제안하고자 한다. 본 논문에서는 보간 과정 중에 첫 번째 비밀자료를 삽입해서 커버 이미지를 생성하고, 생성된 커버 이미지에 두 번째 비밀자료를 삽입하여 스테고 이미지를 생성한다. 첫 번째 비밀자료의 삽입 과정에서 원본 이미지는 중복이 없는 2×2사이즈의 블록들로 분할되고 각 블록들 내에서 최솟값과 최댓값을 결정한다. 그리고 최솟값 기준으로 세 방향(Three-way)탐색과 PVD기법을 적용하면서 세 개의 쌍을 생성하고 최댓값 기준으로 두 방향(Two-way) 탐색과 PVD기법을 적용해서 두 개의 쌍을 생성한다. 생성된 다섯 개의 쌍을 보간 과정에 적용해서 첫 번째 비밀자료가 삽입된 커버 이미지를 생성한다. 커버 이미지가 생성되면 두 번째 비밀자료를 삽입하게 되는데 Kim등이 제안한 기법의 삽입 알고리듬에서는 각 블록의 모든 픽셀들에 대해서 최대 차이 값, log함수, 올림함수, 내림함수 등을 이용해서 비밀자료를 삽입하지만 제안하는 기법에서는 원본 이미지를 중복이 없는 2×2크기의 블록들로 분할하고 Kim등이 제안한 기법의 삽입 알고리듬을 수정한 수식(2), 수식(3), 수식(4), 수식(5)를 이용해서 각 블록내의 i,j 위치의 픽셀과 i,j+1 위치의 픽셀에 대해서 비밀자료를 삽입한다. 두 번째 비밀자료를 삽입하는 과정에서 원본 이미지 각 블록의 i,j 위치의 픽셀과 i,j+1위치의 픽셀을 기준으로 최대차이 값을 계산한다. 그리고 최대 차이 값에 log함수를 적용해서 삽입할 수 있는 비밀자료의 크기를 결정하고 올림함수, 내림함수, 원본 이미지 픽셀을 이용해서 비밀자료를 삽입한다. 그리고 비밀자료가 삽입된 픽셀들을 일정한 규칙에 의해서 배치를 수행해서 커버 이미지에 두 번째 비밀자료를 삽입하면 스테고이미지가 생성된다. 비밀자료의 추출과정에서는 Kim 등이 제안한 기법의 추출 알고리듬을 수정한 수식 (7), 수식(8), 수식 (9)를 이용해서 두 번째 비밀자료를 먼저 추출한다. Kim등이 제안한 기법은 각 블록의 모든 픽셀들에 대해서 비밀자료를 추출하지만 제안하는 기법은 i,j위치의 픽셀과 (i,j+1)위치의 픽셀에 대해서만 두 번째 비밀자료를 추출한다. 두 번째 비밀자료의 추출 과정은 스테고 이미지를 4×4 크기의 중복이 없는 블록들로 분할하고 평균값을 이용해서 원본 이미지를 복원한다. 복원된 원본 이미지는 2×2크기의 중복이 없는 블록들로 분할되고 최대 차이 값과 log함수를 이용해서 두 번째 비밀자료를 추출한다. 그리고 PVD기법의 비밀자료 추출 알고리듬을 이용해서 첫 번째 비밀자료를 추출함으로써 원본 이미지의 복원과 비밀자료의 추출을 완료하게 된다.그리고 본 논문은 개선된 보간법을 이용해서 비밀자료의 추출 이후에도 원본 이미지를 완벽하게 복원하는 정보은닉 기법의 가역적인 기능을 제공한다. 이러한 기능을 제공하기 위해서 첫 번째 비밀자료를 삽입하는 과정에서 원본 이미지의 (i,j+1)위치의 픽셀과 (i+1,j+1)위치의 픽셀은 비밀자료를 삽입하지 않으면서 커버 이미지의 (i+2,j) 위치와 (i+2,j+2)위치로 픽셀 값의 변화 없이 그대로 배치된다. 커버 이미지의 (i+2,j)위치와 (i+2,j+2)위치의 픽셀에는 두 번째 비밀자료 삽입과정에서도 비밀자료가 삽입되지 않기 때문에 원본 이미지의 픽셀을 그대로 유지하고 있다. 따라서 스테고 이미지의 (i+2,j)위치와 (i+2,j+2)위치의 픽셀들을 원본 이미지의 (i+1,j) 위치와 (i+1,j+1)위치로 배치하게 되면 원본 이미지 절반이 복원된다. 나머지 원본 이미지 절반을 복원하기 위해서 두 번째 비밀자료를 삽입하는 과정에서 원본 이미지의 i,j위치의 픽셀과 (i,j+1)위치의 픽셀에 대해서 각각 최대 차이 값을 이용해서 비밀자료를 삽입한다. i,j 위치의 픽셀에 대해서 비밀자료를 삽입하여 생성된 두 개의 값들은 스테고 이미지의 i,j위치와 (i+3,j+1) 위치에 배치되고 (i,j+1)위치의 픽셀에 대해서 비밀자료를 삽입하여 생성된 두 개의 값들은 스테고 이미지의 (i,j+2)위치와 (i+3,j+3)위치에 배치된다. Kim등이 제안한 기법의 삽입 알고리듬을 수정하여 두 번째 비밀자료를 삽입하는 본 논문의 경우에 비밀자료를 삽입하여 생성된 두 개의 값들의 평균값을 계산하면 비밀자료가 삽입되기 이전의 값을 복원할 수 있다. 이러한 점을 이용해서 스테고 이미지의 i,j위치와 (i+3,j+1) 위치에 배치된 픽셀들과 (i,j+2)위치와 (i+3,j+3)위치에 배치된 픽셀들의 평균을 각각 계산해서 원본 이미지의 (i+1,j)위치와 (i+1,j+1)위치로 배치하게 되면 나머지 절반의 원본 이미지 픽셀들을 복원할 수 있고 최종적으로 원본 이미지가 복원 된 정보은닉기법의 가역적인 기능을 제공할 수 있다. 제안하는기법의 비밀자료 삽입 및 추출 알고리듬은 아래와 같다.
3.2 제안한 기법의 비밀자료 삽입 알고리듬
입력 : m×m크기의 원본 이미지 I와 비밀자료
출력 : 2w×2w 크기의 스테고 이미지 S
Step1: 원본 이미지 I를 2×2크기의 중복이 없는 블록들로 분할한다.하나의 블록은 Ii,j, Ii,j+1, Ii+1,j, Ii+1,j+1로 구성된다.
Step2: 2(w×w)크기의 커버 이미지 C을 생성하기 위해서 I내의 각 블록 내의 픽셀 값들을 비교해서 최솟값과 최댓값을 결정한다.
Step3: 각 블록의 최솟값을 기준으로 Fig.6과 같이 탐색을 수행하여 세 개의 쌍을 생성한다. 블록의최솟값이 Ii,j의 위치에 있는 픽셀인 경우에는 Ii,j를기준으로 세 방향으로 탐색을 수행하여 세 개의 쌍을 생성하고(Case1), 최솟값이 Ii,j+1의 위치에 있는 픽셀인 경우에는 Ii,j+1를 기준으로 세 방향으로 탐색을 수행하여 세 개의 쌍을 생성한다(Case2). 그리고 최솟값이 Ii+1,j인 경우(Case3)와 Ii+1,j+1인 경우(Case 4)에도 최솟값을 기준으로 세 방향으로 탐색을 수행하여 세 개의 쌍을 생성한다. 예를 들어, 만약에 임의의 블록의 최솟값이 Case3의 Ii+1,j인 경우에는 Ii+1,j를 기준으로 세 방향으로 탐색을 수행하여 (minIi+1,j, minIi,j), (minIi+1,j, minIi,j), (minIi+1,j, minIi+1,j+1)의 세 쌍을 생성한다.
Fig. 6. Three-way searching.
Step4: PVD기법의 삽입 알고리듬을 최솟값 기준의 세 쌍에 적용하여 첫 번째 비밀자료를 삽입하면서 세 개의 쌍을 생성한다.예를 들어, 만약에 최솟값이 Fig.6의 Case3의 Ii+1,j인 경우에 PVD기법의 삽입 알고리듬을 (minIi+1,j, minIi,j), (minIi+1,j, minIi,j+1), (minIi+1,j, minIi+1,j+1)에 적용하여 (minPi+1,j, minPi,j), (minPi+1,j, minPi,j+1), (minPi+1,j, minPi+1,j+1)의 세 쌍을 생성한다.
Step5: 각 블록의 최댓값을 기준으로 Fig.7과 같이 탐색을 수행하여 두 개의 쌍을 생성한다. 블록의 최댓값이 Ii,j의 위치에 있는 픽셀인 경우에는 Ii,j를기준으로 두 방향으로 탐색을 수행하여 두 개의 쌍을 생성하고(Case1), 최댓값이 Ii,j+1의 위치에 있는 픽셀인 경우에는 Ii,j+1를 기준으로 두 방향으로 탐색을 수행하여 두 개의 쌍을 생성한다(Case2).그리고 최댓값이 Ii+1,j인 경우(Case3)와 Ii+1,j+1인 경우(Case4) 에도 최댓값을 기준으로 두 방향으로 탐색을 수행하여 두 개의 쌍을 생성한다. 예를 들어, 만약에 임의의 블록의 최댓값이 Case2의 Ii,j+1인 경우에는 Ii,j+1를 기준으로 두 방향으로 탐색을 수행하여 (mixIi,j+1, mixIi,j), (mixIi,j+1, mixIi+1,j+1)의 두 쌍을 생성한다.
Fig. 7. Two-way searching.
Step6: PVD기법의 삽입 알고리듬을 최댓값 기준의 두 쌍에 적용하여 첫 번째 비밀자료를 삽입하면서두 개의 쌍을 생성한다. 만약에 최댓값이 Case2의 Ii,j+1인 경우에 PVD기법의 삽입 알고리듬을 적용하여 (mixPi,j+1, mixPi,j), (mixPi,j+1, mixPi+1,j+1)의 두 쌍을 생성한다.
Step7: 커버이미지를 생성하기 위해서 이미지 보 간을 수행한다.최솟값이 Case3의 Ii+1,j이고 최댓값이 Ii,j+1인 경우에 본 논문에서 제안하는 아래의 수식 (1)을 이용해서 이미지 보간을 수행한다. C도 블록 단위로 분할되며 각 블록은 4×4크기를 가지게 된다.
\(\begin{aligned} &C_{i, j}=I_{i, j}, \quad C_{i, j+1}=\min P_{i+1, j}, \quad C_{i, j+2}=I_{i, j+1}, \\ &C_{i, j+3}=\operatorname{minP}_{i, j} \\ &C_{i+1, j}=\min P_{i+1, j}, \quad C_{i+1, j+1}=\min P_{i+1, j}, \\ &C_{i+1, j+2}=\min P_{i, j+1}, \quad C_{i+1, j+3}=\min P_{i+1, j+1} \\ &C_{i+2, j}=I_{i+1, j}, \quad C_{i+2, j+1}=\max P_{i, j+1}, \\ &C_{i+2, j+2}=I_{i+1, j+1}, \quad C_{i+2, j+3}=\max P_{i, j} \\ &C_{i+3, j}=\operatorname{maxP}_{i, j+1}, C_{i+3, j+1}=I_{i+1, j}, \\ &C_{i+3, j+2}=\operatorname{maxP}_{i+1, j+1}, C_{i+3, j+3}=I_{i+1, j+1} \end{aligned}\) (1)
Step8: 두 번째 비밀자료를 삽입하기 위해 수식 (2)를 이용해서 I내의 각 블록의 Ii,j와 Ii,j+1에서의 최대 차이 값을 계산한다. 수식 (2)에서 max함수는 최댓값을 반환한다.
\(\begin{aligned} &d_{i, j}=m a x\left(\left|I_{i, j}-I_{i, j+1}\right|,\left|I_{i, j}-I_{i+1, j}\right|,\left|I_{i, j}-I_{i+1, j+1}\right|\right)\\ &d_{i, j+1}=m \operatorname{ax}\left(\left|I_{i, j+1}-I_{i, j}\right|,\left|I_{i, j+1}-I_{i+1, j}\right|,\left|I_{i, j+1}-I_{i+1, j+1}\right|\right) \end{aligned}\) (2)
Step9: di,j과 di,j+1에 대해서 각각 삽입 가능한 비트 사이즈인 li,j과 li,j+1를 획득하기 위해서 수식 (3) 을 이용한다.
\(l_{i, j}=\left\lfloor\log _{2} d_{i, j}\right\rfloor, l_{i, j+1}=\left\lfloor\log _{2} d_{i, j+1}\right\rfloor\) (3)
Step10: li,j과 li,j+1 크기의 이진수 비밀 비트들을 십진수 비밀 자료로 변환해서 si,j와 si,j+1을 생성한다. 그리고 수식 (4)를 이용해서 두 번째 비밀자료를 삽입한다. 수식 (4)의 Tsi,j, tsi,j, Tsi,j+1, tsi,j+1에 비밀자료가 임시로 삽입된다.
\(\begin{aligned} &T s_{i, j}=\left\lfloor\frac{s_{i, j}}{2}\right\rfloor, t s_{i, j}=\left[\frac{s_{i, j}}{2}\right], \\ &T s_{i, j+1}=\left\lfloor\frac{s_{i, j+1}}{2}\right\rfloor, t s_{i, j+1}=\left[\frac{s_{i, j+1}}{2}\right] \end{aligned}\) (4)
Step11: Tsi,j, tsi,j, Tsi,j+1, tsi,j+1과 원본 이미지의 픽셀들을 이용해서 스테고 이미지 S의 픽셀들인 STsi,j, Stsi,j, STsi,j+1, Stsi,j+1를 생성한다.
\(\begin{aligned} &S T s_{i, j}=I_{i, j}+T s_{i, j}, \quad \text { Sts }_{i, j}=I_{i, j}-t s_{i, j}, \\ &S T s_{i, j+1}=I_{i, j+1}+T s_{i, j+1}, \quad \text { Sts }_{i, j+1}=I_{i, j+1}-t s_{i, j+1} \end{aligned}\) (5)
Step12: STsi,j, Stsi,j, STsi,j+1, Stsi,j+1을 S에 대입하기 위해서 본 논문에서 제안하는 수식 (6)을 이용한다. 수식 (6)에서 언급하지 않은 스테고 이미지의 픽셀들은 C의 값들을 그대로 대입한다.
\(\begin{aligned} &S_{i, j}=S T s_{i, j}, \quad S_{i+3, j+1}=S t s_{i, j}, S_{i, j+2}=S T s_{i, j+1} \\ &S_{i+3, j+3}=S t s_{i, j+1} \end{aligned}\) (6)
Step13: 모든 블록들에 대해서 Step2에서 Step12 의 과정들을 수행한다.
제안하는 기법의 삽입 과정은 Fig.8에서 보여 진다. Fig.8에서 원본 이미지는 중복이 없는 블록들로 분할되고 첫 번째 블록을 선택한다.Fig.8에서 첫 번째 블록의 픽셀들은 A, B, C, D로 가정한다. 그리고첫 번째 블록의 픽셀 값들인 A, B, C, D에 대해서 최솟값과 최댓값을 결정해서 최솟값 기준으로 세 방향 탐색을 수행하여 임의의 픽셀들인 e, f, g, h, i, j를 생성하고 이 값들에 PVD기법의 삽입 알고리듬을 적용해서 첫 번째 비밀자료가 삽입 된 E, F, G, H, I, J를 생성한다. 최댓값 기준으로는 두 방향 탐색을 수행하여 임의의 픽셀들인 k, l, m, n을 생성하고 이 값들에 PVD 기법의 삽입 알고리듬을 적용해서 첫 번째 비밀자료가 삽입 된 K, L, M, N을 생성한다.E, F, G, H, I, J 픽셀들과 K, L, M, N픽셀들은 이미지의 확장에 사용되어 커버 이미지 블록에 규칙대로 배치가 된다.첫 번째 비밀자료가 삽입되면 첫 번째 블록에서 A와 B에 대해서 최대 차이 값을 계산하고 최대 차이 값에 대해서 log함수를 적용해서 삽입 가능한 비밀비트의 크기를 결정한다.그리고 올림함수와 내림함수를 이용해서 두 번째 비밀자료가 삽입 된 임시의 값들을 생성한다. 생성된 임시의 값들과 원본 픽셀 값들에 대해서 덧셈과 뺄셈을 이용해서 최대 차이 값 기준으로 두 번째 비밀자료가 삽입된 O, P, Q, R을 생성한다.이 O, P, Q, R값들은 커버 이미지 블록에 규칙에 의해서 배치되어 스테고 이미지 블록을 생성하게 된다. 위와같은 과정을 모든 블록들에 수행하게 되면 최종적으로 스테고 이미지가 생성된다.
Fig. 8. Embedding process.
3.3 제안한 기법의 비밀자료 삽입 예제
본 절에서는 제안하는 기법의 비밀자료 삽입 과정에 대한 예제를 Fig.9를 이용해서 설명한다.Fig. 9의 Step1에서 2×2크기의 블록을 선택하고 Step 2에 서는 선택된 블록 안에서 최솟값과 최댓값을 결정한다. Fig.9에서 선택한 블록에서 최솟값은 58이고 최댓값은 104이다.Step3에서는 최솟값을 기준으로 세 개의 쌍인 (58, 104), (58, 60), (58, 98)을 생성한다. 그리고 Step4에서 세 개의 쌍에 대해서 PVD 기법의 삽입 알고리듬을 적용해서 2진수 비트 형태의 비밀자료인 10000101010102를 삽입하면 비밀자료가 삽입된 세 개의 쌍인 (44, 118), (56, 61), (57, 99)가 생성된다. 최솟값 기준의 비밀자료를 삽입한 이후에는 최댓값 기준의 비밀자료를 삽입한다. Step5에서 최댓값을 기준으로 두 개의 쌍인 (104, 60), (104, 98)을 생성한다. 그리고 Step6에서 두 개의 쌍에 대해서 PVD 기법의 삽입 알고리듬을 적용해서 2진수 비트 형태의 비밀자료인 001110102을 삽입하면 비밀자료가 삽입된 두 개의 쌍인 (101, 62), (102, 100)이 생성된다. 첫 번째 비밀자료를 삽입하면서 생성된 다섯 개의 쌍은 수식(1)을 이용해서 커버 이미지 블록에 배치된다. 첫 번째 비밀자료가 삽입되면 두 번째 비밀자료를 삽입하기 위해서 선택된 원본 이미지 블록의 104 와 60에 대해서 최대 차이 값을 계산한다. 104와 60에 대한 블록내의 픽셀들에 대한 최대 차이 값은 각각 46과 44이다. 46과 44에 대해서 log함수를 적용하면 \(l_{i, j}=\left\lfloor\log _{2} 46\right\rfloor\)과 \(l_{i, j+1}=\left\lfloor\log _{2} 44\right\rfloor\) 에 의해서 li,j와 li,j+1는 각각 5비트씩 삽입할 수 있다. 만약 비밀자료가 10100011112이라고 가정하였을 때 앞의 5비트인 101002를 십진수로 변환하면 20이 된다. 따라서 Tsi,j = [20/2]과 tsi,j = [20/2]에 의해서 Tsi,j는 10, tsi,j도 10의 값이 획득된다. 그리고 뒤의 5비트인 10, 011112를 십진수로 변환하면 15가 된다. 따라서 Tsi,j+1 = [15/2] 과 tsi,j+1 = [15/2]에 의해서 Tsi,j+1는 7, tsi,j+1는 8의 값이 획득된다. 그리고 최종 스테고 픽셀들인 STsi,j, Stsi,j, STsi,j+1, Stsi,j+1을 생성하기 위해서 아래와 같이 원본 픽셀에 Tsi,j, tsi,j, Tsi,j+1, tsi,j+1의 값을 더하거나 뺀다. 수식 (5)를 이용해서 STsi,j = 104+10, Stsi,j = 104-10, STsi,j+1 = 60+7, STsi,j+1 = 60-8의 과정을 수행하면 최종 스테고 픽셀 STsi,j은 114, STsi,j은 94 STsi,j+1은 67 STsi,j+1은 52가 생성된다.생성된 스테고 픽셀들은 Step12 과정을 통해서 이용해서 스테고 이미지의 블록에 배치된다. 위와 같은 과정을 전체 커버 이미지 블록에 대해서 수행하게 되면 비밀자료가 삽입된 스테고 이미지를 생성하게 된다.
Fig. 9. Embedding example.
3.4 제안한 기법의 비밀자료 추출 알고리듬
입력 : 2w×2w 크기의 스테고 이미지 S
출력 : w×w크기의 원본 이미지 I와 비밀자료
Step1: 스테고 이미지 S를 4×4크기의 중복이 없는 블록들로 분할한다.
Step2: 두 번째 비밀자료를 추출하면서 I의 픽셀들을 복원하기 위해서 아래의 수식을 이용한다.
\(\begin{aligned} &I_{i, j}=\left[\frac{\left(S_{i, j}+S_{i+3, j+1}\right)}{2}\right], \\ &I_{i, j+1}=\left[\frac{\left(S_{i, j+2}+S_{i+3, j+3}\right)}{2}\right] \end{aligned}\) (7)
Step3: Ci+2,j에 위치한 원본 이미지 픽셀인 Ii+1,j 와 Ci+2,j+2에 위치한 원본 이미지 픽셀인 Ii+1,j+1를 반환해서 원본 이미지 블록의 픽셀을 복원한다.
Step4: 삽입과정의 수식 (2)를 이용해서 블록의 Ii,j와 Ii,j+1에서의 최대 차이 값을 계산한다.
Step5: 삽입되어 있는 비밀자료의 비트수를 계산하기 위해서 아래의 수식을 이용한다.
\(l_{i, j}^{\prime}=\left\lfloor\log _{2} d_{i, j}\right\rfloor, l_{i, j+1}^{\prime}=\left\lfloor\log _{2} d_{i, j+1}\right\rfloor\) (8)
Step6: l'i,j과 l'i,j+1, 그리고 수식 (9)를 이용해서 삽입된 두 번째 비밀자료를 추출한다.
\(\begin{aligned} &s_{i, j}=\left|S_{i, j}-I_{i, j}\right|+\left|S_{i+3, j+1}-I_{i, j}\right| \\ &s_{i, j+1}=\left|S_{i, j+2}-I_{i, j+1}\right|+\left|S_{i+3, j+3}-I_{i, j+1}\right| \end{aligned}\) (9)
Step7: 최댓값 기준으로 삽입된 첫 번째 비밀자료를 추출하기 위해서 본 논문에서 제안하는 수식 (10) 을 이용해서 PVD기법의 추출 알고리듬 PVDex을 두 개의 쌍에 적용한다.
\(P V D_{e x}\left(C_{i+2, j+1}, C_{i+2, j+3}\right), P V D_{e x}\left(C_{i+3, j}, C_{i+3, j+2}\right)\) (10)
Step8: 최솟값 기준으로 삽입된 첫 번째 비밀자료를 추출하기 위해서 본 논문에서 제안하는 수식 (11)을 이용해서 PVD기법의 추출 알고리듬 PVDex 을 세 개의 쌍에 적용한다.
\(\begin{aligned} &P V D_{e x}\left(C_{i, j+1}, C_{i, j+3}\right), P V D_{e x}\left(C_{i+1, j}, C_{i+1, j+2}\right) \\ &P V D_{e x}\left(C_{i+1, j+1}, C_{i+1, j+3}\right) \end{aligned}\) (11)
Step9: 모든 블록들에 대해서 Step2에서 Step 8의 과정들을 수행한다.
제안하는 기법의 추출 과정은 Fig.10에 보여 진다. Fig.10에서 스테고 이미지는 중복이 없는 블록들로 분할되고 첫 번째 블록을 선택한다. 첫 번째 블록에서 O, P, Q, R의 위치에 있는 픽셀들을 이용해서 원본 픽셀들인 A와 B를 복원하고 비밀자료가 삽입되지 않은 픽셀들인 C와 D를 가져와서 A, B, C, D 픽셀들로 구성된 원본 이미지 블록을 복원한다.원본 이미지 블록이 복원되면 이 블록을 이용해서 A와 B에 대해서 최대 차이 값을 계산하고 log함수를 이용해서 삽입되어 있는 비밀비트의 크기를 계산한다. 비밀비트의 크기가 획득되면 스테고 픽셀들과 원본 픽셀들의 차이 값을 이용해서 두 번째 비밀자료를 추출한다. 첫 번째 비밀자료는 선택된 스테고 이미지 블록의 K, L, M, N에 PVD기법의 추출 알고리듬을 적용하고 E, F, G, H, I, J에 PVD기법의 추출 알고리듬을 적용해서 추출된다.위와 같은 과정을 모든 블록들에 적용하게 되면 비밀자료가 추출되면서 원본 이미지를 복원할 수 있게 된다.
Fig. 10. Extraction process.
3.5 제안한 기법의 비밀자료 추출 예제
본 절에서는 제안하는 기법의 비밀자료 추출 과정에 대한 예제를 Fig.11를 이용해서 설명한다. Fig. 11의 Step1에서 4×4 크기의 블록을 선택하고 \(I_{i, j}=\lceil(114+94) / 2\rceil\)와 \(I_{i, j+1}=\lceil(67+52) / 2\rceil\)를 이용해서 Ii,j는 104, Ii,j+1는 60의 원본 픽셀 값을 복원한다. 그리고 Ci+2,j에 위치한 원본 픽셀 98과 Ci+2,j+2에 위치한 원본 픽셀 58을 가지고 와서 원본 블록인 104, 60, 98, 58의 값을 복원한다.그리고 두 번째 비밀자료를 추출하기 위해서 104와 60에 대한 최대 차이 값을 계산하면 104에 대한 최대 차이 값 di,j은 46, 60에 대한 최대 차이 값 di,j+1은 44가 계산된다. 46과 44에 대해서 log함수를 적용하면 \(l_{i, j}=\left\lfloor\log _{2} 46\right\rfloor\)과 \(l_{i, j+1}=\left\lfloor\log _{2} 44\right\rfloor\)에 의해서 li,j와 li,j+1에는 각각 5비트씩 삽입되어 있음을 알 수 있다. 그리고 수식 (9)를 이용해서 \(s_{i, j}=|114-104|+|94-104|\), \(s_{i, j+1}=|67-60|+|52-60|\)을 계산하면 si,j는 20, si,j+1는 15의 십진수 형태의 비밀자료가 추출된다. 이 20과 15는 2진수 형태의 비밀비트로 변환해야 하는데 li,j와 li,j+1에는 각각 5비트씩 삽입되어 있기 때문에 si,j에서는 101002, si,j+1에서는 011112이 추출된다. 두 번째 비밀자료의 추출이 완료되면 Step 7에 서는 첫 번째 비밀자료를 추출하기 위해서 (Ci+2,j+1, Ci+2,j+3)에 위치한 101과 62에 PVD기법의 추출 알고리듬인 PVDex를 적용해서 2진수 형태의 비밀비트 001112을 추출하고 (Ci+3,j, Ci+3,j+2)에 위치한 102와 100에 PVDex을 적용해서 2진수 형태의 비밀비트 0102을 추출한다. 그리고 Step8에서는 (Ci,j+1, Ci,j+3) 에 위치한 44와 118에 PVDex을 적용해서 비밀비트 100002을 추출하고 (Ci+1,j, Ci+1,j+2)에 위치한 56과 61에 PVDex을 적용해서 비밀비트 1012을 추출한다. 마지막으로 (Ci+1,j+1, Ci+1,j+3)에 위치한 57과 99에 PVDex을 적용해서 비밀비트 010102을 최종적으로 추출하게 된다.위와 같은 과정을 전체 블록에 수행하여 원본 이미지의 복원과 비밀자료의 추출을 수행한다.
Fig. 11. Extraction example.
4. 실험 결과 및 고찰
이번 장에서는 본 논문에서 제안하는 기법과 관련 연구 기법들에 대한 실험 결과를 비교 및 분석하여 제안하는 기법의 장점을 증명하고자 한다. 일반적으로 정보은닉 기법에서는 비밀자료를 삽입하기 위한 커버 이미지(CoverImage)와 비밀자료가 삽입된 스테고 이미지(StegoImage)를 정의한다.그리고 정보은닉 기법에서는 제안하는 알고리듬의 성능을 평가하기 위해 PSNR(PeakSignal-to-noiseratio, 최대신호 대 잡음비)과 비밀자료 삽입용량을 이용한다. PSNR은 비밀자료가 삽입된 스테고 이미지와 커버 이미지 사이의 왜곡 정도를 측정하고, 비밀자료의 삽입용량은 스테고 이미지에 삽입된 비밀자료의 총 삽입용량을 계산한다. 일반적으로 PSNR이 30dB보다 높게 측정되면 사람의 육안으로 이미지의 왜곡을 탐지할 수 없다.
커버 이미지의 가로와 세로 크기 w와 h에 대해서 PSNR은 수식 (12)를 이용해서 측정된다.
\(P S N R=10 \log _{10} \frac{255^{2}}{M S E}\) (12)
MSE는 평균제곱오차로써 아래와 같이 정의된다. pi는 커버 이미지의 픽셀을 의미하고 p's는 스테고이미지의 픽셀을 의미한다.
\(M S E=\sum_{i=1}^{w} \frac{\left(p_{i}-p_{i}^{\prime}\right)^{2}}{w \times h}\) (13)
4.1 제안 정보은닉 기법 적용 이미지
본 논문에서는 Fig.12의 256×256크기의 그레이스케일(Grayscale) 이미지들을 원본 이미지로 사용한다. 제안하는 정보은닉 기법은 기존의 보간법 기반의 정보은닉 기법들과는 다르게 보간 과정 중에 첫번째 비밀자료를 삽입하여 커버 이미지 C를 생성한다. 그리고 생성된 커버 이미지에 두 번째 비밀자료를 삽입하여 최종 스테고 이미지 S를 생성하게 된다. 기존의 보간법 기반의 정보은닉 기법들은 비밀자료가 삽입되지 않은 보간 된 이미지를 커버 이미지로 사용하기 때문에, 본 논문의 실험과정에서는 본 논문에서 제안하는 알고리듬이 적용되면서 비밀자료가 삽입되지 않은 중간 이미지 M을 별도로 생성한다. 그리고 이 중간이미지 M과 최종 스테고 이미지 사이의 왜곡 정도를 측정하여 PSNR수치를 계산한다.
Fig. 12. Original images.
Fig.13과 Fig.14의 커버 이미지와 스테고 이미지는 사람의 육안으로 이미지를 확인하였을 때 이미지의 차이를 알 수 없다.따라서, Fig.15와 Fig.16에서는 Cameraman이미지와 Toy이미지에 대한 원본 이미지, 중간 이미지, 커버 이미지, 스테고 이미지의 픽셀 값들을 보여준다.원본 이미지는 256×256 크기의 이미지로써 총 65, 536개의 픽셀들로 구성되어 있고, 중간 이미지와 커버 이미지, 그리고 스테고 이미지는 512×512크기의 이미지들로써 262, 144개의 픽셀들로 구성되어 있다. Fig.15과 Fig.16에서 원본이 미지의 2×2영역 안에 있는 픽셀들은 보간 과정을 통해서 커버 이미지의 4×4영역으로 확장된다. 예를 들어서 Fig.15(a)의 원본 이미지에서 (0,0), (0,1), (1,0), (1,1)위치에 있는 155, 158, 159, 153픽셀의 경우에는 Fig.15(c)의 커버 이미지의 (0,0), (0,2), (2,0), (2,2)에 각각 위치하게 되면서 보간을 수행하게 된다. 그리고 커버 이미지의 (0,0), (0,2), (2,0), (2,2)에 위치한 픽셀들의 주변 픽셀들에 비밀자료들 이 삽입되면서 스테고 이미지를 생성하게 된다. 그리고 일반적으로 그레이스케일 이미지는 0부터 255 범위의 픽셀들로 구성되어 있는데, 그레이스케일 이미지에서 이미지의 색이 검정색(Black)에 가까울수록 픽셀 값은 0에 수렴하게 되고, 이미지의 색이 흰색 (White)에 가까울수록 픽셀 값은 255에 수렴하게 된다. Fig.15의 Cameraman이미지에서 선택된 영역은 회색으로 구성되어 있기 때문에 이미지에서 선택된 픽셀 값들이 대부분 150정도의 값들로 구성되어있지만, Fig.16의 Toy이미지에서 선택된 영역은 검정색에 가까운 색들로 구성되어 있기 때문에 픽셀값들이 대부분 40정도의 값들로 구성되어 있음을 알 수 있다.
Fig. 13. Cover images.
Fig. 14. Stego images.
Fig. 15. The pixel value of Original Image, Middle Image, Cover Image and Stego Image : CameraMan.
Fig. 16. The pixel value of Original Image, Middle Image, Cover Image and Stego Image : Toy.
4.2 이미지 품질 분석
본 절에서는 제안하는 기법과 관련 연구의 기법들에 대한 PSNR을 측정하여 각 기법들에 대한 이미지 품질을 측정하였다. PSNR측정 결과는 Table1에 보여 진다. NMI기법은 평균 PSNR이 약 40dB 정도로 측정되고, 제안하는 기법을 포함하는 다른 기법들은 평균 PSNR이 약 30dB정도로 측정된다. NMI기법의 평균 PSNR이 높게 측정되지만, Table1에서 알 수 있듯이 NMI기법은 비밀자료의 삽입용량이 다른 기법들에 비해서 낮게 계산된다. 따라서 NMI기법을제외한 기법들의 PSNR수치를 비교해보았을 때, 제안하는 기법의 평균 PSNR수치는 약 33dB로써 다른 기법들과 거의 동일하거나 다소 높게 측정된다. 그리고 10개의 실험 이미지 각각의 PSNR수치도 모두 30dB이상이 측정되기 때문에, 모든 실험 이미지들에 대해서 사람의 육안으로 이미지의 왜곡을 탐지할 수 없다.
Table 1. Comparison of PSNR of the proposed scheme and other schemes.
4.3 비밀자료 삽입용량 분석
본 절에서는 제안하는 기법과 관련 연구 기법들에 대한 비밀자료 삽입용량을 비교한다. Table2의실험 결과는 Table1의 PSNR수치에 대한 삽입용량을 의미한다. Table1에서 알 수 있듯이 제안하는 기법의 평균 PSNR수치는 약 33dB로써, NMI기법을 제외한 다른 기법들과 비교해 보았을 때 유사하거나 다소 높은 PSNR수치를 가지고 있다.하지만 비밀자료의 삽입용량 측면에서 제안하는 기법의 삽입용량이 다른 기법들에 비해서 높게 나타남을 알 수 있다. Jana등의 기법과 Lu의 기법과 비교해 보았을 때, 제안하는 기법은 Jana등의 기법보다는 평균적으로 약 84, 000비트를 더 숨길 수 있고 Lu의 기법보다는 평균적으로 약 148, 000비트를 더 숨길 수 있다. 따라서 제안하는 기법은 다른 기법들과 유사하거나 다소 높은 PSNR수치를 가지면서 비밀자료의 평균 삽입용량은 다른 기법들에 비해서 더 높게 나타난다는 것을 알 수 있다.
Table 2. Comparison of embedding capacity of the proposed scheme and other schemes.
4.4 히스토그램 분석
커버 이미지와 스테고 이미지 사이의 픽셀 값 변화를 확인하기 위해서 히스토그램 분석을 수행한다. Airplane1, Lena, Cat이미지를 사용하였으며 Jana 등의 기법, Lu의 기법 그리고 제안하는 기법에 대해서 히스토그램을 생성하였다. 생성된 히스토그램은 Fig.17, Fig.18, 그리고 Fig.19에 보여 진다. 히스토그램을 생성한 이미지가 흰색과 가까운 픽셀 값들이 많으면 히스토그램은 오른쪽으로 편향되고 이미지가 검은색과 가까운 픽셀 값들이 많으면 히스토그램은 왼쪽으로 편향된다. Fig.17과 Fig.18에서 Jana 등의 기법과 Lu의 기법은 동일한 보간법을 사용하기 때문에 커버 이미지 히스토그램이 동일함을 알 수 있다.하지만 Fig.19의 제안하는 기법은 기존의 기법들과 동일하지 않은 방법으로 이미지 보간을 수행하기 때문에 커버 이미지 히스토그램이 기존의 기법들과는 다르다는 것을 알 수 있다. 그리고 Fig.17, Fig. 18, 그리고 Fig.19에서는 히스토그램을 이용해서 커버 이미지의 픽셀 값들에 비밀자료를 삽입한 이후 에스테고 이미지의 픽셀 값들이 어떻게 변화했는지 보여준다. 예를 들어서 Fig.19의 Cat이미지의 경우에 Fig.19(c)의 Cat이미지의 커버 이미지에 대한 히스토그램과 Fig.19(f)의 Cat이미지의 스테고 이미지에 대한 히스토그램의 모양이 조금 다르다는 것을 알 수 있다. 그 이유는 커버 이미지에 비밀 자료가 삽입되면서 커버 이미지의 픽셀들의 값이 감소되거나 증가하게 되면서 스테고 이미지를 생성하게 되는데, 픽셀들의 값이 감소되는 경우에는 히스토그램이 왼쪽으로 편향되고 픽셀들의 값이 증가하는 경우에는 히스토그램이 오른쪽으로 편향되기 때문이다. 결과적으로 커버 이미지의 픽셀 값들에 비밀자료가 삽입되면서 스테고 이미지 픽셀 값들이 증가 및 감소하기 때문에 히스토그램의 모양이 변화하게 된다.
Fig. 17. Histogram result of the Jana et al.'s scheme
Fig. 18. Histogram result of the Lu's scheme.
5. 결론
본 논문에서는 최댓값, 최솟값 그리고 최대 차이 값을 이용하는 개선된 보간법 기반의 가역 정보은닉기법을 제안한다. 보간법 기반의 가역 정보은닉 기법이 제안된 이후로 다양한 보간법 기반의 가역 정보은닉 기법들이 제안되었지만 기존의 보간법 기반의 가역 정보은닉 기법들은 이미지를 확장하는 이미지 의보 간 과정 중에는 비밀자료를 삽입할 수 없었다. 하지만 이미지의 보간 과정 중에 비밀자료를 삽입할 수 있다면 더 많은 비밀자료를 삽입할 수 있을 것이고, 이러한 목적을 달성하기 위해서 이미지의 보 간 과정 중에도 비밀자료를 삽입할 수 있는 새로운 기법을 제안한다.본 논문에서는 w×w크기의 원본 이미지를 중복이 없는 블록들로 분할하고 각 블록의 최솟값을 기준으로 두 방향 탐색을 수행해서 두 개의 쌍을 생성하고 최댓값을 기준으로 세 방향 탐색을 수행해서 세 개의 쌍을 생성한다. 그리고 생성된 다섯 개의 쌍에 대해서 PVD기법의 삽입 알고리듬을 이용해서 첫 번째 비밀자료를 삽입하면서 커버 이미지를 생성한다.두 번째 비밀자료는 Kim등이 제안한 기법을 수정한 알고리듬과 최대 차이 값, log함수 등을 이용해서 삽입되고 두 번째 비밀자료의 삽입이 완료되면 최종 스테고 이미지를 생성하게 된다. 비밀자료의 추출과정에서는 평균값을 이용해서 원본 이미지 픽셀 값을 복원하고 최대 차이 값, log함수 그리고 스테고 픽셀과 원본 픽셀 사이의 차이 값을 이용해서 두 번째 비밀자료를 추출한다. 그리고 PVD 기법의 추출 알고리듬을 이용해서 첫 번째 비밀자료를 추출하면 전체 비밀자료를 추출할 수 있게 된다. 위와 같이 본 논문에서는 기존에 비밀자료를 삽입하지 않았던 이미지의 보간 과정 중에도 비밀자료를 삽입하기 때문에 비밀자료를 두 번 삽입할 수 있고 결과적으로 기존의 보간법 기반의 가역 정보은닉 기법들보다 더 많은 비밀자료를 이미지에 삽입할 수 있다. 실험 결과에서는 제안하는 기법이 보간법 기반의 다른 기법들과 비슷한 PSNR수치를 평균적으로 가지면서, 비밀자료의 삽입용량은 더 높게 나타남을 알 수 있다. 향후 연구로는 비밀자료의 삽입용량을 증가시키기 위해서 컬러 이미지 기반의 개선된 PVD 기법이 적용된 가역 정보은닉 기법을 연구할 계획이다.
References
- S. Wang, Z. Cao, M.A. Strangio, and L. Wang, "Cryptanalysis and Improvement of an Elliptic Curve Diffie-Hellman Key Agreement Protocol," IEEE Communications Letters, Vol. 12, No. 2, pp. 149-151, 2008. https://doi.org/10.1109/LCOMM.2008.071307
- C.W. Leung, F.Y. Ng, and D.S. Wong, "On the Security of a Visual Cryptography Scheme for Color Images," Pattern Recognition, Vol. 42, No. 5, pp. 920-940, 2009
- W. Bender, D. Gruhl, N. Morimoto, Aiguo Lu, "Techniques for data hiding," IBM Systems Journal, Vol. 35, No. 3-4, pp. 313-336, 1996. https://doi.org/10.1147/sj.353.0313
- N.F. Johnson, and S. Jajodia, "Exploring Steganography: Seeing the Unseen," Computer Practices, Vol. 31, No. 2, pp. 26-34, 1998.
- F.A.P. Petitcolas, R.J. Anderson, and M.G. Kuhn, "Information Hiding - a Survey," Proceedings of the IEEE, Special Issue on Protection of Multimedia Content, Vol. 7, No. 87, pp. 1062-1078, 1999.
- C. Kurah and J.Mchughes, "A Cautionary Note on Image Downgrading," IEEE Computer Security Applications Conference, Vol. 2, 1992.
- D.C. Wu and W.H. Tsai, "A Steganographic Method for Images by Pixel-value Differencing," Pattern Recognition Letters, Vol. 24, pp. 1613-1626, 2003. https://doi.org/10.1016/S0167-8655(02)00402-6
- Z. Ni, Y.U.N.Q. Shi, N. Ansari and W.E.I. Su, "Reversible Data Hiding," IEEE Transactions on Circuits and System for Video Technology, Vol. 16, No. 3, pp. 354-362, 2006. https://doi.org/10.1109/TCSVT.2006.869964
- X.Li, J. Li, B. Li, and B. Yang, "High-fidelity Reversible Data Hiding Scheme Based on Pixel-value-ordering and Prediction-error expansion," Signal Process, Vol. 93, pp. 198-205, 2013. https://doi.org/10.1016/j.sigpro.2012.07.025
- P.H. Kim, K.Y. Ryu, and K.H. Jung, "Reversible Data Hiding Scheme Based on Pixelvalue Differencing in Dual Images," Distributed Sensor Networks, Vol. 16, No. 7, 2020.
- K.H. Jung and K.Y. Yoo, "Data Hiding Method Using Image Interpolation," Computer Standards & Interfaces, Vol. 31, pp. 465-470, 2009. https://doi.org/10.1016/j.csi.2008.06.001
- C.F. Lee and Y.L. Huang, "An Efficient Image Interpolation Increasing Payload in Reversible Data Hiding," Expert Systems with Applications, Vol. 39, pp. 6712-6719, 2012. https://doi.org/10.1016/j.eswa.2011.12.019
- J. Hu and T. Li, "Reversible Steganography Using Extended Image Interpolation Technique," Computers and Electrical Engineering, Vol. 46, pp. 447-455, 2015. https://doi.org/10.1016/j.compeleceng.2015.04.014
- B. Jana, D. Giri, and S.K. Mondal, "Weighted Matrix Based Reversible Data Hiding Scheme Using Image Interpolation," Computer Intelligence in Data Mining, Vol. 2, pp. 239-248, 2016.
- J.H. Lee, P.H. Kim, K.H. Jung, and K.Y. Yoo, "Information Hiding Method Based on Interpolation Using Max Difference of RGB Pixel for Color Images," Journal of Korea Multimedia Society, Vol. 20, No. 4, pp. 629-639, 2017. https://doi.org/10.9717/kmms.2017.20.4.629
- T.C. Lu, "Interpolation-based Hiding Scheme Using the Modulus Function and Re-encoding Strategy," Signal Processing, Vol. 142, pp. 244-259, 2018. https://doi.org/10.1016/j.sigpro.2017.07.025