r1 = 0,0175·850/1 = 14,875 Ом
r2 = 0,0175·150/1 =2,625 Ом
r3 = 0,0175·70/1 = 1,225 Ом
Rобщ = 14,875 Ом + 2,625 Ом + 1,225 Ом = 18,725 Ом
По величине Iкз определим, с каким Iном необходимо в цепь питания ЭВМ включать автомат.
, следовательно
, (2.6) где
k -
коэффициент, указывающий тип защитного устройства (в зависимости от типа
автомата: k=3 для
автомата с электромагнитным расщепителем).
Iном = 11,68
А / 3 = 3,9 А
Вывод:
Для отключения ПЭВМ от сети в случае
короткого замыкания или других неисправностей в цепь питания ПЭВМ необходимо
ставить автомат с Iном = 4 А.
.2.2 Методы и средства защиты от рентгеновского излучения
Существует 3 основных способа защиты от рентгеновского излучения:
время (работа не более 4 часов);
расстояние (не менее 50 см от экрана);
экранирование.
Необходимо придерживаться строгого графика работы - время работы за компьютером не должно превышать половины рабочей смены (4 часа).
Для рентгеновского излучения - предельно допустимая доза для людей, которые постоянно или временно работают непосредственно с источником ионизирующих излучений не должна превышать D = 0,5 бэр/год в год.
Определим уровень мощности дозы на
различных расстояниях от экрана монитора по формуле:
Рri = Р0·е-m·r (2.7), где
Р0 - мощность дозы излучения на расстоянии 5 см от экрана, мкР/ч;
Prj - уровень мощности рентгеновского излучения на заданном расстоянии, мкР/ч;
r - расстояние от экрана, см;
m - коэффициент ослабления воздухом рентгеновских лучей, см-1.
Для расчета возьмем m = 3,14·10-2
см-1.
Таблица 2.1 Зависимость уровня мощности дозы от расстояния до источника:
|
r, см |
5 |
10 |
30 |
40 |
50 |
60 |
|
Рrj, мкР/ч |
100 |
73 |
53 |
39 |
28 |
21 |
Принимая среднее расстояние между пользователем
и монитором за 60 см и зная, что
годовая доза рентгеновского излучения опасная для здоровья равна 0,5Р - можно
рассчитать реальную дозу радиации получаемую пользователем за год:
Dr = Di · n · n1 · n2, где - доза радиации за год;
n - нормируемое ежедневное время работы за монитором равное 4ч;
n1 - количество рабочие дней в неделю (5 дней);
n2 - количество рабочих недель в году (в среднем 43 недели);
Di - мощность
дозы рентгеновского излучения на расстоянии 60 cм;
Dr = 15,2 · 4
· 5 · 43=0,013Р (бэр).
,013Р < 0,5Р (предельно допустимая доза 0,5Р
значительно превосходит полученное значение дозы).
.2.2.1 Вывод:
Оператору рекомендуется находиться от монитора
на расстоянии не менее 60 см.
.2.3 Методы и средства защиты от ультрафиолетового излучения
Для защиты от ультрафиолетового излучения:
защитный фильтр или специальные очки (толщина стекол 2мм, насыщенных свинцом);
одежда из фланели и поплина;
побелка стен и потолка (ослабляет на 45-50%);
мощность люминесцентных ламп не должна превышать
40 Вт.
.2.4 Методы и средства защиты от электромагнитных полей низкой частоты
Защита от электромагнитных излучений осуществляется временем, расстоянием, экранированием:
время работы - не более 4 часов;
расстояние - не менее 50 см от источника;
экранирование.
Относительно электромагнитных излучений низкой частоты можно отметить, что в современных мониторах нижний предел спектра смещен в сторону высоких частот посредством увеличения частоты кадровой развертки до 90 - 120Гц и значительно превышает наиболее опасную частоту - 60 Гц.
Чтобы уменьшить опасность надо:
не работать с открытой ЭВМ;
соблюдать расстояния между соседними ЭВМ (не < 1,5м);
исключить пребывание сбоку от монитора (≥
1,2 м).
.2.5 Методы и средства защиты от статического электричества
Электростатические поля вызывают скопление пыли, попадающей на лицо и глаза оператора.
Норма: 15 кВ/м.
Защита от статического электричества и вызванных им явлений осуществляется следующими способами:
наличие контурного заземления;
использование нейтрализаторов статического электричества;
скорость подвижного воздуха в помещении должна быть не более 0,2 м/с;
отсутствие синтетических покрытий;
влажная ежедневная уборка помещения вычислительного центра для уменьшения количества пыли;
проветривание без присутствия пользователя.
.2.6 Вывод
Выбранные методы и способы защиты от опасных и вредных факторов обеспечивают защиту пользователей, работающих с вычислительной техникой.
Заключение
В результате проделанной работы проведен анализ обзор существующих систем защиты от утечки конфиденциальной информации.
Проведены исследования различных алгоритмов обнаружения текста в графических и видео файлах.
Разработан простой алгоритм обнаружения текстовых областей в графических файлах.
Разработан программный модуль обнаружения текстовых областей в графических файлах.
На основании проведенных исследований были
получены эффективные результаты работы алгоритма и программного модуля. В связи
с этим его можно использовать в системах защиты для выявления и предотвращения
утечки конфиденциальной информации в графических файлах.
Список использованной литературы
Сузи Р.А. М.: БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ.ру, 2006.
Курс лекций Python. - М., http://www.webtag.ru/kuru/kupython.php#лекции_python
Г. Россум, Ф.Л.Дж. Дрейк, Д.С. Откидач, и др. Язык программирования Python, 2001 - 454 c, http://www.script-coding.info/Python/Otkidach.html
Официальная статистика компьютерных преступлений, совершенных в Российской Федерации по данным ГИЦ МВД России, 2004 http://www.cyberpol.ru/statcrime.shtml
Современные технологии защиты от утечки конфиденциальной информации. - M, http://www.dials.ru/main.phtml?/press_about_us/protect
Аппаратные средства для выявления и предотвращения утечек конфиденциальных данных. - M, http://www.cnews.ru/reviews/free/insiders2006/articles/hardware.shtml
Программные решения для выявления и предотвращения утечек конфиденциальных данных. - M, http://itsecure.org.ua/publ/10-1-0-237
Решения для борьбы с утечками конфиденциальных данных. - M, http://www.compress.ru/article.aspx?id=16100&iid=736
Метод опорных векторов. - M, http://ru.wikipedia.org/wiki/SVM
Агеев Михаил Сергеевич. Методы автоматической рубрикации текстов, основанные на машинном обучении и знаниях экспертов. - M, 2004. - 136 с.
Пер. материала: Lena Kallin Westin. Receiver operating characteristic (ROC) analysis. - Department of Computing Science Umeå University, Sweden, 28 с.
Пер. материала: Receiver operating characteristic - Wikipedia, the free encyclopedia, <http://en.wikipedia.org/wiki/Receiver_operating_characteristic>
Кулямин В.В. Методы верификации программного обеспечения. - M, 117 с.
Рустэм Хайретдинов. Практика внедрения систем защиты от утечек конфиденциальной информации - M, http://www.bytemag.ru/articles/detail.php?ID=12492
Пер. материала: Xiaojun Li, Weiqiang Wang, Shuqiang Jiang,Qingming Huang, Wen Gao. FAST AND EFFECTIVE TEXT DETECTION. - Graduate University of Chinese Academy of Sciences, Beijing, China.
Пер. материала: Qixiang Ye, Qingming Huang, Wen Gao, Debin Zhao. Fast and robust text detection in images and video frames, 2004. - Institute of Computing Technology, Chinese Academy of Sciences, China.
Пер. материала: Qifeng Liu, Cheolkon Jung, Sangkyun Kim, Youngsoo Moon and Ji-yeun Kim. STROKE FILTER FOR TEXT LOCALIZATION IN VIDEO IMAGES. - Computing Lab, Samsung Advanced Institute of Technology.
ГОСТ 19.504-79 Руководство программиста. Требования к содержанию и оформлению. - Введ. 01.01.81 - Группа Т55.
ГОСТ 19.401-78 Текст программы. Требования к содержанию и оформлению. - Введ. 01.01.80 - Группа Т55.
ГОСТ 19.201-78 Техническое задание. Требования к содержанию и оформлению. - Введ. 01.01.80 - Группа Т55.
ГОСТ 19.701-90 Схемы алгоритмов, программ данных и систем. - Введ. 01.01.92 - Группа Т5.
ГОСТ 12.0.003-86. Опасные и вредные производственные факторы.
ГОСТ 12.1.030-81. Электробезопасность. Защитное заземление, зануление.
ГОСТ ССБТ 12.1.045-84. Электростатические поля. Допустимые условия на рабочем месте.
ГОСТ
ССБТ 12.1.124-84. Средства защиты от статического электричества.
Приложение 1
Текст программы
pic_dir = 'D:/TD/Pics/test/'
ns = 20 # минимум для числа символов в "широком" участке текста;
aw = 15 # ворнинг для числа всех участков;
bw = 7 # ворнинг для числа всех "широких" участков;
cw = 700 # ворнинг для общего числа символов во всех участках;
prfx = 'zz_' # префикс для имен рез. файлов;
fmts = ('.bmp', '.jpg', '.jpeg', '.gif', '.png') # список обрабатываемых форматов файлов;
# начало строки для html отчета;
rpt = '''
<html>
<head>
<title>Отчет</title>
<META http-equiv="Content-Type" content="text/html; charset=Windows-1251">
</head>
<body style="background:#F5F5DC;">
<center>
<h3>Отчет<br>
по обнаружению текста в растровых графических файлах</h3>
</center>
<table>
<tr style="background-color:#999999;"><td> </td></tr>
'''PIL import Imagetext_detector(pic_dir, fn):
try:
fp = open(pic_dir + fn, 'rb')
io = Image.open(fp)
io.load()
fp.close()
except:
return -1
sz = 600
c_min = 35
dw = 24
dh = 24
d8 = ((1,1),(1,0),(1,-1),(0,-1),(-1,-1),(-1,0),(-1,1),(0,1))
w, h = io.size
global rpt
rpt += '<tr><td>Файл: ' + fn + '</td></tr>\n'
rpt += '<tr><td>Размеры растра: ' + str(w) + 'x' + str(h) + '</td></tr>\n'
if min(w, h) > sz:
rsz = sz * 1.0 / min(w, h)
w = int(0.5 + w * rsz)
h = int(0.5 + h * rsz)
io = io.resize((w, h), Image.ANTIALIAS)
rpt += '<tr><td>Имидж сжат до размеров: ' + str(w) + 'x' + str(h) + '</td></tr>\n'
im = io.convert('L')
if io.mode != 'RGB':
io = io.convert('RGB')
io2 = io.copy()
lum = [[0] * w for i in range(h)]
nei = [[0] * w for i in range(h)]
sm = 0
for i in range(h):
for j in range(w):
lum[i][j] = im.getpixel((j, i))
sm += lum[i][j]
io2.putpixel((j, i), (111,111,111))
sr = sm * 1.0 / h / w
c = 0
for i in range(h):
for j in range(w):
c += abs(sr - lum[i][j])
c = c / h / w
c = int(0.5 + c)
c = max(c, c_min)
def res_image(r):
for ri in r:
for p in range(ri[0], ri[1] + 1):
for q in range(ri[2], ri[3] + 1):
io2.putpixel((q, p), io.getpixel((q, p)))
f_out = open(pic_dir + prfx + fn, 'wb')
io2.save(f_out)
f_out.close()
def get_nei():
for i in range(1, h - 1):
for j in range(1, w - 1):
y = 0
t = set([])
for k in range(8):
if abs(lum[i][j] - lum[i + d8[k][0]][j + d8[k][1]]) > c:
y += 1
t.add(k)
if y in (3,):
if min(t) + (y - 1) == max(t) or \
t == set((6,7,0)) or t == set((7,0,1)):
nei[i][j] = y
else:
nei[i][j] = -y
else:
nei[i][j] = y
def stroke_calc(p1, q1):
p2 = min(h - 1, p1 + dh)
q2 = min(w - 1, q1 + dw)
nm = (p2 - p1) * (q2 - q1)
u = 0.0
x = [0] * 10
for i in range(p1, p2):
fl = 0
for j in range(q1, q2):
y = nei[i][j]
if y >= 0:
x[y] += 1
if y == 0:
fl += 1
if fl == q2 - q1:
u += 1.0
if 0 in x[:7] or nm > (x[3] + x[6]) * 20:
return x[9]
cnt1 = x[3] * 16 + x[6] * 16
cnt2 = x[0]
x[9] = int(cnt1 * cnt2 * 1.0 / nm)
x[9] = int(x[9] * (1 + u / (p2 - p1))**2)
if x[9] < 600 or x[9] > 3000:
x[9] = 0
return x[9]
def get_text_regions():
ww = w / dw
hh = h / dh
b = [[0] * (w + 3) for i in range(h + 1)]
for dy in (0, dh / 2):
m = [[0] * (ww + 3) for i in range(hh + 1)]
for i in range(1 + dy, h, dh):
for j in range(1, w, dw):
m[(i - 1 - dy) / dh][(j - 1) / dw] = stroke_calc(i, j)
for i in range(hh + 1):
for j in range(ww):
if m[i][j] != 0 and m[i][j + 1] != 0 and m[i][j + 2] != 0 and \
m[i][j] + m[i][j + 1] + m[i][j + 2] > 3 * 800:
m[i][ww + 2] = 1
break
for i in range(hh + 1):
if m[i][ww + 2] == 0:
continue
for j in range(ww + 1):
if m[i][j] != 0:
h1 = i * dh + 1 + dy
h2 = h1 + dh
h2 = min(h - 1, h2)
w1 = j * dw + 1
w2 = w1 + dw
w2 = min(w - 1, w2)
for p in range(h1, h2):
b[p][w + 2] = 1
for q in range(w1, w2):
if nei[p][q] != 0:
b[p][q] = 1
step = 60
for i in range(h):
if b[i][w + 2] != 0:
j = 0
cnt = 0
while j <= w - step:
if b[i][j] != 0 and b[i][j + 1] != 0 and b[i][j + 2] != 0:
sm = sum(b[i][j:j + step])
if sm > step * 0.4:
for k in range(j, j + step):
b[i][k] += 2
cnt += 1
j += step
else:
j += 1
else:
j += 1
if cnt == 0:
b[i] = [0] * (w + 3)
else:
b[i][w + 2] = cnt
cnt = 0
for i in range(h + 1):
if b[i][w + 2] == 0:
if cnt > 0 and cnt < 8:
for ii in range(i - cnt, i):
b[ii] = [0] * (w + 3)
cnt = 0
else:
cnt += 1
r = []
for i in range(h):
for j in range(w):
if b[i][j] > 1:
cnt = 1
x1 = w
x2 = 0
y1 = h
y2 = 0
b[i][j] *= -1
v = [[i, j]]
while len(v) != 0:
ww = []
for vv in v:
for k in range(8):
yy = vv[0] + d8[k][0]
xx = vv[1] + d8[k][1]
if xx < 0 or xx >= w or yy < 0 or yy >= h:
continue
if b[yy][xx] > 1:
b[yy][xx] *= -1
ww += [[yy, xx]]
x1 = min(x1, xx)
x2 = max(x2, xx)
y1 = min(y1, yy)
y2 = max(y2, yy)
v = ww[:]
cnt += len(v)
dx = x2 - x1 + 1
dy = y2 - y1 + 1
pl = cnt * 1.0 / dx / dy
if pl > 0.5 and dy > 6 and dy < 45 and dx >= dy * 3:
r += [[y1, y2, x1, x2, dx / dy]]
return r
get_nei()
r1 = get_text_regions()
ans = r1
rot_or_not = 20
if len(r1) < rot_or_not:
nei0 = nei[:]
w, h = h, w
nei = [[0] * w for i in range(h)]
for i in range(h):
for j in range(w):
nei[i][j] = nei0[j][h - i - 1]
if sum((ri[4] for ri in r2)) > sum((ri[4] for ri in r1)): # bug in text11.jpg;
ans = r2
io = io.transpose(Image.ROTATE_90)
io2 = io2.transpose(Image.ROTATE_90)
if len(ans) == 0:
rpt += '<tr><td>Текстоподобных участков не обнаружено!</td></tr>\n'
rpt += '<tr><td><img src="' + fn + '">'
rpt += '<tr style="background-color:#999999;"><td> </td></tr>\n'
return 0
else:
res_image(ans)
cnt = 0
nss = 0
for ai in ans:
nss += ai[4]
if ai[4] >= ns:
cnt += 1
rpt += '<tr><td>Обнаружено текстоподобных участков: ' + str(len(ans)) + '</td></tr>\n'
rpt += '<tr><td>Из них содержащих не менее %d условных символов: '%ns + str(cnt) + '</td></tr>\n'
rpt += '<tr><td>Общее число условных символов во всех участках: ' + str(nss) + '</td></tr>\n'
if (len(ans) >= aw and cnt >= bw) or nss >= cw:
rpt += '<tr><td><font color=red><h3>***WARNING***</h3></font></td></tr>\n'
rpt += '<tr><td><img src="' + fn + '"> '
rpt += '<img src="' + prfx + fn + '"></td></tr>\n'
rpt += '<tr style="background-color:#999999;"><td> </td></tr>\n'
return len(ans)ostime import time= time()= 0= 0= os.listdir(pic_dir).sort()fn in ld:
if fn[-4:].lower() not in fmts or fn.startswith(prfx):
continue
tf = time()
print 'Обрабатывается файл:', fn
res = text_detector(pic_dir, fn)
if res != -1:
sch1 += 1
if res != 0:
sch2 += 1
print 'Обнаружено текстоподобных участков:', res
print 'Время обработки (сек): %.2f'%(time() - tf)
else:
print 'Ошибка открытия или чтения файла!'
print+= '<tr style="background-color:#004400;"><td> </td></tr>\n' += '<tr><td>Текстоподобные участки были обнаружены в %d из %d файлов'%(sch2, sch1) + '</td></tr>\n'
rpt += '<tr><td>Общее время обработки составило (сек): %.2f'%(time() - tm) + '</td></tr>\n'
rpt += '<tr style="background-color:#004400;"><td> </td></tr>'+= '</table>\n</body>\n</html>\n'= open(pic_dir + 'report.html', 'wt').write(rpt).close() 'Текстоподобные участки были обнаружены в %d из %d файлов'%(sch2, sch1)
print 'Общее
время обработки составило (сек): %.2f'%(time()
- tm)
Приложение 2
Руководство программиста
.1 Назначение и условия применения программы
Программа разработана для существующих систем защиты от утечки конфиденциальной информации, с учетом всех требований и условий ее работы. Она необходима для того, чтобы перекрыть возможный канал утечки конфиденциальной информации в графических файлах и тем самым повысить комплексность системы защиты в целом.