본문 바로가기

디지털포렌식(Digital forensic)/그림

[파일] WaterMark 암호, Top Secret

반응형


워터마크는 이미지나 문서에 투명한 로고, 텍스트 또는 그래픽을 삽입하여

해당 콘텐츠의 원본 출처나 소유권을 나타내는 것을 말한다.

워터마크는 주로 저작권 보호, 무단 복제 방지, 미리보기용 콘텐츠 표시 등의 목적으로 사용되며

사진, 동영상, 문서 등 다양한 유형의 미디어에 적용할 수 있으며, 디자인과 투명도는 다양하게 만들 수 있다.

워터마크를 추가하기 위해서는 이미지 편집 소프트웨어를 사용하기도 하고 온라인 워터마크 생성기도 사용할 수 있다.

가장 중요한 점은 원본의 내용을 해치지 않는 투명도와 적절한 위치다.

워터마크는 암호는 아니지만 보안 목적으로 사용되기 때문에 이를 제거하려는 시도가 있을 수 있어 이를 방지하기 위해
디지털 서명을 문서에 함께 사용하거나 저작권 정보를 워터마크로 추가하여 워터마크를 제거하거나 변경하는 것을 어렵게 한다.

(참고)
구글은 AI가 생성한 이미지에 투명한 워터마크(보이지 않는 워터마크)를 삽입하는 SynthID(신스ID)를 적용한다.
신스ID는 눈에 보이지 않게 이미지의 픽셀마다 이 이미지는 AI로 만들었다라는 흔적을 기록하는데
파일을 조작(자르거나 압축, 변환)해도 신스ID는 유지되게끔 만들었다.


VB로 만든 예제에서는 선택한 이미지 파일 하단에 'Top Secret'라는 샘플 워터마크를 삽입하고 다시 파일로 생성시킨다.

WindowsApp1.zip
0.15MB



Imports System.Drawing.Imaging
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim openFileDialog As New OpenFileDialog()
        openFileDialog.Filter = "Image Files|*.jpg;*.jpeg;*.png;*.bmp|All Files|*.*"

        If openFileDialog.ShowDialog() = DialogResult.OK Then
            PictureBox1.Image = Image.FromFile(openFileDialog.FileName)
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If PictureBox1.Image IsNot Nothing Then
            ' 워터마크로 사용할 텍스트와 폰트 정의
            Dim watermarkText As String = "Top Secret"
            Dim watermarkFont As New Font("Arial", 20, FontStyle.Bold)
            Dim watermarkBrush As New SolidBrush(Color.Red) ' 워터마크의 색상선택

            ' PictureBox1의 이미지를 복제하여 작업할 비트맵 생성
            Dim bmp As New Bitmap(PictureBox1.Image)

            ' 비트맵에 그래픽 객체 생성
            Using graphics As Graphics = Graphics.FromImage(bmp)
                ' 워터마크를 그릴 위치 설정
                Dim watermarkPosition As New Point(bmp.Width - 300, bmp.Height - 50)
                ' 워터마크 드로잉
                graphics.DrawString(watermarkText, watermarkFont, watermarkBrush, watermarkPosition)
            End Using
            ' PictureBox1의 이미지를 pictureBox2에 변경된 이미지로 나타냄
            PictureBox2.Image = bmp
        End If
    End Sub

End Class

 

728x90